From e8b36cd011b3036031f4faa78fd23f33b7cb8f89 Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Fri, 18 Sep 2026 09:00:41 +0200 Subject: [PATCH] Import gcc-15_15.3.0-4.debian.tar.xz [dgit import tarball gcc-15 15.3.0-4 gcc-15_15.3.0-4.debian.tar.xz] --- NEWS.gcc | 864 + NEWS.html | 1251 + README.Bugs.m4 | 333 + README.C++ | 35 + README.Debian | 45 + README.cross | 22 + README.libstdc++-baseline.in | 2 + README.maintainers | 190 + README.snapshot | 46 + README.source | 29 + README.ssp | 28 + TODO | 58 + ada/README.gnat | 39 + ada/confirm_debian_bugs.py | 899 + ada/libgnat_alihash | 39 + ada/test_ada_source_date_epoch.sh | 97 + bin-wrapper.in | 11 + changelog | 18256 ++++ compat | 1 + control | 5778 ++ control.m4 | 5350 + copyright | 1638 + copyright.in | 1638 + cpp-BV-CRB.preinst.in | 11 + cpp-BV-doc.doc-base.cpp | 16 + cpp-BV-doc.doc-base.cppint | 17 + dh_doclink | 12 + dh_rmemptydirs | 10 + dummy-man.1 | 29 + dummy.texi | 1 + g++-BV-CRB.preinst.in | 11 + ga68-BV-doc.doc-base | 14 + gcc-BV-CRB.preinst.in | 12 + gcc-BV-doc.doc-base.gcc | 14 + gcc-BV-doc.doc-base.gccint | 17 + gcc-BV-doc.doc-base.gomp | 15 + gcc-BV-doc.doc-base.itm | 16 + gcc-BV-doc.doc-base.qmath | 14 + gcc-BV-hppa64-linux-gnu.overrides | 3 + gcc-BV-multilib.overrides | 1 + gcc-BV-source.overrides | 5 + gcc-XX-BV.1 | 21 + gcc-dummy.texi | 41 + gcc-snapshot.overrides | 17 + gcc-snapshot.prerm | 6 + gcc.css | 154 + gccgo-BV-doc.doc-base | 17 + gen-libstdc-breaks.sh | 178 + gfortran-BV-CRB.preinst.in | 11 + gfortran-BV-doc.doc-base | 14 + gm2-BV-doc.doc-base | 14 + gnat-BV-doc.doc-base.rm | 16 + gnat-BV-doc.doc-base.style | 16 + gnat-BV-doc.doc-base.ug | 16 + gnat.1 | 43 + lib32asan8.symbols | 2099 + lib32gccLC.postinst | 12 + lib32stdc++CXX.postinst | 12 + lib64asan8.symbols | 3013 + lib64gccLC.postinst | 12 + lib64stdc++CXX.postinst | 12 + libasan8.symbols | 3091 + libatomic.symbols | 4 + libcc1-0.symbols | 62 + libga68.symbols | 51 + libgcc-s.symbols | 31 + libgcc-s2.symbols.m68k | 169 + libgcc-s4.symbols.hppa | 103 + libgcc.symbols.aeabi | 69 + libgccjit0.symbols | 36 + libgcobol.symbols | 456 + libgdiagnostics0.symbols | 2 + libgfortran.symbols | 13 + libgm2.symbols | 1644 + libgomp.symbols | 39 + libgphobos.symbols | 2 + libgphobos6.symbols.amd64 | 22107 ++++ libhwasan0.symbols | 1016 + libitm.symbols | 3 + liblsan0.symbols | 252 + libobjc.symbols | 11 + libobjc.symbols.common | 205 + libobjc.symbols.gc | 522 + libquadmath.symbols | 4 + libstdc++-BV-doc.doc-base | 13 + libstdc++-BV-doc.overrides | 8 + libstdc++.symbols | 67 + libstdc++CXX.prerm | 13 + libtsan2.symbols | 3298 + libubsan1.symbols | 157 + libvtv0.symbols | 68 + libx32asan8.symbols | 3045 + locale-gen | 51 + logwatch.sh | 125 + ...imeval-and-timespec-definitions-and-c.diff | 1681 + ...its-time-functions-from-GNU-libc-when.diff | 249 + patches/D-22464.diff | 35 + patches/ada-armel-libatomic.diff | 79 + patches/ada-gcc-name.diff | 240 + patches/ada-gnat-name.diff | 178 + patches/ada-gnattools-cross.diff | 228 + patches/ada-lib-info-source-date-epoch.diff | 121 + patches/ada-link-lib.diff | 168 + patches/ada-perl-shebang.diff | 10 + patches/ada-sjlj.diff | 498 + patches/ada-tv_nsec-size.diff | 17 + patches/ada-verbose.diff | 37 + patches/algol68-doc.diff | 143 + patches/algol68-link-dynamic.diff | 13 + patches/algol68-sparc.diff | 20 + patches/algol68.diff | 83798 ++++++++++++++++ patches/alpha-ieee-doc.diff | 24 + patches/alpha-ieee.diff | 17 + patches/alpha-no-ev4-directive.diff | 30 + patches/arc-stddef.diff | 29 + patches/arm-multilib-defaults.diff | 88 + patches/arm-multilib-soft-float.diff | 26 + patches/bootstrap-no-unneeded-libs.diff | 30 + patches/canonical-cpppath.diff | 34 + patches/config-ml.diff | 52 + patches/cross-biarch.diff | 74 + patches/cross-fixes.diff | 57 + patches/cross-install-location.diff | 497 + patches/cross-no-locale-include.diff | 17 + patches/cuda-float128.diff | 46 + patches/disable-gdc-tests.diff | 17 + patches/dwarf5-revert-default-doc.diff | 14 + patches/dwarf5-revert-default.diff | 24 + patches/g++-multiarch-incdir.diff | 109 + patches/ga68-texinfo.diff | 28 + patches/gcc-arm-disable-guality-tests.diff | 44 + patches/gcc-as-needed-gold.diff | 85 + patches/gcc-as-needed.diff | 284 + patches/gcc-auto-build.diff | 13 + patches/gcc-distro-specs-ubuntu-doc.diff | 101 + patches/gcc-distro-specs.diff | 366 + patches/gcc-driver-extra-langs.diff | 20 + patches/gcc-foffload-default.diff | 120 + patches/gcc-force-cross-layout.diff | 49 + patches/gcc-gfdl-build.diff | 39 + patches/gcc-hash-style-gnu.diff | 164 + patches/gcc-ice-apport.diff | 39 + patches/gcc-ice-dump.diff | 111 + patches/gcc-m68k-no-fold-mem-offsets-doc.diff | 16 + patches/gcc-m68k-no-fold-mem-offsets.diff | 25 + patches/gcc-multiarch.diff | 189 + patches/gcc-multilib-multiarch.diff | 100 + patches/gcc-no-multilib-dejagnu.diff | 61 + patches/gcc-riscv-extensions.diff | 164 + patches/gcc-search-prefixed-as-ld.diff | 128 + patches/gcc-target-include-asm.diff | 13 + patches/gcc-textdomain.diff | 86 + patches/gcc-verbose-lto-link.diff | 13 + patches/gcc-vhdl.diff | 15 + patches/gccrs-bootstrap-mipsel.diff | 12 + patches/gdc-dynamic-link-phobos.diff | 17 + patches/gdc-multiarch.diff | 17 + patches/gdc-texinfo.diff | 53 + patches/git-doc-updates.diff | 196 + patches/git-updates.diff | 26636 +++++ patches/gm2-texinfo.diff | 30 + patches/go-testsuite.diff | 19 + patches/hppa64-libgcov-fallback.diff | 15 + patches/hurd-changes.diff | 20 + patches/hurd-multiarch.diff | 16 + patches/hurd-multilib-multiarch.diff | 23 + .../ignore-pie-specs-when-not-enabled.diff | 56 + patches/libasan-sparc.diff | 163 + patches/libffi-race-condition.diff | 33 + patches/libffi-ro-eh_frame_sect.diff | 13 + patches/libgo-cleanfiles.diff | 26 + patches/libgo-hurd-hack.diff | 22 + patches/libgo-revert-timeout-exp.diff | 10 + patches/libgo-setcontext-config.diff | 19 + patches/libgo-testsuite.diff | 76 + patches/libgomp-omp_h-multilib.diff | 32 + patches/libitm-no-fortify-source.diff | 17 + patches/libphobos-ppc64el.diff | 16 + patches/libphobos-unittest.diff | 13 + patches/libphobos-zlib.diff | 72 + patches/libsanitizer-static-tls.diff | 19 + patches/libstdc++-doclink.diff | 61 + .../libstdc++-doxygen-SOURCE_DATE_EPOCH.diff | 13 + patches/libstdc++-hurd.diff | 48 + patches/libstdc++-man-3cxx.diff | 63 + patches/libstdc++-no-testsuite.diff | 12 + patches/libstdc++-nothumb-check.diff | 38 + patches/libstdc++-pic.diff | 91 + patches/libstdc++-pythondir.diff | 22 + patches/libstdc++-test-installed.diff | 76 + patches/musl-ssp.diff | 21 + patches/note-gnu-stack.diff | 125 + patches/pr106641.diff | 52 + patches/pr119364-1.diff | 2035 + patches/pr119364-2.diff | 158 + patches/pr123853.diff | 108 + patches/pr124637.diff | 54 + patches/pr39491.diff | 132 + patches/pr66368.diff | 22 + patches/pr67590.diff | 36 + patches/pr67899.diff | 31 + patches/pr81829.diff | 308 + patches/pr87808.diff | 56 + patches/pr94253.diff | 48 + patches/rename-info-files.diff | 661 + patches/rust-enabled.diff | 23 + patches/sh-bootstrap-compare.diff | 14 + patches/sh-lra-support-doc.diff | 44 + patches/sh-lra-support.diff | 3380 + patches/sh-math-fixes.diff | 128 + patches/skip-bootstrap-multilib.diff | 22 + patches/sparc64-biarch-long-double-128.diff | 33 + patches/t-libunwind-elf-Wl-z-defs.diff | 13 + patches/testsuite-glibc-warnings.diff | 16 + patches/testsuite-hardening-format.diff | 304 + patches/testsuite-hardening-printf-types.diff | 605 + patches/testsuite-hardening-updates.diff | 84 + porting.html | 30 + reduce-test-diff.awk | 33 + rules | 100 + rules.conf | 1382 + rules.d/binary-ada.mk | 263 + rules.d/binary-algol68.mk | 307 + rules.d/binary-base.mk | 49 + rules.d/binary-cobol.mk | 328 + rules.d/binary-cpp.mk | 143 + rules.d/binary-cxx.mk | 142 + rules.d/binary-d.mk | 314 + rules.d/binary-fortran.mk | 309 + rules.d/binary-gcc.mk | 385 + rules.d/binary-gcn.mk | 124 + rules.d/binary-go.mk | 423 + rules.d/binary-hppa64.mk | 39 + rules.d/binary-libasan.mk | 72 + rules.d/binary-libatomic.mk | 56 + rules.d/binary-libcc1.mk | 31 + rules.d/binary-libdiag.mk | 146 + rules.d/binary-libgcc.mk | 318 + rules.d/binary-libgccjit.mk | 95 + rules.d/binary-libgomp.mk | 57 + rules.d/binary-libhwasan.mk | 71 + rules.d/binary-libitm.mk | 57 + rules.d/binary-liblsan.mk | 67 + rules.d/binary-libobjc.mk | 137 + rules.d/binary-libquadmath.mk | 57 + rules.d/binary-libssp.mk | 155 + rules.d/binary-libstdcxx.mk | 526 + rules.d/binary-libtsan.mk | 70 + rules.d/binary-libubsan.mk | 67 + rules.d/binary-libvtv.mk | 64 + rules.d/binary-m2.mk | 325 + rules.d/binary-nof.mk | 51 + rules.d/binary-nvptx.mk | 99 + rules.d/binary-objc.mk | 118 + rules.d/binary-objcxx.mk | 111 + rules.d/binary-rust.mk | 336 + rules.d/binary-snapshot.mk | 213 + rules.d/binary-softfloat.mk | 31 + rules.d/binary-source.mk | 54 + rules.d/binary-toolchain.mk | 210 + rules.defs | 2371 + rules.parameters | 44 + rules.patch | 427 + rules.sonames | 107 + rules.source | 15 + rules.unpack | 210 + rules2 | 3217 + runcheck.sh | 23 + sarif-replay.1 | 6 + source/format | 1 + source/lintian-overrides | 12 + tests/control | 38 + tests/libc-link | 30 + tests/libga68-link | 28 + tests/libgcobol-link | 30 + tests/libgfortran-link | 22 + tests/libgm2-link | 26 + tests/libgnat-link | 24 + tests/libgo-link | 25 + tests/libgomp-link | 76 + tests/libgphobos-link | 32 + tests/libstdcxx-link | 26 + tests/runtime-libs | 29 + tests/shlib-build | 45 + usage-wrapper.py | 399 + watch | 3 + watch.snap | 3 + 287 files changed, 222113 insertions(+) create mode 100644 NEWS.gcc create mode 100644 NEWS.html create mode 100644 README.Bugs.m4 create mode 100644 README.C++ create mode 100644 README.Debian create mode 100644 README.cross create mode 100644 README.libstdc++-baseline.in create mode 100644 README.maintainers create mode 100644 README.snapshot create mode 100644 README.source create mode 100644 README.ssp create mode 100644 TODO create mode 100644 ada/README.gnat create mode 100644 ada/confirm_debian_bugs.py create mode 100755 ada/libgnat_alihash create mode 100644 ada/test_ada_source_date_epoch.sh create mode 100644 bin-wrapper.in create mode 100644 changelog create mode 100644 compat create mode 100644 control create mode 100644 control.m4 create mode 100644 copyright create mode 100644 copyright.in create mode 100644 cpp-BV-CRB.preinst.in create mode 100644 cpp-BV-doc.doc-base.cpp create mode 100644 cpp-BV-doc.doc-base.cppint create mode 100755 dh_doclink create mode 100755 dh_rmemptydirs create mode 100644 dummy-man.1 create mode 100644 dummy.texi create mode 100644 g++-BV-CRB.preinst.in create mode 100644 ga68-BV-doc.doc-base create mode 100644 gcc-BV-CRB.preinst.in create mode 100644 gcc-BV-doc.doc-base.gcc create mode 100644 gcc-BV-doc.doc-base.gccint create mode 100644 gcc-BV-doc.doc-base.gomp create mode 100644 gcc-BV-doc.doc-base.itm create mode 100644 gcc-BV-doc.doc-base.qmath create mode 100644 gcc-BV-hppa64-linux-gnu.overrides create mode 100644 gcc-BV-multilib.overrides create mode 100644 gcc-BV-source.overrides create mode 100644 gcc-XX-BV.1 create mode 100644 gcc-dummy.texi create mode 100644 gcc-snapshot.overrides create mode 100644 gcc-snapshot.prerm create mode 100644 gcc.css create mode 100644 gccgo-BV-doc.doc-base create mode 100755 gen-libstdc-breaks.sh create mode 100644 gfortran-BV-CRB.preinst.in create mode 100644 gfortran-BV-doc.doc-base create mode 100644 gm2-BV-doc.doc-base create mode 100644 gnat-BV-doc.doc-base.rm create mode 100644 gnat-BV-doc.doc-base.style create mode 100644 gnat-BV-doc.doc-base.ug create mode 100644 gnat.1 create mode 100644 lib32asan8.symbols create mode 100644 lib32gccLC.postinst create mode 100644 lib32stdc++CXX.postinst create mode 100644 lib64asan8.symbols create mode 100644 lib64gccLC.postinst create mode 100644 lib64stdc++CXX.postinst create mode 100644 libasan8.symbols create mode 100644 libatomic.symbols create mode 100644 libcc1-0.symbols create mode 100644 libga68.symbols create mode 100644 libgcc-s.symbols create mode 100644 libgcc-s2.symbols.m68k create mode 100644 libgcc-s4.symbols.hppa create mode 100644 libgcc.symbols.aeabi create mode 100644 libgccjit0.symbols create mode 100644 libgcobol.symbols create mode 100644 libgdiagnostics0.symbols create mode 100644 libgfortran.symbols create mode 100644 libgm2.symbols create mode 100644 libgomp.symbols create mode 100644 libgphobos.symbols create mode 100644 libgphobos6.symbols.amd64 create mode 100644 libhwasan0.symbols create mode 100644 libitm.symbols create mode 100644 liblsan0.symbols create mode 100644 libobjc.symbols create mode 100644 libobjc.symbols.common create mode 100644 libobjc.symbols.gc create mode 100644 libquadmath.symbols create mode 100644 libstdc++-BV-doc.doc-base create mode 100644 libstdc++-BV-doc.overrides create mode 100644 libstdc++.symbols create mode 100644 libstdc++CXX.prerm create mode 100644 libtsan2.symbols create mode 100644 libubsan1.symbols create mode 100644 libvtv0.symbols create mode 100644 libx32asan8.symbols create mode 100755 locale-gen create mode 100755 logwatch.sh create mode 100644 patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff create mode 100644 patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff create mode 100644 patches/D-22464.diff create mode 100644 patches/ada-armel-libatomic.diff create mode 100644 patches/ada-gcc-name.diff create mode 100644 patches/ada-gnat-name.diff create mode 100644 patches/ada-gnattools-cross.diff create mode 100644 patches/ada-lib-info-source-date-epoch.diff create mode 100644 patches/ada-link-lib.diff create mode 100644 patches/ada-perl-shebang.diff create mode 100644 patches/ada-sjlj.diff create mode 100644 patches/ada-tv_nsec-size.diff create mode 100644 patches/ada-verbose.diff create mode 100644 patches/algol68-doc.diff create mode 100644 patches/algol68-link-dynamic.diff create mode 100644 patches/algol68-sparc.diff create mode 100644 patches/algol68.diff create mode 100644 patches/alpha-ieee-doc.diff create mode 100644 patches/alpha-ieee.diff create mode 100644 patches/alpha-no-ev4-directive.diff create mode 100644 patches/arc-stddef.diff create mode 100644 patches/arm-multilib-defaults.diff create mode 100644 patches/arm-multilib-soft-float.diff create mode 100644 patches/bootstrap-no-unneeded-libs.diff create mode 100644 patches/canonical-cpppath.diff create mode 100644 patches/config-ml.diff create mode 100644 patches/cross-biarch.diff create mode 100644 patches/cross-fixes.diff create mode 100644 patches/cross-install-location.diff create mode 100644 patches/cross-no-locale-include.diff create mode 100644 patches/cuda-float128.diff create mode 100644 patches/disable-gdc-tests.diff create mode 100644 patches/dwarf5-revert-default-doc.diff create mode 100644 patches/dwarf5-revert-default.diff create mode 100644 patches/g++-multiarch-incdir.diff create mode 100644 patches/ga68-texinfo.diff create mode 100644 patches/gcc-arm-disable-guality-tests.diff create mode 100644 patches/gcc-as-needed-gold.diff create mode 100644 patches/gcc-as-needed.diff create mode 100644 patches/gcc-auto-build.diff create mode 100644 patches/gcc-distro-specs-ubuntu-doc.diff create mode 100644 patches/gcc-distro-specs.diff create mode 100644 patches/gcc-driver-extra-langs.diff create mode 100644 patches/gcc-foffload-default.diff create mode 100644 patches/gcc-force-cross-layout.diff create mode 100644 patches/gcc-gfdl-build.diff create mode 100644 patches/gcc-hash-style-gnu.diff create mode 100644 patches/gcc-ice-apport.diff create mode 100644 patches/gcc-ice-dump.diff create mode 100644 patches/gcc-m68k-no-fold-mem-offsets-doc.diff create mode 100644 patches/gcc-m68k-no-fold-mem-offsets.diff create mode 100644 patches/gcc-multiarch.diff create mode 100644 patches/gcc-multilib-multiarch.diff create mode 100644 patches/gcc-no-multilib-dejagnu.diff create mode 100644 patches/gcc-riscv-extensions.diff create mode 100644 patches/gcc-search-prefixed-as-ld.diff create mode 100644 patches/gcc-target-include-asm.diff create mode 100644 patches/gcc-textdomain.diff create mode 100644 patches/gcc-verbose-lto-link.diff create mode 100644 patches/gcc-vhdl.diff create mode 100644 patches/gccrs-bootstrap-mipsel.diff create mode 100644 patches/gdc-dynamic-link-phobos.diff create mode 100644 patches/gdc-multiarch.diff create mode 100644 patches/gdc-texinfo.diff create mode 100644 patches/git-doc-updates.diff create mode 100644 patches/git-updates.diff create mode 100644 patches/gm2-texinfo.diff create mode 100644 patches/go-testsuite.diff create mode 100644 patches/hppa64-libgcov-fallback.diff create mode 100644 patches/hurd-changes.diff create mode 100644 patches/hurd-multiarch.diff create mode 100644 patches/hurd-multilib-multiarch.diff create mode 100644 patches/ignore-pie-specs-when-not-enabled.diff create mode 100644 patches/libasan-sparc.diff create mode 100644 patches/libffi-race-condition.diff create mode 100644 patches/libffi-ro-eh_frame_sect.diff create mode 100644 patches/libgo-cleanfiles.diff create mode 100644 patches/libgo-hurd-hack.diff create mode 100644 patches/libgo-revert-timeout-exp.diff create mode 100644 patches/libgo-setcontext-config.diff create mode 100644 patches/libgo-testsuite.diff create mode 100644 patches/libgomp-omp_h-multilib.diff create mode 100644 patches/libitm-no-fortify-source.diff create mode 100644 patches/libphobos-ppc64el.diff create mode 100644 patches/libphobos-unittest.diff create mode 100644 patches/libphobos-zlib.diff create mode 100644 patches/libsanitizer-static-tls.diff create mode 100644 patches/libstdc++-doclink.diff create mode 100644 patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff create mode 100644 patches/libstdc++-hurd.diff create mode 100644 patches/libstdc++-man-3cxx.diff create mode 100644 patches/libstdc++-no-testsuite.diff create mode 100644 patches/libstdc++-nothumb-check.diff create mode 100644 patches/libstdc++-pic.diff create mode 100644 patches/libstdc++-pythondir.diff create mode 100644 patches/libstdc++-test-installed.diff create mode 100644 patches/musl-ssp.diff create mode 100644 patches/note-gnu-stack.diff create mode 100644 patches/pr106641.diff create mode 100644 patches/pr119364-1.diff create mode 100644 patches/pr119364-2.diff create mode 100644 patches/pr123853.diff create mode 100644 patches/pr124637.diff create mode 100644 patches/pr39491.diff create mode 100644 patches/pr66368.diff create mode 100644 patches/pr67590.diff create mode 100644 patches/pr67899.diff create mode 100644 patches/pr81829.diff create mode 100644 patches/pr87808.diff create mode 100644 patches/pr94253.diff create mode 100644 patches/rename-info-files.diff create mode 100644 patches/rust-enabled.diff create mode 100644 patches/sh-bootstrap-compare.diff create mode 100644 patches/sh-lra-support-doc.diff create mode 100644 patches/sh-lra-support.diff create mode 100644 patches/sh-math-fixes.diff create mode 100644 patches/skip-bootstrap-multilib.diff create mode 100644 patches/sparc64-biarch-long-double-128.diff create mode 100644 patches/t-libunwind-elf-Wl-z-defs.diff create mode 100644 patches/testsuite-glibc-warnings.diff create mode 100644 patches/testsuite-hardening-format.diff create mode 100644 patches/testsuite-hardening-printf-types.diff create mode 100644 patches/testsuite-hardening-updates.diff create mode 100644 porting.html create mode 100755 reduce-test-diff.awk create mode 100755 rules create mode 100644 rules.conf create mode 100644 rules.d/binary-ada.mk create mode 100644 rules.d/binary-algol68.mk create mode 100644 rules.d/binary-base.mk create mode 100644 rules.d/binary-cobol.mk create mode 100644 rules.d/binary-cpp.mk create mode 100644 rules.d/binary-cxx.mk create mode 100644 rules.d/binary-d.mk create mode 100644 rules.d/binary-fortran.mk create mode 100644 rules.d/binary-gcc.mk create mode 100644 rules.d/binary-gcn.mk create mode 100644 rules.d/binary-go.mk create mode 100644 rules.d/binary-hppa64.mk create mode 100644 rules.d/binary-libasan.mk create mode 100644 rules.d/binary-libatomic.mk create mode 100644 rules.d/binary-libcc1.mk create mode 100644 rules.d/binary-libdiag.mk create mode 100644 rules.d/binary-libgcc.mk create mode 100644 rules.d/binary-libgccjit.mk create mode 100644 rules.d/binary-libgomp.mk create mode 100644 rules.d/binary-libhwasan.mk create mode 100644 rules.d/binary-libitm.mk create mode 100644 rules.d/binary-liblsan.mk create mode 100644 rules.d/binary-libobjc.mk create mode 100644 rules.d/binary-libquadmath.mk create mode 100644 rules.d/binary-libssp.mk create mode 100644 rules.d/binary-libstdcxx.mk create mode 100644 rules.d/binary-libtsan.mk create mode 100644 rules.d/binary-libubsan.mk create mode 100644 rules.d/binary-libvtv.mk create mode 100644 rules.d/binary-m2.mk create mode 100644 rules.d/binary-nof.mk create mode 100644 rules.d/binary-nvptx.mk create mode 100644 rules.d/binary-objc.mk create mode 100644 rules.d/binary-objcxx.mk create mode 100644 rules.d/binary-rust.mk create mode 100644 rules.d/binary-snapshot.mk create mode 100644 rules.d/binary-softfloat.mk create mode 100644 rules.d/binary-source.mk create mode 100644 rules.d/binary-toolchain.mk create mode 100644 rules.defs create mode 100644 rules.parameters create mode 100644 rules.patch create mode 100644 rules.sonames create mode 100644 rules.source create mode 100644 rules.unpack create mode 100644 rules2 create mode 100644 runcheck.sh create mode 100644 sarif-replay.1 create mode 100644 source/format create mode 100644 source/lintian-overrides create mode 100644 tests/control create mode 100755 tests/libc-link create mode 100755 tests/libga68-link create mode 100755 tests/libgcobol-link create mode 100755 tests/libgfortran-link create mode 100755 tests/libgm2-link create mode 100755 tests/libgnat-link create mode 100755 tests/libgo-link create mode 100755 tests/libgomp-link create mode 100755 tests/libgphobos-link create mode 100755 tests/libstdcxx-link create mode 100755 tests/runtime-libs create mode 100755 tests/shlib-build create mode 100755 usage-wrapper.py create mode 100644 watch create mode 100644 watch.snap diff --git a/NEWS.gcc b/NEWS.gcc new file mode 100644 index 0000000..9787ba4 --- /dev/null +++ b/NEWS.gcc @@ -0,0 +1,864 @@ +GCC 15 Release Series - Changes, New Features, and Fixes + +This page is a "brief" summary of some of the huge number of improvements in +GCC 15. You may also want to check out our Porting to GCC 15 page and the full +GCC documentation. + + +Caveats + + * Support for Nios II targets, which was marked obsolete in GCC 14, + has now been removed entirely. + + * In the AArch64 port, support for ILP32 (-mabi=ilp32) has been deprecated + and will be removed in a future release. + + * {0} initializer in C or C++ for unions no longer guarantees + clearing of the whole union (except for static storage duration + initialization), it just initializes the first union member to + zero. If initialization of the whole union including padding bits + is desirable, use {} (valid in C23 or C++) or use + -fzero-init-padding-bits=unions option to restore old GCC + behavior. + + +General Improvements + + * The default vectorizer cost model at -O2 has been enhanced to + handle unknown tripcount. But it still disables vectorization of + loops when any runtime check for data dependence or alignment is + required, it also disables vectorization of epilogue loops but + otherwise is equal to the cheap cost model. + + * The vectorizer now supports vectorizing loops with early exits + where the number of elements for the input pointers are unknown + through peeling for alignment. This is supported for only for + loops with fixed vector lengths. + + * -ftime-report now only reports monotonic run time instead of + system and user time. This reduces the overhead of the option + significantly, making it possible to use in standard build + systems. + + * Incremental Link-Time Optimizations significantly reduce average + recompilation time of LTO when doing small code edits + (e.g. editing a single function). Enable with -flto-incremental=. + + * For offloading using OpenMP and OpenACC, issues preventing some + host-device architecture combinations have been resolved. In + particular, offloading from aarch64 hosts to nvptx devices is now + supported. Additionally, the support for using C++ in offload + regions has been extended. + + * Improvements for compiling very large input files. The compile + time for large input files with -Wmisleading-indentation has been + significantly improved. The compiler can now track columnn numbers + larger than 4096. Very large source files have more accurate + location reporting. + + +New Languages and Language specific improvements + +OpenMP + +See the GNU Offloading and Multi-Processing Project (GOMP) page for +general information. + + * Support for unified-shared memory has been added for some AMD and + Nvidia GPU devices, enabled when using the unified_shared_memory + clause to the requires directive. The OpenMP 6.0 self_maps clause + is also now supported. For details, see the offload-target + specifics section in the GNU Offloading and Multi Processing + Runtime Library Manual. + + * GCC added ompx_gnu_pinned_mem_alloc as a predefined allocator and, + for C++, allocator class templates in the omp::allocator namespace + for the predefined allocators as specified in the OpenMP + specification 5.0, including omp::allocator::null_allocator of + OpenMP 6.0 and ompx::allocator::gnu_pinned_mem; the allocator + templates can be used with C++ containers such as std::vector. + + * In C and Fortran, the allocate directive now supports static + variables; stack variables were previously supported in those + languages. C++ support is not available yet. + + * Offloading improvements: On Nvidia GPUs, writing to the terminal + from OpenMP target regions (but not from OpenACC compute regions) + is now also supported in Fortran; in C/C++ and on AMD GPUs this + was already supported before with both OpenMP and OpenACC. + Constructors and destructors on the device side for declare target + static aggregates are now handled. + + * For Fortran, mapping derived-type variables with allocatable + components is now supported. + + * The OpenMP 5.1 unroll and tile loop-transforming constructs are + now supported. + + * OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 + dynamic selectors in both metadirective and declare variant (the + latter with some restrictions). + + * The interop construct and the OpenMP interoperability API routines + for C, C++ and Fortran are now implemented, including the OpenMP + 6.0 additions. This includes foreign-runtime support for Cuda, + Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. + + * The OpenMP 5.1 dispatch construct has been implemented with + support for the adjust_args and append_args clauses to the declare + variant directive, including the following OpenMP 6.0 additions: + the interop clause to dispatch and the syntax extensions to + append_args are supported. + + * OpenMP 6.0: The get_device_from_uid and omp_get_uid_from_device + API routines have been added. + + +COBOL + + * GCC now includes an ISO COBOL compiler, gcobol. It has been + tested on x86-64 and AArch64 targets. It is not expected to work + on 32-bit systems. Efforts are underway to adapt it to other + machine architectures that support native 128-bit computation. + + * gcobol passes much of the NIST CCVS/85 test suite (except for + parts that are now obsolete). It uses ISO/IEC 1989:2023 as a + reference specification. Some parts of that document, notably + object-orientation features, are yet to be implemented. Beyond + ISO, gcobol recognizes some syntax common on other compilers, with + special attention given to IBM. More information about GCC COBOL + can be found at the COBOLworx website. + + +Ada + + * GNAT now allows the 'Round attribute also for ordinary fixed-point + types. + + * The new GNAT attribute 'Super can be applied to objects of tagged + types in order to obtain a view conversion to the most immediate + specific parent type. + + * Mutably tagged types with a defined size are now available through + the use of Size'Class. This allows defining a maximum size for the + tagged. Example: + + type Base is tagged null record with Size'Class => 16 * 8; + -- Size in bits (128 bits, or 16 bytes) + + type Derived_Type is new Base with record Data_Field : Integer; end record; + -- ERROR if Derived_Type exceeds 16 bytes + + * New Finalizable aspect. It is a GNAT language extension which + serves as a lightweight alternative to controlled types. + + type T is record + ... + end record with Finalizable => (Initialize => Initialize, + Adjust => Adjust, + Finalize => Finalize, + Relaxed_Finalization => True); + + procedure Adjust (Obj : in out T); + procedure Finalize (Obj : in out T); + procedure Initialize (Obj : in out T); + + * The aspect No_Raise has been added, it declares that a subprogram + cannot raise an exception. + + * The aspect External_Initialization has been added, it allows for + data to be initialized using an external file which is loaded + during compilation time. + + * The aspect Exit_Cases has been added to annotate functions and + procedures with side effects in SPARK (see SPARK reference manual) + . It can be used to partition the input state into a list of cases + and specify, for each case, how the subprogram is allowed to + terminate. + + * Language extensions are enabled through the use of pragma + Extensions_Allowed (On | Off | All_Extensions); which has had its + syntax changed. An argument of All_Extensions has the same effect + as On, except that some extra experimental extensions are enabled. + + * Several new compilation flags have been added, some examples + include -gnatis, -gnatw.n, -gnatw_l and -gnatw.v. The internal + debugging utilities for the compiler have also received a lot of + new options, please refer to debug.adb for more information. + + * The diagnostics code has seen a major refactor, it now supports + the sarif format -fdiagnostics-format=sarif-file among other + improvements. More changes are expected in following releases. + + * System.Image_A has now printing routines to output address + information in HEX. + + * Several program units have had contracts added to them and SPARK + analysis has been enabled. + + * Support for FreeBSD, Android and aarch64 targets has been improved. + + * Task priorities on MinGW have been reworked. + + * The documentation has been rearanged for clarity, mainly the + sections related to tasking and platform dependent information. + + * REMOVAL: Generic_Formal_Hash_Table has been removed, the SPARK + Library is recommended as a substitute. + + +C family + + * A musttail statement attribute was added to enforce tail calls. + + * Extended inline assembler statements can now be used with some + limitations outside of functions as well. New constraints have + been added for defining symbols or using symbols inside of inline + assembler, and a new generic operand modifier has been added to + allow printing those regardless of PIC. For example: + + struct S { int a, b, c; }; + extern foo (void); + extern char var; + int var2; + asm (".text; %cc0: mov %cc2, %%r0; .previous;" + ".rodata: %cc1: .byte %3; .previous" : : + ":" (foo), /* Tell compiler asm defines foo function. */ + ":" (&var), /* Tell compiler asm defines var variable. */ + "-s" (var2), /* Tell compiler asm uses var2 variable. */ + /* "s" would work too but might not work with -fpic. */ + "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm. */ + + * The "redzone" clobber is now allowed in inline assembler + statements to describe that the assembler can overwrite memory in + the stack red zone (e.g. on x86-64 or PowerPC). + + * The nonnull_if_nonzero function attribute has been added to + describe functions where some pointer parameter may be NULL + only if some other parameter is zero. + + * The -Wtrailing-whitespace= and -Wleading-whitespace= options have + been added to diagnose certain whitespace characters at the end of + source lines or whitespace characters at the start of source lines + violating certain indentation styles. + + * The -Wheader-guard warning has been added and enabled in -Wall to + warn about some inconsistencies in header file guarding macros. + + +C + + * C23 by default: GCC 15 changes the default language version for C + compilation from -std=gnu17 to -std=gnu23. If your code relies on + older versions of the C standard, you will need to either add + -std= to your build flags, or port your code; see the porting + notes. + + * Some more C23 features have been implemented: + + * #embed preprocessing directive support. + * Support for unsequenced and reproducible attributes. + * __STDC_VERSION__ predefined macro value changed + for -std=c23 or -std=gnu23 to 202311L. + + * Some new features from the upcoming C2Y revision of the ISO C + standard are supported with -std=c2y and -std=gnu2y. Some of + these features are also supported as extensions when compiling for + older language versions. + + * Generic selection expression with a type operand. + * Support ++ and -- on complex values. + * Accessing byte arrays. + * alignof of an incomplete array type. + * Obsolete implicitly octal literals and add delimited escape + sequences (just partially implemented, support for new syntax + added but nothing deprecated yet). + * Named loops. + * More Modern Bit Utilities (addition of __builtin_stdc_rotate_left + and __builtin_stdc_rotate_right builtins for use in future C + library headers). + * Case range expressions. + * if declarations. + * Introduce complex literals. + * Abs Without Undefined Behavior (addition of builtins for use in + future C library headers). + * Allow zero length operations on null pointers (just the compiler + side, C library headers will need adjustments too if using + nonnull attribute). + + +C++ + + * Several C++26 features have been implemented: + + * P2558R2, Add @, $, and ` to the basic character set (PR110343) + * P2552R3, On the ignorability of standard attributes (PR110345) + * P2662R3, Pack indexing (PR113798) + * P0609R3, Attributes for structured bindings (PR114456) + * P2573R2, = delete("reason"); (PR114458) + * P2893R3, Variadic friends (PR114459) + * P3034R1, Disallow module declarations to be macros (PR114461) + * P2747R2, constexpr placement new (PR115744) + * P0963R3, Structured binding declaration as a condition (PR115745) + * P3144R2, Deleting a pointer to an incomplete type should be + ill-formed (PR115747) + * P3176R0, Oxford variadic comma (PR117786) + * P2865R5, Removing deprecated array comparisons (PR117788) + * P1967R14, #embed (PR119065) + * P3247R2, Deprecating the notion of trivial types (PR117787) + + * Several C++23 features have been implemented: + + * P2615R1, Meaningful exports (PR107688) + * P2718R0, Wording for P2644R1 Fix for Range-based for Loop (PR107637) + + * Several C++ Defect Reports have been resolved, e.g.: + + * DR 36, using-declarations in multiple-declaration contexts + * DR 882, Defining main as deleted + * DR 1363, Triviality vs multiple default constructors + * DR 1496, Triviality with deleted and missing default constructors + * DR 2387, Linkage of const-qualified variable template + * DR 2521, User-defined literals and reserved identifiers + * DR 2627, Bit-fields and narrowing conversions + * DR 2819, Cast from null pointer value in a constant expression (C++26 only) + * DR 2867, Order of initialization for structured bindings + * DR 2918, Consideration of constraints for address of overloaded function + + * Inline assembler statements now support constexpr generated + strings, analoguous to static_assert. + + * Qualified name lookup failure into the current instantiation, e.g. + this->non_existent, is now proactively diagnosed when parsing a + template. + + * The -fassume-sane-operators-new-delete option has been added and + enabled by default. This option allows control over some + optimizations around calls to replaceable global operators new and + delete. If a program overrides those replaceable global operators + and the replaced definitions read or modify global state visible to + the rest of the program, programs might need to be compiled with + -fno-assume-sane-operators-new-delete. + + * The -Wself-move warning now warns even in a + member-initializer-list. + + * The support for Concepts TS was removed. -fconcepts-ts has no + effect anymore. + + * A new option -Wtemplate-body was added, which can be used to + disable diagnosing errors when parsing a template. + + * C++ Modules have been greatly improved. + + * C++11 attributes are now supported even in C++98. + + + * New flag_enum attribute to indicate that the enumerators are used + in bitwise operations; this suppresses a -Wswitch warning. + + * The -Wdangling-reference warning has been improved: for example, + it doesn't warn for empty classes anymore. + + * The front end's handling of explicitly-defaulted functions has + been corrected to properly handle [dcl.fct.def.default]. The new + -Wdefaulted-function-deleted warning warns when an explicitly + defaulted function is deleted. + + * The implementation of DR 2789 was refined. + + * Compilation time speed ups, e.g. by improving hashing of template + specializations. + + * Support for __builtin_operator_new and __builtin_operator_delete + was added. See the manual for more info. + + * More prvalues are evaluated at compile time (git). + + * Various diagnostic improvements. + + +Runtime Library (libstdc++) + + * Debug assertions are now enabled by default for unoptimized + builds. Use -D_GLIBCXX_NO_ASSERTIONS to override this. + + * Improved experimental support for C++26, including: + * views::concat. + * Member visit. + * Type-checking std::format args. + + * Improved experimental support for C++23, including: + * std and std.compat modules (also supported for C++20). + * std::flat_map and std::flat_set. + * Clarify handling of encodings in localized formatting of chrono types. + + +D + + * Support for the D programming language has been updated to version + 2.111.0 of the language and run-time library. Full changelog for + this release and previous releases can be found on the dlang.org + website. + + * On supported targets, the version GNU_CET is now predefined when + the option -fcf-protection is used. The protection level is also + set in the traits key __traits(getTargetInfo, "CET"). + + * A new option -finclude-imports was added, which tells the compiler + to include imported modules in the compilation, as if they were + given on the command-line. + + +Fortran + + * Fortran 2018 and 2023 locality specifiers to do concurrent are + now supported. + + * Experimental support for unsigned modular integers, enabled by + -funsigned; see gfortran documentation for details. This follows + (J3/24-116). With this option in force, the selected_logical_kind + intrinsic function and, in the ISO_FORTRAN_ENV module, the named + constants logical{8,16,32,64} and real16 were added. The + ISO_C_BINDING module has been extended accordingly. + + * Missing commas separating descriptors in input/output format + strings are no longer permitted by default and are rejected at + run-time unless -std=legacy is used when compiling the main + program unit. See Fortran 2023 constraint C1302. + + * The Fortran module *.mod format generated by GCC 15 is + incompatible with the module format generated by GCC 8 - 14, but + GCC 15 can for compatibility still read GCC 8 - 14 created module + files. + + * Coarray support has been reworked to allow access to components in + derived types that have not been compiled with coarray support + enabled; especially, when the derived type is in a binary only + module. This has changed the ABI and may lead to link-time errors + with object files generated with a previous GCC version and to be + linked to the current caf_single library. If this library is to + be used, then it is recommended to recompile all artifacts. The + OpenCoarrays library is not affected, because it provides + backwards compatibility with the older ABI. + + * The -Wexternal-interface-mismatch option has been added. This + checks for mismatches between the argument lists in dummy external + arguments, and is implied by -Wall and -fc-prototypes-external + options. + + * The -fc-prototypes now also generates prototypes for interoperable + procedures with assumed shape and assumed rank arguments that + require the header file . + + +Modula-2 + + * The keyword FORWARD has been implemented in the compiler and is + available by default in all dialects. + + * The SYSTEM module now exports the datatype COFF_T mapping onto the + POSIX off_t type. The size of this datatype can be controlled by + the new option -fm2-file-offset-bits=. + + * Access to the GCC builtins clz, clzll, ctz and ctzll are now + available from the module Builtins. + + +New Targets and Target Specific Improvements + + +AArch64 + + * Support has been added for the AArch64 MinGW target + (aarch64-w64-mingw32). At present, this target supports C and C++ + for base Armv8-A, but with some caveats: + + * Although most variadic functions work, the implementation of + them is not yet complete. + * C++ exception handling is not yet implemented. + + Further work is planned for GCC 16. + + * As noted above, support for ILP32 (-mabi=ilp32) has been + deprecated and will be removed in a future release. aarch64*-elf + targets no longer build the ILP32 multilibs. + + * The following architecture level is now supported by -march and + related source-level constructs (GCC identifiers in parentheses): + + * Armv9.5-A (arm9.5-a) + + * The following CPUs are now supported by -mcpu, -mtune, and related + source-level constructs (GCC identifiers in parentheses): + + * Apple A12 (apple-a12) + * Apple M1 (apple-m1) + * Apple M2 (apple-m2) + * Apple M3 (apple-m3) + * Arm Cortex-A520AE (cortex-a520ae) + * Arm Cortex-A720AE (cortex-a720ae) + * Arm Cortex-A725 (cortex-a725) + * Arm Cortex-R82AE (cortex-r82ae) + * Arm Cortex-X925 (cortex-x925) + * Arm Neoverse N3 (neoverse-n3) + * Arm Neoverse V3 (neoverse-v3) + * Arm Neoverse V3AE (neoverse-v3ae) + * FUJITSU-MONAKA (fujitsu-monaka) + * NVIDIA Grace (grace) + * NVIDIA Olympus (olympus) + * Qualcomm Oryon-1 (oryon-1) + + * The following features are now supported by -march, -mcpu, and + related source-level constructs (GCC modifiers in parentheses): + + * FEAT_CPA (+cpa), enabled by default for Arm9.5-A and above + * FEAT_FAMINMAX (+faminmax), enabled by default for Arm9.5-A and above + * FEAT_FCMA (+fcma), enabled by default for Armv8.3-A and above + * FEAT_FLAGM2 (+flagm2), enabled by default for Armv8.5-A and above + * FEAT_FP8 (+fp8) + * FEAT_FP8DOT2 (+fp8dot2) + * FEAT_FP8DOT4 (+fp8dot4) + * FEAT_FP8FMA (+fp8fma) + * FEAT_FRINTTS (+frintts), enabled by default for Armv8.5-A and above + * FEAT_JSCVT (+jscvt), enabled by default for Armv8.3-A and above + * FEAT_LUT (+lut), enabled by default for Arm9.5-A and above + * FEAT_LRCPC2 (+rcpc2), enabled by default for Armv8.4-A and above + * FEAT_SME_B16B16 (+sme-b16b16) + * FEAT_SME_F16F16 (+sme-f16f16) + * FEAT_SME2p1 (+sme2p1) + * FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2) + * FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4) + * FEAT_SSVE_FP8FMA (+ssve-fp8fma) + * FEAT_SVE_B16B16 (+sve-b16b16) + * FEAT_SVE2p1 (+sve2p1), enabled by default for Armv9.4-A and above + * FEAT_WFXT (+wfxt), enabled by default for Armv8.7-A and above + * FEAT_XS (+xs), enabled by default for Armv8.7-A and above + + The features listed as being enabled by default for Armv8.7-A or + earlier were previously only selectable using the associated + architecture level. For example, FEAT_FCMA was previously + selected by -march=armv8.3-a and above (as it still is), but it + wasn't previously selectable independently. + + * -mbranch-protection has been extended to support the Guarded + Control Stack (GCS) extension. This support is included in + -mbranch-protection=standard and can be enabled individually using + -mbranch-protection=gcs. + + * The following additional changes have been made to the + command-line options: + + * In order to align with other tools, the SME feature modifier + +sme no longer enables SVE. However, GCC does not yet support + using SME without SVE and instead rejects such combinations with + a "not implemented" error. + + * The options -mfix-cortex-a53-835769 and -mfix-cortex-a53-843419 + are now silently ignored if the selected architecture is + incompatible with Cortex-A53. This is particularly useful for + toolchains that are configured to apply the Cortex-A53 workarounds + by default. For example, all other things being equal, a + toolchain configured with --enable-fix-cortex-a53-835769 now + produces the same code for -mcpu=neoverse-n2 as a toolchain + configured without --enable-fix-cortex-a53-835769. + + * -mcpu=native now handles unrecognized heterogeneous systems by + detecting which individual architecture features are supported + by the CPUs. This matches the preexisting behavior for unknown + homogeneous systems. + + * The first scheduling pass (-fschedule-insns) is no longer + enabled by default at -O2 for AArch64 targets. The pass is + still enabled by default at -O3 and -Ofast. + + * Support has been added for the following features of the Arm C + Language Extensions (ACLE): + + * guarded control stacks + * lookup table instructions with 2-bit and 4-bit indices + (predefined macro __ARM_FEATURE_LUT, enabled by +lut) + * floating-point absolute minimum and maximum instructions + (predefined macro __ARM_FEATURE_FAMINMAX, enabled by +faminmax) + + * FP8 conversions (predefined macro __ARM_FEATURE_FP8, enabled by +fp8) + + * FP8 2-way dot product to half precision instructions (predefined + macro __ARM_FEATURE_FP8DOT2, enabled by +fp8dot2) + + * FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_FP8DOT4, enabled by +fp8dot4) + + * FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_FP8FMA, enabled by + +fp8fma) + + * SVE FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, enabled by + +ssve-fp8dot2) + + * SVE FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, enabled by + +ssve-fp8dot4) + + * SVE FP8 multiply-accumulate to half precision and single + precision instructions (predefined macro + __ARM_FEATURE_SSVE_FP8FMA, enabled by +ssve-fp8fma) + + * SVE2.1 instructions (predefined macro __ARM_FEATURE_SVE2p1, + enabled by +sve2p1) + + * SVE non-widening bfloat16 instructions (predefined macro + __ARM_FEATURE_SVE_B16B16, enabled by +sve-b16b16) + + * SME2.1 instructions (predefined macro __ARM_FEATURE_SME2p1, + enabled by +sme2p1) + + * SME non-widening bfloat16 instructions (predefined macro + __ARM_FEATURE_SME_B16B16, enabled by +sme-b16b16) + + * SME half-precision instructions (predefined macro + __ARM_FEATURE_SME_F16F16, enabled by +sme-f16f16) + + * using C and C++ prefix operators, infix operators, and postfix + operators with scalable SVE ACLE types (predefined macro + __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, enabled by +sve) + + * __fma (in arm_acle.h) + * __fmaf (in arm_acle.h) + * __chkfeat (in arm_acle.h) + + * In addition, the following changes have been made to preexisting + ACLE features: + + * The macros __ARM_FEATURE_BF16 and __ARM_FEATURE_SVE_BF16 are now + predefined when the associated support is available. Previous + versions of GCC provided the associated intrinsics but did not + predefine the macros. + + * OpenMP tasks can now share scalable SVE vectors and predicates. + However, offloading of scalable vectors and predicates is not + supported. + + * ACLE system register functions (such as __arm_rsr and __arm_wsr) + no longer try to enforce the minimum architectural requirement. + + * A warning is reported if code attempts to use the Function + Multi-Versioning feature. GCC's current implementation of this + feature is still experimental and it does not conform to the + ACLE specification. + + * Support has been added for the indirect_return function-type + attribute, which indicates that a function might return via an + indirect branch instead of via a normal return instruction. + + * 128-bit atomic operations have been extended to make use of + FEAT_LRCPC3 instructions, when support for the instructions is + detected at runtime. + + * There have been many code-generation improvements to the AArch64 port. + Some examples are: + + * automatic use of AArch64 CRC instructions + * automatic use of AArch64 saturating vector arithmetic instructions + * better code generation of population counts + * improved handling of floating-point and vector immediates + * improved handling of vector permutations + * more use of SVE instructions to optimize Advanced SIMD code + * more folding and simplification of SVE ACLE intrinsics + * improved CPU-specific tuning + * improved register allocation, such as eliminating some vector moves + + +AMD GPU (GCN) + + * The standard C++ library (libstdc++) is now supported and enabled. + + * Experimental support for supporting generic devices has been + added; specifying gfx9-generic, gfx10-3-generic, or gfx11-generic + to -march= will generate code that can run on all devices of a + series. Additionally, the following specific devices are now have + experimental support, all of which are compatible with a listed + generic: gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033, + gfx1034, gfx1035, gfx1101, gfx1102, gfx1150, and gfx1151. To use + any of the listed new devices including the generic ones, GCC has + to be configured to build the runtime library for the device. Note + that generic support requires ROCm 6.4.0 (or newer). For details, + consult GCC's installation notes. + + * Support for Fiji (gfx803) devices has been removed (this was + already deprecated in GCC 14). + + +AVR + + * Support has been added for the signal(num) and interrupt(num) + function attributes that allow to specify the interrupt vector + number num as an argument. It allows to use static functions as + interrupt handlers, and also functions defined in a C++ namespace. + + * Support has been added for the noblock function attribute. It can + be specified together with the signal attribute to indicate that + the interrupt service routine should start with a SEI instruction + to globally re-enable interrupts. The difference to the interrupt + attribute is that the noblock attribute just acts like a flag and + does not impose a specific function name. + + * Support has been added for the __builtin_avr_mask1 built-in + function. It can be used to compute some bit masks when code like + 1 << offset is not fast enough. + + * Support has been added for a new 24-bit named address space + __flashx. It is similar to the __memx address space introduced in + v4.7, but reading is a bit more efficient since it only supports + reading from program memory. Objects in the __flashx address space + are located in the .progmemx.data section. + + * Apart from the built-in types __int24 and __uint24 supported since + v4.7, support has been added for the signed __int24 and unsigned + __int24 types. + + * Code generation for the 32-bit integer shifts with constant offset + has been improved. The code size may slightly increase even when + optimizing for code size with -Os. + + * Support has been added for a compact vector table as supported by + some AVR devices. It can be activated by the new command-line + option -mcvt. It links crtmcu-cvt.o as startup code which is + supported since AVR-LibC v2.3. + + * Support has been added for the new option -mno-call-main. Instead + of calling main, it will be located in section .init9. + + * New AVR specific optimizations have been added. They can be + controlled by the new command-line options -mfuse-move, + -msplit-ldst, -msplit-bit-shift and -muse-nonzero-bits. + + +IA-32/x86-64 + + * New ISA extension support for Intel AMX-AVX512 was added. + AMX-AVX512 intrinsics are available via the -mamx-avx512 compiler + switch. + + * New ISA extension support for Intel AMX-FP8 was added. AMX-FP8 + intrinsics are available via the -mamx-fp8 compiler switch. + + * New ISA extension support for Intel AMX-MOVRS was added. + AMX-MOVRS intrinsics are available via the -mamx-movrs compiler + switch. + + * New ISA extension support for Intel AMX-TF32 was added. + AMX-TF32 intrinsics are available via the -mamx-tf32 + compiler switch. + + * New ISA extension support for Intel AMX-TRANSPOSE was added. + AMX-TRANSPOSE intrinsics are available via the -mamx-transpose + compiler switch. + + * All of new feature support for Intel APX expect for CFCMOV was + added, including CCMP/CTEST, NF and ZU. APX support is available + via the -mapxf compiler switch. + + * New ISA extension support for Intel AVX10.2 was added. AVX10.2 + intrinsics are available via the -mavx10.2 compiler switch. + + * New ISA extension support for Intel MOVRS was added. MOVRS + intrinsics are available via the -mmovrs compiler switch. MOVRS + vector intrinsics are available via the -mmovrs -mavx10.2 compiler + switches. + + * EVEX version support for Intel SM4 was added. New 512-bit SM4 + intrinsics are available via the -msm4 -mavx10.2 compiler + switches. + + * GCC now supports the Intel CPU named Diamond Rapids through + -march=diamondrapids. Based on Granite Rapids, the switch further + enables the AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, + APX_F, AVX10.2, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16, + AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, SM3, SM4, and USER_MSR ISA + extensions. + + * Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) + were removed in GCC 15. GCC will no longer accept -march=knl, + -march=knm, -mavx5124fmaps, -mavx5124vnniw, -mavx512er, + -mavx512pf, -mprefetchwt1, -mtune=knl, and -mtune=knm compiler + switches. + + * -mavx10.1-256, -mavx10.1-512, and mevex512 are + -deprecated. Meanwhile, -mavx10.1 enables AVX10.1 intrinsics with + -512-bit vector support, while in GCC 14.1 and GCC 14.2, it only + -enables 256-bit vector support. GCC will emit a warning when + -using these compiler switches. -mavx10.1-256, mavx10.1-512, and + --mevex512 will be removed in GCC 16 together with the warning for + -the behavior change on mavx10.1. + + * With the -mveclibabi compiler switch GCC is able to generate + vectorized calls to external libraries. GCC 15 newly supports + generating vectorized math calls to the math library from AMD + Optimizing CPU Libraries (AOCL LibM). This option is available + through -mveclibabi=aocl. GCC still supports generating calls to + AMD Core Math Library (ACML). However, that library is end-of-life + and AOCL offers many more vectorized functions. + + +LoongArch + + * Support has been added for target attributes and pragmas. For more + details on available attributes and pragmas, including their + proper usage, please refer to the provided documentation. + + * Support has been added for the new option + -mannotate-tablejump. Which can create an annotation section + .discard.tablejump_annotate to correlate the jirl instruction and + the jump table. + + * Add CRC expander to generate faster CRC. + + * Add ABI names for FPR. + + +NVPTX + + * The standard C++ library (libstdc++) is now supported and enabled. + + * GCC's nvptx target now supports constructors and destructors. For + this, a recent version of nvptx-tools is required. + + +SH + + * Bare metal sh-elf targets are now using the newer soft-fp library + for improved performance of floating-point emulation on CPUs + without hardware floating-point support. + + +Operating Systems + +PowerPC Darwin + + * Fortran's IEEE modules are now supported on Darwin PowerPC. + + +Other significant improvements + + +GCC 15.1 + +This is the list of problem reports (PRs) from GCC's bug tracking +system that are known to be fixed in the 15.1 release. This list might +not be complete (that is, it is possible that some PRs that have been +fixed are not listed here). + +For questions related to the use of GCC, please consult these web +pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org +mailing list might help. Comments on these web pages and the +development of GCC are welcome on our developer list at +gcc@gcc.gnu.org. All of our lists have public archives. + + +Copyright (C) Free Software Foundation, Inc. Verbatim copying and +distribution of this entire article is permitted in any medium, +provided this notice is preserved. + +These pages are maintained by the GCC team. Last modified 2025-04-25. diff --git a/NEWS.html b/NEWS.html new file mode 100644 index 0000000..adbfc7d --- /dev/null +++ b/NEWS.html @@ -0,0 +1,1251 @@ + + + + + + + + +GCC 15 Release Series — Changes, New Features, and Fixes +- GNU Project + + + + + + + + + + +

GCC 15 Release Series
Changes, New Features, and Fixes

+ +

+This page is a "brief" summary of some of the huge number of improvements +in GCC 15. +You may also want to check out our +Porting to GCC 15 page and the +full GCC documentation. +

+ + +

Caveats

+
    +
  • Support for Nios II targets, which was marked obsolete in GCC 14, + has now been removed entirely. +
  • +
  • In the AArch64 port, support for ILP32 (-mabi=ilp32) has + been deprecated and will be removed in a future release. +
  • +
  • {0} initializer in C or C++ for unions no longer + guarantees clearing of the whole union (except for static storage + duration initialization), it just initializes the first + union member to zero. If initialization of the whole union including + padding bits is desirable, use {} (valid in C23 or C++) + or use -fzero-init-padding-bits=unions option to restore + old GCC behavior.
  • +
+ + + +

General Improvements

+ +
    +
  • The default vectorizer cost model at -O2 has been enhanced + to handle unknown tripcount. But it still disables vectorization of loops + when any runtime check for data dependence or alignment is required, + it also disables vectorization of epilogue loops but otherwise is equal + to the cheap cost model. +
  • +
  • The vectorizer now supports vectorizing loops with early exits where + the number of elements for the input pointers are unknown through peeling + for alignment. This is supported for only for loops with fixed vector + lengths. +
  • +
  • -ftime-report now only reports monotonic run time instead of + system and user time. This reduces the overhead of the option significantly, + making it possible to use in standard build systems. +
  • +
  • Incremental Link-Time Optimizations significantly reduce average + recompilation time of LTO when doing small code edits + (e.g. editing a single function). + Enable with -flto-incremental=. +
  • +
  • + For offloading using OpenMP and OpenACC, issues preventing some + host–device architecture combinations have been resolved. In particular, + offloading from aarch64 hosts to nvptx devices is now supported. Additionally, + the support for using C++ in offload regions has been extended. +
  • +
  • + Improvements for compiling very large input files. The compile time for + large input files with -Wmisleading-indentation has been + significantly improved. The compiler can now track columnn numbers larger + than 4096. Very large source files have more accurate location reporting. +
  • +
+ + + +

New Languages and Language specific improvements

+ +

OpenMP

+ +

+ See the + GNU Offloading and Multi-Processing Project (GOMP) + page for general information. +

+ +
    +
  • + Support for unified-shared memory has been added for some AMD and Nvidia + GPU devices, enabled when using the unified_shared_memory + clause to the requires directive. + The OpenMP 6.0 self_maps clause is also now supported. + For details, + see the offload-target specifics section in the + GNU Offloading and Multi Processing Runtime Library Manual. +
  • +
  • + GCC added ompx_gnu_pinned_mem_alloc as a predefined + allocator and, for C++, allocator class templates in the + omp::allocator namespace for the predefined allocators as + specified in the OpenMP specification 5.0, including + omp::allocator::null_allocator of OpenMP 6.0 and + ompx::allocator::gnu_pinned_mem; the allocator templates + can be used with C++ containers such as std::vector. +
  • +
  • + In C and Fortran, the allocate directive now supports + static variables; stack variables were previously supported in + those languages. C++ support is not available yet. +
  • +
  • + Offloading improvements: + On Nvidia + GPUs, writing to the terminal from OpenMP target regions (but not from + OpenACC compute regions) is now also supported in Fortran; in C/C++ and + on AMD GPUs this was already supported before with both OpenMP and OpenACC. + Constructors and destructors on the device side for + declare target static aggregates are now handled. +
  • +
  • For Fortran, mapping derived-type variables with allocatable components + is now supported.
  • +
  • + The OpenMP 5.1 unroll and tile + loop-transforming constructs are now supported. +
  • +
  • OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 dynamic + selectors in both metadirective and + declare variant (the latter with some restrictions). +
  • +
  • + The interop construct and the OpenMP interoperability API + routines for C, C++ and Fortran are now implemented, including the + OpenMP 6.0 additions. This includes foreign-runtime support for Cuda, Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. +
  • +
  • + The OpenMP 5.1 dispatch construct has been implemented + with support for the adjust_args and append_args + clauses to the declare variant directive, including the + following OpenMP 6.0 additions: the interop clause to + dispatch and the syntax extensions to append_args + are supported. +
  • +
  • + OpenMP 6.0: The get_device_from_uid and + omp_get_uid_from_device API routines have been added. +
  • +
+ +

COBOL

+
    +
  • GCC now includes an ISO COBOL compiler, gcobol. It has been + tested on x86-64 and AArch64 targets. It is not expected to work + on 32-bit systems. Efforts are underway to adapt it to other machine + architectures that support native 128-bit computation.
  • +
  • gcobol passes much of the NIST CCVS/85 test suite (except for parts + that are now obsolete). It uses ISO/IEC 1989:2023 as a + reference specification. Some parts of that document, notably + object-orientation features, are yet to be implemented. Beyond + ISO, gcobol recognizes some syntax common on other compilers, + with special attention given to IBM. +

    More information about GCC COBOL can be found at + the COBOLworx website.

  • +
+ +

Ada

+
    +
  • + GNAT now allows + the 'Round + attribute also for ordinary fixed-point types. +
  • +
  • + The new GNAT + attribute 'Super + can be applied to objects of tagged types in order to obtain a view + conversion to the most immediate specific parent type. +
  • +
  • + Mutably tagged types with a defined size are now available + through the use of Size'Class. This allows defining a maximum + size for the tagged. Example: +
    +type Base is tagged null record with Size'Class => 16 * 8;
    +     -- Size in bits (128 bits, or 16 bytes)
    +
    +type Derived_Type is new Base with record Data_Field : Integer; end record;
    +     -- ERROR if Derived_Type exceeds 16 bytes
    +
    +
  • +
  • + New Finalizable + aspect. It is a GNAT language extension which serves as a lightweight + alternative to controlled types. +
    +type T is record
    +     ...
    +end record with Finalizable => (Initialize           => Initialize,
    +                                Adjust               => Adjust,
    +                                Finalize             => Finalize,
    +                                Relaxed_Finalization => True);
    +
    +procedure Adjust     (Obj : in out T);
    +procedure Finalize   (Obj : in out T);
    +procedure Initialize (Obj : in out T);
    +
    +
  • +
  • + The + aspect No_Raise + has been added, it declares that a subprogram cannot raise an exception. +
  • +
  • + The + aspect External_Initialization + has been added, it allows for data to be initialized using an external file + which is loaded during compilation time. +
  • +
  • + The + aspect Exit_Cases + has been added to annotate functions and procedures with side effects in + SPARK + (see SPARK + reference manual) . It can be used to partition the input state into a + list of cases and specify, for each case, how the subprogram is allowed to + terminate. +
  • +
  • + Language extensions are enabled through the use of pragma + Extensions_Allowed (On | Off | All_Extensions); which has had its + syntax changed. An argument of All_Extensions has the same + effect as On, except + that some + extra experimental extensions are enabled. +
  • +
  • + Several new compilation flags have been added, some examples + include -gnatis, -gnatw.n, -gnatw_l + and -gnatw.v. + The internal debugging utilities for the compiler have also received a lot + of new options, please refer + to debug.adb + for more information. +
  • +
  • + The diagnostics code has seen a major refactor, it now supports the sarif + format -fdiagnostics-format=sarif-file among other + improvements. More changes are expected in following releases. +
  • +
  • + System.Image_A has now printing routines to output address + information in HEX. +
  • +
  • + Several program units have had contracts added to them and SPARK analysis + has been enabled. +
  • +
  • + Support for FreeBSD, Android and aarch64 targets has been improved. +
  • +
  • + Task priorities on MinGW have been reworked. +
  • +
  • + The documentation has been rearanged for clarity, mainly the sections + related to tasking and platform dependent information. +
  • +
  • + REMOVAL: Generic_Formal_Hash_Table has been removed, + the SPARK + Library is recommended as a substitute. +
  • +
+ + +

C family

+
    +
  • A + musttail statement attribute was added to enforce tail calls.
  • +
  • Extended inline assembler statements + can now be used with some limitations outside of functions as well. + New constraints have been added for defining symbols or using symbols + inside of inline assembler, and a new generic operand modifier has + been added to allow printing those regardless of PIC. For example: +
    +struct S { int a, b, c; };
    +extern foo (void);
    +extern char var;
    +int var2;
    +asm (".text; %cc0: mov %cc2, %%r0; .previous;"
    +     ".rodata: %cc1: .byte %3; .previous" : :
    +     ":" (foo), /* Tell compiler asm defines foo function. */
    +     ":" (&var), /* Tell compiler asm defines var variable.  */
    +     "-s" (var2), /* Tell compiler asm uses var2 variable.  */
    +                  /* "s" would work too but might not work with -fpic.  */
    +     "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm.  */
    +
    +
  • +
  • The "redzone" clobber is now allowed in inline + assembler statements to describe that the assembler can overwrite + memory in the stack red zone (e.g. on x86-64 or PowerPC).
  • +
  • The + nonnull_if_nonzero function attribute has been added to describe + functions where some pointer parameter may be NULL only + if some other parameter is zero.
  • +
  • The + -Wtrailing-whitespace= and + + -Wleading-whitespace= options have been added to + diagnose certain whitespace characters at the end of source lines or + whitespace characters at the start of source lines violating certain + indentation styles.
  • +
  • The + -Wheader-guard warning has been added and enabled + in -Wall to warn about some inconsistencies in header + file guarding macros.
  • +
+ +

C

+
    +
  • C23 by default: GCC 15 changes the default language version + for C compilation from + -std=gnu17 + to + -std=gnu23. + If your code relies on older versions of the C standard, you will need to + either add + -std= + to your build flags, or port your code; see the porting notes. +
  • +
  • Some more C23 features have been implemented: +
      +
    • #embed preprocessing directive support.
    • +
    • Support for unsequenced and reproducible + attributes.
    • +
    • __STDC_VERSION__ predefined macro value changed + for -std=c23 or -std=gnu23 to + 202311L.
    • +
    +
  • +
  • Some new features from the upcoming C2Y revision of the ISO C + standard are supported with -std=c2y + and -std=gnu2y. Some of these features are also + supported as extensions when compiling for older language versions. +
      +
    • Generic selection expression with a type operand.
    • +
    • Support ++ and -- on complex values.
    • +
    • Accessing byte arrays.
    • +
    • alignof of an incomplete array type.
    • +
    • Obsolete implicitly octal literals and add delimited escape + sequences (just partially implemented, support for new syntax added + but nothing deprecated yet).
    • +
    • Named loops.
    • +
    • More Modern Bit Utilities (addition of + __builtin_stdc_rotate_left and + __builtin_stdc_rotate_right builtins for use in future + C library <stdbit.h> headers).
    • +
    • Case range expressions.
    • +
    • if declarations.
    • +
    • Introduce complex literals.
    • +
    • Abs Without Undefined Behavior (addition of builtins for + use in future C library <stdlib.h> headers).
    • +
    • Allow zero length operations on null pointers (just the compiler + side, C library headers will need adjustments too if using + nonnull attribute).
    • +
    +
  • +
+ +

C++

+ +
    +
  • Several C++26 features have been implemented: + +
  • +
  • Several C++23 features have been implemented: + +
  • +
  • Several C++ Defect Reports have been resolved, e.g.: +
      +
    • DR 36, + using-declarations in multiple-declaration contexts
    • +
    • DR 882, + Defining main as deleted
    • +
    • DR 1363, + Triviality vs multiple default constructors
    • +
    • DR 1496, + Triviality with deleted and missing default constructors
    • +
    • DR 2387, + Linkage of const-qualified variable template
    • +
    • DR 2521, + User-defined literals and reserved identifiers
    • +
    • DR 2627, + Bit-fields and narrowing conversions
    • +
    • DR 2819, + Cast from null pointer value in a constant expression (C++26 only)
    • +
    • DR 2867, + Order of initialization for structured bindings
    • +
    • DR 2918, + Consideration of constraints for address of overloaded function
    • +
    +
  • +
  • Inline assembler statements now support + constexpr generated strings, + analoguous to static_assert.
  • +
  • + + Qualified name lookup failure into the current instantiation, e.g. + this->non_existent, is now proactively diagnosed + when parsing a template. +
  • +
  • The + -fassume-sane-operators-new-delete option has been + added and enabled by default. This option allows control over some + optimizations around calls to replaceable global operators new and + delete. If a program overrides those replaceable global operators and + the replaced definitions read or modify global state visible to the + rest of the program, programs might need to be compiled with + -fno-assume-sane-operators-new-delete.
  • +
  • + + The + -Wself-move warning now warns even in a + member-initializer-list. +
  • +
  • + + The support for Concepts TS was removed. -fconcepts-ts has no + effect anymore. +
  • +
  • + + A new option + + -Wtemplate-body was added, which can be used to disable + diagnosing errors when parsing a template. +
  • +
  • + C++ Modules have been greatly improved. +
  • +
  • + + C++11 attributes are now supported even in C++98. +
  • +
  • + New + + flag_enum attribute to indicate that the enumerators + are used in bitwise operations; this suppresses a -Wswitch + warning. +
  • +
  • + The + -Wdangling-reference warning has been improved: for + example, it doesn't warn for empty classes anymore. +
  • +
  • + The front end's handling of explicitly-defaulted functions has been + corrected to properly handle [dcl.fct.def.default]. The + new + + -Wdefaulted-function-deleted warning warns when an + explicitly defaulted function is deleted. +
  • +
  • + The implementation of DR 2789 + was refined. +
  • +
  • + + Compilation time speed ups, e.g. by improving hashing of template + specializations. +
  • +
  • + + Support for __builtin_operator_new and + __builtin_operator_delete was added. See + + the manual for more info. +
  • +
  • + + More prvalues are evaluated at compile time + (git). +
  • +
  • + Various diagnostic improvements. +
  • +
+

Runtime Library (libstdc++)

+ +
    +
  • Debug assertions are now enabled by default for unoptimized builds. + Use -D_GLIBCXX_NO_ASSERTIONS to override this. +
  • +
  • Improved experimental support for C++26, including: +
      +
    • views::concat.
    • +
    • Member visit.
    • +
    • Type-checking std::format args.
    • +
    +
  • +
  • Improved experimental support for C++23, including: +
      +
    • + std and std.compat modules + (also supported for C++20). +
    • +
    • + std::flat_map and std::flat_set. +
    • +
    • + Clarify handling of encodings in localized formatting of chrono types. +
    • +
    +
  • +
+ +

D

+
    +
  • Support for the D programming language has been updated to version + 2.111.0 of the language and run-time library. Full changelog for this + release and previous releases can be found on the + dlang.org + website. +
  • +
  • On supported targets, the version GNU_CET is now predefined + when the option -fcf-protection is used. The protection level + is also set in the traits key __traits(getTargetInfo, "CET"). +
  • +
  • A new option + + -finclude-imports was added, which tells the compiler to + include imported modules in the compilation, as if they were given on the + command-line. +
  • +
+ +

Fortran

+ +
    +
  • + Fortran 2018 and 2023 locality specifiers to do concurrent are + now supported. +
  • +
  • + Experimental support for unsigned modular integers, + enabled by -funsigned; + see + gfortran documentation for details. This follows + (J3/24-116). + With this option in force, the selected_logical_kind + intrinsic function and, in the ISO_FORTRAN_ENV + module, the named constants logical{8,16,32,64} and + real16 were added. The ISO_C_BINDING + module has been extended accordingly. +
  • +
  • Missing commas separating descriptors in input/output format strings are no + longer permitted by default and are rejected at run-time unless -std=legacy + is used when compiling the main program unit. See Fortran 2023 constraint C1302. +
  • +
  • The Fortran module *.mod format generated by GCC 15 is + incompatible with the module format generated by GCC 8 - 14, but GCC + 15 can for compatibility still read GCC 8 - 14 created module + files.
  • +
  • Coarray support has been reworked to allow access to components in derived + types that have not been compiled with coarray support enabled; + especially, when the derived type is in a binary only module. This has + changed the ABI and may lead to link-time errors with object files + generated with a previous GCC version and to be linked to the current + caf_single library. If this library is to be used, then + it is recommended to recompile all artifacts. The OpenCoarrays library + is not affected, because it provides backwards compatibility with the + older ABI.
  • +
  • + The -Wexternal-interface-mismatch option has been + added. This checks for mismatches between the argument lists in + dummy external arguments, and is implied by -Wall + and -fc-prototypes-external options. +
  • +
  • + The -fc-prototypes now also generates prototypes for + interoperable procedures with assumed shape and assumed rank + arguments that require the header file + <ISO_Fortran_binding.h>. +
  • +
+ + + + + + +

Modula-2

+
    +
  • The keyword FORWARD has been implemented in the + compiler and is available by default in all dialects. +
  • +
  • The SYSTEM module now exports the + datatype COFF_T mapping onto the POSIX off_t + type. The size of this datatype can be controlled by the new + option -fm2-file-offset-bits=. +
  • +
  • Access to the GCC + builtins clz, clzll, ctz + and ctzll are now available from the + module Builtins. +
  • +
+ + +

New Targets and Target Specific Improvements

+ +

AArch64

+ +
    +
  • Support has been added for the AArch64 MinGW target + (aarch64-w64-mingw32). At present, this target + supports C and C++ for base Armv8-A, but with some caveats: +
      +
    • Although most variadic functions work, the implementation + of them is not yet complete. +
    • +
    • C++ exception handling is not yet implemented.
    • +
    + Further work is planned for GCC 16. +
  • +
  • As noted above, support for ILP32 (-mabi=ilp32) + has been deprecated and will be removed in a future release. + aarch64*-elf targets no longer build the ILP32 multilibs. +
  • +
  • The following architecture level is now supported by + -march and related source-level constructs + (GCC identifiers in parentheses): +
      +
    • Armv9.5-A (arm9.5-a)
    • +
    +
  • +
  • The following CPUs are now supported by -mcpu, + -mtune, and related source-level constructs + (GCC identifiers in parentheses): +
      +
    • Apple A12 (apple-a12)
    • +
    • Apple M1 (apple-m1)
    • +
    • Apple M2 (apple-m2)
    • +
    • Apple M3 (apple-m3)
    • +
    • Arm Cortex-A520AE (cortex-a520ae)
    • +
    • Arm Cortex-A720AE (cortex-a720ae)
    • +
    • Arm Cortex-A725 (cortex-a725)
    • +
    • Arm Cortex-R82AE (cortex-r82ae)
    • +
    • Arm Cortex-X925 (cortex-x925)
    • +
    • Arm Neoverse N3 (neoverse-n3)
    • +
    • Arm Neoverse V3 (neoverse-v3)
    • +
    • Arm Neoverse V3AE (neoverse-v3ae)
    • +
    • FUJITSU-MONAKA (fujitsu-monaka)
    • +
    • NVIDIA Grace (grace)
    • +
    • NVIDIA Olympus (olympus)
    • +
    • Qualcomm Oryon-1 (oryon-1)
    • +
    +
  • +
  • The following features are now supported by -march, + -mcpu, and related source-level constructs + (GCC modifiers in parentheses): +
      +
    • FEAT_CPA (+cpa), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_FAMINMAX (+faminmax), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_FCMA (+fcma), enabled by default for Armv8.3-A + and above +
    • +
    • FEAT_FLAGM2 (+flagm2), enabled by default for + Armv8.5-A and above +
    • +
    • FEAT_FP8 (+fp8)
    • +
    • FEAT_FP8DOT2 (+fp8dot2)
    • +
    • FEAT_FP8DOT4 (+fp8dot4)
    • +
    • FEAT_FP8FMA (+fp8fma)
    • +
    • FEAT_FRINTTS (+frintts), enabled by default for + Armv8.5-A and above +
    • +
    • FEAT_JSCVT (+jscvt), enabled by default for + Armv8.3-A and above +
    • +
    • FEAT_LUT (+lut), enabled by default for + Arm9.5-A and above +
    • +
    • FEAT_LRCPC2 (+rcpc2), enabled by default for + Armv8.4-A and above +
    • +
    • FEAT_SME_B16B16 (+sme-b16b16)
    • +
    • FEAT_SME_F16F16 (+sme-f16f16)
    • +
    • FEAT_SME2p1 (+sme2p1)
    • +
    • FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2)
    • +
    • FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4)
    • +
    • FEAT_SSVE_FP8FMA (+ssve-fp8fma)
    • +
    • FEAT_SVE_B16B16 (+sve-b16b16)
    • +
    • FEAT_SVE2p1 (+sve2p1), enabled by default for + Armv9.4-A and above +
    • +
    • FEAT_WFXT (+wfxt), enabled by default for + Armv8.7-A and above +
    • +
    • FEAT_XS (+xs), enabled by default for + Armv8.7-A and above +
    • +
    + The features listed as being enabled by default for Armv8.7-A or earlier + were previously only selectable using the associated architecture level. + For example, FEAT_FCMA was previously selected by + -march=armv8.3-a and above (as it still is), but it wasn't + previously selectable independently. +
  • +
  • -mbranch-protection has been extended to support + the Guarded Control Stack (GCS) extension. This support + is included in -mbranch-protection=standard and can + be enabled individually using -mbranch-protection=gcs. +
  • +
  • The following additional changes have been made to the + command-line options: +
      +
    • In order to align with other tools, the SME feature modifier + +sme no longer enables SVE. However, GCC does not + yet support using SME without SVE and instead rejects such + combinations with a “not implemented” error. +
    • +
    • The options -mfix-cortex-a53-835769 and + -mfix-cortex-a53-843419 are now silently ignored + if the selected architecture is incompatible with Cortex-A53. + This is particularly useful for toolchains that are configured + to apply the Cortex-A53 workarounds by default. For example, + all other things being equal, a toolchain configured with + --enable-fix-cortex-a53-835769 now produces the + same code for -mcpu=neoverse-n2 as a toolchain + configured without --enable-fix-cortex-a53-835769. +
    • +
    • -mcpu=native now handles unrecognized heterogeneous + systems by detecting which individual architecture features are + supported by the CPUs. This matches the preexisting behavior for + unknown homogeneous systems. +
    • +
    • The first scheduling pass (-fschedule-insns) is no + longer enabled by default at -O2 for AArch64 targets. + The pass is still enabled by default at -O3 and + -Ofast. +
    • +
    +
  • +
  • Support has been added for the following features of the Arm C + Language Extensions + (ACLE): +
      +
    • guarded control stacks
    • +
    • lookup table instructions with 2-bit and 4-bit indices + (predefined macro + __ARM_FEATURE_LUT, enabled by +lut) +
    • +
    • floating-point absolute minimum and maximum instructions + (predefined macro __ARM_FEATURE_FAMINMAX, + enabled by +faminmax) +
    • +
    • FP8 conversions (predefined macro + __ARM_FEATURE_FP8, enabled by +fp8) +
    • +
    • FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_FP8DOT2, + enabled by +fp8dot2) +
    • +
    • FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_FP8DOT4, + enabled by +fp8dot4) +
    • +
    • FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_FP8FMA, + enabled by +fp8fma) +
    • +
    • SVE FP8 2-way dot product to half precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, + enabled by +ssve-fp8dot2) +
    • +
    • SVE FP8 4-way dot product to single precision instructions + (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, + enabled by +ssve-fp8dot4) +
    • +
    • SVE FP8 multiply-accumulate to half precision and single precision + instructions (predefined macro __ARM_FEATURE_SSVE_FP8FMA, + enabled by +ssve-fp8fma) +
    • +
    • SVE2.1 instructions (predefined macro + __ARM_FEATURE_SVE2p1, enabled by +sve2p1) +
    • +
    • SVE non-widening bfloat16 instructions + (predefined macro __ARM_FEATURE_SVE_B16B16, + enabled by +sve-b16b16) +
    • +
    • SME2.1 instructions (predefined macro + __ARM_FEATURE_SME2p1, enabled by +sme2p1) +
    • +
    • SME non-widening bfloat16 instructions + (predefined macro __ARM_FEATURE_SME_B16B16, + enabled by +sme-b16b16) +
    • +
    • SME half-precision instructions + (predefined macro __ARM_FEATURE_SME_F16F16, + enabled by +sme-f16f16) +
    • +
    • using C and C++ prefix operators, infix operators, and postfix + operators with scalable SVE ACLE types + (predefined macro __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, + enabled by +sve) +
    • +
    • __fma (in arm_acle.h)
    • +
    • __fmaf (in arm_acle.h)
    • +
    • __chkfeat (in arm_acle.h)
    • +
    +
  • +
  • In addition, the following changes have been made to preexisting + ACLE features: +
      +
    • The macros __ARM_FEATURE_BF16 and + __ARM_FEATURE_SVE_BF16 are now predefined when the + associated support is available. Previous versions of GCC provided + the associated intrinsics but did not predefine the macros. +
    • +
    • OpenMP tasks can now share scalable SVE vectors and predicates. + However, offloading of scalable vectors and predicates is not + supported. +
    • +
    • ACLE system register functions (such as __arm_rsr + and __arm_wsr) no longer try to enforce the minimum + architectural requirement. +
    • +
    • A warning is reported if code attempts to use the Function + Multi-Versioning feature. GCC's current implementation of this + feature is still experimental and it does not conform to the + ACLE specification. +
    • +
    +
  • +
  • Support has been added for the indirect_return + function-type attribute, which indicates that a function might return + via an indirect branch instead of via a normal return instruction. +
  • +
  • 128-bit atomic operations have been extended to make use of + FEAT_LRCPC3 instructions, when support for the instructions is + detected at runtime. +
  • +
  • There have been many code-generation improvements to the AArch64 port. + Some examples are: +
      +
    • automatic use of AArch64 CRC instructions
    • +
    • automatic use of AArch64 saturating vector arithmetic + instructions +
    • +
    • better code generation of population counts
    • +
    • improved handling of floating-point and vector immediates
    • +
    • improved handling of vector permutations
    • +
    • more use of SVE instructions to optimize Advanced SIMD code
    • +
    • more folding and simplification of SVE ACLE intrinsics
    • +
    • improved CPU-specific tuning
    • +
    • improved register allocation, such as eliminating some + vector moves +
    • +
    +
  • +
+ +

AMD GPU (GCN)

+ +
    +
  • The standard C++ library (libstdc++) is now supported and enabled.
  • +
  • Experimental support for supporting generic devices has been added; + specifying gfx9-generic, gfx10-3-generic, + or gfx11-generic to + + -march= will generate code that can run on all + devices of a series. Additionally, the following specific devices + are now have experimental support, all of which are compatible with a + listed generic: gfx902, gfx904, + gfx909, gfx1031, gfx1032, + gfx1033, gfx1034, gfx1035, + gfx1101, gfx1102, gfx1150, + and gfx1151. To use any of the listed new devices including + the generic ones, GCC has to be configured to build the runtime library + for the device. Note that generic support requires ROCm 6.4.0 (or newer). + For details, consult GCC's + + installation notes.
  • +
  • Support for Fiji (gfx803) devices has been removed (this was already + deprecated in GCC 14).
  • +
+ + + + + +

AVR

+ +
    +
  • Support has been added for the signal(num) + and interrupt(num) + function attributes + that allow to specify the interrupt vector number num + as an argument. + It allows to use static functions as interrupt handlers, and also + functions defined in a C++ namespace.
  • +
  • Support has been added for the noblock function attribute. + It can be specified together with the signal attribute to + indicate that the interrupt service routine should start with a + SEI instruction to globally re-enable interrupts. + The difference to the interrupt attribute is that the + noblock attribute just acts like a flag and does not + impose a specific function name.
  • +
  • Support has been added for the __builtin_avr_mask1 + built-in function. It can be used to compute some bit masks when + code like 1 << offset is not fast enough.
  • +
  • Support has been added for a new 24-bit + named address space __flashx. + It is similar to the __memx address space introduced in v4.7, + but reading is a bit more efficient since it only supports reading from + program memory. Objects in the __flashx address space are + located in the .progmemx.data section.
  • +
  • Apart from the built-in types __int24 and + __uint24 supported since v4.7, support has been added for the + signed __int24 and unsigned __int24 types.
  • +
  • Code generation for the 32-bit integer shifts with constant + offset has been improved. The code size may slightly increase even + when optimizing for code size with -Os.
  • +
  • Support has been added for a compact vector table as supported + by some AVR devices. It can be activated by the new command-line option + -mcvt. + It links crtmcu-cvt.o as startup code which + is supported since AVR-LibC v2.3.
  • +
  • Support has been added for the new option + -mno-call-main. Instead of calling main, + it will be located in section .init9.
  • +
  • New AVR specific optimizations have been added. + They can be controlled by the new command-line options + -mfuse-move, + -msplit-ldst, + -msplit-bit-shift and + -muse-nonzero-bits.
  • +
+ +

IA-32/x86-64

+ +
    +
  • New ISA extension support for Intel AMX-AVX512 was added. + AMX-AVX512 intrinsics are available via the -mamx-avx512 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-FP8 was added. + AMX-FP8 intrinsics are available via the -mamx-fp8 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-MOVRS was added. + AMX-MOVRS intrinsics are available via the -mamx-movrs + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-TF32 was added. + AMX-TF32 intrinsics are available via the -mamx-tf32 + compiler switch. +
  • +
  • New ISA extension support for Intel AMX-TRANSPOSE was added. + AMX-TRANSPOSE intrinsics are available via the -mamx-transpose + compiler switch. +
  • +
  • All of new feature support for Intel APX expect for CFCMOV was added, + including CCMP/CTEST, NF and ZU. APX support is available via the + -mapxf compiler switch. +
  • +
  • New ISA extension support for Intel AVX10.2 was added. + AVX10.2 intrinsics are available via the -mavx10.2 + compiler switch. +
  • +
  • New ISA extension support for Intel MOVRS was added. + MOVRS intrinsics are available via the -mmovrs + compiler switch. MOVRS vector intrinsics are available via + the -mmovrs -mavx10.2 compiler switches. +
  • +
  • EVEX version support for Intel SM4 was added. + New 512-bit SM4 intrinsics are available via the + -msm4 -mavx10.2 compiler switches. +
  • +
  • GCC now supports the Intel CPU named Diamond Rapids through + -march=diamondrapids. + Based on Granite Rapids, the switch further enables the AMX-AVX512, + AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, APX_F, AVX10.2, AVX-IFMA, + AVX-NE-CONVERT, AVX-VNNI-INT16, AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, + SM3, SM4, and USER_MSR ISA extensions. +
  • +
  • Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) were + removed in GCC 15. GCC will no longer accept -march=knl, + -march=knm, -mavx5124fmaps, + -mavx5124vnniw, -mavx512er, + -mavx512pf, -mprefetchwt1, + -mtune=knl, and -mtune=knm compiler switches. +
  • +
  • -mavx10.1-256, -mavx10.1-512, and + -mevex512 are deprecated. Meanwhile, -mavx10.1 + enables AVX10.1 intrinsics with 512-bit vector support, while in GCC 14.1 + and GCC 14.2, it only enables 256-bit vector support. GCC will emit a + warning when using these compiler switches. -mavx10.1-256, + -mavx10.1-512, and -mevex512 will be removed in + GCC 16 together with the warning for the behavior change on + -mavx10.1. +
  • +
  • With the -mveclibabi compiler switch GCC is able to generate + vectorized calls to external libraries. GCC 15 newly supports generating + vectorized math calls to the math library from AMD Optimizing CPU Libraries + (AOCL LibM). This option is available through + -mveclibabi=aocl. GCC still supports generating calls to AMD + Core Math Library (ACML). However, that library is end-of-life and AOCL + offers many more vectorized functions. +
  • +
+ +

LoongArch

+
    +
  • Support has been added for target attributes and pragmas. For more details + on available attributes and pragmas, including their proper usage, please + refer to the provided + + documentation. +
  • +
  • Support has been added for the new option + + -mannotate-tablejump. Which can create an annotation + section .discard.tablejump_annotate to correlate the + jirl instruction and the jump table. +
  • +
  • Add CRC expander to generate faster CRC. +
  • +
  • Add ABI names for FPR. +
  • +
+ + + + + + + + + + + +

NVPTX

+ +
    +
  • The standard C++ library (libstdc++) is now supported and enabled.
  • +
  • GCC's nvptx target now supports constructors and destructors. + For this, a recent version of nvptx-tools is required.
  • +
+ + + + + + + + + + + +

SH

+ +
    +
  • Bare metal sh-elf targets are now using the newer soft-fp + library for improved performance of floating-point emulation on CPUs + without hardware floating-point support.
  • +
+ + + + + + +

Operating Systems

+ + + +

PowerPC Darwin

+
    +
  • Fortran's IEEE modules are now supported on Darwin PowerPC.
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

Other significant improvements

+ + + + +

GCC 15.1

+ +

This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 15.1 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).

+ + + + + + + + + + + + + + diff --git a/README.Bugs.m4 b/README.Bugs.m4 new file mode 100644 index 0000000..a2d1606 --- /dev/null +++ b/README.Bugs.m4 @@ -0,0 +1,333 @@ +Reporting Bugs in the GNU Compiler Collection for DIST +======================================================== + +Before reporting a bug, please +------------------------------ + +- Check that the behaviour really is a bug. Have a look into some + ANSI standards document. + +- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known + +- Try to reproduce the bug with a current GCC development snapshot. You + usually can get a recent development snapshot from the gcc-snapshot +ifelse(DIST,`Debian',`dnl + package in the unstable (or experimental) distribution. + + See: http://packages.debian.org/gcc-snapshot +', DIST, `Ubuntu',`dnl + package in the current development distribution. + + See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ +')dnl + +- Try to find out if the bug is a regression (an older GCC version does + not show the bug). + +- Check if the bug is already reported in the bug tracking systems. + +ifelse(DIST,`Debian',`dnl + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +', DIST, `Ubuntu',`dnl + Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +')dnl + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +ifelse(DIST,`Debian',`dnl +Please report bugs found in the packaging of GCC to the Debian bug tracking +system. See http://www.debian.org/Bugs/ for instructions (or use the +reportbug script). +', DIST, `Ubuntu',`dnl +Please report bugs found in the packaging of GCC to Launchpad. See below +how issues should be reported. +')dnl + +DIST's current policy is to closely follow the upstream development and +only apply a minimal set of patches (which are summarized in the README.Debian +document). + +ifelse(DIST,`Debian',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Debian +GCC package maintainers, if you report the bug upstream and then submit +a bug report to the Debian BTS and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to the Debian BTS (but read "How to report a bug" +below). +', DIST, `Ubuntu',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Ubuntu +GCC package maintainers, if you report the bug upstream and then submit +a bug report to Launchpad and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to Launchpad (but read "How to report a bug" below). + +Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. +')dnl + + +How to report a bug +------------------- + +There are complete instructions in the gcc info manual (found in the +gcc-doc package), section Bugs. + +The manual can be read using `M-x info' in Emacs, or if the GNU info +program is installed on your system by `info --node "(gcc)Bugs"'. Or see +the file BUGS included with the gcc source code. + +Online bug reporting instructions can be found at + + http://gcc.gnu.org/bugs.html + +[Some paragraphs taken from the above URL] + +The main purpose of a bug report is to enable us to fix the bug. The +most important prerequisite for this is that the report must be +complete and self-contained, which we explain in detail below. + +Before you report a bug, please check the list of well-known bugs and, +if possible in any way, try a current development snapshot. + +Summarized bug reporting instructions +------------------------------------- + +What we need + +Please include in your bug report all of the following items, the +first three of which can be obtained from the output of gcc -v: + + * the exact version of GCC; + * the system type; + * the options given when GCC was configured/built; + * the complete command line that triggers the bug; + * the compiler output (error messages, warnings, etc.); and + * the preprocessed file (*.i*) that triggers the bug, generated by + adding -save-temps to the complete compilation command, or, in + the case of a bug report for the GNAT front end, a complete set + of source files (see below). + +What we do not want + + * A source file that #includes header files that are left out + of the bug report (see above) + * That source file and a collection of header files. + * An attached archive (tar, zip, shar, whatever) containing all + (or some :-) of the above. + * A code snippet that won't cause the compiler to produce the + exact output mentioned in the bug report (e.g., a snippet with + just a few lines around the one that apparently triggers the + bug, with some pieces replaced with ellipses or comments for + extra obfuscation :-) + * The location (URL) of the package that failed to build (we won't + download it, anyway, since you've already given us what we need + to duplicate the bug, haven't you? :-) + * An error that occurs only some of the times a certain file is + compiled, such that retrying a sufficient number of times + results in a successful compilation; this is a symptom of a + hardware problem, not of a compiler bug (sorry) + * E-mail messages that complement previous, incomplete bug + reports. Post a new, self-contained, full bug report instead, if + possible as a follow-up to the original bug report + * Assembly files (*.s) produced by the compiler, or any binary files, + such as object files, executables, core files, or precompiled + header files + * Duplicate bug reports, or reports of bugs already fixed in the + development tree, especially those that have already been + reported as fixed last week :-) + * Bugs in the assembler, the linker or the C library. These are + separate projects, with separate mailing lists and different bug + reporting procedures + * Bugs in releases or snapshots of GCC not issued by the GNU + Project. Report them to whoever provided you with the release + * Questions about the correctness or the expected behavior of + certain constructs that are not GCC extensions. Ask them in + forums dedicated to the discussion of the programming language + + +Known Bugs and Non-Bugs +----------------------- + +[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] + + +C++ exceptions don't work with C libraries +------------------------------------------ + +[Taken from the closed bug report #22769] C++ exceptions don't work +with C libraries, if the C code wasn't designed to be thrown through. +A solution could be to translate all C libraries with -fexceptions. +Mostly trying to throw an exception in a callback function (qsort, +Tcl command callbacks, etc ...). Example: + + #include + #include + + class A {}; + + static + int SortCondition(void const*, void const*) + { + printf("throwing 'sortcondition' exception\n"); + throw A(); + } + + int main(int argc, char *argv[]) + { + int list[2]; + + try { + SortCondition(NULL,NULL); + } catch (A) { + printf("caught test-sortcondition exception\n"); + } + try { + qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), + &SortCondition); + } catch (A) { + printf("caught real-sortcondition exception\n"); + } + return 0; +} + +Andrew Macleod responded: + +When compiled with the table driven exception handling, exception can only +be thrown through functions which have been compiled with the table driven EH. +If a function isn't compiled that way, then we do not have the frame +unwinding information required to restore the registers when unwinding. + +I believe the setjmp/longjmp mechanism will throw through things like this, +but its produces much messier code. (-fsjlj-exceptions) + +The C compiler does support exceptions, you just have to turn them on +with -fexceptions. + +Your main options are to: + a) Don't use callbacks, or at least don't throw through them. + b) Get the source and compile the library with -fexceptions (You have to + explicitly turn on exceptions in the C compiler) + c) always use -fsjlj-exceptions (boo, bad choice :-) + + +g++: "undefined reference" to static const array in class +--------------------------------------------------------- + +The following code compiles under GNU C++ 2.7.2 with correct results, +but produces the same linker error with GNU C++ 2.95.2. +Alexandre Oliva responded: + +All of them are correct. A static data member *must* be defined +outside the class body even if it is initialized within the class +body, but no diagnostic is required if the definition is missing. It +turns out that some releases do emit references to the missing symbol, +while others optimize it away. + +#include + +class Test +{ + public: + Test(const char *q); + protected: + static const unsigned char Jam_signature[4] = "JAM"; +}; + +Test::Test(const char *q) +{ + if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) + cerr << "Hello world!\n"; +} + +int main(void) +{ + Test::Test("JAM"); + return 0; +} + +g++: g++ causes passing non const ptr to ptr to a func with const arg + to cause an error (not a bug) +--------------------------------------------------------------------- + +Example: + +#include +void test(const char **b){ + printf ("%s\n",*b); +} +int main(void){ + char *test1="aoeu"; + test(&test1); +} + +make const +g++ const.cc -o const +const.cc: In function `int main()': +const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' +make: *** [const] Error 1 + +Answer from "Martin v. Loewis" : + +> ok... maybe I missed something.. I haven't really kept up with the latest in +> C++ news. But I've never heard anything even remotly close to passing a non +> const var into a const arg being an error before. + +Thanks for your bug report. This is a not a bug in the compiler, but +in your code. The standard, in 4.4/4, puts it that way + +# A conversion can add cv-qualifiers at levels other than the first in +# multi-level pointers, subject to the following rules: +# Two pointer types T1 and T2 are similar if there exists a type T and +# integer n > 0 such that: +# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) +# pointer to cv(1,n) T +# and +# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) +# pointer to cv(2,n) T +# where each cv(i,j) is const, volatile, const volatile, or +# nothing. The n-tuple of cv-qualifiers after the first in a pointer +# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type +# T1, is called the cv-qualification signature of the pointer type. An +# expression of type T1 can be converted to type T2 if and only if the +# following conditions are satisfied: +# - the pointer types are similar. +# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , +# and similarly for volatile. +# - if the cv(1,j) and cv(2,j) are different, then const is in every +# cv(2,k) for 0 < k < j. + +It is the last rule that your code violates. The standard gives then +the following example as a rationale: + +# [Note: if a program could assign a pointer of type T** to a pointer +# of type const T** (that is, if line //1 below was allowed), a +# program could inadvertently modify a const object (as it is done on +# line //2). For example, +# int main() { +# const char c = 'c'; +# char* pc; +# const char** pcc = &pc; //1: not allowed +# *pcc = &c; +# *pc = 'C'; //2: modifies a const object +# } +# - end note] + +If you question this line of reasoning, please discuss it in one of +the public C++ fora first, eg. comp.lang.c++.moderated, or +comp.std.c++. + + +cpp removes blank lines +----------------------- + +With the new cpp, you need to add -traditional to the "cpp -P" args, else +blank lines get removed. + +[EDIT ME: scan Debian bug reports and write some nice summaries ...] diff --git a/README.C++ b/README.C++ new file mode 100644 index 0000000..8cc40f8 --- /dev/null +++ b/README.C++ @@ -0,0 +1,35 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the +installation of the package, look at: + + file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-4.3-doc package. After installing these packages, +point your browser to + + file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html + +Other documentation can be found: + + http://www.sgi.com/tech/stl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +mirror sites linked from the following URL (this was last updated on +2010/09/11): + + http://www.parashift.com/c++-faq/ + +or use some search engin site to find it, e.g.: + + http://www.google.com/search?q=c%2B%2B+faq+lite + +Be careful not to use outdated mirors. + +Please send updates to this list as bug report for the g++ package. diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..b2275d4 --- /dev/null +++ b/README.Debian @@ -0,0 +1,45 @@ + The Debian GNU Compiler Collection setup + ======================================== + +Please see the README.Debian in /usr/share/doc/gcc, contained in the +gcc package for a description of the setup of the different compiler +versions. + +For general discussion about the Debian toolchain (GCC, glibc, binutils) +please use the mailing list debian-toolchain@lists.debian.org; for GCC +specific things, please use debian-gcc@lists.debian.org. When in doubt +use the debian-toolchain ML. + + +Maintainers of these packages +----------------------------- + +Matthias Klose +Ludovic Brenta (gnat) +Iain Buclaw (gdc) +Aurelien Jarno (mips*-linux) +Aurelien Jarno (s390X*-linux) + +The following ports lack maintenance in Debian: powerpc, ppc64, +sparc, sparc64 (unmentioned ports are usually handled by the Debian +porters). + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner (alpha-linux) +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Randolph Chung (ia64-linux) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Arthur Loiret (gdc) + +=============================================================================== + diff --git a/README.cross b/README.cross new file mode 100644 index 0000000..ccf245b --- /dev/null +++ b/README.cross @@ -0,0 +1,22 @@ +Building cross-compiler Debian packages +--------------------------------------- + +The packaging for cross toolchains is now in the archive, including +all frontends, and targeting all release and ports architectures. + +Cross toolchains are built from the following source packages: + + - binutils + - cross-toolchain-base + - cross-toolchain-base-ports + - gcc-7-cross + - gcc-7-cross-ports + - gcc-8-cross + - gcc-8-cross-ports + - gcc-9-cross + - gcc-9-cross-ports + - gcc-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. diff --git a/README.libstdc++-baseline.in b/README.libstdc++-baseline.in new file mode 100644 index 0000000..e771c16 --- /dev/null +++ b/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. diff --git a/README.maintainers b/README.maintainers new file mode 100644 index 0000000..9240455 --- /dev/null +++ b/README.maintainers @@ -0,0 +1,190 @@ +-*- Outline -*- + +Read this file if you are a Debian Developer or would like to become +one, or if you would like to create your own binary packages of GCC. + +* Overview + +From the GCC sources, Debian currently builds 3 source packages and +almost 100 binary packages, using a single set of build scripts. The +3 source packages are: + +gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp and libgcc. +gnat-x.y: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-x.y source package, we produce, among many +others, a gcc-x.y-source binary package that contains the pristine +upstream tarball and some Debian-specific patches. Any user can then +install this package on their Debian system, and will have the full +souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the +Makefile snippets that unpack and patch them. + +The intended use for this package is twofold: (a) allow users to build +their own cross-compilers, and (b) build the other packages like +gnat-x.y. + +- gcc-x.y requires only a C compiler to build and produces C, C++, + Fortran, Go and Objective-C compilers and libraries. It also + produces the binary package gcc-x.y-source containing all the + sources and patches in a tarball. + +- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It + does not even have an .orig.tar.bz2 package; it is a Debian native + package. + +The benefits of this split are many: + +- bootstrapping a subset of languages is much faster than + bootstrapping all languages and libraries (which can take a full + week on slow architectures like mips or arm) + +- the language maintainers don't have to wait for each other + +- for new ports, the absence of a port of, say, gnat-x.y does not + block the porting of gcc-x.y. + +gcc-x.y-source is also intended for interested users to build +cross-compiler packages. Debian cannot provide all possible +cross-compiler packages (i.e. all possible host, target, language and +library combinations), so instead tries to facilitate building them. + +* The build sequence + +As for all other Debian packages, you build GCC by calling +debian/rules. + +The first thing debian/rules does it to look at the top-most entry in +debian/changelog: this tells it which source package it is building. +For example, if the first entry in debian/changelog reads: + +gnat-6 (6.2.0-1) unstable; urgency=low + + * Upload as gnat-6. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the gnat binary packages. + +The second step is to build debian/control from debian/control.m4 and +a complex set of rules specified in debian/rules.conf. The resulting +control file contains only the binary packages to be built. + +The third step is to select which patches to apply (this is done in +debian/rules.defs), and then to apply the selected patches (see +debian/rules.patch). The result of this step is a generated +debian/patches/series file for use by quilt. + +The fourth step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-x.y), or in +/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source +packages). + +The fifth step is to apply all patches to the unpacked sources with +quilt. + +The sixth step is to create a "build" directory, cd into it, call +../src/configure, and bootstrap the compiler and libraries selected. +This is in debian/rules2. + +The seventh step is to call "make install" in the build directory: +this installs the compiler and libraries into debian/tmp +(i.e. debian/tmp/usr/bin/gcc, etc.) + +The eighth step is to run the GCC test suite. This actually takes at +least as much time as bootstrapping, and you can disable it by setting +WITHOUT_CHECK to "yes" in the environment. + +The ninth step is to build the binary packages, i.e. the .debs. This +is done by a set of language- and architecture-dependent Makefile +snippets in the debian/rules.d/ directory, which move files from the +debian/tmp tree to the debian/ trees. + +* Making your own packages + +In this example, we will build our own gnat-x.y package. + +1) Install gcc-x.y-source, which contains the real sources: + +# aptitude install gcc-x.y-source + +2) Create a build directory: + +$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z + +3) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian + +4) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-x.y". + +5) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +8) Build: + +$ dpkg-buildpackage + +* Hints + +You need a powerful machine to build GCC. The larger, the better. +The build scripts take advantage of as many CPU threads as are +available in your box (for example: 2 threads on a dual-core amd64; 4 +threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, +etc.). + +If you have 2 GB or more of physical RAM, you can achieve maximum +performance by building in a tmpfs, like this: + +1) as root, create the new tmpfs: + +# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram + +By default, the tmpfs will be limited to half your physical RAM. The +beauty of it is that it only consumes as much physical RAM as +necessary to hold the files in it; deleting files frees up RAM. + +2) As your regular user, create the working directory in the tmpfs + +$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes + to build gnat, and the tmpfs takes 992 MiB of physical RAM but + exceeds 1 GiB during the build. + +Note that the build process uses a lot of temporary files. Your $TEMP +directory should therefore also be in a ram disk. You can achieve +that either by mounting it as tmpfs, or by setting TEMP to point to +~/src/debian/ram. + +Also note that each thread in your processor(s) will run a compiler in +it and use up RAM. Therefore your physical memory should be: + +Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) + +(this is an estimate; your mileage may vary). If you have less +physical RAM than recommended, reduce the number of threads allocated +to the build process, or do not use a tmpfs to build. + +* Patching GCC + +Debian applies a large number of patches to GCC as part of the build +process. It uses quilt but the necessary debian/patches/series is not +part of the packaging scripts; instead, "debian/rules patch" generates +this file by looking at debian/control (which is itself generated!), +debian/changelog and other files. Then it applies all the patches. +At this point, you can use quilt as usual: + +$ cd ~/src/debian/gcc-x.y +$ export QUILT_PATCHES=$PWD/debian/patches +$ quilt series + +If you add new patches, remember to add them to the version control +system too. + +-- +Ludovic Brenta, 2012-04-02. diff --git a/README.snapshot b/README.snapshot new file mode 100644 index 0000000..5351938 --- /dev/null +++ b/README.snapshot @@ -0,0 +1,46 @@ +Debian gcc-snapshot package +=========================== + +This package contains a recent development SNAPSHOT of all files +contained in the GNU Compiler Collection (GCC). + +DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + +This package will NEVER hit the testing distribution. It's used for +tracking gcc bugs submitted to the Debian BTS in recent development +versions of gcc. + +To use this snapshot, you should set the following environment variables: + + LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} + PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} + +You might also like to use a shell script to wrap up this +funcationality, e.g. + +place in /usr/local/bin/gcc-snapshot and chmod +x it + +----------- snip ---------- +#!/bin/sh +LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} +PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} +rpath="" +OLD_IFS="$IFS" +IFS=: +for i in $LD_RUN_PATH +do + rpath="$rpath -Wl,-rpath -Wl,$i" +done +IFS="$OLD_IFS" +exec gcc -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib \ + -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib32 \ + -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/libx32 $rpath "$@" +----------- snip ---------- + +Make the same for g++, g77, cpp, ... + +Don't forget the quotes around the $@ or gcc will not parse it's +command line correctly! + +Unset these variables before building Debian packages destined for an +upload to ftp-master.debian.org. diff --git a/README.source b/README.source new file mode 100644 index 0000000..8eed2f0 --- /dev/null +++ b/README.source @@ -0,0 +1,29 @@ +Patches applied to the Debian version of GCC +-------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Quilt is used as the patch system. See /usr/share/doc/quilt/README.source +for details about quilt. + +Patches are applied by calling `debian/rules patch'. The `series' +file is constructed on the fly based on the files found in the to +debian/rules.patch "debian_patches" variable, configure scripts are +regenerated in the `patch' target. The gcc source is unpacked under +src/ this needs to be reflected in the patch header. + +Running a single dejagnu test +----------------------------- + + - Find out the test suite containing the test, and the associated + target (e.g. check-gcc in /gcc, or check in /. + + - Find out the dejagnu test suite, e.g. guality.exp + - If you have a log of the original testsuite run, search back for the + .exp file before the fail. + - Find the directory with the test and then the .exp in the nearest + enclosing directory. + + - Set RUNTESTFLAGS to the testsuite name and the test name to run, e.g + RUNTESTFLAGS="guality.exp=pr54519-2.c" make -e check-gcc + The test name is just the base name, but might be the path relative + from gcc/testsuite for C++ tests. diff --git a/README.ssp b/README.ssp new file mode 100644 index 0000000..9facca7 --- /dev/null +++ b/README.ssp @@ -0,0 +1,28 @@ +Stack smashing protection is a feature of GCC that enables a program to +detect buffer overflows and immediately terminate execution, rather than +continuing execution with corrupt internal data structures. It uses +"canaries" and local variable reordering to reduce the likelihood of +stack corruption through buffer overflows. + +Options that affect stack smashing protection: + +-fstack-protector + Enables protection for functions that are vulnerable to stack + smashing, such as those that call alloca() or use pointers. + +-fstack-protector-all + Enables protection for all functions. + +-Wstack-protector + Warns about functions that will not be protected. Only active when + -fstack-protector has been used. + +Applications built with stack smashing protection should link with the +ssp library by using the option "-lssp" for systems with glibc-2.3.x or +older; glibc-2.4 and newer versions provide this functionality in libc. + +The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not +have support for stack smashing protection. + +More documentation can be found at the project's website: +http://researchweb.watson.ibm.com/trl/projects/security/ssp/ diff --git a/TODO b/TODO new file mode 100644 index 0000000..05c8bf5 --- /dev/null +++ b/TODO @@ -0,0 +1,58 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2020-05-12 + +* General + +- Clean up the sprawl of debian/rules. I'm sure there are neater + ways to do some of it; perhaps split it up into some more files? + Partly done. + +- Make debian/rules control build the control file without unpacking + the sources or applying patches. Currently, it unpacks the sources, + patches them, creates the control file, and a subsequent + dpkg-buildpackage deletes the sources, re-unpacks them, and + re-patches them. + + This would require hard-coding things like soversions in some + places. Is it worth it? + +- Reorganise debian/rules.defs to decide which packages to build in a + more straightforward and less error-prone fashion: (1) start with + all languages; override the list of languages depending on the name + of the source package (gcc-4.3, gnat-4.3, gdc-4.3). (2) + filter the list of languages depending on the target platform; (3) + depending on the languages to build, decide on which libraries to + build. + + Now that we build all languages from one source package, should that + be changed? Building from separate packages makes building the + cross compilers more complicated. + +o [Ludovic Brenta] Ada + +- Done: Build both the zero-cost and setjump/longjump exceptions + versions of libgnat. In particular, gnat-glade (distributed systems) + works best with SJLJ. + This is disabled now in GCC 10. + +- Add support for multilib (not yet supported upstream). + + +* Testsuite + +- Only run libgo/x32, if the kernel is prepared to execute the x32 + executables. + +- PR target/94278: segfaults running the amdgcn target tools, based + on LLVM 9 and LLVM 10. https://bugs.llvm.org/show_bug.cgi?id=45887 + +- Investigate regressions for test failures, seen when turning on the + hardening flags by default. + +- Fix gm2 link errors when running the tests. + +- Fix asan test errors in g++. Seen when run locally, e.g. alloca_big_alignment.c + ==1453818==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD. + +- libstdc++ locale related test failures with recent glibc versions: + https://gcc.gnu.org/PR71367 diff --git a/ada/README.gnat b/ada/README.gnat new file mode 100644 index 0000000..09981e3 --- /dev/null +++ b/ada/README.gnat @@ -0,0 +1,39 @@ +If you want to develop Ada programs and libraries on Debian, please +read the Debian Policy for Ada: + +http://people.debian.org/~lbrenta/debian-ada-policy.html + +The default Ada compiler is and always will be the package `gnat'. +Debian contains many programs and libraries compiled with it, which +are all ABI-compatible. + +Starting with gnat-4.2, Debian provides both zero-cost and +setjump/longjump versions of the run-time library. The zero-cost +exception handling mechanism is the default as it provides the best +performance. The setjump/longjump exception handling mechanism is new +and only provided as a static library. It is necessary to use this +exception handling mechanism in distributed (annex E) programs. If +you wish to use the new sjlj library: + +1) call gnatmake with --RTS=sjlj +2) call gnatbind with -static + +Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX +mechanism. + + +This package also includes small tools covering specific needs. + +* When linking objects compiled from both Ada and C sources, you need + to use compatible versions of the Ada and C compilers. The + required major version is the output of + # gnatmake --version | sed 's/.* \([0-9]\+\).*/\1/;q') + Then compile C sources with gcc-MAJOR instead of gcc. + For GPR projects, this should be sufficient: + # gprconfig --batch --config=Ada --config=C,,,,MAJOR + + The same advice applies to C++, Fortran and assembly. + +* When packaging Ada sources for Debian, you may want to read the + /usr/share/ada/debian_packaging.mk Makefile snippet from the gnat + package. diff --git a/ada/confirm_debian_bugs.py b/ada/confirm_debian_bugs.py new file mode 100644 index 0000000..fe1574b --- /dev/null +++ b/ada/confirm_debian_bugs.py @@ -0,0 +1,899 @@ +#!/usr/bin/python3 + +# Helper when migrating bugs from a gnat version to another. + +# Attempt to reproduce each known GNAT bug with version BV. +# Reports results as control@bugs.debian.org commands. +# Only remove temporary subdirectories when the bug is reproduced. + +# python3 confirm_debian_bugs.py same BV -> found | fixed +# python3 confirm_debian_bugs.py new BV -> reassign | retitle + +# flake8 confirm_debian_bugs.py +# pylint confirm_debian_bugs.py +# mypy confirm_debian_bugs.py +# rm -fr .mypy_cache/ + +# pylint: disable=too-many-lines +# pylint: disable=missing-module-docstring +# pylint: disable=missing-function-docstring + +import os.path +import re +import shutil +import subprocess +import sys +import tempfile +import typing + +Make: typing.TypeAlias = typing.Sequence[str] +Sources: typing.TypeAlias = typing.Iterable[tuple[str, str]] + +os.environ['LC_ALL'] = 'C' + +assert len(sys.argv) == 3, 'expected same|new new_version' +assert sys.argv[1] in ("same", "new") +SAME_GCC_BASE_VERSION = sys.argv[1] == "same" +new_version = sys.argv[2] + +for line in subprocess.check_output( + ("dpkg", "--status", f"gnat-{new_version}")).decode().split("\n"): + if line.startswith("Version: "): + deb_version = line[len("Version: "):] + break +# Will cause an error later if deb_version is not defined. + +# Each bug has its own subdirectory in WORKSPACE. +# Every bug subdir is removed if the bug is confirmed, +# and WORKSPACE is removed if empty. +workspace = tempfile.mkdtemp(suffix=f"-gnat-{new_version}-bugs") + + +def attempt_to_reproduce(bug: int, + make: Make, + sources: Sources, + ) -> tuple[str, int, str]: + tmp_dir = os.path.join(workspace, f"bug{bug}") + os.mkdir(tmp_dir) + + for (name, contents) in sources: + with open(os.path.join(tmp_dir, name), "w", encoding="UTF-8") as out_f: + out_f.write(contents) + + path = os.path.join(tmp_dir, "stderr.log") + with open(path, "w", encoding="UTF-8") as out_f: + status = subprocess.call(make, stderr=out_f, cwd=tmp_dir) + with open(path, "r", encoding="UTF-8") as in_f: + stderr = in_f.read() + return tmp_dir, status, stderr + + +def reassign_and_remove_dir(bug: int, tmp_dir: str) -> None: + if SAME_GCC_BASE_VERSION: + print(f"found {bug} {deb_version}") + else: + print(f"reassign {bug} gnat-{new_version} {deb_version}") + shutil.rmtree(tmp_dir) + + +def report(bug: int, message: str, output: str) -> None: + print(f"# {bug}: {message}.") + for report_line in output.split("\n"): + print(f"# {report_line}") + + +def report_and_retitle(bug: int, message: str, output: str) -> None: + report(bug, message, output) + if SAME_GCC_BASE_VERSION: + print(f"fixed {bug} {deb_version}") + else: + print(f"retitle {bug} [Fixed in {new_version}] ") + + +def check_compiles_but_should_not(bug: int, + make: Make, + sources: Sources, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + reassign_and_remove_dir(bug, tmp_dir) + else: + report_and_retitle(bug, "now fails to compile (bug is fixed?)", stderr) + + +def check_reports_an_error_but_should_not(bug: int, + make: Make, + sources: Sources, + regex: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + report_and_retitle(bug, "now compiles (bug is fixed?)", stderr) + elif re.search(regex, stderr): + reassign_and_remove_dir(bug, tmp_dir) + else: + report(bug, "still fails to compile, but with a new stderr", stderr) + + +def check_reports_error_but_forgets_one(bug: int, + make: Make, + sources: Sources, + regex: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status == 0: + report(bug, "now compiles (?)", stderr) + elif re.search(regex, stderr): + report_and_retitle(bug, "now reports the error (bug is fixed ?)", + stderr) + else: + reassign_and_remove_dir(bug, tmp_dir) + + +def check_produces_a_faulty_executable(bug: int, + make: Make, + sources: Sources, + regex: str, + trigger: str, + ) -> None: + tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) + if status != 0: + report(bug, "cannot compile the trigger anymore", stderr) + else: + output = subprocess.check_output((os.path.join(tmp_dir, trigger), ), + cwd=tmp_dir).decode() + if re.search(regex, output): + reassign_and_remove_dir(bug, tmp_dir) + else: + report_and_retitle(bug, + "output of the trigger changed (bug fixed?)", + output) + + +###################################################################### + +check_reports_an_error_but_should_not( + bug=244936, + make=(f"gnatmake-{new_version}", "p"), + regex='p[.]ads:3:25: error: ' + '"foo" is hidden within declaration of instance', + sources=( + ("foo.ads", """generic +procedure foo; +"""), + ("foo.adb", """procedure foo is +begin + null; +end foo; +"""), ("p.ads", """with foo; +package p is + procedure FOO is new foo; -- OK +end p; +"""))) + +check_reports_an_error_but_should_not( + bug=246187, + make=(f"gnatmake-{new_version}", "test_43"), + regex="Error detected at test_43.ads:11:4", + sources=( + ("test_43.ads", """package Test_43 is + type T1 is private; + +private + + type T2 is record + a: T1; + end record; + type T2_Ptr is access T2; + + type T1 is record + n: T2_Ptr := new T2; + end record; + +end Test_43; +"""),)) + +check_compiles_but_should_not( + bug=247013, + make=(f"gnatmake-{new_version}", "test_53"), + sources=( + ("test_53.ads", """generic + type T1 is private; +package Test_53 is + type T2 (x: integer) is new T1; -- ERROR: x not used +end Test_53; +"""),)) + +check_compiles_but_should_not( + bug=247017, + make=(f"gnatmake-{new_version}", "test_59"), + sources=( + ("test_59.adb", """procedure Test_59 is + + generic + type T1 (<>) is private; + procedure p1(x: out T1); + + procedure p1 (x: out T1) is + b: boolean := x'constrained; --ERROR: not a discriminated type + begin + null; + end p1; + +begin + null; +end Test_59; +"""),)) + +check_compiles_but_should_not( + bug=247018, + make=(f"gnatmake-{new_version}", "test_60"), + sources=( + ("pak1.ads", """package pak1 is + generic + package pak2 is + end pak2; +end pak1; +"""), + ("test_60.ads", """with pak1; +package Test_60 is + package PAK1 is new pak1.pak2; --ERROR: illegal reference to pak1 +end Test_60; +"""))) + +check_compiles_but_should_not( + bug=247019, + make=(f"gnatmake-{new_version}", "test_61"), + sources=( + ("test_61.adb", """procedure Test_61 is + procedure p1; + + generic + package pak1 is + procedure p2 renames p1; + end pak1; + + package new_pak1 is new pak1; + procedure p1 renames new_pak1.p2; --ERROR: circular renames +begin + p1; +end Test_61; +"""),)) + +check_produces_a_faulty_executable( + bug=247569, + make=(f"gnatmake-{new_version}", "test_75"), + trigger="test_75", + regex="failed: wrong p1 called", + sources=( + ("test_75.adb", """with text_io; +procedure Test_75 is + generic + package pak1 is + type T1 is null record; + end pak1; + + generic + with package A is new pak1(<>); + with package B is new pak1(<>); + package pak2 is + procedure p1(x: B.T1); + procedure p1(x: A.T1); + end pak2; + + package body pak2 is + + procedure p1(x: B.T1) is + begin + text_io.put_line("failed: wrong p1 called"); + end p1; + + procedure p1(x: A.T1) is + begin + text_io.put_line("passed"); + end p1; + + x: A.T1; + begin + p1(x); + end pak2; + + package new_pak1 is new pak1; + package new_pak2 is new pak2(new_pak1, new_pak1); -- (1) + +begin + null; +end Test_75; +"""),)) + +check_compiles_but_should_not( + bug=247570, + make=(f"gnatmake-{new_version}", "test_76"), + sources=( + ("test_76.adb", """procedure Test_76 is + + generic + procedure p1; + + pragma Convention (Ada, p1); + + procedure p1 is + begin + null; + end p1; + + procedure new_p1 is new p1; + pragma Convention (Ada, new_p1); --ERROR: new_p1 already frozen + +begin + null; +end Test_76; +"""),)) + +check_produces_a_faulty_executable( + bug=247571, + make=(f"gnatmake-{new_version}", "test_77"), + trigger="test_77", + regex="failed: wrong p1 called", + sources=( + ("pak.ads", """package pak is + procedure p1; + procedure p1(x: integer); + pragma export(ada, p1); +end pak; +"""), + ("pak.adb", """with text_io; use text_io; +package body pak is + procedure p1 is + begin + put_line("passed"); + end; + + procedure p1(x: integer) is + begin + put_line("failed: wrong p1 called"); + end; +end pak; +"""), + ("test_77.adb", """with pak; +procedure Test_77 is + procedure p1; + pragma import(ada, p1); +begin + p1; +end Test_77; +"""))) + +check_compiles_but_should_not( + bug=248166, + make=(f"gnatmake-{new_version}", "test_82"), + sources=( + ("test_82.adb", """procedure Test_82 is + package pak1 is + type T1 is tagged null record; + end pak1; + + package body pak1 is + -- type T1 is tagged null record; -- line 7 + + function "=" (x, y : T1'class) return boolean is -- line 9 + begin + return true; + end "="; + + procedure proc (x, y : T1'class) is + b : boolean; + begin + b := x = y; --ERROR: ambiguous "=" + end proc; + + end pak1; + +begin + null; +end Test_82; +"""),)) + +check_compiles_but_should_not( + bug=248168, + make=(f"gnatmake-{new_version}", "test_84"), + sources=( + ("test_84.adb", """procedure Test_84 is + package pak1 is + type T1 is abstract tagged null record; + procedure p1(x: in out T1) is abstract; + end pak1; + + type T2 is new pak1.T1 with null record; + + protected type T3 is + end T3; + + protected body T3 is + end T3; + + procedure p1(x: in out T2) is --ERROR: declared after body of T3 + begin + null; + end p1; + +begin + null; +end Test_84; +"""),)) + +check_compiles_but_should_not( + bug=248678, + make=(f"gnatmake-{new_version}", "test_80"), + sources=( + ("test_80.ads", """package Test_80 is + generic + type T1(<>) is private; + with function "=" (Left, Right : T1) return Boolean is <>; + package pak1 is + end pak1; + + package pak2 is + type T2 is abstract tagged null record; + package new_pak1 is new pak1 (T2'Class); --ERROR: no matching "=" + end pak2; +end Test_80; +"""),)) + +check_compiles_but_should_not( + bug=248681, + make=(f"gnatmake-{new_version}", "test_91"), + sources=( + ("test_91.adb", """-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +with unchecked_deallocation; +procedure Test_91 is + generic -- when non generic, we get the expected error + package pak1 is + type int_ptr is access integer; + procedure free(x: in out int_ptr); + end pak1; + + package body pak1 is + procedure deallocate is new + unchecked_deallocation(integer, int_ptr); + procedure free(x: in out int_ptr) renames + deallocate; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end Test_91; +"""),)) + +check_compiles_but_should_not( + bug=248682, + make=(f"gnatmake-{new_version}", "main"), + sources=( + ("main.adb", """-- RM 6.3.1(9) +-- The default calling convention is Intrinsic for ... an attribute +-- that is a subprogram; + +-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +procedure main is + package pak1 is + function f1(x: integer'base) return integer'base; + end pak1; + + package body pak1 is + function f1(x: integer'base) return integer'base renames + integer'succ; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end; +"""),)) + +check_reports_an_error_but_should_not( + bug=253737, + make=(f"gnatmake-{new_version}", "test_4"), + regex='test_4[.]ads:3:01: error: "pak2" not declared in "pak1"', + sources=( + ("parent.ads", """generic +package parent is +end parent; +"""), + ("parent-pak2.ads", """generic +package parent.pak2 is +end parent.pak2; +"""), + ("parent-pak2-pak3.ads", """generic +package parent.pak2.pak3 is +end parent.pak2.pak3; +"""), + ("parent-pak2-pak4.ads", """with parent.pak2.pak3; +generic +package parent.pak2.pak4 is + package pak3 is new parent.pak2.pak3; +end parent.pak2.pak4; +"""), + ("pak1.ads", """with parent; +package pak1 is new parent; +"""), + ("pak6.ads", """with parent.pak2; +with pak1; +package pak6 is new pak1.pak2; +"""), + ("test_4.ads", """with parent.pak2.pak4; +with pak6; +package Test_4 is new pak6.pak4; +"""))) + +check_compiles_but_should_not( + bug=269948, + make=(f"gnatmake-{new_version}", "test_119"), + sources=( + ("test_119.ads", """ +-- RM 3.9.3/11 A generic actual subprogram shall not be an abstract +-- subprogram. works OK if unrelated line (A) is commented out. +package Test_119 is + generic + with function "=" (X, Y : integer) return Boolean is <>; + -- Removing this allows GCC to detect the problem. + package pak1 is + function "=" (X, Y: float) return Boolean is abstract; + generic + with function Equal (X, Y : float) return Boolean is "="; --ERROR: + package pak2 is + end pak2; + end pak1; + + package new_pak1 is new pak1; + package new_pak2 is new new_pak1.pak2; +end Test_119; +"""),)) + +check_compiles_but_should_not( + bug=269951, + make=(f"gnatmake-{new_version}", "test_118"), + sources=( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-foo.ads", """generic +package pak1.foo is +end pak1.foo; +"""), + ("test_118.ads", """with pak1.foo; +package Test_118 is + package pak3 is + foo: integer; + end pak3; + use pak3; + + package new_pak1 is new pak1; + use new_pak1; + + x: integer := foo; -- ERROR: foo hidden by use clauses +end Test_118; +"""),)) + +# As long as 24:14 is detected, it inhibits detection of 25:21. +check_reports_error_but_forgets_one( + bug=276224, + make=(f"gnatmake-{new_version}", "test_121"), + regex="test_121[.]adb:25:21: dynamically tagged expression not allowed", + sources=( + ("test_121.adb", + """-- If the expected type for an expression or name is some specific +-- tagged type, then the expression or name shall not be dynamically +-- tagged unless it is a controlling operand in a call on a +-- dispatching operation. +procedure Test_121 is + package pak1 is + type T1 is tagged null record; + function f1 (x1: T1) return T1; + end pak1; + + package body pak1 is + function f1 (x1: T1) return T1 is + begin + return x1; + end; + end pak1; + use pak1; + + type T2 is record + a1: T1; + end record; + + z0: T1'class := T1'(null record); + z1: T1 := f1(z0); -- ERROR: gnat correctly rejects + z2: T2 := (a1 => f1(z0)); -- ERROR: gnat mistakenly allows +begin + null; +end Test_121; +"""),)) + +check_reports_an_error_but_should_not( + bug=276227, + make=(f"gnatmake-{new_version}", "test_124"), + regex='test_124[.]ads:6:35: error: ' + 'size for "T_arr_constrained" too small, minimum allowed is 256', + sources=( + ("test_124.ads", """package Test_124 is + type T is range 1 .. 32; + type T_arr_unconstrained is array (T range <>) of boolean; + type T_arr_constrained is new T_arr_unconstrained (T); + pragma pack (T_arr_unconstrained); + for T_arr_constrained'size use 32; +end Test_124; +"""),)) + +check_reports_an_error_but_should_not( + bug=278687, + make=(f"gnatmake-{new_version}", "test_127"), + regex='test_127[.]adb:10:21: error: expected type "T2" defined at line 4', + sources=( + ("test_127.ads", + """-- The second parameter of T2'Class'Read is of type T2'Class, +-- which should match an object of type T3, which is derived +-- from T2. +package test_127 is + pragma elaborate_body; +end test_127; +"""), + ("test_127.adb", """with ada.streams; +package body test_127 is + type T1 is access all ada.streams.root_stream_type'class; + type T2 is tagged null record; + type T3 is new T2 with null record; + + x: T1; + y: T3; +begin + T2'class'read(x, y); +end test_127; +"""))) + +check_compiles_but_should_not( + bug=278831, + make=(f"gnatmake-{new_version}", "test_128"), + sources=( + ("test_128.ads", """package Test_128 is + package inner is + private + type T1; + end inner; + type T1_ptr is access inner.T1; -- line 9 ERROR: gnat mistakenly accepts +end Test_128; +"""), + ("test_128.adb", """package body test_128 is + package body inner is + type T1 is new Integer; + end inner; +end Test_128; +"""))) + +# Note that we also check the absence of the next inhibited message. +check_reports_an_error_but_should_not( + bug=279893, + make=(f"gnatmake-{new_version}", "test_129"), + regex='test_129[.]ads:13:49: error: ' + 'designated type of actual does not match that of formal "T2"', + sources=( + ("pak1.ads", + """-- legal instantiation rejected; illegal instantiation accepted +-- adapted from John Woodruff c.l.a. post + +generic + type T1 is private; +package pak1 is + subtype T3 is T1; +end pak1; +"""), + ("pak2.ads", """with pak1; +generic + type T2 is private; +package pak2 is + package the_pak1 is new pak1 (T1 => T2); +end pak2; +"""), + ("pak2-pak3.ads", """generic + type T2 is access the_pak1.T3; +package pak2.pak3 is +end pak2.pak3; +"""), + ("test_129.ads", """with pak1; +with pak2.pak3; +package Test_129 is + + type T4 is null record; + type T5 is null record; + subtype T3 is T5; -- line 9: triggers the bug at line 16 + + type T4_ptr is access T4; + type T5_ptr is access T5; + + package new_pak2 is new pak2 (T2 => T4); + package new_pak3a is new new_pak2.pak3(T2 => T4_ptr); -- line 15: Legal + package new_pak3b is new new_pak2.pak3(T2 => T5_ptr); -- line 16: Illegal +end Test_129; +"""))) + +print("# Please ignore the gnatlink message.") +check_reports_an_error_but_should_not( + bug=280939, + make=(f"gnatmake-{new_version}", "test_130"), + regex="test_130[.]adb:.*: undefined reference to [`]p2\'", + sources=( + ("pak1.ads", + """-- RM 10.1.5(4) "the pragma shall have an argument that is a name +-- denoting that declaration." +-- RM 8.1(16) "The children of a parent library unit are inside the +-- parent's declarative region." + +package pak1 is + pragma Pure; +end pak1; +"""), + ("pak1-p2.ads", """procedure pak1.p2; +pragma Pure (p2); -- ERROR: need expanded name +pragma Import (ada, p2); -- ERROR: need expanded name +pragma Inline (p2); -- ERROR: need expanded name +"""), + ("test_130.adb", """with Pak1.P2; +procedure Test_130 is +begin + Pak1.P2; +end Test_130; +"""))) + +check_compiles_but_should_not( + bug=283833, + make=(f"gnatmake-{new_version}", "test_132"), + sources=( + ("pak1.ads", + """-- RM 8.5.4(5) the convention of the renamed subprogram shall not +-- be Intrinsic, if the renaming-as-body completes that declaration +-- after the subprogram it declares is frozen. + +-- RM 13.14(3) the end of the declaration of a library package +-- causes freezing of each entity declared within it. + +-- RM 6.3.1(7) the default calling convention is Intrinsic for +-- any other implicitly declared subprogram unless it is a +-- dispatching operation of a tagged type. + +package pak1 is + type T1 is null record; + procedure p1 (x1: T1); + type T2 is new T1; +end pak1; +"""), + ("pak1.adb", """package body Pak1 is + procedure P1 (X1 : T1) is begin null; end P1; +end Pak1; +"""), + ("test_132.ads", """with pak1; +package Test_132 is + procedure p2 (x2: pak1.T2); +end Test_132; +"""), + ("test_132.adb", """package body Test_132 is + procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic +end Test_132; +"""))) + +check_compiles_but_should_not( + bug=283835, + make=(f"gnatmake-{new_version}", "test_133"), + sources=( + ("test_133.ads", """package Test_133 is + package pak1 is + type T1 is null record; + end pak1; + + package pak2 is + subtype boolean is standard.boolean; + function "=" (x, y: pak1.T1) return boolean; + end pak2; + + use pak1, pak2; + + x1: pak1.T1; + b1: boolean := x1 /= x1; -- ERROR: ambigous (gnat misses) + -- b2: boolean := x1 = x1; -- ERROR: ambigous +end Test_133; +"""), + ("test_133.adb", """package body test_133 is + package body pak2 is + function "=" (x, y: pak1.T1) return boolean is + begin + return true; + end "="; + end pak2; +end test_133; +"""))) + +check_compiles_but_should_not( + bug=416979, + make=(f"gnatmake-{new_version}", "pak1"), + sources=( + ("pak1.ads", """package pak1 is + -- RM 7.3(13), 4.9.1(1) + -- check that discriminants statically match + type T1(x1: integer) is tagged null record; + x2: integer := 2; + x3: constant integer := x2; + type T2 is new T1 (x2) with private; + type T3 is new T1 (x3) with private; +private + type T2 is new T1 (x2) with null record; --ERROR: nonstatic discriminant + type T3 is new T1 (x3) with null record; --ERROR: nonstatic discriminant +end pak1; +"""),)) + +check_reports_an_error_but_should_not( + bug=660698, + make=(f"gnatmake-{new_version}", "proc.adb"), + regex='proc[.]adb:17:28: error: ' + 'there is no applicable operator "And" for type "Standard[.]Integer"', + sources=( + ("proc.adb", """procedure Proc is + package P1 is + type T is new Integer; + function "and" (L, R : in Integer) return T; + end P1; + package body P1 is + function "and" (L, R : in Integer) return T is + pragma Unreferenced (L, R); + begin + return 0; + end "and"; + end P1; + use type P1.T; + package P2 is + use P1; + end P2; + G : P1.T := Integer'(1) and Integer'(2); +begin + null; +end Proc; +"""), )) + +check_produces_a_faulty_executable( + bug=864969, + make=(f"gnatmake-{new_version}", "main"), + trigger="main", + regex="ZZund", + sources=( + ("main.adb", """with Ada.Locales, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (String (Ada.Locales.Country) + & String (Ada.Locales.Language)); +end Main; +"""),)) + +check_produces_a_faulty_executable( + bug=894225, + make=(f"gnatmake-{new_version}", "main"), + trigger="main", + sources=( + ("main.adb", + """with Ada.Directories, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("/a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("b/")); +end Main; +"""), + ), + regex="""^/a/b +a/b +b$""") + +try: + os.rmdir(workspace) +except OSError: + print(f"Some unconfirmed, not removing directory {workspace}.") diff --git a/ada/libgnat_alihash b/ada/libgnat_alihash new file mode 100755 index 0000000..34d4481 --- /dev/null +++ b/ada/libgnat_alihash @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +# Helper for debian/rules2. + +# Exit silently during builds without Ada. + +# If the gnat RTS directory contains .ali (Ada Library Information) files, +# output a dpkg-gencontrol command line argument setting the +# libgnat:Provides substitution variable +# to the XOR of the checksums in all such files, +# as 8 lowercase hexadecimal digits. + +# See https://people.debian.org/~lbrenta/debian-ada-policy.html. + +# Should be in sync with dh_ada_library in the dh-ada-library package. + +# perl -c $script +# perltidy $script -st | diff -u $script - +# perlcritic -1 --verbose=11 --exclude=Modules::RequireVersionVar $script + +use autodie; +use re '/amsx'; +use strict; +use warnings; + +my @ali_files = glob 'build/gcc/ada/rts/*.ali'; +if (@ali_files) { + my $result = 0; + for my $path (@ali_files) { + open my $fh, q{<}, $path; + while (<$fh>) { + if (m/ ^ D [ ] [^\t]+ \t+ \d{14} [ ] ( [[:xdigit:]]{8} ) /) { + $result ^= hex $1; + } + } + close $fh; + } + printf '-Vlibgnat:alihash=%08x', $result; +} diff --git a/ada/test_ada_source_date_epoch.sh b/ada/test_ada_source_date_epoch.sh new file mode 100644 index 0000000..5154341 --- /dev/null +++ b/ada/test_ada_source_date_epoch.sh @@ -0,0 +1,97 @@ +#!/bin/sh +# Basic checks for debian/patches/ada-lib-info-source-date-epoch.diff. + +# Copyright (C) 2020 Nicolas Boulenguez + +# Usage: +# build GCC +# sh debian/ada/test_ada_source_date_epoch.sh +# rm -fr build/test_ada_source_data_epoch + +set -C -e -u -x + +# Inside the GCC tree: +mkdir build/test_ada_source_data_epoch +cd build/test_ada_source_data_epoch +export LD_LIBRARY_PATH=../gcc/ada/rts:`echo ../*/libgnat_util/.libs` +gnatmake="../gcc/gnatmake --RTS=`echo ../*/libada` --GCC=../gcc/xgcc -c -v" +# For local tests: +# gnatmake="gnatmake -c -v" + +cat > lib.ads < main.adb < Fri, 18 Sep 2026 09:00:41 +0200 + +gcc-15 (15.3.0-3) unstable; urgency=medium + + * Update to git 20260902 from the gcc-15 branch. + - Fix PR target/123492 (RISCV), PR target/123492 (RISCV), + PR middle-end/127098 (AVR), PR target/120681 (PPC), + PR target/120528 (PPC), PR target/99293 (PPC), PR target/117487 (PPC), + PR tree-optimization/126534, PR target/126667 (S390), + PR tree-optimization/126601, PR tree-optimization/126564, + PR target/126484 (MIPS), PR ada/125984, PR target/126873, + PR rtl-optimization/126426, PR target/127004 (AVR), + PR target/126787 (x86), PR target/126513 (PPC), + PR target/124629 (AArch64), PR tree-optimization/126650, + PR middle-end/126410, PR tree-optimization/125786, + PR tree-optimization/125545, PR tree-optimization/125477, + PR middle-end/125156, PR target/125949 (x86), PR target/126334 (RISCV), + PR target/126550 (RISCV), PR target/126550 (RISCV), + PR target/126581 (x86), PR tree-optimization/126504, + PR tree-optimization/126503, PR middle-end/126497, + PR tree-optimization/126490, PR tree-optimization/126464, + PR tree-optimization/126476, PR tree-optimization/126464, + PR middle-end/126084, PR tree-optimization/126471, PR target/126446, + PR target/126446 (x86), PR middle-end/126447, PR target/126429 (x86), + PR tree-optimization/124663, PR ipa/124128, PR target/119210 (ARM), + PR testsuite/126261, PR tree-optimization/125953, + PR tree-optimization/125502, PR tree-optimization/126194, + PR target/105116, PR driver/124058, PR ada/127026, PR ada/127026, + PR ada/126553, PR ada/126379, PR ada/126482, PR c++/124806, + PR driver/124058, PR fortran/126127, PR fortran/114021, PR fortran/123952, + PR fortran/125263, PR fortran/125866, PR fortran/126303, + PR fortran/126386, PR fortran/97592, PR fortran/125998, + PR preprocessor/125048, PR target/125803 (PPC), PR target/127024 (AVR), + PR sanitizer/126307, PR libstdc++/127006, PR libstdc++/126452, + PR libstdc++/126849, PR libstdc++/116110, PR libstdc++/124852, + PR libstdc++/124852, PR libstdc++/124851. + * Extend the sh-bootstrap-compare patch (Adrian Glaubitz). Closes: #1144437. + + -- Matthias Klose Wed, 02 Sep 2026 13:38:50 +0200 + +gcc-15 (15.3.0-2) unstable; urgency=medium + + * Update to git 20260719 from the gcc-15 branch. + - Fix PR tree-optimization/126262, PR tree-optimization/126257, + PR middle-end/126084, PR tree-optimization/120201, PR target/106895 (PPC), + PR target/126148 (x86), PR target/126049 (RISCV), PR target/67459 (SH), + PR target/122948 (SH), PR target/125972 (S390), + PR rtl-optimization/125173, PR target/124908 (AArch64), + PR target/125818 (AArch64), PR target/125469 (x86), + PR target/125469 (x86), PR target/125992 (S390), PR target/125611 (x86), + PR target/125478 (RISCV), PR target/125670 (RISCV), PR testsuite/113276, + PR target/125215 (RISCV), PR middle-end/125621, PR target/125795 (RISCV), + PR target/120144 (MIPS), PR ipa/125699, PR tree-optimization/125776, + PR tree-optimization/125774, PR rtl-optimization/123822, + PR rtl-optimization/124454, PR rtl-optimization/116053, + PR tree-optimization/125501, PR tree-optimization/124151, PR c++/126057, + PR c++/125674, PR c++/65271, PR fortran/125172, PR fortran/103367, + PR fortran/60576, PR fortran/103367, PR fortran/126018, + PR fortran/125606, PR lto/125257, PR libgcc/123976, PR libfortran/126116, + PR libstdc++/126111, PR libstdc++/125956, PR libstdc++/118158. + * Let the ada build fail on an alihash mismatch, if fail_on_alihash_mismatch + is enabled. + * Fix PR ipa/124128, taken from the gcc-16 branch. + + -- Matthias Klose Sun, 19 Jul 2026 18:36:13 +0200 + +gcc-15 (15.3.0-1) unstable; urgency=medium + + * GCC 15.3.0 release. + - Fix PR middle-end/124900, PR tree-optimization/125431, + PR tree-optimization/125250, PR tree-optimization/124086, + PR middle-end/121661, PR tree-optimization/120560, PR ipa/120098, + PR ipa/120098, PR target/122827 (AArch64), PR rtl-optimization/122266, + PR tree-optimization/120003, PR middle-end/125146, + PR tree-optimization/125025, PR tree-optimization/125019, + PR tree-optimization/124868, PR target/125373 (X86), + PR tree-optimization/125079, PR tree-optimization/125039, + PR target/124133 (PPC), PR target/124892 (X86), + PR tree-optimization/124891, PR tree-optimization/124826, + PR tree-optimization/124754, PR target/124870 (ARM), + PR target/125409 (AVR), PR target/125049 (loongarch), + PR target/125351 (X86), PR target/124316 (X86), PR target/125194 (AVR), + PR target/123102 (ARM), PR tree-optimization/122976, PR ipa/124777, + PR target/124933 (ARM), PR rtl-optimization/122274, PR ada/125695, + PR ada/125240, PR ada/125044, PR ada/125044, PR c/123856, PR c/125252, + PR c/124532, PR c++/122163, PR c++/125376, PR c++/124850, PR c++/124487, + PR c++/124487, PR c++/124198, PR c++/124531, PR c++/124632, PR c++/123143, + PR d/125089, PR fortran/125606, PR fortran/106546, PR fortran/115260, + PR fortran/125021, PR fortran/111952, PR fortran/125059, + PR fortran/96986, PR fortran/94978, PR fortran/93832, PR fortran/93814, + PR fortran/93715, PR fortran/101760, PR fortran/102314, + PR fortran/85352, PR fortran/107425, PR fortran/79524, PR fortran/79524, + PR fortran/109788, PR fortran/102430, PR target/125752 (AVR), + PR libfortran/125095, PR sanitizer/124248, PR libstdc++/117214, + PR libstdc++/120789, PR libstdc++/119163, PR libstdc++/122224, + PR libstdc++/120386, PR libstdc++/120384, PR libstdc++/125374, + PR libstdc++/125369, PR libstdc++/123100, PR libstdc++/122567, + PR libstdc++/124513, PR libstdc++/116110, PR libstdc++/116110, + PR libstdc++/109965. + * Update newlib to 4.6.0.20260123. + * Update libga68 symbols file. + * d/shlibs.common: Add libgdiagnostics. + * Fix PR sanitizer/124248, taken from the gcc-16 branch. + * libstdc++-dev: Make baseline file reproducible. Closes: #1133772. + * Apply proposed patch for PR rtl-optimization/123853 (m68k). See #1107416. + * Apply PR middle-end/124637, taken from the trunk. Closes: #1131886. + + -- Matthias Klose Sat, 13 Jun 2026 11:21:26 +0200 + +gcc-15 (15.2.0-17) unstable; urgency=medium + + * Update to git 20260423 from the gcc-15 branch. + - Fix PR target/69639 (MingW), PR tree-optimization/123002, + PR target/124876 (x86), PR tree-optimization/124802, + PR tree-optimization/124677, PR debug/124644, PR tree-optimization/124555, + PR tree-optimization/120987, PR target/124670 (bpf), + PR target/123271 (ARM), PR target/124710 (x86), PR target/105192 (MIPS), + PR target/124613 (RISCV), PR target/123017 (AArch64), + PR target/124674 (AArch64), PR tree-optimization/124627, PR ada/124836, + PR ada/124607, PR ada/124606, PR c/124635, PR c/122572, PR c++/120338, + PR c++/121643, PR c++/123975, PR c++/121961, PR c++/117133, PR c++/124768, + PR c++/124773, PR c++/123700, PR c++/123529, PR c++/98930, PR c++/118630, + PR c++/124735, PR c++/124781, PR c++/124785, PR c++/124477, PR c++/123665, + PR c++/123408, PR c++/122621, PR d/123411, PR fortran/100155, + PR fortran/102619, PR fortran/95879, PR fortran/95879, PR fortran/66973, + PR fortran/124652, PR fortran/117303, PR fortran/120723, + PR fortran/124751, PR fortran/100194, PR fortran/124567, + PR fortran/121342, PR fortran/120713, PR fortran/124631, + PR fortran/95338, PR fortran/102459, PR fortran/82721, PR fortran/84245, + PR fortran/119273, PR fortran/105168, PR libstdc++/124463. + * Update the ada-armel-libatomic patch for PR ada/107475. + * Build gcc itself with branch-protection (Emanuele Rocca). Closes: #1130592. + - On arm64 by appending CFLAGS_SECURE to BOOT_CFLAGS. + - Set BOOT_CFLAGS explicitly instead of relying on upstream defaults. + * Bump standards version. + + -- Matthias Klose Thu, 23 Apr 2026 12:06:05 +0200 + +gcc-15 (15.2.0-16) unstable; urgency=medium + + * Update to git 20260321 from the gcc-15 branch. + - Fix PR target/124461 (x86), PR target/123457 (AArch64), + PR target/124126 (AArch64), PR target/123285 (AArch64), + PR target/124409 (RISCV), PR tree-optimization/119568, + PR tree-optimization/121103, PR rtl-optimization/122170, + PR rtl-optimization/123294, PR tree-optimization/123645, + PR target/124147 (RISCV), PR target/122448 (RISCV), + PR target/112400 (VAX), PR tree-optimization/124135, + PR tree-optimization/124358, PR target/124349 (x86), + PR target/124367 (x86), PR target/124366 (x86), + PR target/124341 (x86), PR target/124349 (x86), + PR target/124315 (x86), PR target/124335 (x86), + PR target/124294 (x86), PR target/124138 (x86), PR middle-end/124056, + PR rtl-optimization/116600, PR middle-end/123386, PR c/101312, + PR tree-optimization/123672, PR middle-end/123978, PR c++/123818, + PR middle-end/122689, PR tree-optimization/121104, + PR tree-optimization/123864, PR c++/123790, PR middle-end/123876, + PR ada/107475, PR c/105555, PR c/123365, PR c++/124309, + PR c++/124311, PR c++/124431, PR c++/120685, PR c++/123889, + PR c++/123578, PR c++/123737, PR c++/123667, PR c++/123684, + PR fortran/124450, PR fortran/121743, PR preprocessor/105412, + PR preprocessor/123273, PR target/124365 (AArch64), + PR libstdc++/124015, PR libstdc++/121771, PR rtl-optimization/121649, + PR middle-end/123573, PR middle-end/123175, PR tree-optimization/124132, + PR tree-optimization/124130, PR tree-optimization/123596, + PR tree-optimization/123298, PR tree-optimization/123061, + PR tree-optimization/123636, PR tree-optimization/122537, + PR tree-optimization/121726, PR ipa/123416, PR tree-optimization/116747, + PR ipa/111036, PR c++/124489, PR c++/120039, PR c++/122559, + PR fortran/122046, PR fortran/124161, PR fortran/120286, + PR fortran/102596, PR fortran/106946, PR fortran/124482, + PR libstdc++/124568, PR libstdc++/124124, PR libstdc++/105580. + * For backports, require binutils (>= 2.40) on riscv64. + * Fix PR ada/107475 also for armhf and s390x. + + -- Matthias Klose Sun, 22 Mar 2026 10:52:07 +0100 + +gcc-15 (15.2.0-15) unstable; urgency=medium + + * Update to git 20260307 from the gcc-15 branch. + - Fix PR ada/124226, PR ada/124224, PR target/123807 (loongarch). + PR middle-end/124250, PR ipa/122856, PR target/122097 (loongarch), + PR ada/124285, PR ada/123306, PR c++/123845, PR lto/121588, + PR libstdc++/124363, PR libstdc++/114865, PR libstdc++/123875. + * Fix backport builds for Ubuntu 24.04. + * Fix PR demangler/106641, taken from the trunk. + * libsanitizer/TSan: Fix determining static TLS blocks. Addresses: #1126312. + * Stop building packages now built by GCC 16. + + -- Matthias Klose Sat, 07 Mar 2026 12:32:03 +0100 + +gcc-15 (15.2.0-14) unstable; urgency=medium + + * Update to git 20260223 from the gcc-15 branch. + - Fix PR c++/120974, PR target/121571, PR target/124134 (ARM), + PR target/123206 (AArch64), PR tree-optimization/117217, + PR ipa/106260, PR target/123910 (RISCV), PR middle-end/123447, + PR target/123624 (AArch64), PR rtl-optimization/116479, + PR tree-optimization/123940, PR target/123870 (RISCV), + PR target/123969 (RISCV), PR target/123971 (RISCV), + PR target/123806 (RISCV), PR rtl-optimization/121787, + PR target/122869 (RISCV), PR pch/14940, PR target/122781 (S390), + PR ada/124106, PR ada/124054, PR ada/124025, PR c++/123989, + PR c++/121822, PR c++/122318, PR c++/101670, PR d/124026, + PR fortran/123961, PR c++/124153, PR c++/119756, PR libstdc++/122821, + PR libstdc++/123991, PR libstdc++/124024. + * Fix build when building without common libraries. + * Re-enable profiled build on armhf to check for PR target/119937. + * Re-enable lto build on loong64. Closes: #1127462. + * Bump standards version. + + -- Matthias Klose Mon, 23 Feb 2026 10:34:32 +0100 + +gcc-15 (15.2.0-13) unstable; urgency=medium + + * Update to git 20260207 from the gcc-15 branch. + - Fix PR tree-optimization/123513, PR target/123607 (x86), PR target/120250, + PR rtl-optimization/123523, PR tree-optimization/123431, + PR target/123489 (x86), PR middle-end/111817, PR rtl-optimization/119291, + PR rtl-optimization/121773, PR tree-optimization/123351, + PR tree-optimization/123372, PR target/123217 (x86), + PR target/123155 (x86), PR target/123460, PR rtl-optimization/123121, + PR middle-end/123392, PR target/123521 (loongarch), PR diagnostics/120063, + PR tree-optimization/123300, PR target/123484 (x86), + PR tree-optimization/123040, PR target/121192, PR target/121485 (RISCV), + PR tree-optimization/122868, PR debug/121964, PR ada/68179, PR ada/123589, + PR ada/123371, PR ada/123306, PR ada/123088, PR ada/123302, PR ada/123289, + PR ada/123185, PR ada/123060, PR analyzer/123085, PR analyzer/122975, + PR c/123156, PR c++/123331, PR c++/91388, PR c++/122772, PR c++/122834, + PR c++/121966, PR c++/116952, PR c++/122048, PR c++/121854, PR c++/122922, + PR libfortran/122936, PR libstdc++/122907, PR libstdc++/122812, + PR target/123092, PR target/117575 (loongarch), PR c++/122550, + PR c++/122070, PR target/123766 (loongarch), PR target/123807 (loongarch), + PR middle-end/123703, PR tree-optimization/123736, PR middle-end/123107, + PR tree-optimization/123741, PR tree-optimization/123602, + PR tree-optimization/122793, PR target/119130 (PPC), + PR target/123742 (ARM), PR ada/123902, PR ada/121316, PR ada/123867, + PR ada/123861, PR ada/123857, PR ada/123832, PR ada/123580, + PR c++/123676, PR c++/122494, PR c++/123814, PR c++/123597, + PR d/123264, PR d/123407, PR d/123046, PR d/123349, PR d/123419, + PR d/123798, PR d/121477, PR d/123422, PR d/120096, PR d/122817, + PR libstdc++/123147, PR target/123584 (AArch64), PR target/123779 (x86), + PR target/122051 (RISCV), PR target/120642 (RISCV), + PR target/123548 (AArch64), PR debug/123886, PR tree-optimization/123794, + PR middle-end/123775, PR tree-optimization/123729, PR middle-end/123575, + PR tree-optimization/123537, PR ipa/116296, PR tree-optimization/110043, + PR tree-optimization/109410, PR rtl-optimization/106859, + PR middle-end/123887, PR middle-end/123887, PR c++/122169, PR d/123633, + PR libstdc++/90192, PR libstdc++/114153. + * Don't complain about missing gccrs and gcobc man pages. + * Stop building multilibs for s390x. Closes: #1125358. + * Add again build dependency on python3-check-jsonschema, needed for tests. + * Fix D #22463: SOURCE_DATE_EPOCH parsing incorrectly affected by system + timezone. Closes: #1126512. + + -- Matthias Klose Sat, 07 Feb 2026 15:26:50 +0100 + +gcc-15 (15.2.0-12) unstable; urgency=medium + + * Update to git 20251217 from the gcc-15 branch. + - Fix PR target/123022 (RISCV), PR target/122652 (RISCV), + PR target/122656 (RISCV), PR ada/123138, PR ada/123060, PR ada/123096, + PR ada/123088, PR c/123018, PR c++/122752, PR c++/122668, PR c++/114764, + PR fortran/107406, PR fortran/122977, PR libstdc++/122907, + PR libstdc++/122812. + - libstdc++: Update tzdata to 2025c. + * Log the available disk space for the build. + * Build liblsan and libtsan on s390x. + * Update sanitizer symbols files. + * Disable the LTO build on loong64 (requested by Adrian Glaubitz). + * Enable PAC/BTI/GCS on arm64 for libgfortran (Emanuele Rocca). + Closes: #1123084. + + -- Matthias Klose Wed, 17 Dec 2025 17:52:48 +0100 + +gcc-15 (15.2.0-11) unstable; urgency=medium + + * Update to git 20251209 from the gcc-15 branch. + - Fix PR target/122991 (AArch64), PR tree-optimization/122943, + PR middle-end/120052, PR middle-end/120564, PR ada/123037, PR ada/115305, + PR middle-end/122624, PR c/121506, PR c++/121445, PR c++/120876, + PR lto/122515. + * Fix Algol-68 build on sparc64, patch taken from the trunk. + * Don't rely on python3-check-jsonschema for testing, still having + unpackaged dependencies. + * Add architectureVariant to ELF_PACKAGE_METADATA. + + -- Matthias Klose Tue, 09 Dec 2025 21:10:53 +0100 + +gcc-15 (15.2.0-10) unstable; urgency=medium + + * Update to git 20251202 from the gcc-15 branch. + - Fix PR target/122858 (ARM), PR target/110796 (ARM), + PR target/118446 (ARM), PR target/122867 (ARM), PR target/122692 (RISCV), + PR c++/122658, PR c++/121325, PR c++/122789, PR libstdc++/122921, + PR libstdc++/122842. + * Update algol68 to the gcc-15 branch 20251030. + * Fix some lintian warnings, override some more. + * Manage the libasan and libcc1 symbols files with the symbols helper. + + -- Matthias Klose Tue, 02 Dec 2025 14:07:24 +0100 + +gcc-15 (15.2.0-9) unstable; urgency=medium + + * Update to git 20251122 from the gcc-15 branch. + - Fix PR tree-optimization/122225, PR target/122695 (loongarch), + PR target/122539 (ARM), PR lto/122515, PR target/121853 (AArch64), + PR tree-optimization/121776, PR middle-end/121581, + PR rtl-optimization/122627, PR target/119275 (RISCV), + PR target/122216 (ARM), PR target/122175 (ARM), PR target/122189 (ARM), + PR target/122446 (x86), PR lto/122620, PR target/122097 (loongarch), + PR ada/111433, PR ada/122640, PR c++/120529, PR c++/119580, + PR c++/122677, PR c++/122625, PR fortran/122709, PR libstdc++/122743, + PR libstdc++/122726, PR libstdc++/122661. + * Build using amdgcn-tools-21 instead of -19. + * Update VCS attributes. + * Add libgcobol symbols file. + + -- Matthias Klose Sat, 22 Nov 2025 13:14:34 +0100 + +gcc-15 (15.2.0-8) unstable; urgency=medium + + * Update to git 20251111 from the gcc-15 branch. + - Fix PR tree-optimization/122012, PR target/99930 (x86), + PR target/122323 (x86), PR ada/118782 (closes: #749574), PR ada/81087, + PR c++/122302, PR target/118460 (ARM), PR target/122516 (AVR), + PR rtl-optimization/122321, PR target/122270 (RISCV, LP: #2126058), + PR target/122527 (AVR), PR tree-optimization/118012, + PR tree-optimization/122505, PR tree-optimization/122408, + PR tree-optimization/122394, PR target/120674 (RISCV), + PR target/121604 (AArch64), PR target/119079 (x86), PR ada/118208, + PR c++/122253, PR c++/122421, PR c++/122381, PR c++/122192, + PR c++/122310, PR fortran/114023, PR fortran/122386, + PR fortran/122206, PR fortran/107968. + * Bootstrap using GCC 15. + * Disable sframe generation for Ubuntu 26.04 LTS. + * Ignore some bootstrap comparison failures on sh4. Closes: #1119146. + + -- Matthias Klose Tue, 11 Nov 2025 03:02:32 +0100 + +gcc-15 (15.2.0-7) unstable; urgency=medium + + * Also exclude python3-check-jsonschema build dependency for x32. + + -- Matthias Klose Wed, 22 Oct 2025 11:45:23 +0200 + +gcc-15 (15.2.0-6) unstable; urgency=medium + + * Update to git 20251022 from the gcc-15 branch. + - Fix PR target/122223 (ARM), PR target/121599 (AArch64), PR go/104290, + PR target/122119 (x86), PR middle-end/122133, PR tree-optimization/122104, + PR tree-optimization/122213, PR target/121845 (RISCV), PR ada/107536, + PR c/122188, PR c++/120757, PR libstdc++/122322, PR libstdc++/122062. + * Limit python3-check-jsonschema dependency to architectures which + have rustc available. Closes: #1118541. + + -- Matthias Klose Wed, 22 Oct 2025 09:06:13 +0200 + +gcc-15 (15.2.0-5) unstable; urgency=medium + + * Update to git 20251009 from the gcc-15 branch. + - Fix PR target/121602 (AArch64), PR target/121464 (ARM), + PR target/121749 (AArch64), PR target/121906 (loongarch), + PR rtl-optimization/121757, PR c++/121801, PR c++/121795, PR c++/97740, + PR libstdc++/117276, PR target/121742 (RISCV), PR target/121780 (RISCV), + PR target/121781 (RISCV), PR target/110812 (RISCV), + PR target/121875 (loongarch), PR tree-optimization/121772, + PR middle-end/121922, PR c++/121977, PR middle-end/121828, + PR middle-end/121831, PR middle-end/121453, PR tree-optimization/122016, + PR tree-optimization/121870, PR tree-optimization/107997, + PR tree-optimization/121844, PR tree-optimization/121659, + PR tree-optimization/121527, PR tree-optimization/121370, + PR target/118280 (microblaze), PR ada/118343, PR ada/117517, + PR ada/121968, PR c++/122015, PR c++/122019, PR c++/121981, + PR c++/121524, PR c++/122019, PR c++/122015, PR fortran/121616, + PR fortran/121939, PR fortran/108581, PR fortran/89092, + PR libstdc++/121827, PR target/121652 (RISCV), PR target/122187 (AVR). + * Add build dependency on python3-check-jsonschema, needed for some tests. + * For Ubuntu 26.04 LTS s390x, bump the baseline to z15. + * Re-enable running the testsuite. + * Strip again the executables. + + -- Matthias Klose Thu, 09 Oct 2025 10:16:43 +0200 + +gcc-15 (15.2.0-4) unstable; urgency=medium + + * Update to git 20250911 from the gcc-15 branch. + - Fix PR target/121794 (AVR), PR c++/121724, PR libstdc++/110853, + PR libstdc++/121745, PR target/121794 (AVR), PR libstdc++/120698, + PR target/121510 (RISCV) LP: #2121522, PR target/81540 (AVR), + PR target/49857 (AVR), PR fortran/121263. + - Includes libgphobos build fixes for ppc64el and sparc64. + * Disable sframe generation for now, until sframe-v3 (binutils 2.46) is + released. Closes: #1114556. + * Build gnat again on m68k. + * Build libgphobos on sparc64. + * Fix libgphobos scanf decl for ppc64el. + * Update libgfortran, libga68 and libgphobos symbols files. + * Disable LTO builds for Debian/riscv64, builders are very slow. + * Update the gcc-search-prefixed-as-ld patch to find the correct as. + Still needs an update for collect2.cc. Addresses: #1113854. + * libstdc++-dev: Fix dependency on libc, when libstdc++ is not built. + + -- Matthias Klose Thu, 11 Sep 2025 06:56:06 +0200 + +gcc-15 (15.2.0-3) unstable; urgency=medium + + * Update to git 20250903 from the gcc-15 branch. + - Fix PR bootstrap/118009, PR bootstrap/119089, PR target/121548 (RISCV), + PR libstdc++/121374, PR libstdc++/121496, PR libstdc++/121097, + PR libstdc++/120390. + * Add two patches for newlib amdgcn: + - amdgcn, libm: Fix infinite loop. + - amdgcn, libm: Fix vector ilogb bugs (bug 33272). + * ga68, gcobol: Depend on libc-dev. + * Build full libgphobos on ppc64el for IEEE long double. + + -- Matthias Klose Thu, 04 Sep 2025 01:35:42 +0200 + +gcc-15 (15.2.0-2) unstable; urgency=medium + + * Update to git 20250828 from the gcc-15 branch. + - Fix PR rtl-optimization/120983, PR target/121634 (loongach), + PR target/121608 (AVR), PR target/121534 (RISCV), + PR target/121118 (AArch64), PR rtl-optimization/121253, + PR target/120986 (AArch64), PR target/120986 (AArch64), + PR target/121449 (AArch64), PR target/121542 (loongarch), + PR target/121414 (AArch64), PR target/121294 (AArch64), + PR rtl-optimization/120718, PR target/121007, PR target/119830 (RISCV), + PR target/121208 (x86), PR target/120476 (loongarch), PR c++/120499, + PR c++/121351, PR libgcc/117600, PR libfortran/121234, + PR libstdc++/121313, PR libstdc++/119861. + * Configure for the build variant on Ubuntu. + * Enable sframe generation with binutils 2.45 on amd64 and arm64 (pass + -Wa,--gsframe=no to disable). Enabled unless one of the options -m16, + -m32, -mx32 or -ffreestanding is used. + * riscv64: Configure for the RVA23U64 profile on Ubuntu 25.10 or later. + * libga68-dev: Install libga68.a + * Fix Algol-68 autopkg test. + * Fix PR target/119830 (riscv64), taken from the trunk. + * ga68: Link libga68 dynamically. + + -- Matthias Klose Thu, 28 Aug 2025 14:38:46 +0200 + +gcc-15 (15.2.0-1) unstable; urgency=medium + + * GCC 15.2.0 release. + - Fix PR target/96226 (x86). + * Update to git 20250810 from the gcc-15 branch. + - Fix PR middle-end/121389, PR tree-optimization/121413, + PR tree-optimization/121127, PR c++/121351, PR c++/119859, PR c++/120620, + PR c++/120845, PR libstdc++/121373, PR rtl-optimization/120983. + * Refresh patches. + + -- Matthias Klose Sun, 10 Aug 2025 11:52:24 +0200 + +gcc-15 (15.1.0-11) experimental; urgency=medium + + * Update to git 20250904 from the gcc-15 branch (15.2.0 release candidate). + - Fix PR middle-end/121095, PR target/120119 (AArch64), + PR tree-optimization/121202, PR tree-optimization/117423, + PR middle-end/119835, PR lto/120308, PR target/119737 (GCN), + PR target/121027 (AArch64). PR target/118891 (AArch64), + PR tree-optimization/118891, PR ada/121184, PR c++/120577, + PR c++/121055, PR c++/120412, PR fortran/121203, PR fortran/121145, + PR modula2/121164, PR target/119853, PR target/119854, + PR middle-end/119835, PR lto/120308, PR target/120530, + PR target/119692, PR target/119853, PR target/119854, + PR target/119737, PR target/118794, PR libstdc++/119962, + PR target/120351 (ARM), PR tree-optimization/121323, + PR tree-optimization/121320, PR middle-end/121322, + PR rtl-optimization/121340, PR target/121028 (AArch64), + PR tree-optimization/121256, PR target/121121 (RISCV), + PR tree-optimization/121264, PR ipa/114790, PR tree-optimization/121256, + PR tree-optimization/121130, PR tree-optimization/121190, + PR target/120427 (x86), PR target/121274 (x86), PR target/120645, + PR tree-optimization/119085, PR middle-end/121159, PR target/121277, + PR target/121064 (loongarch), PR target/120714 (RISCV), PR ada/120440, + PR c/120055, PR c/119950, PR c/120354, PR c/120353, PR cobol/119231, + PR cobol/120402, PR cobol/120621, PR cobol/120765, PR cobol/120765, + PR cobol/119337, PR cobol/120794, PR cobol/120772, PR cobol/120779, + PR cobol/120790, PR cobol/120791, PR cobol/120794, PR cobol/120621, + PR cobol/120328, PR cobol/119695, PR cobol/119975, PR cobol/119770, + PR cobol/119772, PR cobol/119790, PR cobol/119771, PR cobol/119810, + PR cobol/119335, PR cobol/119632, PR cobol/119337, PR cobol/119217, + PR cobol/119364, PR c++/108080, PR c++/121238, PR c++/120800, + PR c++/120224, PR c++/120756, PR c++/121133, PR c++/121219, PR c++/115908, + PR c++/118074, PR c++/95615, PR c++/120273, PR c++/116775, PR c++/120495, + PR c++/115605, PR c++/118903, PR c++/109283, PR c++/119916, PR c++/120453, + PR fortran/119106. + * Fix broken ada timespec record with -D_TIME_BITS=64 on 32-bit big-endian + targets (John David Anglin). Addresses: #1108322. + Only apply this patch for 32bit big-endian targets. + * LRA support on sh4, documentation (Adrian Glaubitz). + * Update Algol-68 to the gcc-15-a68 branch. + * Configure with --enable-checking=release. + + -- Matthias Klose Mon, 04 Aug 2025 11:42:09 +0200 + +gcc-15 (15.1.0-10) experimental; urgency=medium + + * Update to git 20250719 from the gcc-15 branch. + - Fix PR target/120356 (RISCV), PR target/120995 (RISCV), + PR ipa/121023, PR tree-optimization/120780, PR tree-optimization/120358, + PR tree-optimization/118669, PR tree-optimization/120817, + PR tree-optimization/120927, PR tree-optimization/120944, + PR middle-end/120369, PR rtl-optimization/120795, + PR rtl-optimization/120550, PR tree-optimization/120927, + PR middle-end/120608, PR tree-optimization/120729, + PR tree-optimization/120654, PR target/120624 (AArch64), + PR rtl-optimization/120347, PR middle-end/120608, PR middle-end/120631, + PR target/119971 (RISCV), PR tree-optimization/120677, + PR rtl-optimization/120423, PR rtl-optimization/116389, PR c/120837, + PR c++/120628, PR c++/120569, PR c++/120575, PR c++/116064, + PR c++/120940, PR c++/120684, PR c++/118856, PR c++/120471, + PR fortran/120843, PR fortran/120847, PR fortran/120843, + PR fortran/120711, PR fortran/120784, PR fortran/120784, + PR fortran/119948, PR fortran/51961, PR modula2/120253, + PR libstdc++/119754, PR libstdc++/120997, PR libstdc++/118681, + PR libstdc++/120934, PR libstdc++/120931, PR libstdc++/120648, + PR libstdc++/120650, PR middle-end/120935, PR tree-optimization/120924, + PR tree-optimization/121059, PR tree-optimization/121049, + PR tree-optimization/121035, PR tree-optimization/121131, + PR target/120807 (loongarch), PR middle-end/120709, + PR target/120999 (AArch64), PR rtl-optimization/120242, + PR rtl-optimization/120627, PR rtl-optimization/120736, + PR rtl-optimization/120813, PR target/118241 (RISCV), + PR target/118241 (RISCV), PR target/120908 (x86), PR target/120908 (x86), + PR ada/121056, PR fortran/121060, PR fortran/104428, PR fortran/120637, + PR modula2/121164, PR modula2/120912, PR modula2/117203, + PR modula2/120731, PR modula2/120673, PR modula2/119650, + PR modula2/120606, PR modula2/119650, PR modula2/120542, + PR modula2/120474, PR modula2/120497, PR modula2/120389. + * Enable LRA support on sh4 (Adrian Glaubitz). Closes: #1108158. + * Fix NaN signalling bit and propagation rules on sh4 (Adrian Glaubitz). + Closes: #1109115. + * Drop obsolete ia64-disable-selective-scheduling patch (Adrian Glaubitz). + Closes: #1108247. + * Enable algol on sh4 (Adrian Glaubitz). Closes: #1108261. + * RISC-V: Minimal support for ssnpm, smnpm and smmpm extensions (taken from + the trunk, Heinrich Schuchardt). LP: #2116120. + * RISC-V: Bump to the RVA23U64 extension profile for Ubuntu 25.10 and later + (Heinrich Schuchardt). LP: #2116086. + * Enable -fzero-init-padding-bits=all, -Wbidi-chars=any for Ubuntu 25.10 + and later. LP: #2108968. + * Bump standards version. + + -- Matthias Klose Sat, 19 Jul 2025 16:56:42 +0200 + +gcc-15 (15.1.0-8) experimental; urgency=medium + + * Update to git 20250614 from the gcc-15 branch. + - Fix PR tree-optimization/120638, PR middle-end/120547, PR ipa/120295, + PR target/120042 (RISCV), PR rtl-optimization/120050, PR c++/120555, + PR c++/120502, PR fortran/120483, PR libstdc++/120625, + PR libstdc++/99832, PR libstdc++/120548. + * Remove the distro specific patch for PR libstdc++/99832. + * Build c++ for the amdgcn offload compiler. + + -- Matthias Klose Mon, 16 Jun 2025 19:21:02 +0200 + +gcc-15 (15.1.0-7) experimental; urgency=medium + + * Fix applying the gcc-m68k-no-fold-mem-offsets patches. + + -- Matthias Klose Mon, 09 Jun 2025 15:31:57 +0200 + +gcc-15 (15.1.0-6) experimental; urgency=medium + + * Update to git 20250609 from the gcc-15 branch. + - Fix PR tree-optimization/120357, PR tree-optimization/120341, + PR rtl-optimization/120182, PR tree-optimization/120003, + PR tree-optimization/119960, PR tree-optimization/116352, + PR target/86772 (microblaze), PR c/120180, PR c++/120123, PR c/120180, + PR c++/120413, PR c++/120363, PR c++/120414, PR fortran/99838, + PR fortran/102599, PR fortran/114022, PR fortran/101735, + PR fortran/101735, PR fortran/120193, PR fortran/120049, + PR fortran/120355, PR target/120442 (AVR), PR target/120441 (AVR), + PR libfortran/119856, PR middle-end/118694, PR middle-end/118694, + PR libstdc++/120432, PR libstdc++/120465, PR libstdc++/120367. + * Don't default to -ffold-mem-offsets on m68k (Adrian Glaubitz). + Closes: #1107416. + + -- Matthias Klose Mon, 09 Jun 2025 13:27:55 +0200 + +gcc-15 (15.1.0-5) experimental; urgency=medium + + * Update to git 20250523 from the gcc-15 branch. + - Fix PR modula2/120188, PR ipa/120146, PR tree-optimization/120143, + PR tree-optimization/120089, PR tree-optimization/120043, + PR c++/120161, PR c++/120125, PR c++/119864, PR c++/120012, + PR fortran/120139, PR fortran/120163, PR fortran/120191, + PR fortran/119928, PR modula2/120117, PR modula2/119915, + PR modula2/119914, PR libfortran/120196, PR modula2/115276, + PR libstdc++/120187, PR libstdc++/120198, PR libstdc++/119714, + PR libstdc++/112490, PR libstdc++/119427, PR libstdc++/118260, + PR tree-optimization/111873, PR c++/120013, PR c++/120350, + PR fortran/85750, PR fortran/102891, PR fortran/120049, + PR libstdc++/120293, PR libstdc++/120029, PR libstdc++/120190. + * Fix amdgcn-tools dependency generation for snapshot builds. + * d/copyright*: Update for new binary packages. + * Disable testsuite again on Debian/alpha. + + -- Matthias Klose Fri, 23 May 2025 19:08:37 +0200 + +gcc-15 (15.1.0-4) experimental; urgency=medium + + * Update to git 20250510 from the gcc-15 branch. + - Fix PR ipa/119852, PR tree-optimization/120048, PR ipa/120006, + PR tree-optimization/120074, PR ada/120104, PR c++/120012, + PR fortran/120179, PR fortran/119986, PR fortran/102900, + PR preprocessor/108900, PR preprocessor/116047, PR preprocessor/120061, + PR libfortran/120158, PR libfortran/120153, PR libfortran/120152, + PR libstdc++/120159, PR libstdc++/120114. + + [ Matthias Klose ] + * Backport PR cobol/119364, taken from the trunk. + * Build cobol cross compiler again on i686. + + [ Nicolas Boulenguez ] + * Replace tabulations with spaces in rules.defs. Closes: #1104665. + * Ada: shorten ada-gcc-name.diff, remove pr79724-revert.diff. + + -- Matthias Klose Sat, 10 May 2025 09:25:21 +0200 + +gcc-15 (15.1.0-3) experimental; urgency=medium + + * Update to git 20250503 from the gcc-15 branch. + - Fix PR c/120057. + - libsanitizer: Fix build with glibc 2.42. + * Disable profiled bootstrap on Debian/armhf. See PR target/119937. + * gnat: Add gnat-N- conflicts. Closes: #1063664. + + -- Matthias Klose Sat, 03 May 2025 22:05:51 +0200 + +gcc-15 (15.1.0-2) experimental; urgency=medium + + * Update to git 20250502 from the gcc-15 branch. + - Fix PR target/119610 (AArch64), PR c++/119939, PR c++/119863, + PR tree-optimization/119712, PR ada/112958, PR c++/120023, PR c++/119938, + PR c++/119551, PR c++/119996, PR c++/119981, PR c++/119378. + * Update Algol-68 to the a86-gcc-15 branch. + * Update libasan, libga68 and libobjc symbols. + * Fix multilib installation for PR libstdc++/103382. + * Enable running the tests again. + + -- Matthias Klose Fri, 02 May 2025 09:30:32 +0200 + +gcc-15 (15.1.0-1) experimental; urgency=medium + + * GCC 15.1.0 release. + * Update to git 20250426 from the gcc-15 branch. + * Provide local unversioned symlinks gnatmake and gnatbind for the build. + * Update Algol 68 from the a68-15 branch. + * Don't install the gcobol-io man page for cross builds. Closes: #1103019. + * Update NEWS files. + * Don't build cobol cross compiler on 32bit archs, PR cobol/119364 needs an + update. + * Refresh patches. + + -- Matthias Klose Sat, 26 Apr 2025 03:22:52 +0200 + +gcc-15 (15-20250423-1) experimental; urgency=medium + + * Snapshot, taken from the gcc-15 branch (20250423). + + [ Matthias Klose ] + * Install the libgcobol.spec file. + * Fix source-path in the installed libstdc++.modules.json. Closes: #1102350. + * On ppc64el configure --with-long-double-format=ieee for upcoming distros. + * Update libga68 symbols. + * Address PR libstdc++/103382, when not building the common libs, install + the library in the gcc_lib_dir to link against the libstdc++ from this + GCC version. + * Build cobol on riscv64. + + [ Nicolas Boulenguez ] + * Ada patches: refresh ada-749574, update pr114065/#1092866 to v15, + complete ada-gnat-names. Addresses: #1078144. + + -- Matthias Klose Wed, 23 Apr 2025 16:20:46 +0200 + +gcc-15 (15-20250406-1) experimental; urgency=medium + + * Snapshot, taken from the trunk (20250406). + * Update the ag68 branch to 20250405. + * Add libgccjit-doc conflict. Closes: #1101750. + * libga68-doc: Remove not needed doc link. Closes: #1101749. + * Build cobol on ppc64el. + * Build cobol cross compilers. + * d/copyright: Add licenses for vendored crates. + * Apply proposed patch for PR cobol/119364, non LP64 builds. + + -- Matthias Klose Sun, 06 Apr 2025 10:48:32 +0200 + +gcc-15 (15-20250329-1) experimental; urgency=medium + + * Snapshot, taken from the trunk (20250329). + * Update the ag68 branch to 20250322. + * Don't run the tests on the Hurd, timing out. + * Fix GCN SIMD libm bug, taken from newlib upstream. + * Refresh patches. + * Re-enable profiled and LTO build. + + -- Matthias Klose Sat, 29 Mar 2025 10:31:23 +0100 + +gcc-15 (15-20250319-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250319. + - Fix building gcobol cross compilers. + * Fix libga68 build on the Hurd. + * Fix gccrs build, see PR rust/119353. + * Don't build gcobol on arc. + + -- Matthias Klose Wed, 19 Mar 2025 12:38:10 +0100 + +gcc-15 (15-20250315-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250315. + * Let the gcobol compiler depend on the g++ compiler. + * Update the Algol 68 patch. + * Bump libgo soname again. + * Reset the libgcobol soname after the upstream merge. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 15 Mar 2025 02:37:08 +0100 + +gcc-15 (15-20250220-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250220. + * Add packages for Algol 68. + + -- Matthias Klose Thu, 20 Feb 2025 15:50:14 +0100 + +gcc-15 (15-20250213-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250213. + * Disable the gnat build on m68k. See PR target/118485. + * Apply workaround for PR target/118248 (riscv64). + + -- Matthias Klose Thu, 13 Feb 2025 11:16:17 +0100 + +gcc-15 (15-20250208-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250208. + * Disable building the riscv64 gdc cross compiler on s390x. See PR118248. + * Build using amdgcn-tools-19 instead of -18. + * Build a libgccjit package, which is not conflicting with the installed + default compiler (libgccjit15). + + -- Matthias Klose Sat, 08 Feb 2025 14:43:15 +0100 + +gcc-15 (15-20250203-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250203. + * d/p/libphobos-no-REUSEPORT.diff: Drop, fixed upstream. + + -- Matthias Klose Mon, 03 Feb 2025 10:45:47 +0100 + +gcc-15 (15-20250130-2) experimental; urgency=medium + + * Fix installation of sarif-reply. + + -- Matthias Klose Thu, 30 Jan 2025 21:38:18 +0100 + +gcc-15 (15-20250130-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250130. + * Apply proposed patches for PR c++/116506 and PR c++/116914. + * Constrain the lib32 conflicts to non-mips architectures. + * Fix nroff warnings for gcc-TOOL manpages (Bjarni Ingi Gislason). + Addresses: #1094299, #1094300, #1094302. + * Revert the libgo soname bump. No changes for libgo in GCC 15. + * Only pass --enable-multiarch once for staged builds (Helmut Grohne) + Closes: #1094387. + * Configure with --disable-libgcobol for stage1 and stage2 builds. + + -- Matthias Klose Thu, 30 Jan 2025 12:34:33 +0100 + +gcc-15 (15-20250114-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250114. + * Re-enable the 64bit time_t Ada patches, somehow uninformed update. + * d/p/libphobos-no-REUSEPORT.diff, revert upstream commit to fix ftbfs. + + -- Matthias Klose Tue, 14 Jan 2025 10:43:44 +0100 + +gcc-15 (15-20250112-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20250112. + + [ Nicolas Boulenguez ] + * Ada: remove 'Provides: gnat-V-HASH' from gnat-V (keep it in gnat-V-TARGET). + + [ Matthias Klose ] + * Update newlib to 4.5.0.20241231. + * Only provide the gnat-V-HASH for native compilers. + * Apply proposed patch for PR/rtl-optimization 118266. + * Disable the 64bit time_t Ada patches for now, fail to apply. + * Enable the testsuite on alpha again. + * Add lib32 conflicts for libn32 packages. Addresses: #1092571. + * Update libgphobos symbols files. + * Remove invalid gcobol packages from the control file. + + -- Matthias Klose Sun, 12 Jan 2025 11:48:38 +0100 + +gcc-15 (15-20241231-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241231. + * Drop the package-metadata spec, now implemented in the linkers. + * Fix check for assembler section merging support on ARM, see binutils + PR ld/32491. + * Add conflicts for libstdc++ -doc and -dbg packages. Closes: #1091354. + + -- Matthias Klose Sat, 21 Dec 2024 12:13:58 +0100 + +gcc-15 (15-20241220-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241220. + * Fix amdgcn-tools links for the amdgcn offload install. + * Apply proposed patch for PR libgomp/117851. + * Build-depend on git, needed for the gotools tests. + * Don't run the libgo tests for multilibs, that cannot run. + * Don't run the gnat and gm2 tests for multilibs, which are not built. + * Run the tests sequentially on architectures with failing builds. + * Run the logwatch check on almost all architectures. + * Remove the ada-nobiarch-check patch, superseded. + * Refresh patches. + * Bump standards version. + * Rewrite the logwatch script to look at all log files. + * Fix libphobos testsuite with sbuild's unshare backend. Addresses: #1089007. + * PR sanitizer/117725: Pull libsanitizer patch from LLVM for s390x/-m31. + * Add proposed gcobol patches, build gcobol and libgcobol packages. + * Update debian copyright for gcobol. + * Add missing build dependency on gnat [hurd-amd64] (Samuel Thibault). + Addresses: #1089930. + * Use GCC 14 as build dependency except on m68k. + * Build with --enable-checking=yes,extra,rtl. + * Disable building gccrs on the Hurd. + * d/control: Add Rules-Requires-Root: binary-targets. Too late for trixie. + * Restrict gcobol autopkg test to arm64, amd64 and ppc64el. + * Revert Yun's config-ml.in upstream patch, trying to unbreak cross builds. + * Apply proposed patch for PR modula2/118045. + * Build cobol only on amd64, arm64 and ppc64el. + * Disable pgo/lto builds for now. + * Drop the package-metadata spec, now implemented in the linkers. + + -- Matthias Klose Fri, 20 Dec 2024 19:28:09 +0100 + +gcc-15 (15-20241128-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20241128. + * Update packaging for new major version. + * Update patches. + * Disable some Ada patches, needing an update. 000?-Ada*, ada-749574. + * Update symbols files. + * libstdc++-dev: Install libstdc++.modules.json. + * Configure the jit build with --enable-libdiagnostics. + * Update libsanitizer symbols. + * Bump sonames for D, Go runtime libs (no conflicts with GCC 14). + * Update patches for PR ada/114065 to v13. + * Apply proposed patch for PR sanitizer/117725. + * Add packages for libdiagnostics and gcc-diagnostics (sarif-replay). + * Add sparc to any_archs (Adrian Glaubitz). + + -- Matthias Klose Thu, 28 Nov 2024 10:00:59 +0100 + +gcc-14 (14.2.0-8) unstable; urgency=medium + + * Update to git 20241102 from the gcc-14 branch. + Fix PR target/114759 (PPC), PR jit/117275, + PR rtl-optimization/116783 (closes: #1080974), PR target/117318 (x86), + PR rtl-optimization/117327, PR target/116415 (PPC), + PR middle-end/117249, PR sanitizer/117209, PR target/116953 (AVR), + PR target/117240 (x86), PR middle-end/116891, PR middle-end/116891, + PR tree-optimization/117104, PR tree-optimization/116982, + PR tree-optimization/116907, PR tree-optimization/116481, + PR tree-optimization/116290, PR middle-end/115110, PR target/117159 (x86), + PR ada/116551, PR c/117230, PR c++/117259, PR c++/117107, PR c++/92687, + PR c++/116929, PR fortran/84868, PR fortran/79685. + * Re-enable rs on hurd-i386 and hurd-amd64 (Samuel Thibault). + Closes: #1086120. + * Add go support for hurd-amd64 (Samuel Thibault). Closes: #1086475. + * Remove hurd-alpha references. + * Disable the rust frontend on x32 temporarily (Adrian Glaubitz). + Closes: #1086022. + + -- Matthias Klose Sat, 02 Nov 2024 14:48:28 +0100 + +gcc-14 (14.2.0-7) unstable; urgency=medium + + * Update to git 20241019 from the gcc-14 branch. + - Fix PR ipa/115815, PR target/116883 (RISCV), PR c++/116534, + PR target/117116 (x86), PR ipa/109985, PR testsuite/116238 (AArch64), + PR tree-optimization/117041, PR middle-end/117086, + PR tree-optimization/116990, PR tree-optimization/116879, + PR tree-optimization/116850, PR tree-optimization/116768, + PR tree-optimization/116166, PR target/116921 (x86), + PR middle-end/116899, PR middle-end/116898, PR target/116627, + PR target/116738 (x86), PR ada/114593, PR ada/115535, PR ada/114640, + PR ada/114636, PR c++/117054, PR c++/116476, PR c++/116424, PR c++/116678, + PR libstdc++/90276, PR libstdc++/117085, PR libstdc++/117135, + PR libstdc++/117094. + + -- Matthias Klose Sat, 19 Oct 2024 09:24:57 +0200 + +gcc-14 (14.2.0-6) unstable; urgency=medium + + * Update to git 20241005 from the gcc-14 branch. + - PR target/116962 (x86), PR target/116953 (AVR), + PR tree-optimization/116585, PR target/116839 (x86), + PR target/115860 (S390), PR target/116237 (darwin), + PR tree-optimization/116460, PR middle-end/115426, + PR tree-optimization/116610, PR middle-end/116454, + PR tree-optimization/116380, PR tree-optimization/116274, + PR tree-optimization/116258, PR middle-end/115641, PR target/116621 (x86), + PR ada/116430, PR c++/115361, PR c++/115987, PR c++/116418, + PR c++/116492, PR c++/116676, PR fortran/100273, PR c++/116369, + PR libstdc++/116857, PR libstdc++/37475, PR libstdc++/90276, + PR libstdc++/116755, PR libstdc++/116529, PR libstdc++/116754, + PR libstdc++/116777, PR libstdc++/108619. + * Reapply the sparc64 bits to the gcc-as-needed patch. Closes: #1082624, + + -- Matthias Klose Sat, 05 Oct 2024 05:46:25 +0200 + +gcc-14 (14.2.0-5) unstable; urgency=medium + + * Update to git 20240915 from the gcc-14 branch. + - Fix PR ipa/116410, PR tree-optimization/116501, PR c++/116219, + PR target/112108 (AArch64), PR target/116512 (x86), PR c++/116567, + PR c++/116606, PR fortran/116530, PR libstdc++/113663, + PR libstdc++/116549, PR libstdc++/116381, PR lto/116361, + PR target/116617 (x86), PR c++/96097, PR c++/116636, PR c++/116449, + PR c++/116320, PR c++/116276, PR lto/116614, PR libstdc++/116159, + PR libstdc++/116641. + * Don't run the tests on the riscv64 buildds, timing out. + * For offloading, require the amdgcn tools based on LLVM 19. + + -- Matthias Klose Sun, 15 Sep 2024 10:44:10 +0200 + +gcc-14 (14.2.0-4) unstable; urgency=medium + + * Update to git 20240829 from the gcc-14 branch. + - Fix PR target/116390 (AVR), PR target/116407 (AVR), + PR c++/116384 (closes: #1078786). + * Disable running the tests on alpha and arm64, hanging on the buildds. + * gcc/configure.ac enables some features based on the binutils version. The + most recently checked binutils version is 2.36 for GCC 14. For now it is + safe to derive the binutils runtime dependency from the binutils build + dependency. + + -- Matthias Klose Fri, 30 Aug 2024 12:17:39 +0200 + +gcc-14 (14.2.0-3) unstable; urgency=medium + + * Update to git 20240817 from the gcc-14 branch. + - Fix PR target/85624 (AVR), PR target/115464 (AArch64), + PR target/116174 (x86), PR c++/116327, PR c++/104981, PR c++/115550. + - s390: Fix high-level builtins vec_gfmsum{,_accum}_128. LP: #2075567. + * Don't build gccrs on the Hurd. + * Disable building gnat on hurd-amd64, until it gets bootstrapped. + * Don't run dwz on hurd-*. + * Update symbols files for libasan, libgccjit, libstdc++ and libgphobos. + Closes: #1077492. + + -- Matthias Klose Sun, 18 Aug 2024 19:10:28 +0200 + +gcc-14 (14.2.0-2) unstable; urgency=medium + + * Update to git 20240811 from the gcc-14 branch. + - Fix PR target/116287 (x86), PR target/116295 (AVR), PR target/113384 (PA), + PR tree-optimization/116224, PR target/116189 (SH), + PR target/116033 (RISCV), PR tree-optimization/116156, + PR target/116043 (x86), PR target/115981 (x86), PR c++/116223, + PR c++/112632, PR c++/116071, PR c++/88313, PR c++/115897, + PR c++/115656, PR c++/115296, PR c++/112288, PR fortran/108889, + PR target/116007, PR libstdc++/116038, PR libstdc++/115399, + PR libstdc++/114387, PR libstdc++/115854, PR libstdc++/116070, + PR libstdc++/116070. + * Fix two lintian warnings for the control file. + * Build-depend on pkgconf instead of pkg-config. + * gnat: Use the GNATBIND/GNATMAKE passed from the toplevel makefile. + Provide local unversioned symlinks gnatmake and gnatbind for the build. + Closes: #1078144. + + -- Matthias Klose Sun, 11 Aug 2024 03:56:24 +0200 + +gcc-14 (14.2.0-1) unstable; urgency=medium + + * GCC 14.2.0 release. + + * Update to git 20240801 from the gcc-14 branch. + - Fix PR target/115981 (x86). + * Show bootstrap compilers in the build log. + * Configure with --disable-multilib on loong64. + * Use the versioned gnatbind and gnatmake binaries for the build. + * Emit the config.log when the configure step fails. + * Refresh patches. + + -- Matthias Klose Thu, 01 Aug 2024 17:43:39 +0200 + +gcc-14 (14.1.0-5) unstable; urgency=medium + + * Update to git 20240719 from the gcc-14 branch. + - Fix PR c++/115865, PR rtl-optimization/115049, PR target/115351 (x86), + PR ipa/113787, PR tree-optimization/113673, PR target/115526 (alpha), + PR middle-end/115887, PR middle-end/115527, PR tree-optimization/115382, + PR tree-optimization/115868, PR tree-optimization/115841, + PR tree-optimization/115843, PR tree-optimization/115701, + PR tree-optimization/115701, PR tree-optimization/115867, + PR tree-optimization/115843, PR target/115459 (alpha), + PR target/115554 (RISCV), PR target/115562 (RISCV), + PR target/113719 (x86), PR target/113719 (x86), PR target/115872, + PR target/115752 (loongarch), PR target/115840 (RISCV), + PR target/115611 (ARM), PR middle-end/115836, PR target/113715 (RISCV), + PR analyzer/114899, PR c++/115476, PR c++/115165, PR c++/111890, + PR c++/115897, PR c++/106760, PR c++/115754, PR c++/99242, PR c++/99241, + PR fortran/93635, PR fortran/99798, PR fortran/103312, + PR libstdc++/113376, PR libstdc++/115522. + * On loong64, also build-depend on the gdc-14 frontend. + * Build libitm1 on loong64 and riscv64. + * Disable running the tests on x32, hanging on the buildds. + + -- Matthias Klose Fri, 19 Jul 2024 12:09:39 +0200 + +gcc-14 (14.1.0-4) unstable; urgency=medium + + * Update to git 20240710 from the gcc-14 branch. + - Fix PR target/115591 (RISCV), PR target/115188 (ARM), + PR target/87376 (AVR), PR target/115475 (AArch64), + PR target/115691 (PARISC), PR target/98762 (AVR), PR target/106069 (PPC), + PR target/115355 (PPC), PR target/114936 (AArch64), + PR target/88236 (AVR), PR target/115726 (AVR), PR pch/115312, + PR c/114930, PR c/115502, PR c++/115623, PR fortran/114019, + PR fortran/55978, PR fortran/115390, PR target/114890 (AArch64), + PR target/115153 (ARM), PR target/115763 (RISCV), + PR tree-optimization/115723, PR tree-optimization/115694, + PR tree-optimization/115669, PR tree-optimization/115646, + PR fortran/84006, PR fortran/100027, PR fortran/98534, PR fortran/115700, + PR libstdc++/115807, PR libstdc++/115585. + * d/p/0009-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff: + Adjust for the new glibc behaviour of defining __USE_TIME_BITS64 also + on native 64-bits platforms (Simon Chopin). Addresses: #1074577. + LP: #2071605. + * Pass --package-metadata on distros with supporting linkers (starting + with Debian trixie and Ubuntu noble). + The package metadata is constructed from the environment variables + ELF_PACKAGE_METADATA. + Setting NO_PKG_METADATA=1 disables the generation of the package metadata. + * Build target libraries with -mbranch-protection=standard to enable PAC/BTI + support on arm64 (Emanuele Rocca). Addresses: #1055711. + * Build target libraries with -fno-omit-frame-pointer, when enabled in + dpkg-buildflags. + * Strip again the executables. + + -- Matthias Klose Wed, 10 Jul 2024 12:12:12 +0200 + +gcc-14 (14.1.0-3) unstable; urgency=medium + + * Update to git 20240630 from the gcc-14 branch. + - Fix PR tree-optimization/115278, PR target/114846 (PPC), + PR tree-optimization/115508, PR driver/115440, PR target/115342 (AArch64), + PR target/106069 (PPC), PR target/115355 (PPC), PR target/114846 (PPC), + PR c++/115624, PR c/115587, PR c++/115504, PR c++/115198, PR c++/115358, + PR libstdc++/115668, PR libstdc++/115575, PR libstdc++/115454. + - Backport a fix for an ICE on riscv64. Closes: #1071140. + * Fix typo for loong64 build dependencies. + * Disable running the tests on the Ubuntu arm64 buildds (times out). + * Starting with Ubuntu 24.10, stop building s390x multilibs. + * Fix gccrs build dependencies on the Hurd. Closes: #1073830. + * Drop the sys-auxv-header patch. Closes: #1071555. + + -- Matthias Klose Sun, 30 Jun 2024 16:27:40 +0200 + +gcc-14 (14.1.0-2) unstable; urgency=medium + + * Update to git 20240619 from the gcc-14 branch. + - Fix PR target/109549 (S390), PR target/115253 (ARM), + PR rtl-optimization/115281, PR target/115353 (ARM), + PR middle-end/115352, PR tree-optimization/115337, PR middle-end/108789, + PR target/115324 (PPC), PR rtl-optimization/114902, + PR rtl-optimization/115092, PR tree-optimization/115307, + PR target/115297 (alpha), PR tree-optimization/115192, + PR target/113719 (x86), PR tree-optimization/115149, + PR tree-optimization/115197, PR tree-optimization/114921, + PR target/115169 (loongarch), PR tree-optimization/115232, + PR rtl-optimization/115038, PR tree-optimization/115152, + PR sanitizer/115172, PR target/115069 (x86), PR tree-optimization/115154, + PR tree-optimization/115143, PR tree-optimization/114998, + PR middle-end/114931, PR middle-end/114931, PR ada/114708, + PR ada/115270, PR c/115290, PR middle-end/114931, PR c/114493, + PR target/111343 PR c++/115511, PR c++/99678, PR c++/115239, + PR c++/115283, PR c++/115378, PR c++/115187, PR c++/114868, + PR c++/105320, PR c++/114275, PR c++/114983, PR libstdc++/107800, + PR c++/115139, PR c++/115114, PR c++/114994, PR fortran/83865, + PR fortran/115150, PR fortran/86100, PR fortran/115039, + PR fortran/114874, PR jit/115442, PR target/115360 (ARM), + PR target/115065 (AVR), PR libstdc++/115308, PR libstdc++/115247, + PR libstdc++/114958, PR libstdc++/115335, PR libstdc++/111641, + PR libstdc++/109849, PR libstdc++/115269, PR libstdc++/114940, + PR libstdc++/115099, PR libstdc++/115119, PR libstdc++/115015, + PR libstdc++/115063, PR libstdc++/114891, PR libstdc++/114866. + * Configure again with --enable-checking=release. Closes: #1072519. + * On loong64, build-depend on GCC 14 frontends. Closes: #1072635. + * Build gccrs on x32. Closes: #1072345, #1072327. + * Don't build Ada on sparc (32bit). Closes: #1072328. + + -- Matthias Klose Wed, 19 Jun 2024 09:44:29 +0200 + +gcc-14 (14.1.0-1) unstable; urgency=medium + + * GCC 14.1.0 release. + * Update to git 20240514 from the gcc-14 branch. + - Fix PR target/114975 (AVR), PR tree-optimization/114965, + PR middle-end/114907, PR sanitizer/114956, PR tree-optimization/114876, + PR ipa/92606, PR c++/89224, PR c++/114856, PR c++/114889, + PR target/69374, PR target/112959, PR target/114968 (x86), + PR driver/114980, PR c++/114974, PR c++/114901, PR c++/114903, + PR fortran/114827, PR target/114981 (AVR). + + [ Nicolas Boulenguez ] + * Improve the ada-lib-info-source-date-epoch patch. + * Ada: remove duplicate unused patches + * ada-749574.diff: update and apply again. + * Refresh the autogen part of ada-{armel-libatomic,link-lib}.diff. + * Ada: fix a typo in patch for PR ada/114065 breaking the build on hurd. + + [ Matthias Klose ] + * Refresh patches. + * Update NEWS files. + * gcc-14: Depend on cpp-14, lost with the -for-build/-for-host changes. + * Run the tests again during the build. + * Turn on again PGO and LTO builds. + + -- Matthias Klose Tue, 14 May 2024 09:22:26 +0200 + +gcc-14 (14-20240429-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240429. + + * Apply proposed patch for PR libquadmath/114533 (Simon Chopin). + Closes: #1064426. LP: #2052929. + * Don't build the libstdc++-doc package when the nodoc profile is enabled. + * Clean up some version restrictions on build-dependencies. + * Don't set the _FILE_OFFSET_BITS and _TIME_BITS macros, if the + _DISTRO_EVADE_TIME_BITS macro is defined. + See https://sourceware.org/bugzilla/show_bug.cgi?id=31624. + * Build-depend on amdgcn-tools-18, required for new gcn offload targets. + * Package the new gfx1030, gfx1036, gfx1100 and gfx1103 offload targets. + LP: #2060619. + * rs now requires cargo to bootstrap. Disable building gccrs on architectures + which don't have cargo. + Disable gccrs cross compilers. Not working upstream, more constraints + on rust macros. + * Build gnat, gdc and gm2 on loong64. Closes: #1069708. + * Integrate gnat patches from Nicolas: + - Update the ada-lib-info-source-date-epoch patch. + - Remove the pr114065-proposed patch. + - Add patches (v7) from PR ada/114065. Addresses: #1067453. + + -- Matthias Klose Mon, 29 Apr 2024 11:15:28 +0200 + +gcc-14 (14-20240330-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240330. + + * Make vhdl known to the PPC backend. + * Use the proposed patch to fix PR ada/114064, 64bit definitions for + time_t_bits type on 32bit archs. + * Move the _FORTIFY_SOURCE setting from cc1 to the driver. + * d/p/gcc-distro-defaults: Make -fstack-protector-explicit known. + * newlib: amdgcn: Implement proper locks, taken from newlib trunk. + * Refresh patches. + * Use gcc:SoftVersion for -for-host dependencies (Helmut Grohne). + Closes: #1067904. + + -- Matthias Klose Sat, 30 Mar 2024 13:27:56 +0100 + +gcc-14 (14-20240315-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240315. + + * Fix installation of the amdgcn offload compiler. Closes: #1065458. + * Fix installation of the nvptx offload compiler. Closes: #1065599. + * Add loong64 bits for the gcc-multilib-multiarch patch. Closes: #1061371. + * Enable Modula-2 on the Hurd (Samuel Thibault). Closes: #1066932. + + -- Matthias Klose Fri, 15 Mar 2024 20:35:12 +0100 + +gcc-14 (14-20240303-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240303. + * Build without gdb for now. + + -- Matthias Klose Sun, 03 Mar 2024 11:40:51 +0100 + +gcc-14 (14-20240221-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Upload to unstable to start the 64-bit time_t transition. + + -- Steve Langasek Mon, 26 Feb 2024 21:41:05 +0000 + +gcc-14 (14-20240221-2) experimental; urgency=medium + + * libgnat: Use Long_Long_Integer'Size for the definition of time_t_bits + for 32bit architectures using time_t64. + + -- Matthias Klose Thu, 22 Feb 2024 04:12:32 +0100 + +gcc-14 (14-20240221-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240221. + + * Proposed fix for PR d/113772. + * Fix disabling go and m2 according to OS (Samuel Thibault). Closes: #1063643. + * Pass -D_TIME_BITS=64 together with -D_FILE_OFFSET_BITS=64 by default + on the 32bit architectures armel, armhf, hppa, m68k, mips, mipsel, + powerpc (-m32 only) and sh4. + * PR libstdc++/99832, std::chrono::system_clock::{from,to}_time_t: + Add ABI tag for timet64. + * Fix libsanitizer build with _TIME_BITS set. + + -- Matthias Klose Thu, 22 Feb 2024 00:27:13 +0100 + +gcc-14 (14-20240207-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240207. + + * Enable sanitizer packages for loong64. + * Build libubsan1 for riscv64. + * Apply proposed patch for PR target/113720 (alpha). + * Drop the libgo-soname patch, use the bumped libgo upstream soname. + * Apply proposed patch for PR middle-end/113731. + + -- Matthias Klose Wed, 07 Feb 2024 05:39:32 +0100 + +gcc-14 (14-20240201-3) unstable; urgency=medium + + * Fix PR middle-end/113705 (ftbfs on arm64). Closes: #1062535. + + -- Matthias Klose Thu, 01 Feb 2024 22:53:33 +0100 + +gcc-14 (14-20240201-2) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240201. + + * Add more dependencies for -for-build and -for-host packages. + * For Ubuntu, only define _FORTIFY_SOURCE, if there are no options + -U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=N given. + * Update libgcc-s symbols files. + + -- Matthias Klose Thu, 01 Feb 2024 14:11:28 +0100 + +gcc-14 (14-20240131-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240131. + + [ Matthias Klose ] + * Fix and add dependencies for -for-build and -for-host packages. + * Add conflict to libgccjit-13-doc. Closes: #1061647. + * Fix some -for-{build,host} package descriptions. Closes: #1061670. + * Correct conflicts with old gnat-N versions. Addresses: #1061648. + * Apply proposed patch for PR target/113336 (ARM). Closes: #1061370. + * Build again gnat and gcc on armel. + + [ Aurelien Jarno ] + * Update libasan8 symbols for riscv64. + * Update liblsan0 symbols for riscv64. + + -- Matthias Klose Wed, 31 Jan 2024 10:40:26 +0100 + +gcc-14 (14-20240127-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240127. + * Disable the gccgo build on armel for now. See #1061370. + + -- Matthias Klose Sat, 27 Jan 2024 09:51:04 +0100 + +gcc-14 (14-20240126-2) unstable; urgency=medium + + * Update libgccjit symbols file. + * Bump autopkg test dependencies to GCC 14. + * Try harder to disable ada on armel. + + -- Matthias Klose Fri, 26 Jan 2024 15:05:36 +0100 + +gcc-14 (14-20240126-1) unstable; urgency=medium + + * Snapshot, taken from the trunk 20240126. + * Don't define _no_archs macros directly. + * Add missing libstdc++-{dbg,doc} conflicts. Closes: #1061345. + * Fix gm2-14 package description. Closes: #1061372. + * Re-add conflicts for gnat packages. + * Disable the ada build on armel for now. See #1061370. + + -- Matthias Klose Fri, 26 Jan 2024 12:42:52 +0100 + +gcc-14 (14-20240121-1) experimental; urgency=medium + + * Snapshot, taken from the trunk 20240121. + + [ Matthias Klose ] + * Update symbols files. + * Refresh patches. + * Drop KFreeBSD patches. + * Drop the KFreeBSD build support. + * Bump debhelper to v11. + * Configure with --disable-s390-excess-float-precision for sid/trixie and + Ubuntu noble (24.04 LTS). + * Update the gcc-as-needed patch for loong64. Addresses: #1054469. + * Remove the support to build ARM sf/hf multilib packages. + * Update the variants for the amdgcn offload compiler. + * Remove references to obsolete CPUs m32r and tilegx. + * Add changes for hurd-amd64 (Samuel Thibault). Addresses: #1057004. + * Don't build-depend on gdb on hurd-amd64 for now. + * Remove the packaging bits to build gdc as a separate source package. + * Remove the packaging bits to build gccgo as a separate source package. + * Build the nvptx offload compiler on arm64. + * Don't strip executables for the prerelease uploads. + * Disable LTO builds on hurd-amd64. + * Configure with --enable-checking=yes,extra,rtl for now. + * Bump libgm2 soname. + * Add support to build from a combined binutils/GCC tree. + * Use DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' for turning off dumping + the preprocessed source to stdout. Addresses: #1057635. + * Set DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' when running the + testsuite. + * Default to pie on loong64. Addresses: #1057433. + * Bump the libphobos soname to distinguish from GCC 13 (local patch) + * Bump the libgo soname to distinguish from GCC 13 (local patch) + * For Ubuntu 24.04 LTS and later, switch _FORTIFY_SOURCE to 3 by default + instead of 2 when optimization is enabled. LP: #2012440. + * Use "arch" macros instead of "cpu" macros for control file generation. + * Set {go,m2,rs}_no_archs macros for the generation of the control file. + * Remove trailing whitespace in control file. + * Build Enable LSan and TSan packages for riscv64. + * Remove empty directory in the snapshot package. Addresses: #1060080. + * Disable the LTO build on mips64el (requested by YunQiang Su). + * Configure with --enable-libstdcxx-backtrace. LP: #2048233. + * Update the testsuite-hardening patches, and apply them again. + * Fall-back to the host crypt.h for the target, required by cross builds. + See: #1014375. + * Build again gccrs. + * Update newlib to 4.4.0.20231231. + * Remove the support to create i586 symlinks on i386 and hurd-i386. + * Mark *-N-for-{build,host} packages as dependency packages. + * Don't include -Xliblto_plugin.so for dh_fixperms call. + * debian/copyright: Update copyright years, add libgm2 and libgrust. + + [ Nicolas Boulenguez ] + * Ada: Actually install README.gnat to the gnat-X package. + * Ada: Remove a duplicate conditional on with_separate_gnat. + * Ada: Stop installing unversioned symlinks to the shared libgnat. + * Ada: Stop installing the /usr/bin/gnatgcc symbolic link. + * Ada: Remove unversioned symbolic links to gnat tools. + * Ada: Remove the conflict between gnat-14 and previous versions. + * Ada: Stop searching gnatgcc in build dependencies. + * Ada: Remove the with_separate_gnat Make variable. + * Ada: Remove all stuff conditioned by PKGSOURCE=gnat. + + [ Helmut Grohne ] + * Add loong64 to any_archs. + * Always issue a build-dependency on debhelper. + * For cross toolchain builds, add a build dependency on target binutils. + * For cross toolchain builds, add build dependencies on the Ada, D and + Modula-2 frontends. + * Remove redundant sections and priorities for non-tools in the control file. + * Remove redundant sections and priorities for tools in the control file. + * Add support code for gcc-for-host. + - control.m4 macro for_each_arch iterates over all known architectures and + substitutes arch_deb (the Debian architecture name), arch_gnu (the GNU + triplet) and arch_gnusuffix (a package name suffix encoding the + architecture) variables. + - The substitution variable target:suffix can be used to interpolate the + current target architecture suffix for dependencies from the regular + tool packages on architecture-qualified tool packages. + * Build $triplet packages: + {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++,gccgo,gnat,gm2,gccrs}-14-$triplet + * Use cross_gencontrol for *-for-host packages. + * libgcc-s[124]: move libgcc_s.so.? to /usr for DEP17. Addresses: #1060001. + * Add packages {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++}-N-for-{build,host}. + * Add packages {gccgo,gnat,gm2,gccrs}-N-for-{build,host}. + * Restrict $tool-$v-$triplet packages via ${tool}_no_archs. + + -- Matthias Klose Sun, 21 Jan 2024 07:38:02 +0100 + +gcc-13 (13.2.0-5) unstable; urgency=medium + + * Update to git 20231005 from the gcc-13 branch. + - Fix PR tree-optimization/111331, PR tree-optimization/110386, + PR target/111121 (AArch64), PR tree-optimization/110315, + PR target/111411 (AArch64), PR target/111412 (riscv), + PR ada/110488, PR c++/111493, PR c++/111485, PR c++/99631, + PR c++/111471, PR fortran/37336, PR fortran/111674, PR fortran/92586, + PR fortran/68155, PR modula2/111510, PR libstdc++/111050, + PR libstdc++/111102, PR libstdc++/108046, PR libstdc++/111511, + PR c++/111512, PR c++/111357. + * Provide symlinks for the shared Modula-2 runtime libraries in + the private gcc library directory. Closes: #1052008. + * Install the static Modula-2 libraries. + * Add autopkg test for Modula-2. + * Don't assume that hppa64-linux-gnu has the sys/mman.h header, + use the fallback for libgcov. + * Update the libquadmath portions of the copyright file. Closes: #1052314. + + -- Matthias Klose Thu, 14 Dec 2023 18:38:37 +0100 + +gcc-13 (13.2.0-4) unstable; urgency=medium + + * Update to git 20230913 from the gcc-13 branch. + - Fix PR target/96762 (PPC), PR target/111340 (x86), + PR target/111306 (x86), PR target/111335 (x86), + PR modula2/111330. + - Address stack protector and stack clash protection weaknesses + on AArch64. CVE-2023-4039. + + [ Matthias Klose ] + * Fix PR fortran/88552, taken from the trunk. LP: #1842164. + + [ Aurelien Jarno ] + * Update libasan8 symbols for riscv64. + + -- Matthias Klose Wed, 13 Sep 2023 13:17:34 +0200 + +gcc-13 (13.2.0-3) unstable; urgency=medium + + * Update to git 20230902 from the gcc-13 branch. + - Fix PR target/111127 (x86), PR middle-end/111017 (x86), + PR tree-optimization/111070, PR tree-optimization/111039, + PR tree-optimization/111019, PR tree-optimization/110702, + PR tree-optimization/111109, PR debug/111080, PR target/111010 (x86), + PR c++/106652, PR c++/110927, PR c++/109678, PR c++/106310, + PR fortran/87477, PR modula2/110779, PR modula2/108119, + PR libgcc/110956, PR middle-end/111017, PR libstdc++/110860, + PR libstdc++/110990, PR libstdc++/110970, PR libstdc++/110974, + PR libstdc++/110968, PR target/110484 (loong64), + PR tree-optimization/110914, PR tree-optimization/111015, + PR target/109725 (riscv), PR c++/109751, PR c++/92407. + + [ Aurelien Jarno ] + * Fix PR target/110066 (RISCV), taken from the trunk. + + [ Matthias Klose ] + * Remove test protocols in clean target. Addresses: #1044154. + * Disable Ada, Go, D, Modula-2 frontends on loong64. + + [ Nicolas Boulenguez ] + * Ada: deprecate the gnatgcc symbolic link. + * Ada: move README.gnat to debian/ada/. + * Ada: remove the obsolete acats-killer script. + * Ada: let gnat-BV provide a versioned virtual package. + + -- Matthias Klose Sat, 02 Sep 2023 11:39:47 +0200 + +gcc-13 (13.2.0-2) unstable; urgency=medium + + * Update to git 20230810 from the gcc-13 branch. + - Fix PR target/110220 (AVR), PR target/110741 (PPC), + PR target/109713 (RISCV), PR target/89835 (RISCV), + PR tree-optimization/110280, PR modula2/110125, PR c++/110197, + PR c++/110566, PR c++/108179, PR fortran/109684, PR fortran/110825, + PR fortran/108961, PR modula2/110779, PR modula2/110161, + PR modula2/110865, PR modula2/110284, PR modula2/110174, + PR modula2/110631, PR modula2/110125, PR libstdc++/110860, + PR libstdc++/110917, PR libstdc++/110862. + * Stop building 32bit liblsan packages, where gcc-13 is not part of + the distro. Closes: #1042482. + * Update sanitizer symbols files. + * Address some lintian warnings: + - Be quiet about libstdc++-doc manpages. + - Don't complain about unstripped sanitizer libraries. + * Correct debhelper to mess up permissions in /usr/libexec. + * Strip again the executables. + + -- Matthias Klose Thu, 10 Aug 2023 05:49:00 +0200 + +gcc-13 (13.2.0-1) unstable; urgency=medium + + * GCC 13.2.0 release. + * Update to git 20230730 from the gcc-13 branch. + - Fix PR tree-optimization/110755, PR tree-optimization/110799, + PR tree-optimization/110766, PR c++/110809, PR modula2/109952, + PR modula2/109952, PR modula2/109586. + + [ Nicolas Boulenguez ] + * autopkgtests: compute GCC version, reuse AUTOPKGTEST_TMP + + [Matthias Klose] + * Stop building gccrs, not ready yet for GCC 13.2, and probably + won't be backported to GCC 13 at all. Just keep it building + for Ubuntu 23.04, where it cannot be removed from the release pocket. + * gcc-13-doc: Fix installation of the libitm info file. LP: #1936394. + * Refresh patches. + + -- Matthias Klose Sun, 30 Jul 2023 07:04:14 +0200 + +gcc-13 (13.1.0-9) unstable; urgency=medium + + * Update to git 20230720 from the gcc-13 branch (13.2 release candidate). + - Fix PR tree-optimization/110731, PR tree-optimization/110669, + PR target/110206, PR target/101469 (SH), PR target/106966 (alpha), + PR c++/110535, PR c++/110122, PR c++/110524, PR fortran/95947, + PR fortran/110658, PR fortran/110288, PR libgcc/110179, PR libgcc/109712, + PR libstdc++/109921, PR libstdc++/110432, PR libstdc++/110542, + PR libstdc++/110574, PR libstdc++/95048. + * Update libstdc++ symbols file for ppc64el. + * Update patches for backports. + * libgccjit-13-doc: Relax dependency on the gcc-13-base package. + * Fix some lintian warnings. + + -- Matthias Klose Thu, 20 Jul 2023 13:37:42 +0200 + +gcc-13 (13.1.0-8) unstable; urgency=medium + + * Update to git 20230711 from the gcc-13 branch. + - Fix PR tree-optimization/110557, PR c++/110595, + PR tree-optimization/110556, PR tree-optimization/110515, + PR tree-optimization/110392, PR tree-optimization/110381, + PR target/110560 (RISCV), PR target/105325 (PPC), + PR tree-optimization/110228, PR c++/110468, PR c++/110463, + PR d/108842, PR d/110516, PR d/110514, PR d/110471, PR fortran/110585, + PR testsuite/108835, PR d/103944, PR libstdc++/104299. + * Apply proposed patch for PR target/106966. Addresses: #1019011. + + -- Matthias Klose Tue, 11 Jul 2023 10:25:56 +0200 + +gcc-13 (13.1.0-7) unstable; urgency=medium + + * Update to git 20230630 from the gcc-13 branch. + - Fix PR tree-optimization/110298, PR debug/110295, PR middle-end/110055, + PR ipa/109983, PR tree-optimization/109143, PR target/110132 (AArch64), + PR target/110100 (AArch64), PR target/110100 (AArch64), + PR target/109932 (PPC), PR target/110011 (PPC), PR c++/110102, + PR c++/109247, PR rtl-optimization/110237, PR target/110309 (x86), + PR testsuite/66005, PR middle-end/110420, PR middle-end/103979, + PR middle-end/98619, PR ipa/110276, + PR target/110264 (RISCV, closes: #1038774), PR d/106977, + PR target/110406, PR d/110359, PR d/110113, PR fortran/86277, + PR libstdc++/110239, PR libstdc++/110149, PR libstdc++/109741, + PR libstdc++/100285. + + [ Nicolas Boulenguez ] + * ada/check_ali_update.sh: report checksum changes but ignore timestamps + + [Matthias Klose] + * Fix PR tree-optimization/110280, taken from the trunk. Closes: #1038768. + + -- Matthias Klose Fri, 30 Jun 2023 14:36:39 +0200 + +gcc-13 (13.1.0-6) unstable; urgency=medium + + * Update to git 20230617 from the gcc-13 branch. + - Fix PR target/110136 (loongarch), PR target/110227 (X86), + PR middle-end/110200. + * Ignore gccrs bootstrap comparison failures on mipsel. + * Remove obsolete gcn assembler patch. + * Mark libgcc-sN packages as protected/important for newer releases. + * Apply proposed patch for PR ipa/110276. Closes: #1037640. + + -- Matthias Klose Sat, 17 Jun 2023 11:34:12 +0200 + +gcc-13 (13.1.0-5) unstable; urgency=medium + + * Re-enable building gccrs. + + -- Matthias Klose Sun, 11 Jun 2023 17:12:06 +0200 + +gcc-13 (13.1.0-4) unstable; urgency=medium + + * Update to git 20230611 from the gcc-13 branch. + - Fix PR target/109650 (AVR), PR target/92729 (AVR), + PR tree-optimization/110165, PR tree-optimization/110166, + PR target/110044 (PPC), PR target/110108 (X86), PR target/109939 (ARM), + PR target/106907 (PPC), PR target/109800 (ARM), PR bootstrap/110085, + PR target/110088 (AVR), PR target/109954 (X86), PR target/110036 (RISCV), + PR target/109547 (RISCV), PR target/104327 (AVR), PR target/82931 (AVR), + PR tree-optimization/109505, PR target/105753 (AVR), PR fortran/96024, + PR fortran/100607, PR libgcc/109670, PR libgcc/109685, + PR libstdc++/108178, PR libstdc++/110139, PR libstdc++/109758, + PR libstdc++/109822, PR libstdc++/109261, PR libstdc++/109949, + PR libstdc++/109261. + * Configure --with-cpu=ev56 instead of --with-arch=ev56 for alpha. + * Also provide the liblto_plugin.so symlink in the old place. + Closes: #1036566. + + -- Matthias Klose Sun, 11 Jun 2023 13:48:04 +0200 + +gcc-13 (13.1.0-3) experimental; urgency=medium + + * Update to git 20230520 from the gcc-13 branch. + - PR c++/109884, PR target/104338 (RISCV), PR libstdc++/109816, + Fix PR target/109661 (AArch64), PR c++/109871, PR c++/109868, + PR c++/109774, PR c++/109745, PR c++/83258, PR c++/80488, PR c++/97700, + PR c++/109761, PR c++/109651, PR fortran/109846, PR fortran/109641, + PR target/104338 (RISCV), PR libstdc++/109816, PR libstdc++/109883, + PR libstdc++/109883. + * Update libgcc-s, libhwasan and libstdc++ symbols files. + * Patch libstdc++ to support SOURCE_DATE_EPOCH in documentation (Vagrant + Cascadian). Closes: #1036367. + * Configure --with-arch=ev56 for alpha. Closes: #1036158. + + -- Matthias Klose Sat, 20 May 2023 11:42:17 +0200 + +gcc-13 (13.1.0-2) experimental; urgency=medium + + * Update to git 20230510 from the gcc-13 branch. + - Fix PR tree-optimization/109778, PR target/108758 (PPC), + PR target/109069 (PPC), PR libgomp/108098, PR target/109762 (AArch64), + PR tree-optimization/109609, PR rtl-optimization/109585, + PR tree-optimization/109573, PR c/109409, PR c/107682, PR c/109412, + PR c/107041, PR debug/109676, PR target/109535 (RISCV), PR c++/109756, + PR c++/109642, PR c++/109640, PR c++/109671, PR c++/109666, PR c++/108099, + PR libstdc++/109694, PR libstdc++/108969, PR libstdc++/109703, + PR libstdc++/40380, PR fortran/109622, PR fortran/109622, + PR libffi/109447. + * Add build support for hurd-amd64 (Samuel Thibault). Closes: #1035614. + + -- Matthias Klose Wed, 10 May 2023 13:43:04 +0200 + +gcc-13 (13.1.0-1) experimental; urgency=medium + + * GCC 13.1.0 release. + * Update NEWS files. + * Refresh patches. + * Update cross-install-location patch (Helmut Grohne). Closes: #1034293. + + -- Matthias Klose Thu, 27 Apr 2023 11:28:53 +0200 + +gcc-13 (13-20230419-1) experimental; urgency=medium + + * New upstream snapshot, taken from the gcc-13 branch. + * Disable rust, as done upstream for the gcc-13 branch. + * Update libgphobos symbols. + + -- Matthias Klose Wed, 19 Apr 2023 23:22:03 +0200 + +gcc-13 (13-20230411-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Tue, 11 Apr 2023 14:08:31 +0200 + +gcc-13 (13-20230320-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Pass GM2_FOR_TARGET for cross builds (Helmut Grohne). Addresses: #1032161. + + -- Matthias Klose Mon, 20 Mar 2023 12:31:54 +0100 + +gcc-13 (13-20230305-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * On x86, hwasan is only available for 64bit multilibs, don't generate + dependencies on any other hwasan multilib packages. + TODO: Package lib64hwasan for i386 and x32. + + -- Matthias Klose Sun, 05 Mar 2023 10:09:24 +0100 + +gcc-13 (13-20230215-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix gdc cross builds. + + -- Matthias Klose Wed, 15 Feb 2023 11:02:04 +0100 + +gcc-13 (13-20230210-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + [Matthias Klose] + * Use the libexec subdir. + + [YunQiang Su] + * Update multiarch patches for mips r6. + * Update the update-patches target. + + -- Matthias Klose Fri, 10 Feb 2023 07:01:03 +0100 + +gcc-13 (13-20230127-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update cross-install patches. + * Refresh patches. + + -- Matthias Klose Fri, 27 Jan 2023 07:14:40 +0100 + +gcc-13 (13-20230126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update newlib to 4.3.0. + + -- Matthias Klose Thu, 26 Jan 2023 10:01:37 +0100 + +gcc-13 (13-20230114-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump standards version. + + -- Matthias Klose Sat, 14 Jan 2023 08:49:10 +0100 + +gcc-13 (13-20230106-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix libstdc++ symbols file, not distinguishing versions for some + symbols. + * Ship hwasan on amd64. + * Bump libgm2 soversion. + * Refresh patches. + * Update libgomp, liblsan, libhwasan, libubsan and libstdc++ symbols files. + + -- Matthias Klose Fri, 06 Jan 2023 16:17:07 +0100 + +gcc-13 (13-20221231-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Fix gccrs symlink. Closes: #1027099. + * Update multiarch patch for looongson. Addresses: #1027278. + + -- Matthias Klose Sat, 31 Dec 2022 12:38:04 +0100 + +gcc-13 (13-20221226-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk (m2 and rs merged). + * Drop gdc build dependency on unsupported architectures. Closes: #1026201. + * Install versioned gm2 doc files. Closes: #1026245. + + -- Matthias Klose Mon, 26 Dec 2022 16:33:56 +0100 + +gcc-13 (13-20221214-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update newlib to 4.2.0. + * Refresh patches. + * Update symbols files. + * Bump libgo and libgphobos sonames. + * Bump standards version. + * Split out a gm2-13-doc package. + * Don't strip executables for test builds. + * Fix PR ada/107475, proposed patch. + * Add conflicts to packages built from the gcc-12 source. + * Add gccrs packaging bits. + * Build libatomic in the rtlibs stage (Helmut Grohne). See: #1009286. + * Add multiarch support for loongarch. + + -- Matthias Klose Wed, 14 Dec 2022 08:22:59 +0100 + +gcc-12 (12.2.0-7) unstable; urgency=medium + + * Update to git 20221021 from the gcc-12 branch. + - Fix PR middle-end/100400, PR target/96072 (PPC), PR target/100645 (PPC). + * Fix the binary-arch only build. + + -- Matthias Klose Fri, 21 Oct 2022 10:19:56 +0200 + +gcc-12 (12.2.0-6) unstable; urgency=medium + + * Update to git 20221019 from the gcc-12 branch. + - Fix PR tree-optimization/106934, PR tree-optimization/106922, + PR tree-optimization/106892, PR tree-optimization/105937, + PR target/107064 (x86), PR fortran/106817, PR fortran/105012, + PR fortran/100040, PR fortran/100029, PR fortran/106579, + PR middle-end/106548, PR libstdc++/106320, PR libstdc++/106695, + PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678, + PR target/99685 (PPC), PR tree-optimization/107254, + PR tree-optimization/107212, PR tree-optimization/107160, + PR tree-optimization/107107, PR tree-optimization/106922, + PR tree-optimization/106922, PR target/107248 (SPARC), PR c++/106925. + * Fix libstdc++ build on the Hurd. Closes: #1021357. + * gobjc: drop obsolete sparc-only conflict (Helmut Grohne). Closes: #1020599. + * gobjc: remove unused binary-without-manpage lintian overrides (Helmut + Grohne). Closes: #1020600. + * Include the Modula-2 documentation into the gm2-12 package. + * Handle the "bookworm" release name instead of "sid". + * Backport two newlib patches for the nvptx target. + + -- Matthias Klose Wed, 19 Oct 2022 07:38:40 +0200 + +gcc-12 (12.2.0-5) unstable; urgency=medium + + * Update libgcc symbols file for arc. + * Work around building libobjc on arc. + * Don't build Ada, D and Go on arc. + + -- Matthias Klose Mon, 03 Oct 2022 10:47:38 +0200 + +gcc-12 (12.2.0-4) unstable; urgency=medium + + * Update to git 20221004 from the gcc-12 branch. + - Fix PR target/107061 (x86), PR middle-end/106982, + PR target/106491 (AArch64), PR target/104482 (PPC), + PR target/105485 (PPC), PR fortran/100103, PR fortran/100132, + PR fortran/107054, PR fortran/82868, PR fortran/106985, + PR fortran/106986. + * Add multiarch patch for arc-linux-gnu. Closes: #989453. + + -- Matthias Klose Sun, 02 Oct 2022 12:12:08 +0200 + +gcc-12 (12.2.0-3) unstable; urgency=medium + + * Update to git 20220920 from the gcc-12 branch. + - Fix PR tree-optimization/106860, PR tree-optimization/106841, + PR tree-optimization/106809, PR c++/93259, PR c++/106893, PR c++/90451, + PR fortran/106857, PR fortran/100245, PR libstdc++/106320. + + -- Matthias Klose Tue, 20 Sep 2022 10:02:11 +0200 + +gcc-12 (12.2.0-2) unstable; urgency=medium + + * Update to git 20220908 from the gcc-12 branch. + - Fix PR target/101322 (PPC), PR rtl-optimization/106187, + PR target/105463 (ARM), PR other/106782, PR other/106782, + PR target/106524 (AArch64), PR target/106017 (PPC), + PR target/106714 (x86), PR target/106721 (x86), PR target/106704 (x86), + PR rtl-optimization/106590, PR target/106459 (loongarch), + PR tree-optimization/106322, PR target/103353 (PPC), PR middle-end/106548, + PR c++/106759, PR fortran/100136, PR fortran/106579, PR fortran/106579, + PR fortran/103694, PR fortran/106566, PR libstdc++/106695, + PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678. + + -- Matthias Klose Thu, 08 Sep 2022 15:52:13 +0200 + +gcc-12 (12.2.0-1) unstable; urgency=medium + + * GCC 12.2.0 release. + * Strip the cc* executables again. Closes: #1015185. + * cpp-12: Suggest cpp-12-doc. Closes: #1016930. + * Refresh patches. + + -- Matthias Klose Mon, 22 Aug 2022 09:38:01 +0200 + +gcc-12 (12.1.0-8) unstable; urgency=medium + + * Update to git 20220809 from the gcc-12 branch. + - Fix PR testsuite/106345, PR target/106091 (PPC), PR middle-end/106449, + PR debug/106261, PR middle-end/106144, PR tree-optimization/106189, + PR lto/106129, PR tree-optimization/106087, PR tree-optimization/106063, + PR tree-optimization/105665, PR tree-optimization/100810, + PR middle-end/106331, PR tree-optimization/106131, PR middle-end/106027, + PR tree-optimization/106112, PR tree-optimization/105971, + PR tree-optimization/105969, PR middle-end/105965, PR target/105459, + PR tree-optimization/105946, PR analyzer/106225, PR analyzer/106204, + PR analyzer/105285, PR preprocessor/97498, PR c++/106311, PR c++/106230, + PR c++/105912, PR c++/105842, PR c++/53164, PR c++/105848, + PR c++/105637, PR c++/100374, PR c++/105758, PR c++/96363, + PR fortran/103504, PR fortran/101330, PR libfortran/106079, + PR libstdc++/104443, PR libstdc++/106248, PR libstdc++/105995, + PR libstdc++/105957, PR libstdc++/105844, PR libstdc++/100823, + PR libstdc++/88881, PR libstdc++/105880, PR d/106555 (closes: #1016701). + * Update watch file. + + -- Matthias Klose Tue, 09 Aug 2022 21:22:04 +0200 + +gcc-12 (12.1.0-7) unstable; urgency=medium + + * Remove the libphobos test forkgc2.d, hangs. See PR d/103944. + + -- Matthias Klose Mon, 18 Jul 2022 18:35:43 +0200 + +gcc-12 (12.1.0-6) unstable; urgency=medium + + * Update to git 20220717 from the gcc-12 branch. + - Fix PR rtl-optimization/105041, PR tree-optimization/105860, + PR target/105930 (x86), PR tree-optimization/106114, + PR target/105991 (PPC), PR target/106122 (x86), PR c++/106102, + PR target/103722 (SH), PR bootstrap/105551, PR target/106097, + PR c++/105626, PR c++/106024, PR c++/105541, PR c++/105779, + PR c++/106024, PR d/106139, PR fortran/104313, PR fortran/103137, + PR fortran/103138, PR fortran/103693, PR fortran/105243, + PR fortran/106121, PR fortran/105954, PR fortran/105691, + PR fortran/105813. + * Apply a hack to build libgo on the Hurd. Closes: #1005297. + + -- Matthias Klose Sun, 17 Jul 2022 11:18:47 +0200 + +gcc-12 (12.1.0-5) unstable; urgency=medium + + * Update to git 20220629 from the gcc-12 branch. + - Fix PR bootstrap/105551, PR rtl-optimization/106032, PR ipa/105600, + PR middle-end/106030, PR target/106096, PR tree-optimization/105736, + PR tree-optimization/105254, PR tree-optimization/105940, + PR tree-optimization/105940, PR target/105960 (x86), PR ipa/105739, + PR target/105209 (alpha), PR target/105970 (x86), PR middle-end/105998, + PR middle-end/105951, PR target/105981 (ARM), PR target/104871 (Darwin), + PR target/105599 (Darwin), PR target/105953 (x86), PR c++/105931, + PR c++/105925, PR c++/105885, PR c++/105964, PR c++/105908, + PR c++/106001, PR c++/105871, PR libgomp/106045. + + [ Matthias Klose ] + * Fix PR bootstrap/105551, taken from the trunk. + + [ Nicolas Boulenguez ] + * ada: move ada/debian_packaging.mk from the gcc-BV source package + back to gnat. + + -- Matthias Klose Wed, 29 Jun 2022 15:42:10 +0200 + +gcc-12 (12.1.0-4) unstable; urgency=medium + + * Update to git 20210616 from the gcc-12 branch. + - Fix PR target/105953 (x86). + * Fix PR bootstrap/105551, taken from the trunk. + + -- Matthias Klose Thu, 16 Jun 2022 07:16:59 +0200 + +gcc-12 (12.1.0-3) unstable; urgency=medium + + * Update to git 20220612 from the gcc-12 branch. + - Fix PR target/105879 (xtensa), PR target/105854 (x86), + PR tree-optimization/105786, PR tree-optimization/105726, + PR middle-end/105711, PR middle-end/105604, PR ipa/105639, + PR sanitizer/105729, PR sanitizer/105714, PR c/105635, PR target/101891, + PR other/105527, PR target/105556 (PPC), PR tree-optimization/103116, + PR tree-optimization/105618, PR rtl-optimization/105577, + PR tree-optimization/105562, PR rtl-optimization/105559, + PR middle-end/105537, PR tree-optimization/105431, + PR tree-optimization/105458, PR target/105162 (AArch64), + PR rtl-optimization/105455, PR c++/105756, PR c++/105852, PR c++/105761, + PR c++/105761, PR c++/105795, PR c++/105734, PR c++/105779, + PR c++/105491, PR c++/105652, PR c++/105655, PR c++/105623, + PR c++/102307, PR c++/105725, PR c++/105589, PR c++/105191, + PR c++/92385, PR c++/104470, PR c++/102651, PR c++/49387, + PR d/105544, PR fortran/105230, PR preprocessor/105732, + PR gcov-profile/105535, PR libgomp/105745, PR libstdc++/105671, + PR libstdc++/105681. + * Reenable the jit build on m68k. Closes: #1009026. + + -- Matthias Klose Sun, 12 Jun 2022 19:19:41 +0200 + +gcc-12 (12.1.0-2) unstable; urgency=medium + + * Update to git 20220513 from the gcc-12 branch. + - Fix PR ipa/100413, PR tree-optimization/105528, PR target/105292 (SPARC), + PR c++/105476, PR libstdc++/105284, PR libstdc++/105284, + PR libstdc++/104731. + * Refresh the cross-fixes patch. + * Update NEWS files for GCC 12.1. + + -- Matthias Klose Fri, 13 May 2022 12:55:15 +0200 + +gcc-12 (12.1.0-1) unstable; urgency=medium + + * GCC 12.1.0 release. + * Refresh patches. + + -- Matthias Klose Sun, 08 May 2022 15:44:36 +0200 + +gcc-12 (12-20220428-1) unstable; urgency=medium + + * New upstream snapshot, taken from the gcc-12 branch. + + [ Matthias Klose ] + * Don't enable -fcf-protection with -m16. LP: #1940029. + * Update libgccjit and libgphobos symbols files. + + [ Nicolas Boulenguez ] + * ada/confirm_debian_bugs.py: trivial update. + + -- Matthias Klose Thu, 28 Apr 2022 20:10:12 +0200 + +gcc-12 (12-20220319-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + - Import go 1.18.0. + * Disable the Ada ALI check before GCC 12 is released. + + -- Matthias Klose Sat, 19 Mar 2022 08:39:27 +0100 + +gcc-12 (12-20220313-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Use again GCC 11 for the bootstrap, and GCC 12 on alpha and m68k. + * Fix PR target/104890, applying proposed patch. + * Update libgphobos symbols file. + + -- Matthias Klose Mon, 14 Mar 2022 06:02:13 +0100 + +gcc-12 (12-20220302-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Reenable Ada on m68k; build using gcc-10 for the Ada bootstrap. + * Update libgphobos symbols file. + + -- Matthias Klose Wed, 02 Mar 2022 14:52:13 +0100 + +gcc-12 (12-20220222-1) unstable; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Reenable Ada on alpha. See PR target/98724. + * Don't apply Ada patches when not building Ada. + * Update the alpha-ieee patch for GCC 12. + * Follow-up patch for PR go/104290 (Hurd) (Svante Signell). + * Disable gnat on x32 with glibc << 2.35. + + -- Matthias Klose Tue, 22 Feb 2022 12:15:48 +0100 + +gcc-12 (12-20220214-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump libgo soname, golang-1.18 import. + + -- Matthias Klose Mon, 14 Feb 2022 04:01:08 +0100 + +gcc-12 (12-20220206-2) experimental; urgency=medium + + [ Matthias Klose ] + * New upstream snapshot, taken from the trunk. + * Update cross-build patches. + + [ Aurelien Jarno ] + * For riscv64, change --with-arch to rv64gc (from rv64imafd). + + -- Matthias Klose Sun, 06 Feb 2022 13:20:19 +0100 + +gcc-12 (12-20220126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Wed, 26 Jan 2022 11:49:18 +0100 + +gcc-12 (12-20220119-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Disable D on ia64, m68k, sh4 and sparc64. + * Disable D on KFreeBSD and the Hurd. + * Revert the PR ada/79724 patch, conflicting with the local ada-gcc-name + patch. + * Apply proposed patch for PR ada/103538 for x32. + + -- Matthias Klose Wed, 19 Jan 2022 10:31:16 +0100 + +gcc-12 (12-20220116-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Remove the gdc-driver-nophobos patch. + * Configure instead with --with-libphobos-druntime-only=yes. + + -- Matthias Klose Sun, 16 Jan 2022 16:43:31 +0100 + +gcc-12 (12-20220106-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Update symbols file for libgphobos. + + -- Matthias Klose Thu, 06 Jan 2022 11:30:02 +0100 + +gcc-12 (12-20211217-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Bump libgphobos soversion. + * Update libgccjit and libgphobos symbols files. + + -- Matthias Klose Fri, 17 Dec 2021 04:55:01 +0100 + +gcc-12 (12-20211211-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Use gnat-11/gdc-11 as bootstrap compilers for recent releases. + + -- Matthias Klose Sat, 11 Dec 2021 13:49:46 +0100 + +gcc-12 (12-20211206-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Add gdc as a build dependency for native builds. + * Update symbols files for libgcc-s, libgccjit, libgphobos. + + -- Matthias Klose Mon, 06 Dec 2021 11:03:14 +0100 + +gcc-12 (12-20211127-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + + -- Matthias Klose Sat, 27 Nov 2021 08:51:55 +0100 + +gcc-12 (12-20211126-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Lower severity of the gcc-N-base packages. Addresses: #997826. + * Fix gcc-12-locales build. Closes: #999764. + * Fix the gcc-12 cross builds (Helmut Grohne). Closes: #1000459. + * Configure --with-cpu=power9 on ppc64el on the Ubuntu development + release. + + -- Matthias Klose Fri, 26 Nov 2021 10:00:23 +0100 + +gcc-12 (12-20211117-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Drop brig/libhsail packaging bits. + * Update breaks/replaces, update textdomain. Closes: #999764. + * Move libtsan_preinit.o into libgcc-12-dev. Closes: #999752. + * Bump standards version. + + -- Matthias Klose Wed, 17 Nov 2021 22:08:35 +0100 + +gcc-12 (12-20211113-1) experimental; urgency=medium + + * New upstream snapshot, taken from the trunk. + * Configure with --enable-offload-defaulted. + + -- Matthias Klose Sat, 13 Nov 2021 15:13:11 +0100 + +gcc-11 (11.2.0-10) unstable; urgency=medium + + * Update to git 20211021 from the gcc-11 branch. + - Fix PR rtl-optimization/102627, PR target/100340 (Darwin), + PR target/102588 (SPARC), PR debug/102441, PR libstdc++/101583, + PR libstdc++/102592, PR libstdc++/100187, PR libstdc++/100237, + PR libstdc++/100249, PR libstdc++/100287, PR libstdc++/100285, + PR libstdc++/100863, PR libstdc++/100863, PR libstdc++/65816, + PR libstdc++/102048, PR libstdc++/90787, PR libstdc++/101599, + PR libstdc++/101589, PR libstdc++/101483, PR libstdc++/100606, + PR libstdc++/101960, PR c++/102535, PR libstdc++/101960, + PR libstdc++/101870, PR libstdc++/101923, PR libstdc++/102425, + PR libstdc++/101761, PR libstdc++/99876, PR libstdc++/102074, + PR libstdc++/102270, PR libstdc++/102270, PR libstdc++/102280, + PR libstdc++/102667, PR target/102761 (x86), PR target/100316 (RISCV), + PR target/100208 (GCN), PR ada/100486, PR c++/102642, PR fortran/102745, + PR fortran/102716. + + [ Nicolas Boulenguez ] + * ada/check_ali_update: add tests, print changed sources with changed .ali + files, always report, interrupt when DEB_CHECK_ALI_UPDATE. + * ada/debian_packaging.mk: drop BUILDER_JOBS now redundant with + dpkg/buildopts.mk. + * ada/debian_packaging.mk: update comments. + * ada: avoid -L for local links with freshly built objects. + * ada/confirm_debian_bugs.py: remove bugs fixed in gnat-11. + * libgnat: strip unreproducible build flags from libgnat-dev .ali files. + + [ Matthias Klose ] + * Backport amdgcn changes from the trunk: + - Fix register issue for global_load assembler functions. + - amdgcn: Add -mxnack and -msram-ecc [PR 100208]. + - amdgcn: Fix attributes for LLVM-12 [PR 100208]. + - Support LLVM 13 assembler syntax. + + -- Matthias Klose Thu, 21 Oct 2021 10:17:22 +0200 + +gcc-11 (11.2.0-9) unstable; urgency=medium + + * Update to git 20211010 from the gcc-11 branch. + - Fix PR debug/102441, PR c++/98216, PR c++/91292, PR debug/102373, + PR c++/64697, PR target/102498 (x86), PR tree-optimization/102400, + PR tree-optimization/102451, PR sanitizer/102515, PR c++/102640, + PR c++/99904, PR c++/102547, PR c++/102535, PR c++/95567, PR c++/102412, + PR c++/98486, PR c++/102163, PR c++/101344, PR c++/101803, + PR c++/101883, PR c++/102548, PR c++/102496, PR c++/102454, + PR d/102574, PR fortran/102458, PR fortran/102458, PR fortran/102520, + PR libgomp/96661. + + -- Matthias Klose Sun, 10 Oct 2021 18:52:10 +0200 + +gcc-11 (11.2.0-8) unstable; urgency=medium + + * Update to git 20210924 from the gcc-11 branch. + - Fix PR target/102107 (PPC), PR target/102107 (PPC), PR fortran/102366, + PR fortran/102287, PR fortran/102311, PR target/102222 (S390), + PR tree-optimization/102400, PR tree-optimization/102451. + * ARM: pass architecture extensions to assembler if supported. Backported + from the trunk. + + -- Matthias Klose Fri, 24 Sep 2021 08:44:25 +0200 + +gcc-11 (11.2.0-7) unstable; urgency=medium + + * Update to git 20210918 from the gcc-11 branch. + - Fix PR rtl-optimization/102306, PR target/101934 (AArch64), PR c++/88578, + PR c++/102295, PR target/97142 (PPC), PR ada/101970, PR c++/102305, + PR d/102185, PR fortran/85130, PR fortran/82314, PR fortran/98490, + PR fortran/101327. + * Fix libgcc-s1 symbols file for alpha. + * Don't build libjit on kfreebsd. See #994035. + + -- Matthias Klose Sun, 19 Sep 2021 10:08:56 +0200 + +gcc-11 (11.2.0-5) unstable; urgency=medium + + * Update to git 20210909 from the gcc-11 branch. + - Fix PR c++/60318, PR target/102224 (x86), PR target/102115 (xtensa), + PR tree-optimization/102046, PR tree-optimization/101925, + PR middle-end/101824, PR target/102166 (x86), PR target/101849 (PPC), + PR c++/100495, PR fortran/100950, PR fortran/100950, PR fortran/102113. + * Configure again with --enable-cet, amd64 and x32 only. Closes: #993626. + + -- Matthias Klose Thu, 09 Sep 2021 13:48:13 +0200 + +gcc-11 (11.2.0-4) unstable; urgency=medium + + * Update to git 20210902 from the gcc-11 branch. + - Fix PR target/101472 (x86), PR target/99744 (x86), PR target/101492 (x86), + PR target/101549 (x86), PR target/101471 (x86), PR target/102035 (ARM), + PR target/102035 (ARM), PR middle-end/101949, PR ipa/97565, + PR debug/101905, PR gcov-profile/89961, PR fortran/87737, + PR fortran/46691, PR fortran/99819, PR fortran/98411, PR libstdc++/101965, + PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, + PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, + PR libstdc++/100285, PR libstdc++/100180, PR c++/101592, + PR tree-optimization/102124, PR target/101472 (x86), + PR target/99744 (x86), PR target/101492 (x86), PR target/101549 (x86), + PR target/101471 (x86), PR target/102035 (ARM), PR target/102035 (ARM), + PR middle-end/101949, PR ipa/97565, PR debug/101905, + PR gcov-profile/89961, PR fortran/87737, PR fortran/46691, + PR fortran/99819, PR fortran/98411, PR libstdc++/101965, + PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, + PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, + PR libstdc++/100285, PR libstdc++/100180. + * Again, for armhf configure --with-arch=+fp, dropping the --with-fpu= + option; keep the old configure options for backports. + * Update libgcc-s1 symbols file for sh4. + * Remove trailing spaces in symbols files. + * Don't configure with --enable-cet on x86 for Debian (old hardware is more + valued than recent security features). Closes: #993162, #993172. + * Don't run the tests with the installed libstdc++ on slow buildds. + * Build again for mipsel and mips64el, too much hassle with separate sources. + * Disable the lto build on sparc64, memory issues on the buildd. + + -- Matthias Klose Thu, 02 Sep 2021 12:23:43 +0200 + +gcc-11 (11.2.0-3) unstable; urgency=high + + * Update to git 20210823 from the gcc-11 branch. + - Fix PR target/101723 (ARM), PR tree-optimization/101373, + PR tree-optimization/101868, PR ipa/100600, PR ipa/101261, + PR ipa/101726, PR c/100150, PR fortran/99351, PR libstdc++/100139. + + -- Matthias Klose Mon, 23 Aug 2021 12:15:54 +0200 + +gcc-11 (11.2.0-2) unstable; urgency=medium + + * Update to git 20210815 from the gcc-11 branch. + - Fix PR middle-end/101586, PR rtl-optimization/101562, PR d/101640, + PR d/101490, PR d/101441, PR d/101127, PR d/101619, PR d/96435, + PR d/101664, PR target/101531 (PPC), PR fortran/101536, + PR fortran/101514, PR fortran/101084, PR tree-optimization/101505, + PR target/100952 (PPC), PR target/94780 (MIPS), PR target/101132 (MIPS), + PR c/101512, PR sanitizer/101749, PR c++/101725, PR c++/100828, + PR fortran/101564, PR libstdc++/101866, PR libstdc++/101510, + PR libstdc++/101510, PR libstdc++/101056, PR libstdc++/101258, + PR gcov-profile/100788, PR middle-end/101624, PR c++/101759, + PR c++/101663, PR preprocessor/101638. + * Again, configure explicitly --with-fpu=vfpv3-d16 on armhf. + * Stop building the native compilers for mipsen targets from this source + package. See https://lists.debian.org/debian-gcc/2021/05/msg00011.html. + * Update binutils version requirements. + + -- Matthias Klose Sun, 15 Aug 2021 23:09:35 +0200 + +gcc-11 (11.2.0-1) experimental; urgency=medium + + * GCC 11.2.0 release. + * Update gm2 from the gm2 gcc-11 branch. + * Refresh patches. + * Update libgfortran symbols file. + * Update libgphobos symbols file. + + -- Matthias Klose Wed, 28 Jul 2021 15:36:39 +0200 + +gcc-11 (11.1.0-4) experimental; urgency=medium + + * Update to git 20210714 from the gcc-11 branch. + - Fix PR middle-end/101291, PR tree-optimization/101394, PR ipa/101066, + PR middle-end/101423, PR tree-optimization/100778, PR target/101377, + PR tree-optimization/100778, PR tree-optimization/101229, + PR tree-optimization/101173, PR tree-optimization/101280, + PR middle-end/101156, PR tree-optimization/100923, + PR tree-optimization/101088, PR tree-optimization/101025, + PR tree-optimization/101158, PR tree-optimization/101151, + PR tree-optimization/101105, PR middle-end/100672, PR target/101175, + PR middle-end/101167, PR inline-asm/100785, PR target/100310 (x86), + PR target/100856 (ARM), PR target/101016 (ARM), PR middle-end/101062, + PR middle-end/101062, PR target/100777 (PPC), PR target/99842 (PPC), + PR middle-end/100876, PR c++/100876, PR middle-end/100732, + PR middle-end/100684, PR middle-end/100574, PR middle-end/100307, + PR middle-end/100250, PR target/100871 (S390), PR target/101046, + PR rtl-optimization/101008, PR debug/100852, PR target/100887, + PR middle-end/100898, PR target/100887 (x86), PR middle-end/101009, + PR tree-optimization/100981, PR tree-optimization/100934, PR ipa/100791, + PR analyzer/99212, PR analyzer/101082, PR analyzer/99212, + PR analyzer/100615, PR analyzer/100244, PR c++/100879, PR c/100783, + PR c/100619, PR inline-asm/100785, PR c/100902, PR c++/101181, + PR c++/101247, PR c++/101247, PR c++/101194, PR c++/98832, + PR c++/101182, PR c++/100918, PR c++/97420, PR c++/101098, PR c++/100838, + PR c++/86355, PR c++/101087, PR c++/101040, PR c++/97566, PR c++/100752, + PR c++/101106, PR c/100902, PR c++/101078, PR c++/101029, PR c++/100946, + PR d/101273, PR d/101282, PR d/100999, PR d/100967, PR fortran/100227, + PR fortran/100283, PR fortran/101123, PR fortran/95501, + PR fortran/95502, PR fortran/100965, PR c++/100796, PR preprocessor/96391, + PR target/101235 (PPC), PR target/99939 (ARM), PR fortran/93524, + PR middle-end/101167, PR libstdc++/91488, PR d/100999, + PR libstdc++/100387, PR libstdc++/100806, PR libstdc++/95833, + PR libstdc++/91488, PR libstdc++/100940, PR libstdc++/100940, + PR libstdc++/100894, PR libstdc++/101034, PR libstdc++/101055, + PR libstdc++/100475, PR libstdc++/100982, PR libstdc++/98842, + PR libstdc++/100824, PR libstdc++/100824, PR libstdc++/100824, + PR libstdc++/100577, PR libstdc++/100770, PR libstdc++/100690, + PR libstdc++/100631, PR libstdc++/100631, PR libstdc++/100639. + * Fix -fstack-protector on musl (Helmut Grohne). Closes: #989521. + * Drop gdb build dependency on mipsel and mips64el for now. + Addresses: #990842. + + -- Matthias Klose Wed, 14 Jul 2021 10:19:29 +0200 + +gcc-11 (11.1.0-3) experimental; urgency=medium + + * Update to git 20210610 from the gcc-11 branch. + - Fix PR bootstrap/100731, PR c++/91859, PR middle-end/100576, + PR rtl-optimization/100590, PR c++/100580, PR rtl-optimization/100342, + PR target/94177 (PPC), PR target/100767 (ARM), PR target/99725 (ARM), + PR target/100626 (x86), PR tree-optimization/100519, PR ipa/100513, + PR middle-end/100509, PR tree-optimization/100492, PR target/99960 (ARM), + PR c++/100281, PR target/99977 (ARM), PR bootstrap/100552, + PR target/100419 (ARM), PR target/100563 (ARM), + PR tree-optimization/100566, PR middle-end/100508, PR middle-end/100471, + PR target/99988 (AArch64), PR c/100550, PR c++/91859, PR c++/100797, + PR c++/95719, PR c++/100666, PR c++/100502, PR c++/100489, + PR c++/100281, PR c++/100634, PR c++/100659, PR c++/100367, + PR c++/96299, PR c++/100261, PR c++/100372, PR c++/100644, + PR c++/100205, PR c++/93314, PR fortran/98411, PR fortran/100656, + PR fortran/100602, PR fortran/100551, PR fortran/100633, + PR preprocessor/100646, PR preprocessor/100392, PR middle-end/100471, + PR sanitizer/100379, PR libstdc++/100676, PR libstdc++/100833, + PR libstdc++/100768, PR libstdc++/99453, PR libstdc++/100479, + PR libstdc++/100361, PR libstdc++/100630, PR libstdc++/99006, + PR libstdc++/99453, PR target/100885 (x86), PR ipa/99122, + PR target/100333 (ARM), PR c/100920, PR c++/100065, PR c++/100963, + PR c++/91706, PR c++/100862, PR c++/100102, PR d/100964, PR d/100935, + PR d/100882, PR fortran/98301, PR fortran/99839, PR libstdc++/100889, + PR libstdc++/100900. + * gcc-snapshot: Remove compiler provides. Addresses: #921877. + * Update libasan6 symbols for riscv64 (Helmut Grohne). Closes: #989205. + + -- Matthias Klose Thu, 10 Jun 2021 10:05:34 +0200 + +gcc-11 (11.1.0-2) experimental; urgency=medium + + * Update to git 20210508 from the gcc-11 branch. + - Fix PR target/100200 (AArch64), PR target/100200 (AArch64), + PR tree-optimization/100239, PR rtl-optimization/100254, PR debug/100255, + PR rtl-optimization/100148, PR c++/89565, PR c++/93383, PR c++/95291, + PR c++/99200, PR c++/99683, PR c++/100161, PR c++/96380, + PR fortran/100218, PR fortran/100154, PR target/98952 (PPC), + PR libstdc++/100290, PR rtl-optimization/100225, PR target/100402 (x86), + PR rtl-optimization/84878, PR target/100217 (S390), PR target/100232, + PR rtl-optimization/100263, PR rtl-optimization/100411, + PR tree-optimization/100253, PR tree-optimization/100278, PR ipa/100308, + PR tree-optimization/100414, PR tree-optimization/100329, + PR target/100375 (nvptx), PR rtl-optimization/100230, + PR target/100311 (ARM), PR target/100302 (AArch64), + PR target/100305 (AArch64), PR target/100270 (AArch64), + PR target/100236 (ARM), PR target/100182 (x86), PR c++/100362, + PR c++/100319, PR fortran/100274, PR c/100450, PR target/98952 (PPC), + PR libgomp/100352, PR libstdc++/100384, PR libstdc++/100259, + PR libstdc++/100298, PR libstdc++/100290. + * Don't revert the PR 85678 patch anymore for backports (defaulting + to -fcommon everywhere). + * Remove obsolete verbose-lto-linker patch. + * Remove obsolete libgomp-no-werror patch. + * Remove the obsolete Linaro build support and patches. + * Fix building the libhwasan0-dbg package. + * Remove some obsolete breaks, conflicts, replaces. + * Fix running the libstdc++-v3 tests against the installed libstdc++6, + when the libstdc++6 package is not built from this source. + * README.source: Document how to run a single test. + * Don't run some tests from the guality test suite on armhf. These fail + on every target, but seem to hang on the buildds occasionally on armhf. + * Don't apply the arm-multilib-soft patch when building without + armhf/armsf multilib packages. + * Lower the dejagnu timeout on armhf from 600 to 300. + * For armhf configure --with-arch=+fp, dropping the --with-fpu= option. + * Explicitly call autoconf2.69 where necessary. + * Remove packaging support for oldish backports. Last supported releases + are Debian 8 (jessie) and Ubuntu 12.04 LTS (precise). + * Fix building the gcn offload compiler without the nvptx offload compiler. + * README.snapshot: Update wrapper script. Addresses: #862176. + + -- Matthias Klose Sat, 08 May 2021 13:50:11 +0200 + +gcc-11 (11.1.0-1) experimental; urgency=medium + + * GCC 11.1.0 release. + * Refresh patches. + * Update gm2 from the gm2 trunk. + * gm2: Ignore gm2version.o stage diff, needed at least on some + archtectures (m68k, riscv64) + * Only apply the gm2-texinfo patch for dfsg builds. + * Configure with --enable-checking=release. + * Disable usage stats for release builds. + * Update and re-apply the gcc-foffload-default patch. + * Update NEWS.html and gcc.css, remove fav.ico, and use the local gcc.css. + * html2text -ascii -style pretty debian/NEWS.html > debian/NEWS.gcc. + * Enable the address sanitizer for riscv64. + + -- Matthias Klose Tue, 27 Apr 2021 13:50:54 +0200 + +gcc-11 (11-20210424-1) experimental; urgency=medium + + * GCC 11 release candidate 2, taken from the gcc-11 branch (20210424) + + -- Matthias Klose Sat, 24 Apr 2021 08:00:02 +0200 + +gcc-11 (11-20210420-1) experimental; urgency=medium + + * GCC 11 release candidate 1, taken from the gcc-11 branch (20210420) + * Update gm2 from the gm2 trunk. + * Revert the fix for PR target/100067, breaking the ARM multilib build. + * Update watch file. + * Stop building sf/hf multilibs on upcoming Ubuntu releases. + * Update libgphobos symbols file. + + -- Matthias Klose Tue, 20 Apr 2021 15:31:57 +0200 + +gcc-11 (11-20210417-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210417) + * Use explicit autoconf version for bullseye. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 17 Apr 2021 11:29:15 +0200 + +gcc-11 (11-20210412-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210412) + * Update libgphobos symbols file. + + -- Matthias Klose Sun, 11 Apr 2021 13:46:08 +0200 + +gcc-11 (11-20210404-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210404) + * Update libgphobos symbols file. + + -- Matthias Klose Sun, 04 Apr 2021 13:42:51 +0200 + +gcc-11 (11-20210327-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210327) + - Fix bootstrap on s390x. + - Fix PR target/99422. Closes: #984870. + - Fix PR sanitizer/98920. Closes: #949192. + * Fix packaging of snapshot builds, really include the jit build in + the snapshot build. + + -- Matthias Klose Sat, 27 Mar 2021 13:19:03 +0100 + +gcc-11 (11-20210319-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210319) + * Fix --as-needed specs for -fsanitize=* options for backports. + * Export DEB_CHECK_ALI_UPDATE=1 (currently commented out). This should be + checked after the gnat transition has been prepared in experimental, and + just before doing the gnat's defaults change in unstable. + * debian/ada/check_ali_update.sh: Fix syntax errors. + Always run the script. + * Disable building gnat on alpha, see PR ada/98724. + * Also build unstripped frontends on mipsel/mips64el. + * Update libgphobos symbols file. + * Don't remove files in debian/tmp-{nvptx,gcn} when building the binary + targets. The installed offload compilers are needed to run the tests. + * Allow to save some disk space for the build, by + - saving the files needed for the hppa64 and jit builds, and removing + the build directories. + - saving the results from the check runs, and removing files created + during the check runs. + * Fix installation of the jit header files. + + -- Matthias Klose Fri, 19 Mar 2021 09:57:02 +0100 + +gcc-11 (11-20210310-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210310) + * Work around dwz issue on mips64el stripping go1. + * Replace @tie{} string with a space in the man pages. LP: #1405685. + * Don't run the memory usage stats on m68k. + + -- Matthias Klose Wed, 10 Mar 2021 11:46:55 +0100 + +gcc-11 (11-20210306-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210306) + * Update libgphobos symbols file. + * Fix unstripped gcc-snapshot builds. + + -- Matthias Klose Sat, 06 Mar 2021 11:55:56 +0100 + +gcc-11 (11-20210227-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210227) + * Build gnat/alpha again in snapshot and cross builds. + + -- Matthias Klose Sat, 27 Feb 2021 09:46:52 +0100 + +gcc-11 (11-20210220-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210220) + * Apply proposed patch for PR ada/98996. + * Update libgphobos symbols file. + * Update usage-wrapper script. + + -- Matthias Klose Sat, 20 Feb 2021 17:21:38 +0100 + +gcc-11 (11-20210207-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210207) + * Fix packaging logic to build libgphobos. + * Update libstdc++ symbols for ppc64 and ppc64el. + * Explicitly configure with --enable-s390-excess-float-precision on s390x + to match the behaviour of the default GCC (gcc-10). + * Update libgphobos symbols file. + * Don't build the gnat alpha cross compiler for now. PR ada/98724. + + -- Matthias Klose Sun, 07 Feb 2021 14:55:47 +0100 + +gcc-11 (11-20210130-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210130) + - libgo 1.16 release candidate 1. + * Remove the work around for PR ada/98228, fixed. + * Disable profiled bootstrap on powerpc as a test ... + * Disable lto build on ia64 as a test ... + * Don't turn on DWARF 5 by default, where GCC 11 is not the default.. + * Require binutils 2.25.2 when defaulting to DWARF 5. + * Update libgphobos symbols file. + * Bump standards version. + + -- Matthias Klose Sat, 30 Jan 2021 13:00:42 +0100 + +gcc-11 (11-20210123-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210123) + * Update gm2 from the gm2 trunk. + * Explicitly use autoconf2.69 where necessary. + * Use the same breaks relations for libgcc-s2 and libgcc-s4 as for + libgcc-s1. Addresses: #980770. + + -- Matthias Klose Sat, 23 Jan 2021 13:12:36 +0100 + +gcc-11 (11-20210116-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210116) + * Fix --enable-link-serialization=1, and enable LTO builds on ppc64el again. + * Update libgphobos symbols file. + * gcc: Prefix LLINKER with /usr/bin/time -v. + * Don't build runtime libraries for the jit build. + * Apply proposed fix for PR go/98496 (Svante Signell). + * Work around PR ada/98228, not using lto for gnat1 on s390x. + * PR sanitizer/98699: Don't enable --as-needed with -fsanitize=* options. + * Use --push-state/--pop-state for gold everywhere. + * Fix parallel linking of cc1gm2. + * Allow to build with some memory usage statistics. + + -- Matthias Klose Sat, 16 Jan 2021 15:49:18 +0100 + +gcc-11 (11-20210110-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210110) + * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9), + remove the conflict with gcc-10-offload-amdgcn. + * Limit lto links on sparc64. + + -- Matthias Klose Sun, 10 Jan 2021 13:01:43 +0100 + +gcc-11 (11-20210109-2) experimental; urgency=medium + + * Support link serialization for m2. + * Fix -Wformat-diag warnings for power*-linux builds. + + -- Matthias Klose Sat, 09 Jan 2021 20:27:49 +0100 + +gcc-11 (11-20210109-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210109) + * Provide timing and resource information for all builds. + * Build the offload compilers using newlib 4.1.0. + * gcc-11-source: Depend on time. + * Disable the lto build on s390x, PR ada/98228. + + -- Matthias Klose Sat, 09 Jan 2021 18:48:15 +0100 + +gcc-11 (11-20210102-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20210102) + * Bump libgo soname. + * Fix libgo build failures. + + -- Matthias Klose Sat, 02 Jan 2021 15:59:18 +0100 + +gcc-11 (11-20201228-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201228) + * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9). + * Fix hppa64 snapshot builds. + * Fix cross installation of g++-mapper-server. + * Update libgcc-s1 symbols file for arm64. + + -- Matthias Klose Mon, 28 Dec 2020 20:02:27 +0100 + +gcc-11 (11-20201222-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201222) + * Fix installation of g++-mapper-server. + * Apply proposed patch for PR bootstrap/98324. enable LTO builds again. + * Disable LTO build on s390x, see PR 976846. + + -- Matthias Klose Tue, 22 Dec 2020 14:41:42 +0100 + +gcc-11 (11-20201216-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20201216) + * Rely on the upstream GNU versioned symbols for libstdc++6. + * Bump phobos soname for GCC 11. + * Add an autopkg test for linking libphobos. + * Build gnat again, without building libgnat_util. + * Build the gcn offload compiler using LLVM 11, and work around the + broken as in LLVM 11. See also LLVM Bug 48201 for this issue and + https://reviews.llvm.org/D73999 for the patch causing the issue. + * Remove hsa offload packaging bits. + * For LTO builds, configure with --enable-link-serialization instead of + --enable-link-mutex. + * Package additional gnat files. + * Update the gm2 packaging. + * Add conflicts with binary packages built from gcc-10. + * Build libhwasan (AArch64 only). + * Don't strip the sanitizer libraries, these are only used for debugging. + LP: #1894166. + * Explicitly configure with --disable-cet when building for older releases. + * Don't run the libgphobos-link test on powerpc architectures. + * Install libstdc++6 gdb pretty printer files in /usr/share/gcc (unversioned). + * Don't mark the libgcc-sN cross packages with XB-Important/Protected: yes. + * Relax the libc-dev dependencies for kfreebsd. + * Limit checking when configuring with --enable-checking=extra,rtl. + * Apply proposed patch for PR bootstrap/95582. + * Enable profiled builds, LTO build for 64bit architectures. + * Add -doc conflicts with GCC 10. Closes: #977408. + * Don't install the lto-dump binary in the hppa64 package. Closes: #977461. + * Let the gcn offload compilers conflict, both shipping the linker tools, + which should be split out into a separate package. Addresses: #977461. + * Regenerate libgm2/configure. Closes: #977409. + * Install hwasan lib in libgcc-dev (arm64 only). + + -- Matthias Klose Wed, 16 Dec 2020 21:28:34 +0100 + +gcc-10 (10.2.0-17) unstable; urgency=medium + + * Update to git 20201111 from the gcc-10 branch. + - Fix PR tree-optimization/97764, PR target/97685 (x86), + PR target/97360 (PPC), PR lto/97508, PR c++/97412, PR fortran/97652, + PR fortran/92793, PR fortran/92793, PR target/85486, PR libstdc++/96269, + PR libstdc++/97731, PR libstdc++/97362, PR libstdc++/92285. + + -- Matthias Klose Wed, 11 Nov 2020 17:50:04 +0100 + +gcc-10 (10.2.0-16) unstable; urgency=medium + + * Update to git 20201029 from the gcc-10 branch. + - Fix PR rtl-optimization/97439, PR target/96759 (RISCV), + PR target/97506 (x86), PR target/97327 (ARM), PR target/96914 (ARM), + PR target/96914 (ARM), PR target/96914 (ARM), PR rtl-optimization/97386, + PR sanitizer/97294, PR target/97291 (ARM), PR ipa/96394, PR ipa/97404, + PR ipa/97295, PR target/97251 (ARM), PR target/97349 (AArch64), + PR tree-optimization/97357, PR tree-optimization/97255, PR c++/97197, + PR c++/97328, PR c++/97010, PR c++/97197, PR c++/96229, PR fortran/95979, + PR libstdc++/95322, PR libstdc++/97132, PR libstdc++/95788, + PR tree-optimization/97081, PR tree-optimization/97456, + PR c++/95132, PR c++/96241. + * Also enable the extra checking on amd64, arm64, ppc64el, s390x, and don't + strip the executables. This will be reverted within a few weeks, please + don't send bug reports about that. + * Mark libgcc-sN with XB-Important/Protected: yes. Addresses: #972936. + + -- Matthias Klose Thu, 29 Oct 2020 16:36:48 +0100 + +gcc-10 (10.2.0-15) unstable; urgency=medium + + * Update to git 20201011 from the gcc-10 branch. + - Fix PR target/97302, PR rtl-optimization/97313, PR middle-end/95189, + PR middle-end/95886, PR target/97150 (AArch64), PR target/96313 (AArch64), + PR tree-optimization/97236, PR target/96456 (S390), PR gcov-profile/97193, + PR c++/88115, PR libstdc++/97273, PR c++/96994, PR c++/97195, + PR c++/97145, PR fortran/97272, PR bootstrap/97163, PR gcov-profile/96913. + * On armel, armhf, configure with --enable-checking=yes,extra,rtl, and don't + strip the executables for now. + + -- Matthias Klose Sun, 11 Oct 2020 12:40:50 +0200 + +gcc-10 (10.2.0-14) experimental; urgency=medium + + * Update to git 20201002 from the gcc-10 branch. + - Fix PR gcov-profile/64636, PR tree-optimization/96979, + PR gcov-profile/97069, PR target/96795 (ARM), PR target/96827 (ARM), + PR bootstrap/97183, PR target/97184 (x86). + * Fix PR tree-optimization/97236, taken from the trunk. Stop reverting the + fixes for PR tree-optimization/97043, PR tree-optimization/96522. + Closes: #971027. + * Enable gnat on m68k again (Adrian Glaubitz). Closes: #971551. + + -- Matthias Klose Fri, 02 Oct 2020 14:12:39 +0200 + +gcc-10 (10.2.0-13) unstable; urgency=medium + + * Update to git 20200930 from the gcc-10 branch. + - Fix PR target/97247 (x86), PR target/97231 (x86), PR middle-end/97054. + - Backport SVE ACLE and stack-protector patches (ARM, AArch64). + * Revert the fix for PR tree-optimization/96522. See #971027. + + -- Matthias Klose Wed, 30 Sep 2020 12:29:35 +0200 + +gcc-10 (10.2.0-12) unstable; urgency=medium + + * Update to git 20200927 from the gcc-10 branch. + - Fix PR target/71233 (AArch64), PR middle-end/97073. + * Revert the fix for PR tree-optimization/97043. Addresses: #971027. + + -- Matthias Klose Tue, 29 Sep 2020 12:37:37 +0200 + +gcc-10 (10.2.0-11) unstable; urgency=medium + + * Update to git 20200927 from the gcc-10 branch. + - Fix PR middle-end/95464, PR target/96683 (ARM), PR target/97032, + PR target/97166 (PPC), PR fortran/96041, PR fortran/93423, + PR fortran/93423, PR libstdc++/97167, PR libstdc++/96803, + PR libstdc++/96803, PR libstdc++/94681, PR libstdc++/94681, + PR libstdc++/97101, PR libstdc++/94160. + - libgo: don't put golang.org packages in zstdpkglist.go. Closes: #970604. + + [ Samuel Thibault ] + * Limit systemtap-sdt-dev build dependency to linux architectures. + Closes: #970614. + + -- Matthias Klose Sun, 27 Sep 2020 12:19:01 +0200 + +gcc-10 (10.2.0-9) unstable; urgency=high + + * Update to git 20200918 from the gcc-10 branch. + - Fix PR preprocessor/96935, PR tree-optimization/97053, + PR target/97028 (x86), PR debug/96690, PR tree-optimization/96522, + PR tree-optimization/97043. + + -- Matthias Klose Fri, 18 Sep 2020 20:23:58 +0200 + +gcc-10 (10.2.0-8) unstable; urgency=medium + + * Update to git 20200914 from the gcc-10 branch. + - Fix PR tree-optimization/96579, PR tree-optimization/96370, + PR tree-optimization/96514, PR middle-end/96369, PR lto/96385, + PR tree-optimization/96349, PR bootstrap/96203, PR lto/95604, + PR debug/93865, PR debug/94235, PR c++/96901, PR lto/94311, + PR debug/96729, PR c++/96901, PR c++/96862, PR fortran/96859. + * Fix libstdc++ symbols file for armel, no pretty formatting allowed + in symbols files. + + -- Matthias Klose Mon, 14 Sep 2020 11:30:32 +0200 + +gcc-10 (10.2.0-7) unstable; urgency=medium + + * Update to git 20200910 from the gcc-10 branch. + - Fix PR c++/95164, PR target/85830 (PPC), PR tree-optimization/96820, + PR target/96808 (PPC), PR tree-optimization/96597, + PR tree-optimization/88240, PR tree-optimization/96854, + PR target/96551 (x86), PR d/96924, PR fortran/95398, PR fortran/94672, + PR libstdc++/92978, PR libstdc++/96851, PR target/96357 (AArch64), + PR fortran/95109, PR fortran/94690. + * Update libasan and libgfortran symbols files. + * Replace the libstdc++ symbols file on armel with one based on + symbol versions (versions different than for other architectures). + Closes: #954954. + + -- Matthias Klose Thu, 10 Sep 2020 17:24:36 +0200 + +gcc-10 (10.2.0-6) unstable; urgency=medium + + * Update to git 20200831 from the gcc-10 branch. + - Fix PR target/96744 (x86), PR target/94538 (ARM), PR middle-end/87256, + PR tree-optimization/96722, PR tree-optimization/96758, + PR target/95450, PR tree-optimization/96535, PR c/96549, PR fortran/93553, + PR middle-end/96459, PR tree-optimization/96730, PR ipa/95320, + PR target/96682 (ARM), PR target/96506 (PPC), PR target/96536 (x86), + PR target/96562 (x86), PR target/93897 (x86), PR lto/95362, + PR lto/95548, PR c/96545, PR c++/96497, PR c++/95428, PR c++/96199, + PR c++/96106, PR c++/96164, PR d/96157, PR d/96250, PR d/96254, + PR d/96301, PR fortran/95882, PR fortran/96486, PR fortran/93553, + PR middle-end/96459, PR libstdc++/71960, PR libstdc++/96766, + PR libstdc++/96718, PR target/96493 (PPC), PR ipa/96482, PR ipa/96291, + PR target/96243 (x86), PR target/96530 (PPC), PR target/96446 (PPC), + PR c++/96106, PR c++/96164, PR fortran/96312, PR libstdc++/89760, + PR libstdc++/95749. + * Disable go on sh4. Closes: #969221. + * Update patch for CUDA and __float128. Closes: #968672. + + -- Matthias Klose Mon, 31 Aug 2020 12:27:30 +0200 + +gcc-10 (10.2.0-5) unstable; urgency=medium + + * Update to git 20200808 from the gcc-10 branch. + - Fix PR target/96191 (ARM), PR target/96191 (AArch64), + PR tree-optimization/96483, PR middle-end/96426, PR debug/96354, + PR target/95435 (x86), PR tree-optimization/96058, PR middle-end/96335, + PR lto/45375, PR c/96377, PR c++/96082, PR c++/95591, PR c++/95599, + PR c++/95823, PR c++/95824, PR c++/95895, PR d/96140, + PR fortran/96319, PR fortran/95612, PR fortran/95585. + + -- Matthias Klose Sat, 08 Aug 2020 13:31:03 +0200 + +gcc-10 (10.2.0-3) unstable; urgency=medium + + * Update to git 20200725 from the gcc-10 branch. + - Fix PR target/96190 (SPARC), PR target/96236 (PPC), PR target/96260, + PR fortran/95980, PR fortran/95980, PR fortran/96086, PR fortran/89574, + PR fortran/96220, PR fortran/96018. + * Re-enable gm2, disabled by accident in 10.2.0-1. + * Refresh gm2 patches. + * Apply proposed gdc patch (Iain Buclaw). Closes: #966026. + * Apply proposed patch for PR bootstrap/96203, add -fcf-protection=check. + + -- Matthias Klose Sat, 25 Jul 2020 14:52:31 +0200 + +gcc-10 (10.2.0-1) unstable; urgency=medium + + * GCC 10.2.0 release. + - Fix PR target/95726 (AArch64), PR target/96174 (x86), PR middle-end/95114, + PR tree-optimization/96146, PR middle-end/96194, PR c++/95789, + PR c++/96104, PR c++/96179. + - Fix missing dependencies for selftests which occasionally causes + failed builds. Closes: #960913. + * Update gm2 from the gm2 gcc-10 branch. + * Update the patch for PR lto/95604, replacing the error with a warning. + * Build the GC enabled libobjc on arm64, mips and mipsel as well. + * libgo: Merge the 1.14.6 changes, taken from the trunk. + * Fix ASAN_INTERCEPT_VFORK related symbols. (Helmut Grohne). Closes: #965246. + + -- Matthias Klose Thu, 23 Jul 2020 12:15:54 +0200 + +gcc-10 (10.1.0-6) unstable; urgency=medium + + * Update to git 20200714 from the gcc-10 branch. + - Fix PR lto/95604, PR target/94891 (AArch64), PR target/94791 (AArch64), + PR ipa/96130, PR middle-end/94600, PR middle-end/95270, PR c++/96063, + PR c++/96077. + * Also package the nvptx offload compiler on arm64. + + -- Matthias Klose Tue, 14 Jul 2020 12:07:51 +0200 + +gcc-10 (10.1.0-5) unstable; urgency=medium + + * Update to git 20200713 from the gcc-10 branch. + - Fix PR bootstrap/94998, PR tree-optimization/94969, PR target/95018 (PPC), + PR target/95347 (PPC), PR target/95347 (PPC), PR target/95713, + PR target/94735 (ARM), PR target/94959 (ARM), PR c++/95505, PR c++/95508, + PR fortran/95707, PR fortran/95688, PR fortran/95687, PR fortran/95689, + PR fortran/95587, PR fortran/95088, PR lto/94848, PR c/95141, PR c++/95711, + PR c++/95736, PR c++/95519, PR c++/95518, PR c++/95813, PR c++/95477, + PR c++/95719, PR d/95250, PR fortran/95978, PR fortran/71706, + PR fortran/95743, PR fortran/95340, PR fortran/95880, PR fortran/95881, + PR fortran/95826, PR fortran/95828, PR fortran/95827, PR fortran/95812, + PR fortran/95708, PR target/95105 (AArch64), PR tree-optimization/96075, + PR ipa/96040, PR debug/95343, PR fortran/95709, PR fortran/93337, + PR fortran/95366, PR fortran/88379, PR fortran/9582 libstdc++/91807, + PR libstdc++/91153, PR target/93224, PR libstdc++/95282, PR libstdc++/94627, + PR tree-optimization/95857, PR target/95581 (PPC), PR target/96125 (PPC), + PR tree-optimization/96133, PR tree-optimization/95804, + PR tree-optimization/95638, PR target/95683 (RISCV), PR c++/96105, + PR c++/96052, PR c++/95976, PR libstdc++/95322, PR libstdc++/94936, + PR libstdc++/94087. + * distro-defaults.h: Don't define for offload compilers. + * Build the nvptx offload compiler on arm64. + * Update the patch for PR lto/95604. + + -- Matthias Klose Mon, 13 Jul 2020 13:12:42 +0200 + +gcc-10 (10.1.0-4) unstable; urgency=medium + + * Update to git 20200616 from the gcc-10 branch. + - Fix PR ipa/95113, PR target/95525 (x86), PR target/95420 (ARM), + PR target/94591 (ARM), PR gcov-profile/95332, PR testsuite/95361, + PR target/95355 (x86), PR web/95380, PR c++/95346, PR c++/95562, + PR c++/95345, PR c++/95050, PR c++/94817, PR c++/94829, PR c++/95087, + PR c++/93310, PR c++/95158, PR c++/92103, PR c++/92633, PR c++/92838, + PR c++/95020, PR c++/95386, PR c++/92652, PR c++/93698, PR c++/94128, + PR c++/95241, PR c++/95181, PR c++/95371, PR c++/95319, PR c++/95222, + PR c++/90212, PR c++/90479, PR c++/91529, PR c++/93822, + PR libfortran/95390, PR libfortran/95104, PR libfortran/95104, + PR libfortran/95191, PR libgomp/92854, PR libgomp/92854, + PR libstdc++/95322, PR libstdc++/77691, PR lto/94848, PR middle-end/95551, + PR target/95528, PR c++/95197, PR middle-end/95108, PR debug/95080, + PR sanitizer/95634, PR sanitizer/94910, PR c/95580, PR c++/95328, + PR c++/95197, PR c++/95440, PR c++/93467, PR c++/95350, PR c++/95560, + PR c++/95066, PR c++/94937, PR c++/95344, PR c++/94955, PR c++/90915, + PR c++/90915, PR c++/95137, PR fortran/95544, PR fortran/93366, + PR fortran/95503, PR fortran/94109, PR fortran/95611, PR fortran/95091, + PR libstdc++/95578. + * Fix PR lto/95604, proposed patch. + * Reorganize the distro defaults patches. + + -- Matthias Klose Tue, 16 Jun 2020 13:09:42 +0200 + +gcc-10 (10.1.0-3) unstable; urgency=medium + + * Update to git 20200525 from the gcc-10 branch. + - Fix PR target/95255 (x86), PR target/95258 (x86), PR lto/95190, + PR target/95169 (x86), PR target/95212 (x86), PR middle-end/94635, + PR middle-end/94940, PR d/94970, PR fortran/39695, PR libfortran/95119, + PR libstdc++/95289, PR libstdc++/93983. + * Configure --with-arch=i686 for the Hurd. Closes: #960929. + * Remove the last powerpcspe packaging bits, it's finally gone. + * Update watch file. + + -- Matthias Klose Mon, 25 May 2020 22:55:26 +0200 + +gcc-10 (10.1.0-2) unstable; urgency=medium + + * Update to git 20200515 from the gcc-10 branch. + - Fix PR ipa/94947, PR c/95040, PR middle-end/94724, + PR target/94950 (RISCV), PR target/94942 (x86), PR c/94968, PR c/94842, + PR c++/95003, PR c++/94885, PR c++/94938, PR c++/94951, PR c++/94907, + PR fortran/93497, PR fortran/94672, PR fortran/59107, PR libstdc++/94906, + PR libstdc++/94933, PR libstdc++/92894. + + [ Matthias Klose ] + * Remove the unmaintained neon packaging bits. + * Add build dependency on unzip to fix libphobos test failures. + * libphobos: Fix issue 19861 - core.cpuid reports the wrong number of + threads. Closes: #960150. + * Build using GCC 10 on recent distro versions. + * Fix gnat tests to find the libgnat_utils shared library. Closes: #960270. + * Run the testsuite with the offload compilers installed into the temporary + install location. + * Don't require root for the temp installation of the offload compilers. + * Use LLVM 10 for the amdgcn assembler and linker tools. + * Don't override the libstdc++ test results when running the libstdc++ abi + check. + * Update debian/TODO, remove obsolete items, add some testsuite items. + * Override some lintian warnings for snapshot builds. + * Include jit test results into the summary and the gcc-test-results package. + * Fix some lintian warnings. + * Don't strip the target object files for the amdgcn offload build. + * Stop building the libgcc compat packages for bullseye/sid. + + [ Nicolas Boulenguez ] + * Enable gnat autopkg tests. + + -- Matthias Klose Fri, 15 May 2020 17:11:03 +0200 + +gcc-10 (10.1.0-1) unstable; urgency=medium + + * GCC 10.1.0 release. + * lib*stdc++6: Depend on lib*gcc-sN instead of lib*gccN. + * Build libphobos on hppa-linux-gnu. + * Update NEWS files for GCC 10. + * Refresh patches. + + -- Matthias Klose Thu, 07 May 2020 13:44:26 +0200 + +gcc-10 (10-20200502-1) unstable; urgency=medium + + * GCC 10.1 release candidate. + * GCC snapshot, taken from the gcc-10 branch (20200502, 0118d0397f9). + - Fix PR objc/94637, @selector() broken for selectors containing repeated + colons. Closes: #959127. + * Increase the testsuite timeout on riscv64. + * Fix sparc64 multilib cross build (Helmut Grohne). Closes: #958909. + * Fix GDC Issue 19367 - std.net.curl does not understand HTTP/2 status lines. + LP: #1876293. + * Update libgphobos symbols files. + + -- Matthias Klose Sat, 02 May 2020 14:09:59 +0200 + +gcc-10 (10-20200425-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200425, cf3f7b309ffd). + - Fix PR middle-end/94647. Closes: #958062. + * Fix local patch for PR jit/87808. Closes: #954898. + * gcc-snapshot: Depend on nvptx-tools with the nvptx offload compiler. + * Provide symlinks for the offload target tools in /accel/. + * Don't include lib*gomp1 and libgcc4 in the control file, when not building + the common libraries. + * Build libphobos on powerpc*, libdruntime only. + + -- Matthias Klose Sat, 25 Apr 2020 18:07:48 +0200 + +gcc-10 (10-20200418-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200418, c5bac7d127f2). + - Fix PR lto/94612, offloading support. + - Fix PR rtl-optimization/93974, ICE on ppc64el with -O3. + + [ Nicolas Boulenguez ] + * Remove ada-lib-info-file-prefix-map.diff (see #87972). + + [ Matthias Klose ] + * libgcc-sN: Don't add the libgcc-N-dev breaks for backports. + * Include the complete offload compilers in the gcc-snapshot builds. + + -- Matthias Klose Sat, 18 Apr 2020 11:56:38 +0200 + +gcc-10 (10-20200411-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200411, f883c46b487). + * Fix gnat cross builds. + * Strip again the compiler executables. + + -- Matthias Klose Sun, 12 Apr 2020 15:12:15 +0200 + +gcc-10 (10-20200410-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200410, 7478addd84a). + + [ Matthias Klose ] + * Update libgccjit and libgphobos symbols files. + * Remove the libgcc-sN provides from the last upload. + * Don't install the empty gcc_lib_dir in gcc-N-base. + * Configure with -enable-libphobos-checking=release. + + [ Nicolas Boulenguez ] + * Remove some dependencies older than oldoldstable. + * Build gnat. Remove obsolete no_install option for libgnat. + * ada-lib-info-file-source-date-epoch.diff: port fix from gcc-9. + * ada: install libgnat-BV.so without adding a .1 suffix. + * Rename libgnatvsn to libgnat_util (following upstream). + Make the compatibility project abstract instead of generating twice. + * ada-changes-in-autogen-output.diff: keep more upstream default values in + order to reduce the diff noise. + + -- Matthias Klose Fri, 10 Apr 2020 14:45:04 +0200 + +gcc-10 (10-20200402-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200402, 86c92411320). + * Fix PR target/94254 (PPC), proposed patch. + * Update libstdc++6 symbols file for armel. Closes: #954954. + * libgcc-sN: Provide libgcc-sN with an epoch version to rebuild gcc-8. + Closes: #954826. + + -- Matthias Klose Thu, 02 Apr 2020 15:01:48 +0200 + +gcc-10 (10-20200324-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200324, 906b3eb9df6). + * libgcc-N-dev: Include sanitizer headers again. Closes: #954751. + * gm2: Define lang_register_spec_functions for jit. Closes: #954438. + + -- Matthias Klose Tue, 24 Mar 2020 13:38:16 +0100 + +gcc-10 (10-20200321-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200321, 497498c878d). + * Update gm2 from the gm2 trunk. + * Move limits.h and syslimits.h into /include, and remove + /include-fixed. + * Update libgphobos symbols file. + + -- Matthias Klose Sat, 21 Mar 2020 13:14:07 +0100 + +gcc-10 (10-20200312-2) unstable; urgency=medium + + * Ship the include-fixed directory again, for a working #include . + + -- Matthias Klose Fri, 13 Mar 2020 09:42:15 +0100 + +gcc-10 (10-20200312-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200312, daf2852b883). + * For all runtime libraries, generate dependencies on libgcc-sN instead + on libgccN. + * Use llvm 10 for the amdgcn offload compiler, when available. + * Update newlib to 3.3.0. + * Stop shipping the include-fixed directory. + * Build the snapshot package with the offload compilers included. + * Tighten dependency on libc6 for this upload. + + -- Matthias Klose Thu, 12 Mar 2020 21:41:07 +0100 + +gcc-10 (10-20200304-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200304, 94f7d7ec6eb). + * Update the autopkg tests to run GCC 10. + + -- Matthias Klose Wed, 04 Mar 2020 16:38:16 +0100 + +gcc-10 (10-20200222-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200222, e99b18cf710). + * Don't create doc directories for -dbg packages when not building those. + * Update libgphobos symbols file for amd64. + * Don't try to strip the target libs for the amdgcn offload compiler. + + -- Matthias Klose Sat, 22 Feb 2020 13:39:51 +0100 + +gcc-10 (10-20200211-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200211, a6ee556c765). + + [ Matthias Klose ] + * Let the libgcc-sN multilib cross packages provide libgccN. + * libgcc-sN: Move library back to /lib from /usr/lib, and add + a replaces to libgccN. Closes: #950624. + * libgcc-sN: Add break on cryptsetup-initramfs. Closes: #950551. + + [ Aurelien Jarno ] + * debian/libgcc-s.symbols: add mipsn32el to the list of architectures + with GCC_3.3.4, GCC_4.4.0 and CC_4.5.0 symbols. + * debian/rules.conf: libgcc-s1 and corresponding multilib packages are + epochless. Adjust DEB_LIBGCC_VERSION accordingly. + + -- Matthias Klose Tue, 11 Feb 2020 07:20:23 +0100 + +gcc-10 (10-20200204-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200204, 0303907ea5d). + * On architectures where libgcc_s.so is a symlink, replace the symlink with + a simple linker script. + * Add breaks on libgcc-N-dev packages on arm64, s390x and sparc64. + Closes: #950550, #950579. + + -- Matthias Klose Tue, 04 Feb 2020 15:52:16 +0100 + +gcc-10 (10-20200202-1) unstable; urgency=medium + + * GCC snapshot, taken from the trunk (20200202, 0303907ea5d). + + -- Matthias Klose Sun, 02 Feb 2020 11:43:57 +0100 + +gcc-10 (10-20200129-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200129, 87c3fcfa6bb). + * Update gm2 from the gm2 trunk. + * Fix libgomp-plugin-amdgcn1 package description. + * Bump libgo soversion. + * Reset libgphobos version to 1. + * Apply proposed patch for PR bootstrap/93409. + * Fix building the amdgcn offload compiler with llvm 9. + * Bump standards version. + + -- Matthias Klose Wed, 29 Jan 2020 12:34:27 +0100 + +gcc-10 (10-20200117-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200117, 507de5ee23e). + * Update gm2 from the gm2 trunk. + + [ Matthias Klose ] + * Update libgomp symbols files. + * Build-depend on libzstd-dev. + * Revert the fix for PR c/85678, not making -fno-common the default for + current releases and backports. + * Update libstdc++ symbols file. + * Install more AArch64 intrinsic headers. + * Prepare for git updates from a release branch. + * Allow retrying of a native build in case of unreproducible ICEs. + + [YunQiang Su] + * Fix buffer overflow in the gcc-search-prefixed-as-ld patch when + strlen(DEFAULT_REAL_TARGET_MACHINE) < multiarch_len. Addresses: #915194. + + -- Matthias Klose Fri, 17 Jan 2020 15:56:29 +0100 + +gcc-10 (10-20200104-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20200104, r279880). + * Update newlib to newlib-3.2.0. + * Update gm2 from the gm2 trunk. + + -- Matthias Klose Sat, 04 Jan 2020 11:26:06 +0100 + +gcc-10 (10-20191217-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20191217, r279456). + * Update newlib to a snapshot from trunk. + * Update gm2 from the gm2 trunk. + * Update symbols files. + * Build without gnat for a first build. + * Build an amdgcn offload compiler. + * Update debian/copyright for gm2, compiler is now GPL-3+, the runtime + libraries GPL-3+ plus GCC Runtime Library Exception, version 3.1. + * Fix libgo build on arm-linux-gnueabi*. + * Update debian/copyright for contrib/unicode. + * libgomp-plugin-nvptx1: Update cuda suggestions. Addresses: #946487. + * Fix buffer overflow in the gcc-search-prefixed-as-ld patch. + Addresses: #946792. + * Don't strip frontends for debugging purposes. + + -- Matthias Klose Tue, 17 Dec 2019 12:31:04 +0100 + +gcc-9 (9.2.1-21) unstable; urgency=medium + + * Update to SVN 20191130 (r278870) from the gcc-9-branch. + - Fix PR fortran/92100, PR tree-optimization/92222, PR ada/92489, + PR fortran/92629. + * Stop building -dbg packages, keep building the libstc++6-9-dbg package + containing just the libstdc++ debug build. + + -- Matthias Klose Sat, 30 Nov 2019 09:17:04 +0100 + +gcc-9 (9.2.1-20) unstable; urgency=medium + + * Update to SVN 20191126 (r278718) from the gcc-9-branch. + - Fix PR libstdc++/92267, PR tree-optimization/91355, PR other/92090, + PR middle-end/90796, PR middle-end/90840, PR target/90867 (x86), + PR c/90898, PR middle-end/91450, PR rtl-optimization/92430, + PR target/92389 (x86), PR tree-optimization/90930, PR target/87833 (x86), + PR c++/90767, PR c++/92504, PR fortran/92113, PR fortran/92321, + PR fortran/92470, PR fortran/92470, PR fortran/92569, PR fortran/92050, + PR ada/92362, PR ada/92575. + * Add a libgphobos symbols file. + * Enable LTO builds again. + + -- Matthias Klose Tue, 26 Nov 2019 08:16:37 +0100 + +gcc-9 (9.2.1-19) unstable; urgency=medium + + * Update to SVN 20191109 (r278002) from the gcc-9-branch. + - Fix PR sanitizer/92154, PR c++/92384, PR middle-end/92231, PR c++/90947, + PR c++/90998, PR c++/92343, PR c++/90947, PR tree-optimization/85887, + PR c++/92015, PR middle-end/92231, PR preprocessor/92296. + * Fix once more the gnat armel cross build. + + -- Matthias Klose Sat, 09 Nov 2019 15:47:17 +0100 + +gcc-9 (9.2.1-18) unstable; urgency=medium + + * Update to SVN 20191108 (r277978) from the gcc-9-branch. + - Fix PR target/91289 (PPC), PR fortran/92208, PR fortran/92277, + PR fortran/92208, PR fortran/92284, PR target/92095 (SPARC), + PR fortran/91253. + + [ Matthias Klose ] + * Update gm2 from the gcc_9_2_0_gm2 branch 20191107, more parallel + build issues and cross build fixes. + * Bump standards version. + * ada-libgnatvsn.diff: + - Regenerate with upstream automake 1.15.1 and autoconf 2.69. + + [ Nicolas Boulenguez ] + * Copy ada-lib-info-file-prefix-map.diff from gcc-8. + * ada-tools-move-ldflag.diff is obsolete with --as-needed as default. + * Enable all non-default linker checks for Ada. + + -- Matthias Klose Fri, 08 Nov 2019 17:51:22 +0100 + +gcc-9 (9.2.1-17) unstable; urgency=medium + + * Update to SVN 20191102 (r277743) from the gcc-9-branch. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191031, more parallel + build issues. + * ada-libgnatvsn.diff: + - Copy some of configure.ac's common stuff from libatomic/libgomp. + - Regenerate with automake 1.15.1 and autoconf 2.69. + + -- Matthias Klose Sun, 03 Nov 2019 10:37:13 +0100 + +gcc-9 (9.2.1-16) unstable; urgency=medium + + * Update to SVN 20191030 (r277619) from the gcc-9-branch. + - Fix PR target/92225 (x86), PR rtl-optimization/92007, + PR target/70010 (PPC), PR target/65342 (PPC), PR target/67183, + PR fortran/91926, PR fortran/91863, PR fortran/86248, PR c++/92201. + * Use a proper configure check when linking with libatomic in libgnatvsn. + Closes: #943796. + * Enable gm2 on x32. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191030, parallel build issues. + * Fix PR libstdc++/92267, taken from the trunk. + + -- Matthias Klose Wed, 30 Oct 2019 13:13:31 +0100 + +gcc-9 (9.2.1-15) unstable; urgency=medium + + * Update to SVN 20191027 (r277486) from the gcc-9-branch. + - Fix PR c++/85254. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191026. + * Link libgnatvsn against libatomic. + + -- Matthias Klose Sun, 27 Oct 2019 18:08:50 +0100 + +gcc-9 (9.2.1-14) unstable; urgency=medium + + * Update to SVN 20191025 (r277460) from the gcc-9-branch. + - Fix PR libstdc++/90682, PR libstdc++/61761, PR libstdc++/89164, + PR libstdc++/92143, PR libstdc++/91456, PR libstdc++/92059, + PR libstdc++/91748, PR tree-optimization/91885, PR debug/91887, + PR tree-optimization/92131, PR c++/92062, PR fortran/92174, + PR target/88167 (ARM), PR middle-end/92153. + * Configure again with --enable-objc-gc=auto, somehow dropped in gcc-9. + Closes: #942049. + * Revert the libgnatvsn changes from 9.2.1-9. + + -- Matthias Klose Fri, 25 Oct 2019 19:31:48 +0200 + +gcc-9 (9.2.1-12) unstable; urgency=medium + + * Update to SVN 20191022 (r277294) from the gcc-9-branch. + - Fix PR c++/91925, PR c++/88203, PR c/91401, PR tree-optimization/92056, + PR tree-optimization/91734, PR bootstrap/90543, PR middle-end/91920, + PR tree-optimization/91723, PR tree-optimization/91665, + PR middle-end/91001, PR middle-end/91105, PR middle-end/91106, + PR go/91617, PR middle-end/91623, PR lto/91572, + PR tree-optimization/91351. PR target/86040 (AVR), PR target/59888, + PR target/89400 (ARM), PR target/87243, PR c++/92106, PR c++/91974, + PR c++/88203, PR c/91401, PR fortran/69455, PR fortran/91586, + PR fortran/83113, PR fortran/89943. + + [Nicolas Boulenguez] + * Fix race condition in libgnatvsn/Makefile. + + [ Matthias Klose ] + * Configure for s390x Ubuntu focal --with-arch=z13 --with-mtune=z15. + + -- Matthias Klose Tue, 22 Oct 2019 21:35:13 +0200 + +gcc-9 (9.2.1-11) unstable; urgency=medium + + [Nicolas Boulenguez] + * Fix diff index in libgnatvsn patch. Closes: #942442. + + -- Matthias Klose Thu, 17 Oct 2019 10:32:53 +0200 + +gcc-9 (9.2.1-10) unstable; urgency=medium + + * Update to SVN 20191016 (r277058) from the gcc-9-branch. + - Fix PR lto/91968, PR tree-optimization/91812, PR debug/91772, + PR tree-optimization/91790, PR target/92022 (ALPHA), + PR target/88630 (SH), PR c++/91606, PR c++/91740, PR ada/91995, + PR fortran/91715, PR fortran/91649, PR fortran/91801. + + [Nicolas Boulenguez] + * Rewrite libgnatvsn support with autotools. Closes: #746689. + * Converge towards similar gnat_util library. + * Cherry-pick repinfo stuff for latest ASIS. + + [ Matthias Klose ] + * gm2: Fix a time_t cast, and enable gm2 on x32. Closes: #942059, + * Fix PR lto/91307, reproducible LTO builds, taken from the trunk. + + -- Matthias Klose Wed, 16 Oct 2019 12:29:50 +0200 + +gcc-9 (9.2.1-9) unstable; urgency=medium + + * Update to SVN 20191008 (r276687) from the gcc-9-branch. + - Fix PR libstdc++/91748, PR rtl-optimization/89795, PR c++/91705, + PR target/86805 (SH), PR target/80672 (SH), PR rtl-optimization/88751, + PR target/91683 (riscv), PR target/91269 (SPARC), + PR target/91635 (riscv), PR c++/91923, PR fortran/91557, + PR fortran/91553, PR fortran/91566, PR fortran/91642, PR fortran/91588, + PR fortran/91727, PR fortran/91550, PR target/91275 (PPC), + PR target/91769 (MIPS), PR fortran/91716, PR target/88562 (SH), + PR driver/69471, PR fortran/84487, PR fortran/47054, PR fortran/91942, + PR fortran/91785, PR fortran/91864, PR fortran/91802, PR fortran/91714, + PR fortran/91641. + - Fix ICE on MIPS. Closes: #941263. + * Disable gm2 on hurd-i386, mc hangs there (Samuel Thibault). Closes: #940600. + * Apply proposed patch for PR target/92022. Addresses: #931815. + + [ Nicolas Boulenguez ] + * Update ada local patches. + + -- Matthias Klose Tue, 08 Oct 2019 10:21:22 +0200 + +gcc-9 (9.2.1-8) unstable; urgency=medium + + * Update to SVN 20190909 (r275519) from the gcc-9-branch. + - Fix PR fortran/91496, PR fortran/91496, PR fortran/91660, + PR fortran/91589, PR target/87853 (x86), PR target/91704 (x86). + * libstdc++: Fix GCC_LINUX_FUTEX to work with C99 compilers, taken from + the trunk. + * Make LTO link pick up compile-time -g (proposed patch). + + -- Matthias Klose Mon, 09 Sep 2019 17:18:48 +0200 + +gcc-9 (9.2.1-7) unstable; urgency=medium + + * Update to SVN 20190905 (r275396) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR target/91481 (PPC), + PR tree-optimization/90278, PR tree-optimization/91568, + PR tree-optimization/90637, PR fortran/91565, PR fortran/91564, + PR fortran/91551, PR fortran/91587, PR pch/61250, PR c++/91155, + PR tree-optimization/91597, PR gcov-profile/91601, + PR target/91472 (SPARC), PR c++/91129, PR fortran/91552, + PR target/81800 (AArch64). + * Drop the gcc-alpha-bs-ignore patch, apparently not necessary anymore. + * For the omp.h header, use the configured OMP_NEST_LOCK_SIZE and + OMP_NEST_LOCK_ALIGN values for some non-multilib architectures. + Closes: #935750. + * Use Python3 to build the gm2 frontend. Closes: #936586. + * libgphobos76: Add breaks: dub (<< 1.16.0-1~). Addresses: #935275. + + -- Matthias Klose Thu, 05 Sep 2019 06:45:00 +0200 + +gcc-9 (9.2.1-6) unstable; urgency=medium + + * Update to SVN 20190827 (r274974) from the gcc-9-branch. + - Fix PR ipa/91508, PR ipa/91438, PR ipa/91404, PR lto/91287, + PR target/91533 (x86), PR ipa/91508, PR ipa/91438, PR ipa/91404, + PR c++/91521. + * Backport LTO jobserver support (-flto=auto). + * any_archs: Remove mips and powerpcspe, add riscv64. + + -- Matthias Klose Wed, 28 Aug 2019 01:01:47 +0200 + +gcc-9 (9.2.1-4) unstable; urgency=medium + + * Fix typo for gm2 enablement. + * Disable gm2 on powerpc, ppc64, sh4, kfreebsd-i386, kfreebsd-amd64. + See the build logs of 9.2.1-3 for the various issues. + + -- Matthias Klose Thu, 22 Aug 2019 12:12:07 +0200 + +gcc-9 (9.2.1-3) unstable; urgency=medium + + * Update to SVN 20190821 (r274792) from the gcc-9-branch. + - Fix PR rtl-optimization/91347, PR target/91386 (AArch64). + + [ Aurelien Jarno ] + * Enable Ada on riscv64. + + [ Matthias Klose ] + * Build the gm2 packages except on powerpc and x32. + * Update gm2 cross build dependencies. + * Fix gm2 build with -j32. + * Configure with --enable-libpth-m2 for gm2 cross builds. + * Configure --without-target-system-zlib for gdc cross builds. + * Remove not needed libpth-dev dependency for gm2 packages. + * Ignore M2Version.o for gm2 bootstrap comparison. + * Update gm2 from the gcc_9_2_0_gm2 branch 20190820. + + -- Matthias Klose Wed, 21 Aug 2019 12:15:27 +0200 + +gcc-9 (9.2.1-2) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20190819 (r274667) from the gcc-9-branch. + - Fix PR c++/90947, PR c++/91436, PR fortran/87991, PR fortran/90563, + PR fortran/88072, PR fortran/90561, PR fortran/89647, PR fortran/87993, + PR tree-optimization/91109, PR tree-optimization/91109, + PR tree-optimization/91445, PR tree-optimization/91091, + PR c++/90393, PR c++/81429, PR c++/87519, PR c++/90473, PR c++/90884, + PR libsanitizer/87880, PR fortran/91485, PR fortran/91471, + PR fortran/78739, PR fortran/78719, PR fortran/82992. + * More gm2/libgm2 packaging fixes. + * Disable lto build on sparc64 (if porters would only test that before + making a request to enable it ...). + * Bootstrap using gnat-9 on development distributions. + + [ Aurelien Jarno ] + * Fix libstdc++6.symbols.riscv64. + + [ Nicolas Boulenguez ] + * ada: update packaging Makefile snippet for gcc-9. + + -- Matthias Klose Mon, 19 Aug 2019 13:01:37 +0200 + +gcc-9 (9.2.1-1) unstable; urgency=medium + + * Update to SVN 20190813 (r274380) from the gcc-9-branch. + - Fix PR fortran/91422, PR lto/91375, PR driver/91130, PR driver/91130, + PR c++/91378, PR c++/90538, PR fortran/91424, PR fortran/91359, + PR fortran/42546, PR fortran/91414, PR libstdc++/90361. + * Minor updates to debian/copyright for GCC 9. + * Include a snapshot of the gm2 tarball. + * Add copyright information for gcc/gm2, gcc/testsuite/gm2 and libgm2. + + -- Matthias Klose Tue, 13 Aug 2019 15:43:49 +0200 + +gcc-9 (9.2.0-1) unstable; urgency=medium + + * GCC 9.2.0 release. + + [ Matthias Klose ] + * Enable pgo/lto build on sparc64 (ok, when done on landau buildd). + * Add initial gm2 packaging bits. + * Bump standards version. + + [ James Clarke ] + * ada-kfreebsd.diff: Fix fatal unreferenced formal parameter warnings. + + [ Aurelien Jarno ] + * Add libstdc++6.symbols.riscv64. + * Update debian/libgcc.symbols for riscv64. + + -- Matthias Klose Tue, 13 Aug 2019 12:24:04 +0200 + +gcc-9 (9.1.0-10) unstable; urgency=medium + + * Fix typo in libstdc++ symbols file. + + -- Matthias Klose Wed, 17 Jul 2019 21:56:07 +0200 + +gcc-9 (9.1.0-9) unstable; urgency=medium + + * Update to SVN 20190717 (r273554) from the gcc-9-branch. + - Fix PR c++/91125, PR c/91149, PR driver/90684, PR middle-end/78884, + PR rtl-optimization/90756, PR tree-optimization/91063, PR ipa/91062, + PR ipa/90982, PR tree-optimization/90972, PR debug/90914, PR debug/90900, + PR lto/90369, PR rtl-optimization/91136, PR tree-optimization/91108, + PR fortran/91077. + + [ Matthias Klose ] + * Make the lto-verbose-linker patch more robust for hppa (Dave Anglin). + * Avoid building stuff which is not needed for architecture independent + packages. Addresses: #900554. + * lib32gphobos-dev, libn32gphobos-dev: Remove dependency on non-existing + libz-dev multilib packages. + * Update libgfortran symbols files. + * Update libstdc++ symbols files. + + [ Nicolas Boulenguez ] + * Ada: update confirm_debian_bugs.py. + * Ada: fully port 50b8286b from the gcc-8 branch to gcc-9. + + -- Matthias Klose Wed, 17 Jul 2019 21:53:24 +0200 + +gcc-9 (9.1.0-8) unstable; urgency=medium + + * Update to SVN 20190707 (r273175) from the gcc-9-branch. + * Re-add a lost hunk to the add-kfreebsd patch (James Clarke). + * Dump config files on failed jit and nvptx builds. + * Disable the LTO builds on architectures where the buildds can't keep up. + + -- Matthias Klose Sun, 07 Jul 2019 12:10:25 +0200 + +gcc-9 (9.1.0-7) experimental; urgency=medium + + * Update to SVN 20190704 (r273081) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR tree-optimization/90892, PR middle-end/90899. + - Fix gnat build failure on kfreebsd-* (James Clarke). Closes: #922496. + * Add ppc64el as architecture for the nvptx offload packages. + * Increase the timeouts for the LTO link builds. + * Fix PR rtl-optimization/90756, taken from the trunk. Addresses: #930012. + + -- Matthias Klose Thu, 04 Jul 2019 22:44:41 +0200 + +gcc-9 (9.1.0-6) experimental; urgency=medium + + * Update to SVN 20190703 (r273015) from the gcc-9-branch. + - Fix PR sanitizer/90954, PR c++/91024, PR target/90991 (x86), PR c/90760, + PR tree-optimization/90949, PR c++/90950, PR middle-end/64242, + PR c++/60223, PR c++/90490. + * Disable LTO builds for snapshot builds. + * Don't use --push-state/--pop-state options for old linkers. + * Fix explicit autoconf version for backport packages. + * Allow to build with the locales package instead of locales-all. + * Disable LTO and profiled builds for older binutils versions. + * Try to enable the LTO builds everywhere. + * Make the LTO link step a bit more verbose to avoid timeouts on + the buildds. + + -- Matthias Klose Wed, 03 Jul 2019 20:21:23 +0200 + +gcc-9 (9.1.0-5) experimental; urgency=medium + + * Update to SVN 20190628 (r272781) from the gcc-9-branch. + - Fix PR libstdc++/85494, PR libstdc++/91012, R libstdc++/90920, + PR libstdc++/90281, PR libstdc++/88881, PR libstdc++/90770, + PR libstdc++/90252, PR ipa/90939, PR tree-optimization/90930, + PR tree-optimization/90930, PR tree-optimization/90316, + PR middle-end/64242, PR c++/90825, PR c++/90832, PR c++/90736, + PR fortran/90937, PR fortran/90290, PR fortran/90002, PR fortran/89344, + PR fortran/87907, PR fortran/86587, PR fortran/77632, PR fortran/69499, + PR fortran/69398, PR fortran/68544, PR fortran/90577, PR fortran/90578. + * Fix cross building gdc (Iain Buclaw). + * Apply proposed fix for PR libgcc/90714 (ia64 only). Addresses: #930119. + + -- Matthias Klose Fri, 28 Jun 2019 13:13:25 +0200 + +gcc-9 (9.1.0-4) experimental; urgency=medium + + * Update to SVN 20190612 (r272183) from the gcc-9-branch. + - Fix PR target/90811 (nvidia), PR libgomp/90641, PR libgomp/90585, + PR c++/90598, PR libstdc++/90700, PR libstdc++/90686, PR libstdc++/90634, + PR c/90474, PR d/90778, PR target/90751 (PARISC), + PR tree-optimization/90450, PR tree-optimization/90402, + PR tree-optimization/90328, PR debug/90733, PR target/82920 (x86), + PR fortran/90329, PR fortran/90329, PR bootstrap/90543, + PR c++/90810, PR c++/90598, PR c++/90548, PR fortran/90744, + PR fortran/90329. + * Update the watch file. + + -- Matthias Klose Wed, 12 Jun 2019 17:56:59 +0200 + +gcc-9 (9.1.0-3) experimental; urgency=medium + + * Update to SVN 20190526 (r271629) from the gcc-9-branch. + - Fix PR libgomp/90527, PR c++/90532, PR libstdc++/90299, + PR libstdc++/90454, PR debug/90197, PR pch/90326, PR c++/90484, + PR tree-optimization/90385, PR c++/90383, PR tree-optimization/90303, + PR tree-optimization/90316, PR tree-optimization/90316, + PR libstdc++/90220, PR libstdc++/90557, PR sanitizer/90570, + PR target/90547 (x86), PR libfortran/90038, PR fortran/90498, + PR libfortran/90038, PR libfortran/90038, PR fortran/54613, + PR fortran/54613, PR libstdc++/85965, PR target/90530 (PARISC), + PR c++/90572. + * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on + supported architectures. + * Fix PR bootstrap/87338 on ia64 (James Clarke). Addresses: #927976. + * Enable LTO builds on 64bit architectures. + * Update libstdc++ symbols files for gcc-4-compatible builds. + * Build the nvptx offload compiler on ppc64el. + * Build the libgomp-hsa plugin. + + -- Matthias Klose Sun, 26 May 2019 17:59:59 +0200 + +gcc-9 (9.1.0-2) experimental; urgency=medium + + * Update to SVN 20190514 (r271161) from the gcc-9-branch. + - Fix PR target/89424 (PPC), PR sanitizer/90312, PR c++/90265, + PR c++/90173, PR target/87835, PR libstdc++/81266, PR libstdc++/90397, + PR libstdc++/90239, PR tree-optimization/90416, PR gcov-profile/90380, + PR gcov-profile/90380, PR target/90357 (MIPS), PR target/89765 (PPC), + PR c++/78010, PR c++/90265, PR c++/90173, PR fortran/90093, + PR fortran/90352, PR fortran/90355, PR fortran/90351, PR fortran/90329, + PR target/90379, PR bootstrap/89864. + * Update the cross installation patch. + * Enable Go on sh4. + * Adjust some regex patterns used in the packaging for GCC 10. + * Drop the build dependency on binutils-multiarch (libgo-9-dev is now split + out into its own package). Closes: #804190. + * Ignore any distro default flags for the hppa64 cross build. + + -- Matthias Klose Tue, 14 May 2019 13:38:03 +0200 + +gcc-9 (9.1.0-1) experimental; urgency=medium + + * GCC 9.1.0 release. + * Update to SVN 20190504 (r270874) from the gcc-9-branch. + - Fix PR tree-optimization/90316. + * Merge some hardening defaults patches into one patch set. + * Turn on -fasynchronous-unwind-tables by default on supported architectures. + * Refresh patches. + + -- Matthias Klose Sat, 04 May 2019 17:17:23 +0200 + +gcc-9 (9-20190428-1) experimental; urgency=medium + + * GCC snapshot, taken from the gcc-9 branch (20190428, r270630). + * Build the phobos and D runtime on s390x and riscv64. + + -- Matthias Klose Sun, 28 Apr 2019 09:15:08 +0200 + +gcc-9 (9-20190420-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190420, r270466). + + -- Matthias Klose Sat, 20 Apr 2019 08:30:33 +0200 + +gcc-9 (9-20190402-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190402, r270074). + * Mark gcc-9-source as M-A: foreign. + + -- Matthias Klose Tue, 02 Apr 2019 08:22:27 +0200 + +gcc-9 (9-20190321-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190321, r269832). + * Split out lib*go-dev packages. + * Fix PR jit/87808: Don't rely on the gcc driver. Let libgccjit0 + depend on binutils and libgcc-dev. Addresses: #911668. + * Fix stripping the gcc-hppa64 package. + * Update libstdc++ and libgccjit symbols files. + + -- Matthias Klose Thu, 21 Mar 2019 12:39:47 +0100 + +gcc-9 (9-20190311-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190311, r269597). + + -- Matthias Klose Mon, 11 Mar 2019 23:23:20 +0100 + +gcc-9 (9-20190305-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190305, r269387). + + [ Aurelien Jarno ] + * Run the tests in parallel again on Debian/s390x, the libgo bug is + fixed. + + [ Matthias Klose ] + * Fix test dependencies for the Hurd and KFreeBSD. + + -- Matthias Klose Tue, 05 Mar 2019 10:51:09 +0100 + +gcc-9 (9-20190223-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190223, r269152). + + -- Matthias Klose Sat, 23 Feb 2019 11:00:00 +0100 + +gcc-9 (9-20190216-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190216, r268955). + * Fix libgo s390x biarch build. + * Run test suite on the Hurd and KFreeBSD. + * Fix linking libgphobos with the system zlib. + + -- Matthias Klose Sat, 16 Feb 2019 14:28:15 +0100 + +gcc-9 (9-20190215-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190215, r268943). + * Build libphobos on all mips variants. + * Build-depend on locales-all instead of locales, don't generate locales + during the build, and attribute test dependencies with . + * Don't run the tests on Debian/s390x in parallel, memory constraints on + the buildds. + * gdc-9: Include again the libgphobos spec file. + + -- Matthias Klose Fri, 15 Feb 2019 19:13:42 +0100 + +gcc-9 (9-20190208-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190208, r268704). + * Update the support to build without packages being built by the next GCC + version. + * Fix ISO_Fortran_binding.h installation for cross builds. + + -- Matthias Klose Fri, 08 Feb 2019 18:17:45 +0100 + +gcc-9 (9-20190202-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190202, r268474). + + -- Matthias Klose Sat, 02 Feb 2019 12:19:53 +0100 + +gcc-9 (9-20190125-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190125, r268260). + + [ Matthias Klose ] + * Turn on ld --as-needed by default on Debian development versions. + * Turn on profiled bootstrap on x86, AArch64, PPC64 and s390x + architectures for native builds. + * Relax the shlibs dependency for libgnat-8. Addresses: #920246. + + [ Nicolas Boulenguez ] + * Update the ada-kfreebsd patch. Closes: #919996. + + -- Matthias Klose Fri, 25 Jan 2019 11:58:44 +0100 + +gcc-9 (9-20190120-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190120, r268102). + - Updates to Go 1.12 beta2. + * Build libphobos on hppa. + * Drop libgo patch for the Hurd. + * Refresh patches. + * Update newlib to newlib-3.1.0.20181231. + + -- Matthias Klose Sun, 20 Jan 2019 11:28:26 +0100 + +gcc-9 (9-20190116-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190116, r267965). + * libgccjit-9-doc: Breaks libgccjit-8-doc. Closes: #918445. + * Update libstdc++6 symbols files. + * Override some libasan and gccgo lintian warnings. + * Build the Ada packages except for gnat-9-sjlj. + * Bump standards version. + + -- Matthias Klose Wed, 16 Jan 2019 09:42:19 +0100 + +gcc-9 (9-20190103-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190103). + + [ Matthias Klose ] + * Update packaging, patches and symbols files. + * Remove libmpx packaging, removed upstream. + * Update newlib to the newlib-3.0.0.20180831 snapshot. + * Disable building Ada for now. + * Build D and libphobos from the now integrated upstream sources. + * gcc-9-base: Break gnat (<< 7). Addresses: #911633. + * gdc: Dynamically link the phobos library. + * Adopt gcc-snapshot build for the current trunk. + * Don't apply gcc-as-needed patch for snapshot builds. + * Fix control file generation for gphobos n32 multilibs. + * Disable gnat build on alpha. See PR ada/88200. + * powerpcspe support removed upstream. Remove the powerpcspe packaging + references and powerpcspe patches. + * gcc-9-source: Depend on lsb-release. + * Disable broken selective scheduling on ia64 (Adrian Glaubitz). + See PR rtl-optimization/85412. Addresses: #916591. + * Fix perl shebang for the gnathtml binary. + * Lower priority of libgcc[124] and libstdc++6 packages. + * Stop building the fixincludes package, never used by lintian. + * Remove the libstdc++6 breaks for the stretch release. + * libgccjit-doc: Install image files. + * Don't provide -compiler names for cross compiler packages. + Addresses: #916376. Not a final solution. + * Disable the gnat build for now, ftbfs in the sjlj variant. + * Bump the libgo soname. + + [ Nicolas Boulenguez ] + * Update Ada patches. + + -- Matthias Klose Thu, 03 Jan 2019 13:35:00 +0100 + +gcc-8 (8.2.0-8.1) UNRELEASED; urgency=medium + + * Update to SVN 20181020 (r265339) from the gcc-8-branch. + - Fix PR middle-end/87087, PR middle-end/87623, PR libstdc++/87641, + PR middle-end/87645. + * Update VCS attributes in the control file. + * Don't configure native builds with --with-sysroot. Apparently this cannot + be completely overridden with the command line option --sysroot. + + -- Matthias Klose Sat, 20 Oct 2018 09:25:48 +0200 + +gcc-8 (8.2.0-8) unstable; urgency=medium + + * Update to SVN 20181017 (r265234) from the gcc-8-branch. + - Fix PR libstdc++/86751, PR libstdc++/78595, PR libstdc++/87061, + PR libstdc++/70966, PR libstdc++/77854, PR libstdc++/87538, + PR libgcc/85334, PR middle-end/63155, PR target/87511 (AArch64), + PR middle-end/87610, PR tree-optimization/87465, PR target/87550 (x86), + PR target/87414 (x86), PR tree-optimization/86844, PR target/86731 (PPC), + PR target/87370 (x86), PR target/87517 (x86), PR target/87522 (x86), + PR other/87353, PR gcov-profile/86109, PR target/82699 (x86), + PR target/87467 (x86), PR target/87033 (PPC), PR sanitizer/85774, + PR rtl-optimization/86882, PR gcov-profile/85871, PR c++/87582, + PR c++/84940, PR gcov-profile/86109, PR c++/85070, PR c++/86881, + PR fortran/83999, PR fortran/86372, PR fortran/86111, PR fortran/85395, + PR fortran/86830, PR fortran/85954. + + -- Matthias Klose Wed, 17 Oct 2018 09:45:31 +0200 + +gcc-8 (8.2.0-7) unstable; urgency=medium + + * Update to SVN 20180917 (r264370) from the gcc-8-branch. + - Fix PR libstdc++/87278, PR target/85666 (mmix), PR middle-end/87188, + PR target/87224 (PPC), PR target/86989 (PPC), PR rtl-optimization/86771, + PR middle-end/87248, PR c++/87093, PR fortran/87284, PR fortran/87277. + + -- Matthias Klose Mon, 17 Sep 2018 17:46:50 +0200 + +gcc-8 (8.2.0-6) unstable; urgency=medium + + * Update to SVN 20180908 (r264168) from the gcc-8-branch. + - Fix PR c++/87137, PR bootstrap/87225, PR target/87198 (x86), + PR middle-end/87138, PR tree-optimization/86835, PR c++/87185, + PR c++/87095, PR c++/86836, PR c++/86738, PR c++/86706, PR fortran/86116. + * Apply proposed patch for PR go/87260. + * Apply proposed patch for PR tree-optimization/87188. Closes: #907586. + * Fix PR target/86731 (PPC), taken from the trunk. Closes: #905868. + + -- Matthias Klose Sun, 09 Sep 2018 14:43:43 +0200 + +gcc-8 (8.2.0-5) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-8-branch. + - Fix PR sanitizer/86022, PR libstdc++/87116, PR other/86992, + PR tree-optimization/86914, PR middle-end/87099, + PR rtl-optimization/87065, PR target/86662, PR target/87014, + PR target/86640, PR gcov-profile/86817, PR tree-optimization/86871, + PR c++/86763, PR fortran/86837, PR libfortran/86704, + PR tree-optimization/85859, PR tree-optimization/87074, + PR tree-optimization/86927, PR middle-end/87024, PR middle-end/86505, + PR tree-optimization/86945, PR tree-optimization/86816, + PR lto/86456, PR c++/87155, PR c++/84707, PR c++/87122, + PR fortran/86328, PR fortran/86760. + * Remove ia64 boostrap work around (Jason Duerstock). Closes: #906675. + + -- Matthias Klose Tue, 04 Sep 2018 09:04:17 +0200 + +gcc-8 (8.2.0-4) unstable; urgency=medium + + * Update to SVN 20180814 (r263527) from the gcc-8-branch. + - Fix PR libstdc++/86597, PR libstdc++/84535, PR libstdc++/60555, + PR libstdc++/86874, PR libstdc++/86861, PR target/86386 (x86), + PR c++/86728, PR c++/86767, PR fortran/86906. + + [ Nicolas Boulenguez ] + * gnat: set ld_library_path for tested gnat tools. + * In the gnat autopkg test, tell gnatmake to report progress on stdout. + * gnat: Improve the ada-gcc-name patch. + * Update ada/debian_packaging.mk. + + -- Matthias Klose Tue, 14 Aug 2018 11:45:55 +0200 + +gcc-8 (8.2.0-3) unstable; urgency=medium + + * Update to SVN 20180803 (r263086) from the gcc-8-branch. + - Fix PR middle-end/86705, PR target/86820 (m68k). + * Build using ISL 0.20. + * Fix some autopkg tests (allow stderr, explicitly depend on libc-dev). + + -- Matthias Klose Fri, 03 Aug 2018 12:32:31 +0200 + +gcc-8 (8.2.0-2) unstable; urgency=medium + + * Update to SVN 20180802 (r263045) from the gcc-8-branch. + - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, + PR middle-end/86627, PR target/86511, PR sanitizer/86759, PR c/85704, + PR libstdc++/86734, PR bootstrap/86724, PR target/86651, PR c/86617, + PR c++/86190. + - Fix PR libstdc++/84654, PR libstdc++/85672. LP: #1783705. + * Update cross-build patches for GCC 8.2. + * Refresh patches. + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Backport r262835 to fix a wrong-code generation on m68k (Adrian Glaubits). + + -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 + +gcc-8 (8.2.0-1) unstable; urgency=medium + + * GCC 8.2.0 release. + * Update GDC to 20180726 from the gdc-8-stable branch.. + + -- Matthias Klose Thu, 26 Jul 2018 13:28:20 +0200 + +gcc-8 (8.1.0-12) unstable; urgency=medium + + * GCC 8.2.0 release candidate. + * Update to SVN 20180719 (r262861) from the gcc-8-branch. + - Fix PR middle-end/85602, PR c++/86480. + + [ Nicolas Boulenguez ] + * ada-verbose patch: Make the ada build more verbose. + * Update the ada-gcc-name patch again. See #856274. Closes: #903694. + + [ Matthias Klose ] + * Rewrite debian/README.cross. + + -- Matthias Klose Thu, 19 Jul 2018 17:39:39 +0200 + +gcc-8 (8.1.0-11) unstable; urgency=medium + + * Update to SVN 20180717 (r262818) from the gcc-8-branch. + - Fix PR c/86453, PR debug/86452, PR debug/86457, PR middle-end/85974, + PR middle-end/86076, PR tree-optimization/85935, + PR tree-optimization/86514, PR tree-optimization/86274, + PR target/84413 (x86), PR middle-end/86202, PR target/84829, + PR c++/3698, PR c++/86208, PR c++/86374, PR sanitizer/86406, + PR fortran/83184, PR fortran/86417, PR fortran/83183, + PR fortran/86325. + + [ Nicolas Boulenguez ] + * Update the ada-gcc-name patch, not appending the suffix twice. + Addresses: #856274. + + -- Matthias Klose Tue, 17 Jul 2018 14:09:13 +0200 + +gcc-8 (8.1.0-10) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-8-branch. + - Fix PR libstdc++/86272, PR libstdc++/86127, PR target/85904, + PR libstdc++/85098, PR libstdc++/85671, PR libstdc++/83982, + PR libstdc++/86292, PR libstdc++/86138, PR libstdc++/84087, + PR libstdc++/86398, PR hsa/86371, PR tree-optimization/86492, + PR c++/86400, PR target/86285 (PPC), PR debug/86064, + PR target/86222 (PPC), PR rtl-optimization/85645, + PR rtl-optimization/85645, PR target/86314 (x86), PR sanitizer/86406, + PR c++/86398, PR c++/86378, PR c++/86320, PR c++/80290, + PR fortran/82969, PR fortran/86242, PR fortran/82865. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:07:17 +0200 + +gcc-8 (8.1.0-9) unstable; urgency=medium + + * Update to SVN 20180626 (r262138) from the gcc-8-branch. + - Fix PR libstdc++/86138, PR libstdc++/82644, PR libgcc/86213, + PR c++/86210, PR c/86093, PR target/86197 (PPC), PR target/85358 (PPC), + PR tree-optimization/85989, PR target/85657 (PPC), PR target/85657 (PPC), + PR target/85994, PR rtl-optimization/86108, PR debug/86194, + PR tree-optimization/86231, PR c/82063, PR c++/86219, PR c++/86182, + PR c++/85634, PR c++/86200, PR c++/81060, PR fortran/83118, + PR libstdc++/86112, PR libstdc++/81092, PR fortran/82972, + PR fortran/83088, PR fortran/85851, PR c++/86291. + + [ Nicolas Boulenguez ] + * Remove Ludovic Brenta's work to let Ada build tools link with freshly + built libgnat.so, this is now handled by upstream testsuite. + + [ Iain Buclaw ] + * gdc: Explicitly set test action as compile in all dg tests. + + [ Matthias Klose ] + * Build using gnat-8. + + -- Matthias Klose Tue, 26 Jun 2018 10:45:36 +0200 + +gcc-8 (8.1.0-8) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-8-branch. + - Fix PR libstdc++/86169, PR middle-end/86095, PR middle-end/85878, + PR middle-end/86123, PR middle-end/86122, PR c++/86147, PR c++/82882, + PR fortran/85703, PR fortran/85702, PR fortran/85701. + * Fix applying the powerpcspe patches. + + -- Matthias Klose Sun, 17 Jun 2018 12:56:15 +0200 + +gcc-8 (8.1.0-6) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-8-branch. + - Fix PR libstdc++/86008, PR libstdc++/85930, PR libstdc++/85951, + PR target/85591 (x86), PR c++/85710, PR c++/80485, PR target/85755 (PPC), + PR target/85755 (PPC), PR target/81497 (ARM), PR target/85684 (x86), + PR target/63177 (PPC), PR tree-optimization/86038, + PR tree-optimization/85964, PR tree-optimization/85934, PR c++/86025, + PR tree-optimization/85863, PR c/85623, PR target/86003 (ARM), + PR tree-optimization/85712, PR target/85950 (x86), PR target/85984, + PR target/85829 (x86), PR c++/85792, PR c++/85963, PR c++/61806, + PR c++/85765, PR c++/85764, PR c++/85807, PR c++/85815, PR c++/86094, + PR c++/86060, PR c++/85847, PR c++/85976, PR c++/85731, PR c++/85739, + PR c++/85761, PR c++/85873, PR fortran/44491, PR fortran/85138, + PR fortran/85996, PR fortran/86051, PR fortran/86059, PR fortran/63514, + PR fortran/78278, PR fortran/38351, PR fortran/78571, PR fortran/85631, + PR fortran/86045, PR fortran/85641, PR fortran/85816, PR fortran/85975, + PR libgfortran/85840, PR target/85945, PR middle-end/86139, + PR other/77609, PR tree-optimization/86114, PR target/86048 (x86), + PR fortran/86110. + - libgo: update to Go 1.10.3 release. + + -- Matthias Klose Thu, 14 Jun 2018 16:57:14 +0200 + +gcc-8 (8.1.0-5) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-8-branch. + - Fix PR sanitizer/86012, PR c/85696, PR c++/85662, PR target/85756 (x86), + PR target/85683 (x86), PR c++/85952, PR c/85696, PR c++/85662. + - Fix libsanitizer build on sparc64. + * libgo: Make the vet tool work with gccgo (taken from the trunk). + + -- Matthias Klose Thu, 31 May 2018 15:18:52 +0200 + +gcc-8 (8.1.0-4) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-8-branch. + - Fix PR c++/85782, PR sanitizer/85835, PR libstdc++/85818, + PR libstdc++/85818, PR libstdc++/83891, PR libstdc++/84159, + PR libstdc++/67554, PR libstdc++/82966, PR bootstrap/85921, + PR sanitizer/85556, PR target/85900 (x86), PR target/85345 (x86), + PR c++/85912, PR target/85903 (x86), PR tree-optimization/85793, + PR middle-end/85874, PR tree-optimization/85822, PR middle-end/85643, + PR tree-optimization/85814, PR target/85698 (PPC), PR c++/85842, + PR c++/85864, PR c++/81420, PR c++/85866, PR c++/85782, PR fortran/85786, + PR fortran/85895, PR fortran/85780, PR fortran/85779, PR fortran/85543, + PR fortran/80657, PR fortran/49636, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/85742, PR fortran/85542, + PR libgfortran/85906, PR libgfortran/85840. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs to gcc-8 and python3. + + [ Matthias Klose ] + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + * Stop shipping unstripped binaries with the final release. Closes: #894014. + + -- Matthias Klose Tue, 29 May 2018 14:34:37 +0200 + +gcc-8 (8.1.0-3) unstable; urgency=medium + + * Update to SVN 20180512 (r260194) from the gcc-8-branch. + - Fix PR ipa/85655, PR target/85733 (ARM), PR target/85606 (ARM), + PR fortran/70870, PR fortran/85521, PR fortran/85687, PR fortran/68846, + PR fortran/70864. + * Fix name of the g++ multiarch include directory. Closes: #898323. + * Fix PR sanitizer/85556, attribute no_sanitize does not accept multiple + options; taken from the trunk. Closes: #891489. + + -- Matthias Klose Sat, 12 May 2018 10:36:05 -0400 + +gcc-8 (8.1.0-2) unstable; urgency=medium + + * Update to SVN 20180510 (r260147) from the gcc-8-branch. + - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, + PR libstdc++/84769, PR libstdc++/85632, PR libstdc++/80506, + PR target/85512 (AArch64), PR c++/85305, PR ada/85635, PR ada/85540, + PR rtl-optimization/85638, PR middle-end/85588, PR middle-end/85588, + PR tree-optimization/85615, PR middle-end/85567, PR target/85658 (ARM), + PR tree-optimization/85597, PR middle-end/85627, PR c++/85659, + PR c++/85706, PR c++/85695, PR c++/85646, PR c++/85618, PR fortran/85507. + * Don't configure with --with-as and --with-ld, but search the triplet + prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 10 May 2018 20:43:42 -0400 + +gcc-8 (8.1.0-1) unstable; urgency=medium + + * GCC 8.1.0 release. + * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++. + * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9. + * Build libmpx libraries when not building the common libs. + * Update NEWS files for GCC 8.1. + + -- Matthias Klose Wed, 02 May 2018 11:43:46 +0200 + +gcc-8 (8-20180425-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180425 (r259628). + + [ Matthias Klose ] + * Update nvptx-newlib to 20180424. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + * Install the movdirintrin.h header file. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Wed, 25 Apr 2018 06:56:58 +0200 + +gcc-8 (8-20180414-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180414 (r259383). + + [ Matthias Klose ] + * Update GDC to 20180410. + * Don't install i586 symlinks anymore for i386 builds in sid. + * Fix zlib-dev dependencies for the libphobos cross multilib packages. + * Fix dependency generation for libatomic and libquadmath cross packages. + * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251. + * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. + * Use --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed for linking libgcc. + * Update the gcc-foffload-default patch. LP: #1721355. + + [ Svante Signell ] + * Reintroduce libgo patches for hurd-i386. Closes: #894080. + + -- Matthias Klose Sat, 14 Apr 2018 07:10:01 +0200 + +gcc-8 (8-20180402-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180402 (r259004). + * Build a native compiler with a cross directory layout using the + FORCE_CROSS_LAYOUT environment variable. + + -- Matthias Klose Mon, 02 Apr 2018 10:09:27 +0200 + +gcc-8 (8-20180331-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180331 (r258989). + - Fix PR/libstdc++/85040, std::less fails when operator< is + overloaded. Closes: #893517. + - Fix PR/target 84148, CET shouldn't be enabled in 32-bit run-time + libraries by default. Closes: #890092. + + [ Samuel Thibault ] + * Fix disabling go on hurd-i386 for now. + + [ Matthias Klose ] + * gdc: Link with the shared libphobos library by default. + * Fix control file generation for nolang=biarch builds (Helmut Grohne). + Closes: #891289. + * Simplify architecture to gnu-type mapping (Helmut Grohne). Closes: #893493. + + -- Matthias Klose Sat, 31 Mar 2018 15:14:44 +0800 + +gcc-8 (8-20180321-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180321 (r258712). + - Fix PR sanitizer/84761. Addresses: #892096. + * Update GDC to 20180320. + * Reenable building gdc. + + -- Matthias Klose Wed, 21 Mar 2018 19:47:27 +0800 + +gcc-8 (8-20180319-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180319 (r258631). + + [ Aurelien Jarno ] + * Default to PIE on riscv64. + * Temporarily do not build-depend on gdb on riscv64. + + -- Matthias Klose Mon, 19 Mar 2018 02:18:29 +0800 + +gcc-8 (8-20180312-2) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180312 (r258445). + * Update GDC to 20180311. + + [ Matthias Klose ] + * Fix typo in libasan and lib32asan symbols files for s390x. + + [ Aurelien Jarno ] + * Disable gnat on riscv64. + * Backport RISC-V libffi support from upstream. + + -- Matthias Klose Mon, 12 Mar 2018 12:33:10 +0100 + +gcc-8 (8-20180310-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180310 (r258410). + * Build libasan and libubsan packages on s390x. + * Update libasan symbols files for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 10:54:02 +0700 + +gcc-8 (8-20180308-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180308 (r258348). + * Update GDC to 20180304. + + [ Matthias Klose ] + * Fix cross builds building without "common" libraries. + * Fix cross-building libgnat on armel, when not building the common libraries. + * Remove the go patches for the Hurd. Unmaintained. + * Update libcc1 symbols file. + * Install more intrinsic header files. + + [ Aurelien Jarno ] + * Configure s390x build with --with-arch=z196 on Debian. + * Drop libgo-s390x-default-isa.diff patch. + * Disable multilib on riscv64. + * Update gcc-as-needed.diff, gcc-hash-style-both.diff and + gcc-hash-style-gnu.diff for riscv64. + * Update gcc-multiarch.diff for riscv64. + + [ Karsten Merker ] + * Force the riscv64 ISA to rv64imafdc and ABI to lp64d. + + -- Matthias Klose Thu, 08 Mar 2018 14:17:37 +0700 + +gcc-8 (8-20180218-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180208 (r257477). + * Update GDC to 20180211. + * Store basename only in gfortran .mod files. Addresses: #889133. + * Disable go on the hurd, patches are out of date. + * Configure with --disable-libquadmath-support when not explicitly enabled. + * For armel multilib builds, explicitly set architecture and cpu for the + hard-float multilib. + + -- Matthias Klose Sun, 18 Feb 2018 16:11:11 +0700 + +gcc-8 (8-20180207-2) unstable; urgency=medium + + * Revert the fix for PR target/84145. + * Override patch-file-present-but-not-mentioned-in-series lintian warning. + + -- Matthias Klose Wed, 07 Feb 2018 13:09:23 +0100 + +gcc-8 (8-20180207-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180207 (r257435). + * Update GDC to 20180204. + * Refresh patches. + * Disable go on m68k again. Closes: #886103. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. + * Include amo.h header for Power architectures. + * Include arm_cmse.h header for ARM32 architectures. + * Update tsan symbols file arm64. + + -- Matthias Klose Wed, 07 Feb 2018 01:34:14 +0100 + +gcc-8 (8-20180130-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180130 (r257194). + * Update GDC to 20180130. + + -- Matthias Klose Tue, 30 Jan 2018 18:49:51 +0100 + +gcc-8 (8-20180123-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180123 (r257004). + * Update GDC to 20180123. + * Install the msa.h header for mips targets (YunQiang Su). Addresses: #887066. + * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886976. + + -- Matthias Klose Tue, 23 Jan 2018 23:10:51 +0100 + +gcc-8 (8-20180110-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180110 (r256425). + - Go 1.10 beta1 merged, bumping libgo soname. + * Update GDC to 20180108. + * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886459. + * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. + * Default to PIE on the hurd (Samuel Thibault). Addresses: #885056. + * Use internal libunwind for ia64 cross-builds. Addresses: #885931. + * Strip -z,defs from linker options for internal libunwind (James Clarke). + Addresses: #885937. + * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). + Closes: #879054. + + -- Matthias Klose Wed, 10 Jan 2018 12:23:12 +0100 + +gcc-8 (8-20171229-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171229. + * Update GDC to 20171227. + * Build the nvptx offload compiler again. + + -- Matthias Klose Fri, 29 Dec 2017 22:16:04 +0100 + +gcc-8 (8-20171223-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171223. + * Update GDC to 20171223. + * Don't build the nvptx offload compiler for now, see PR target/83524. + + -- Matthias Klose Sat, 23 Dec 2017 13:08:14 +0100 + +gcc-8 (8-20171215-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171215. + * Update GDC to 20171213. + * Move the .gox files into the gccgo packages. Addresses: #883136. + * libffi: mips/n32.S: disable .set mips4 on mips r6 (YunQiang Su). + * Fix shlibs search path for mips64 cross targets. Addresses: #883988. + * Set the armel port baseline to armv5te. Closes: #882174. + + -- Matthias Klose Fri, 15 Dec 2017 18:30:46 +0100 + +gcc-8 (8-20171209-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171209. + * Add more header files for builtins. Closes: #883423. + * Re-enable gccgo on m68k. Addresses: #883794. + + -- Matthias Klose Sat, 09 Dec 2017 21:23:08 +0100 + +gcc-8 (8-20171128-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171128. + + [ Matthias Klose ] + * Don't revert the fix for PR target/55947, fixed for GCC 8. + * Update libgfortran symbol versioning. + + [ Nicolas Boulenguez ] + * Fix the gnat bootstrap. + + -- Matthias Klose Tue, 28 Nov 2017 07:40:23 +0100 + +gcc-8 (8-20171122-1) experimental; urgency=medium + + [ Matthias Klose ] + * GCC 8 snapshot, taken from the trunk 20171122. + * Update GDC to 20171118. + * Port libgo to the Hurd (Svante Signell). + * Add support for a plethora of mips r6 packages (YunQiang Su). + * Remove the libcilkrts packaging bits. + * Remove libgphobos symbols files. + + [ Svante Signell ] + * Do not enable go on GNU/kFreeBSD. + + -- Matthias Klose Wed, 22 Nov 2017 14:02:35 +0100 + +gcc-8 (8-20171108-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171108. + * Update GDC to 20171106. Closes: #880548. + * libgcc-dev: Install the liblsan_preinit.o file. + * Compress debug symbols for compiler binaries with dwz. + + -- Matthias Klose Wed, 08 Nov 2017 20:00:30 +0100 + +gcc-8 (8-20171102-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171102. + * Bump libunwind (build-)dependency for ia64. Addresses: #879959. + * Drop the autogen build dependency. + * Install the gfniintrin.h header file. + * libgcc and libstdc++ symbols files updates for mipsn32. + * Remove the gcc-mips64-stack-spilling patch, applied upstream. + * Update libasan symbols files. + + -- Matthias Klose Thu, 02 Nov 2017 01:43:34 +0100 + +gcc-8 (8-20171031-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171031. + * Install cetintrin.h header. Closes: #879740. + * Update gnat patches (YunQiang Su). Closes: #879985. + * Build libphobos runtime library on x86 architectures again. + * Fix typo in libx32stdc++6-8-dbg conflicts. Closes: #879883. + + -- Matthias Klose Tue, 31 Oct 2017 02:22:07 +0100 + +gcc-8 (8-20171023-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171023. + * Mask __float128 from CUDA compilers. LP: #1717257. + * Update the gdc build support. + * Don't use quadmath on powerpc and ppc64. + * Bump asan and ubsan sonames. + * Adjust sanitizer symbols for the libsanitizer upstream merge. + * Install the gcov.h header file. + * Do the extra/optional dance ... + * Override hardening-no-pie lintian warnings for compiler executables. + + -- Matthias Klose Mon, 23 Oct 2017 10:57:54 +0200 + +gcc-8 (8-20171016-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171016. + * Update nvptx-newlib to 20171010. + * Fix lsan/tsan symbols files for arm64 and ppc64el. + * Add missing conflicts with GCC 7 packages. Closes: #877441. + * Fix builds without hppa64 cross compiler and new debhelper. See: #877589. + * Fix build dependency on realpath. + * Build the nvptx offload compiler again. + * Update symbols files. + * Fix build dependency on realpath. + * Set QUILT_PATCH_OPTS='-E' for applying patches. + + -- Matthias Klose Mon, 16 Oct 2017 14:56:04 +0200 + +gcc-8 (8-20170923-1) experimental; urgency=medium + + * GCC 8 snapshot. + * Disable Ada and D for a first build. + + -- Matthias Klose Tue, 26 Sep 2017 23:44:57 +0200 + +gcc-7 (7.2.0-7) unstable; urgency=medium + + * Update to SVN 20170923 (r253114) from the gcc-7-branch. + - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, + PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), + PR sanitizer/81929. + * Fix PR go/82284, taken from the trunk. Closes: #876353. + + -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 + +gcc-7 (7.2.0-6) unstable; urgency=medium + + * Update to SVN 20170920 (r253002) from the gcc-7-branch. + - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, + PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, + PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, + PR c++/81314, PR libgfortran/78387. + * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. + * Strip the compiler binaries again. Closes: #872672. + * Bump binutils dependency to 2.29.1 for sid/buster. + + -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4) unstable; urgency=medium + + * Update to SVN 20170906 (r251753) from the gcc-7-branch. + - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, + PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, + PR ada/79542, PR ada/62235, PR fortran/81770. + * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. + + -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 + +gcc-7 (7.2.0-3) unstable; urgency=high + + * Update to SVN 20170901 (r251583) from the gcc-7-branch. + - Fix PR target/81504 (PPC), PR c++/82040. + * Apply proposed patch for PR target/81803 (James Cowgill), conditionally + for mips* targets. Closes: #871514. + * Bump standards version. + + -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 + +gcc-7 (7.2.0-2) unstable; urgency=medium + + * Update to SVN 20170830 (r251446) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, + PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), + PR tree-optimization/81977, PR debug/81993 (closes: #873609), + PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, + PR middle-end/81884, PR tree-optimization/81181, + PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. + * Update the Linaro support to the 7-2017.08 snapshot. + * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. + * Default to PIE on powerpc again, now that PR target/81170 and + PR target/81295 are fixed. Closes: #856224. + + -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 + +gcc-7 (7.2.0-1) unstable; urgency=medium + + * GCC 7.2.0 release. + * Update libgcc1 symbols file for s390x. + * Apply proposed patch for PR driver/81829. Closes: #853537. + + -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 + +gcc-7 (7.1.0-13) unstable; urgency=medium + + * GCC 7.2 release candidate 2. + * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. + * Configure cross-build-native builds with --program-prefix (Adrian + Glaubitz). Closes: #871034. + * Update build dependencies for powerpcspe. Closes: #868186. + * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. + + -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 + +gcc-7 (7.1.0-12) unstable; urgency=medium + + * GCC 7.2 release candidate 1. + * Update to SVN 20170803 (r250853) from the gcc-7-branch. + + -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 + +gcc-7 (7.1.0-11) unstable; urgency=medium + + * Update to SVN 20170731 (r250749) from the gcc-7-branch. + + [ Matthias Klose ] + * Update sanitizer symbols for ppc64 and sparc64. + + [ Nicolas Boulenguez ] + * Only build gnatvsn as a native library. + + -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 + +gcc-7 (7.1.0-10) unstable; urgency=medium + + * Update to SVN 20170722 (r250453) from the gcc-7-branch. + + [ Nicolas Boulenguez ] + * libgnatvsn: embed xutil rident for version 2017 of asis package. + + [ Matthias Klose ] + * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. + * Enable gnat cross build on m68k. Closes: #868365. + * Update the Linaro support to the 7-2017.07 snapshot. + * Stop ignoring symbol mismatches for runtime libraries. + + [ Aurelien Jarno ] + * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, + use the default ISA instead. + + -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 + +gcc-7 (7.1.0-9) unstable; urgency=medium + + * Update to SVN 20170705 (r250006) from the gcc-7-branch. + + [ Matthias Klose ] + * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. + * Don't configure powerpc with --enable-default-pie, fails to build. + See #856224, PR target/81295. + + [ Nicolas Boulenguez ] + * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. + * Link libgnat with libatomic on armel. Closes: #861734. + * libgnat-dev: use multiarch paths in project and to install .ali files. + * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. + + -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 + +gcc-7 (7.1.0-8) unstable; urgency=medium + + * Update to SVN 20170629 (r249793) from the gcc-7-branch. + + [ Matthias Klose ] + * Move the liblto_plugin from the cpp to the gcc package. + * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. + Addresses: #863845, #863745. + * Don't provide libobjc_gc symlinks for the libobjc multilib packages. + * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and + powerpc (Mathieu Malaterre). Addresses: #856224. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs.py for gcc-7. + * Drop ada-driver-check.diff, the problem is unreproducible. + * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. + * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. + + -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Don't build libada with -O3 (ftbfs on ppc64el). + * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. + + [ Aurelien Jarno ] + * Remove proposed patch for PR65618, the issue has been fixed upstream + another way. + + [ Nicolas Boulenguez ] + * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd + system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. + * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. + * Drop generated and obsolete debian/source.lintian-overrides. + * Drop debian/relink, never executed and redundant with ada patches. + * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. + * ada: Drop references to obsolete termio-h.diff. Closes: #845159. + * ada-749574.diff: replace work-around with fix and forward it. + * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. + * ada-link-lib.diff: remove dubious parts. + + -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 + +gcc-7 (7.1.0-6) experimental; urgency=medium + + * Update to SVN 20170522 (r248347) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + + [ Matthias Klose ] + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + * Fix libmpx dependency generation for cross builds. + * Build again gnat cross compilers on 32bit archs targeting 64bit targets. + + [ Nicolas Boulenguez ] + * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. + * Reduce diff with upstream in ada-gnattools-cross patch. + * debian/rules2: Simplify build flags transmission. + * Append build flags from dpkg during Ada target builds. + + -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 + +gcc-7 (7.1.0-5) experimental; urgency=medium + + * Update to SVN 20170514 (r248033) from the gcc-7-branch. + * Disable offload compilers for snapshot builds. + * Build libgo when not building common libs. + * Fix building libgfortran and libgphobos when building without common libs. + * Build gnat on x32. + + -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 + +gcc-7 (7.1.0-4) experimental; urgency=medium + + * Update to SVN 20170505 (r247630) from the gcc-7-branch. + * Add sh3 support to gcc-multiarch patch. Closes: #861760. + * Remove libquadmath/gdtoa license from debian/copyright (files removed). + * Fix gdc build on sh4 (sh5 support was removed upstream). + * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. + * Disable running the testsuite on KFreeBSD and the Hurd, hanging on + the buildds. + + -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 + +gcc-7 (7.1.0-3) experimental; urgency=medium + + * Update to SVN 20170503 (r247549) from the gcc-7-branch. + * Fix gdc build on sparc. + * Update the gdc-cross-install-location patch for GCC 7. + * Bump libgphobos soname. + * dpkg-buildflags stopped fiddling around with spec files; remove + the code removing and warning about dpkg's specs. + * Don't build the native gnat on armel. See issue #861734. + + -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 + +gcc-7 (7.1.0-2) experimental; urgency=medium + + * Update the disable-gdc-tests patch for GCC 7.1. + + -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 + +gcc-7 (7.1.0-1) experimental; urgency=medium + + * GCC 7.1.0 release. + * Update NEWS.html and NEWS.gcc. + * Update gdc to the gdc-7 branch 20170502. + * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut + Grohne). Closes: #861588. + * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). + Closes: #859938. + + -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 + +gcc-7 (7-20170407-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + * Install gcov-dump and gcov-tool manual pages. + + -- Matthias Klose Fri, 07 Apr 2017 13:16:00 +0200 + +gcc-7 (7-20170316-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + * Install the gcov-dump utility. + * Allow to use lld with -fuse-ld=ld.lld. + * Build gnattools sequentially (fails with parallel build). See #857831. + * Add profile to the autogen build dependency. + * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. + + -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 + +gcc-7 (7-20170314-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170314. + + [ Matthias Klose ] + * Bump binutils version requirement to 2.28. + * Fix libcc1.so symlink for cross compilers. Addresses: #856875. + * Fix base package name for rtlibs stage build (Helmut Grohne). + Closes: #857074. + * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. + * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. + * Don't ship the gnatgcc manpage symlink when building GFDL packages. + Addresses: #857384. + * Allow bootstrapping with libc headers installed in multiarch location. + (Helmut Grohne). Closes: #857535 + * gccbrig: Depend on hsail-tools. + + [ Nicolas Boulenguez ] + * Create the libgnatsvn packages again. Closes: #857606. + * Replace libgnat-BV.overrides with a fixed command. + * Install gnatvsn.gpr project into /u/s/gpr instead of + /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. + * Avoid hardcoding the version in the ada-gcc-name patch. + * Reorganize Ada patches. See #857606 for details. + + -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 + +gcc-7 (7-20170302-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170302. + + [ Matthias Klose ] + * Update gdc to trunk 20170227. + * Update libcc1 symbols file. + * Bump binutils version requirement. + * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. + * Build the nvptx offload compilers. + * Add the newlib copyright, used for the gcc-7-offload-nvptx package. + * Install the libcp1plugin. + * Fix the installation directory of the ada-sjlj includes and libraries. + + [ Nicolas Boulenguez ] + * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. + * Remove obsolete references to libgnatprj, but keep existing + references to libgnatvsn as it will be restored. Closes: #844367. + * Drop obsolete and unapplied ada-default-project-path.diff. + + -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 + +gcc-7 (7-20170226-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170226. + + -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 + +gcc-7 (7-20170221-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170221. + * Update gdc to trunk 20170221. + + [ Matthias Klose ] + * Fix some hppa64 related build issues. Addresses: #853023. + * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. + * Again, disable go on m68k. Closes: #853906. + * Configure with --enable-default-pie on sparc and sparc64 (James Clarke). + Addresses: #854090. + * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). + * Build gccbrig and the libhsail-rt library for i386. + * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. + * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). + Addresses: #855197. + * Bump binutils version requirement. + + [ Aurelien Jarno ] + * Disable lxc1/sxc1 instruction on mips and mipsel. + * Disable madd4 instructions on mipsel, mips64el and mipsn32el. + + -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 + +gcc-7 (7-20170129-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170129. + * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran + and gphobos runtime libraries. + * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. + * Build the BRIG frontend on amd64. + * Install new intrinsics headers. Closes: #852551. + * libgo version bumped to 11. + * Package gccbrig and the libhsail-rt library. + + -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 + +gcc-7 (7-20170121-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + * Configure --with-gcc-major-version-only, drop the gcc-base-version, + gccgo-version and gdc-base-version patches. + * Adjust the g++-multiarch-incdir patch for reverted upstream patch, + causing bootstrap regression (PR 78880). Closes: #852104. + + -- Matthias Klose Sat, 21 Jan 2017 21:57:22 +0100 + +gcc-7 (7-20170118-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170118. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clarke). + * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. + * Install the unprefixed man pages for gcc-ar, -nm and ranlib. + Closes: #851698. + + -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 + +gcc-7 (7-20161230-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161230. + * Update gdc to trunk 20161229. Closes: #844704. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + * Apply proposed patch for PR target/78748. + * Apply proposed patch for PR libstdc++/64735. + * Don't mark libphobos multilib packages as M-A: same. + * Configure libphobos builds with --with-target-system-zlib. + * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. + * Drop m68k specific ada patches. Closes: #846872. + + -- Matthias Klose Fri, 30 Dec 2016 05:19:15 +0100 + +gcc-7 (7-20161201-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161201. + + * Install missing vecintrin.h header on s390x. + * Install missing avx512 intrinsics headers on x86*. Closes: #846075. + + -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 + +gcc-7 (7-20161125-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + * Update libgphobos symbol files. + * libphobos: Fix ARM32 multilib detection for system zlib. + * Update libgphobos symbols files for ARM32 targets. + * Build the GC enabled libobjc using the system libgc when available + * Mark libgphobos symbols changing with the file location (sic!) as optional. + * Add pkg-config to the build dependencies. + * Drop the work around for PR libstdc++/65913. + * gdc: Link with the shared libgphobos runtime by default. + * Fix PR middle-end/78501, proposed patch. + * Fix dependency generation for libgphobos multilib builds. + * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. + * Always apply the ada patches. + + [ YunQiang Su ] + * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. + Addresses: #844367. + + -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 + +gcc-7 (7-20161116-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161116. + * Build shared phobos runtime libraries (not yet enabled by default). + * Add symbols for libobjc_gc library. + + -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 + +gcc-7 (7-20161115-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + * More symbol files updates. + * Update gdc to the trunk 20161113. + * Update conflicts with GCC 6 packages. Closes: #844296. + + -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 + +gcc-7 (7-20161112-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + * Remove gij/gcj packages, removed upstream. + * Don't build gdc and gnat for now. + + -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 + +gcc-6 (6.2.0-13) unstable; urgency=medium + + * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. + - Fix PR c/71115, PR target/78229 (closes: #843379), + PR tree-optimization/77768, PR c++/78039 (closes: #841316), + PR libgcc/78064, PR driver/78206. + * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. + * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. + * Fix PR target/77822 (s390x), proposed patch. + * Update libiberty to the trunk 20161108. Addresses security issues: + CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, + CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. + + -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 + +gcc-6 (6.2.0-11) unstable; urgency=medium + + * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. + - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, + PR tree-optimization/77879, PR tree-optimization/77839, + PR tree-optimization/77745, PR tree-optimization/77648, + PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, + PR middle-end/71002, PR fortran/69544, PR fortran/78178, + PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, + PR libgfortran/78123. + * Fix symlinks for gcj manual pages. Closes: #842407. + * Fix ICE in tree_to_shwi, Linaro issue #2575. + + -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 + +gcc-6 (6.2.0-10) unstable; urgency=medium + + * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, + PR tree-optimization/77550, PR tree-optimization/77916, + PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, + PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, + PR target/78057 (x86), PR target/78037 (x86). + * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's + debug/elf TestDWARFRelocations test case (James Clarke). + * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. + Closes: #841292. + * Don't install alternatives for go and gofmt. The preferred way to do that + is to install the golang-any package. + * For Debian builds, don't enable bind now by default when linking with pie + by default. + + -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 + +gcc-6 (6.2.0-9) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 + +gcc-6 (6.2.0-8) unstable; urgency=medium + + * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77990, PR target/77991 (x86). + * Install arm_fp16.h header on arm* architectures for Linaro builds. + * Backport upstream revisions from trunk (James Clarke). Closes: #840574. + - r240457 (add getrandom for MIPS/SPARC) + - r241051 (fix getrandom on sparc64 and clone on sparc*) + - r241072 (make rawClone no_split_stack) + - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by + the included headers on arm64) + - r241171 (sparc64 relocations, e1fc2925 in go master, now also in + gofrontend/gccgo) + * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. + + -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 + +gcc-6 (6.2.0-7) unstable; urgency=medium + + * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, + PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, + PR tree-optimization/77937, PR tree-optimization/77943, + PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. + + [ Matthias Klose ] + * Backport Mips go closure support, taken from libffi. Closes: #839132. + * Configure with --enable-default-pie and pass -z now when pie is enabled; + on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. + Closes: #835148. + * Update the Linaro support to the 6-2016.10 snapshot. + + [ Aurelien Jarno ] + * Enable logwatch on mips64el. + + -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 + +gcc-6 (6.2.0-6) unstable; urgency=medium + + * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, + PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), + PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, + PR fortran/58992. + * Really fix gij installation on hppa. Closes: #838111. + * Install alternatives for go and gofmt. Closes: #840190. + + -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 + +gcc-6 (6.2.0-5) unstable; urgency=medium + + * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. + - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, + PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, + PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), + PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, + PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, + PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, + PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. + * Fix gij installation on hppa. Closes: #838111. + * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. + * Apply workaround for PR libstdc++/77686. Addresses: #838438. + + -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 + +gcc-6 (6.2.0-4) unstable; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452, PR c++/77427. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Backport from libffi trunk (Stefan Bühler): + - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. + - dlmmap_locked always needs locking as it always modifies execsize. + + -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 + +gcc-6 (6.2.0-3) unstable; urgency=medium + + * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. + - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, + PR debug/77363, PR middle-end/77377, PR middle-end/77259, + PR target/71910 (cygwin), PR target/77281 (ARM), + PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, + PR fortran/77374, PR fortran/71014, PR fortran/69281. + * Fix setting the stage1 C++ compiler. + * gdc: Always link with -ldl when linking with -lgphobos. + Closes: #835255, #835757. + * Fix building D code with external C++ references. + + -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 + +gcc-6 (6.2.0-2) unstable; urgency=medium + + * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), + PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, + PR fortran/77358. + * Call default_file_start from s390_asm_file_start, taken from the trunk. + * Update multiarch patches for mips* r6 (YunQiang Su). + * Fix install location of D header files for cross builds (YunQiang Su). + Closes: #835847. + * Fix PR c++/77379, taken from the trunk. + * Update the Linaro support to the 6-2016.08 snapshot. + + -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 + +gcc-6 (6.2.0-1) unstable; urgency=medium + + * GCC 6.2 release. + * Update gdc to the gdc-6 branch 20160822. + + -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 + +gcc-6 (6.1.1-12) unstable; urgency=medium + + * GCC 6.2 release candidate 1. + * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, + PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, + PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, + PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, + PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, + PR tree-optimization/71881, PR target/72802, PR target/72802, + PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, + PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, + PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, + PR libgfortran/73142. + + [ Matthias Klose ] + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + * Update the Linaro support to the 6-2016.07 snapshot. + + [ Aurelien Jarno ] + * Replace proposed fix for PR ipa/68273 by the corresponding patch taken + from trunk. + + -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 + +gcc-6 (6.1.1-11) unstable; urgency=medium + + * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. + - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, + PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, + PR c++/71833, PR fortran/71883. + + [ Nicolas Boulenguez ] + * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. + + [ Matthias Klose ] + * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. + + -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 + +gcc-6 (6.1.1-10) unstable; urgency=medium + + * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, + PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, + PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), + PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, + PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), + PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, + PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), + PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, + PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, + PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, + PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, + PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, + PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, + PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, + PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, + PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, + PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, + PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, + PR fortran/71783. + + [ Matthias Klose ] + * Build-depend on gnat-6 instead of gnat-5 on development distros. + + [ Aurelien Jarno ] + * Replace libjava-mips64el-proposed.diff by the corresponding patch + taken from trunk. + + -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 + +gcc-6 (6.1.1-9) unstable; urgency=medium + + * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. + - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, + PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), + PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, + PR fortran/71687, PR fortran/71704, PR fortran/71705. + * Mark cross compilers as M-A: foreign. Addresses: #827136. + * On sparc64, configure with --with-cpu-32=ultrasparc, drop the + sparc-force-cpu patch. Closes: #809509. + + -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 + +gcc-6 (6.1.1-8) unstable; urgency=medium + + * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/71647, PR target/30417 (AVR), + PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, + PR c++/71528, PR fortran/70673, PR middle-end/71693. + + [ Aurelien Jarno ] + * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. + + [ Matthias Klose ] + * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. + * gfortran: Suggest libcoarrays-dev. Closes: #827995. + * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. + * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. + + -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 + +gcc-6 (6.1.1-7) unstable; urgency=medium + + * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, + PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), + PR target/71554 (x86), PR middle-end/71494, PR c++/71448, + PR tree-optimization/71405, PR tree-optimization/71505, + PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), + PR c++/70572, PR c++/71516, PR c/71381. + * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). + Closes: #826503. + * Add build support for tilegx (Helmut Grohne). Closes: #827578. + * Drop support for loongson 2f (YunQiang Su). Closes: #827554. + + -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 + +gcc-6 (6.1.1-6) unstable; urgency=medium + + * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. + - Fix PR target/71389 (x86), PR tree-optimization/71259, + PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, + PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. + * gdc: Fix linking the runtime library. Addresses: #826645. + * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). + Closes: #826365. + + -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 + +gcc-6 (6.1.1-5) unstable; urgency=medium + + * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, + PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, + PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, + PR middle-end/71279, PR c++/71147, PR c++/71257, + PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, + PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, + PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, + PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), + PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, + PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, + PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, + PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, + PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. + * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). + Closes: #823126. + * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut + Grohne). Closes: #823894. + * Update embedded timestamp setting patch, backported from the trunk. + * gccgo: Combine combine gccgo's ld() and ldShared() methods + in cmd/go (Michael Hudson-Doyle). LP: #1586872. + + -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 + +gcc-6 (6.1.1-4) unstable; urgency=medium + + * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. + - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), + PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, + PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, + PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, + PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), + PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. + * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler + packages. + + -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 + +gcc-6 (6.1.1-3) unstable; urgency=medium + + * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, + PR target/70963, PR tree-optimization/70916, PR debug/70935. + * Enable gdc for sh4. + + -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 + +gcc-6 (6.1.1-2) unstable; urgency=medium + + * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, + PR ada/70969, PR ada/70900. + + [ Matthias Klose ] + * Call dh_makeshlibs with the --noscripts option when building a + cross compiler. + * Fix building cross gnat libs when not building the common libs. + * Fix building cross mips* multilibs when not building the common libs. + * Re-enable gnat build on some architectures for snapshot builds. + * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. + Addresses: #823126. + * Avoid empty architecture lists in build dependencies. Closes: #823280. + * Tighten debhelper build dependency for cross build dependencies. + * Allow build dependencies for musl configurations (Helmut Grohne). + Closes: #823769. + * Fix dependency resolution for libraries not built anymore from + this source package. + + [ Samuel Thibault ] + * patches/ada-hurd.diff: Fix Get_Page_Size type. + + -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 + +gcc-6 (6.1.1-1) unstable; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, + PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, + PR ada/70786, PR c++/70540, PR middle-end/70626. + * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + + [ Aurelien Jarno ] + * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to + (invalid?) peeking at alignments in function_arg) on mips and mipsel. + + [ Matthias Klose ] + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Allow embedded timestamps by C/C++ macros to be set externally (Eduard + Sanou). + * Add missing libstdc++ symbol to symbols file. + * libstdc++-doc: Ignore warnings about formulas and long identifiers in + man pages. + * Default the 32bit x86 architectures to i686, keep i585 symlinks. + See https://lists.debian.org/debian-devel/2015/09/msg00589.html + * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). + * Update gdc to the gdc-6 branch 20160430. + + -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + - Fix PR c++/68206, PR c++/70522, PR middle-end/70747, PR target/64971, + PR c++/66543, PR tree-optimization/70725, PR tree-optimization/70726, + PR target/70674 (s390x), PR tree-optimization/70724, PR c++/70690, + PR c++/70505, PR target/70711 (ARM32), PR c++/70685, + PR target/70662 (x86). + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6.1 release candidate 1. + + [ Michael Hudson-Doyle ] + * cmd/go: deduplicate gccgo afiles by package path, not *Package. + LP: #1566552. + + -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 + +gcc-6 (6-20160405-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 16:39:49 +0200 + +gcc-6 (6-20160319-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + * Stop providing alternative for /usr/bin/go. (Michael Hudson-Doyle). + LP: #1555856. + * Disable gnat on powerpcspe. Closes: #816051. + + -- Matthias Klose Sat, 19 Mar 2016 11:54:57 +0100 + +gcc-6 (6-20160312-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160312. + * Update gdc to the trunk 20160306. + * Remove powerpcspe specific patch, integrated upstream. Addresses: #816048. + * When configured to link with --as-needed by default, always link the + sanitizer libraries with --no-as-needed. + + -- Matthias Klose Sat, 12 Mar 2016 10:21:28 +0100 + +gcc-6 (6-20160228-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160228. + + [ Matthias Klose ] + * libgo: Port syscall.SetsockoptUcred from golang (Michael Vogt). + + [ Svante Signell ] + * patches/ada-hurd.diff: Update. + + -- Matthias Klose Sun, 28 Feb 2016 13:28:41 +0100 + +gcc-6 (6-20160225-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + * Update gdc to the trunk 20160224. + * Install missing architecture specific plugin header files. + * Fix PR target/69885, bootstrap error on m68k. + + -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 + +gcc-6 (6-20160220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + - Fix PR tree-optimization/68021. Closes: #812245. + - Fix PR ipa/69241. Closes: #812060. + - Fix PR libstdc++/56158. Closes: #789369. + * Update symbols files. + * libgccjit-6-doc: Really conflict with libgccjit-5-doc. Closes: #814527. + * Update conflict for gnat cross build packages. Closes: #810809. + * Disable the m68k gnat build, currently fails. See: #814221. + * Fix running the acats tests (Svante Signell): Addresses part of #814978. + + -- Matthias Klose Sat, 20 Feb 2016 16:58:47 +0100 + +gcc-6 (6-20160205-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160205. + - Fix PR tree-optimization/69320. Closes: #811921. + - Fix PR c++/68782. Closes: #812287. + - Fix PR tree-optimization/69328. Closes: #812247. + - Fix PR target/69421. Closes: #812246. + - Fix PR c++/69379. Closes: #812068. + - Fix PR lto/69393. Closes: #812062. + - Fix PR tree-optimization/69166. Closes: #812061. + * Update gdc to the trunk 20160205. + - Fix data corruption bug when passing around longdoubles. + Closes: #812080. + * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. + * Fix dependency generation for armel/armhf multilib cross targets. + * Fix libc dependency generation for multilib cross targets. + * Build libitm on alpha, s390x, sh4, sparc64. + + -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 + +gcc-6 (6-20160122-1) experimental; urgency=medium + + * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. + * Fix dependencies on target libraries which are not built anymore + from this source. + * Bump libmpx soname. Closes: #812084. + * Apply proposed patch for PR target/69129. Closes: #810081. + * Apply proposed patch for PR go/66904, pass linker flags from + "#cgo pkg-config:" directives (Michael Hudson). + * Configure with --enable-fix-cortex-a53-843419 on AArch64. + + -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 + +gcc-6 (6-20160117-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + * Update gdc to the trunk 20160115. + * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. + * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). + Closes: #811063. + * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. + + -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 + +gcc-6 (6-20160109-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 + +gcc-6 (6-20160103-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 + +gcc-6 (6-20160101-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + * Build native gnat on sh4. Addresses: #809498. + + -- Matthias Klose Fri, 01 Jan 2016 21:18:38 +0100 + +gcc-6 (6-20151220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. + * Fix cross build issues. + + -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 + +gcc-6 (6-20151213-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151213. + * Update the ada-kfreebsd and ada-m68k patches. + * Fix cross-building without having the common cross libraries installed. + * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS + including gccdebug. + * Remove obsolete libgccmath packaging support. + * Define SONAME macros whether the libraries are built or not. + + -- Matthias Klose Sun, 13 Dec 2015 16:04:56 +0100 + +gcc-6 (6-20151211-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151211. + * Update gnat and gdc patches, re-enable gnat and gdc. + + -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 + +gcc-6 (6-20151210-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from 20151210. + + -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 + +gcc-5 (5.3.1-3) unstable; urgency=medium + + * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. + * Remove upstreamed chunks from the ada-kfreebsd patch. + + -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 + +gcc-5 (5.3.1-2) unstable; urgency=medium + + * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. + * Re-enable building gdc/libphobos, fixing the profiled build. + * Fix PR sanitizer/67899, build failure on sparc/sparc64. + + -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 + +gcc-5 (5.3.1-1) unstable; urgency=medium + + * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 05 Dec 2015 20:45:53 +0100 + +gcc-5 (5.3.0-3) unstable; urgency=medium + + * Update libgcc symbols file. + * Restore libgcc.symbols.aebi. + * Disabled profiled bootstraps for backports. + + -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 + +gcc-5 (5.3.0-1) experimental; urgency=medium + + * GCC 5.3 release. + - Fix PR libstdc++/65142 (CVE-2015-5276). + * Update gdc to the gcc-5 branch 20151130. + * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, + ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). + * Move test summary into the gcc-test-results package. + * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, + libmpx, libquadmath symbols files using versioned symbol references. + Closes: #806784. + * Only build the hppa64 cross compiler when either building the native compiler, + or when cross building the native compiler. Closes: #806479. + * Configure staged build with --enable-linker-build-id. + + -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 + +gcc-5 (5.2.1-27) unstable; urgency=medium + + * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. + * Don't strip cc1plus when shipping with unstripped frontends. + * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies + on gnat-5-*-linux-gnu. + * Fix setting the explicit libc dependency for cross builds. + * Don't build m4-nofpu multilibs on sh4, install the default multilib + into the standard location. + * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). + * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. + * Fix gnat sparc/sparc64 architecture detection. + * Update libgcc and libstdc++ symbols files. + * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. + * Run the autoconf generation in parallel. + * Add --enable-default-pie option to GCC configure, taken from the trunk. + * Enable gnat for m68k cross builds. + * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. + * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. + * Ship an empty debian/rules.parameters in the gcc-5-source package. + + -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 + +gcc-5 (5.2.1-26) unstable; urgency=medium + + * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. + * Fix the rtlibs stage build. Closes: #806186. + * Fix packaging the cross libphobos package. + * Build the hppa64 cross compiler on x86 architectures. + * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using + alternatives. Build a gcc-hppa64-linux-gnu package instead. + * Split out a gcc-5-test-results package from g++-5, allowing a post + build analysis, and reducing the size of the g++-5 package. + + -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 + +gcc-5 (5.2.1-25) unstable; urgency=medium + + * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. + * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. + * Fix building epoch prefixed cross packages. + + -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 + +gcc-5 (5.2.1-24) unstable; urgency=medium + + * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. + * Don't try to build a gnat cross compiler when there is no gnat compiler + for the build architecture. + * Update gnat build dependencies for backports. + * Parallelize building documentation and parallelize the packaging step. + * Update the Linaro support to the 5-2015.11 snapshot. + + -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 + +gcc-5 (5.2.1-23) unstable; urgency=medium + + * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.10 snapshot. + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + * gcj: Fix priority of java alternatives. Closes: #803055. + * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. + + [ Aurelien Jarno ] + * Replace proposed patch for PR rtl-optimization/67736 by the one + committed on trunk. + + -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 + +gcc-5 (5.2.1-22) unstable; urgency=medium + + * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, + PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, + PR debug/58315. + + [ Matthias Klose ] + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency + on binutils. Closes: #800563. + * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting + globbing of arguments. Closes: #800250. + * Build-depend on gnat-5 instead of gnat-4.9. + + [ Aurelien Jarno ] + * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. + + -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 + +gcc-5 (5.2.1-21) unstable; urgency=medium + + * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. + * Fix building gnat. Closes: #800781. + + -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 + +gcc-5 (5.2.1-20) unstable; urgency=medium + + * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. + * Fix packaging the ada cross library packages. + + -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 + +gcc-5 (5.2.1-19) unstable; urgency=medium + + * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. + - Fix PR ipa/66424. Closes: #800318. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.09 snapshot. + * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. + * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. + * gcj-5: Suggest gcj-5-jdk. + * Fix base dependency for ada cross library packages. + * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. + * Link lrealpath.o into libgnatprj. Closes: #800045. + * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files + into the gcc libdir. + * Default to POWER8 on ppc64el. + * armv8: Fix slt lda missing conditional code (taken from the trunk). + * Fix lintian pre-depends-directly-on-multiarch-support warnings. + + [ Aurelien Jarno ] + * Apply proposed patch for PR rtl-optimization/67736 when building for + mips64 or mips64el. Closes: #800321. + + -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 + +gcc-5 (5.2.1-18) unstable; urgency=medium + + * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. + + [ YunQiang Su ] + * Build again the gnat-5-sjlj package. Closes: #798782. + * Fix gnat cross builds, and cross building gnat. + + -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 + +gcc-5 (5.2.1-17) unstable; urgency=medium + + * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. + - Fix PR c++/67369, ICE on valid code. LP: #1489173. + + [ Matthias Klose ] + * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. + Closes: #796906. + * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. + * Fix stage1 cross build for KFreeBSD. Closes: #796901. + * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more + like that in Go (Michael Hudson). LP: #1472650. + * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. + + [ Aurelien Jarno ] + * Use --with-mips-plt on mips*. + * Build for R2 ISA on mips, mips64 and mips64el. + * Optimize for R2 ISA on mipsel. + * Only apply mips-fix-loongson2f-nop on mipsel. + + [ YunQiang Su ] + * Fix running the acats tests. Closes: #798531. + + -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 + +gcc-5 (5.2.1-16) unstable; urgency=medium + + * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. + + -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 + +gcc-5 (5.2.1-15) unstable; urgency=medium + + * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. + * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; + adjust libreoffice version (closes: #794203), drop xxsd break (see + #793289), remove cython breaks (closes: #794511), add breaks for + packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, + pysph, pytaglib, python-scipy, python-sfml, rasterio). + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + + -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 + +gcc-5 (5.2.1-14) unstable; urgency=high + + * Fix libstdc++6 breaks. + + -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 + +gcc-5 (5.2.1-13) unstable; urgency=high + + * Upload to unstable (https://wiki.debian.org/GCC5). See also + https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html + * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + * Fix version macros in the plugin-header.h header. Closes: #793478. + * libstdc++6: Add breaks for issues tagged with gcc-pr66145. + * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. + * Fix PR c++/66857, taken from the trunk. + * Ignore differences in gcc/real.o in the bootstrap build for + sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy + of the register choice. Both codes are valid. It seems very hard to + find where has this indeterminacy come from". Suggested by Adrian + Glaubitz. + + -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 + +gcc-5 (5.2.1-12) experimental; urgency=medium + + * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from + libstdc++.so using the gcc4-compatible ABI. + Just build src/c++11/functexcept.cc using the new ABI. It will break + code, which will be handled in the archive by adding Breaks for the + affected packages. Third party code using such code will need a rebuild. + * Remove the work around to build with -O1 on sh4. + + -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 + +gcc-5 (5.2.1-11) experimental; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=c++11. + + -- Matthias Klose Fri, 17 Jul 2015 08:13:08 +0200 + +gcc-5 (5.2.1-1) experimental; urgency=medium + + * GCC 5.2 release. + * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. + * Require version 5.2 for the libstdc++6 cxx symbols. + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + * Go escape analysis: analyze multiple result type assertions (taken + from the trunk). + + -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 + +gcc-5 (5.1.1-14) unstable; urgency=medium + + * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 + +gcc-5 (5.1.1-13) unstable; urgency=medium + + * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. + * Update libasan symbol files. + * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default + to FPXX (YunQiang Su). Closes: #789612. + * Update libgccjit symbol file. + * Add x32 symbols files for libgcc1 and libstdc++6. + * libgccjit0: Add breaks for python-gccjit and python3-gccjit. + + -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 + +gcc-5 (5.1.1-12) unstable; urgency=medium + + * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. + * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). + Closes: #788990. + * Fix "empty-binary-package" lintian warnings. + + -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 + +gcc-5 (5.1.1-11) unstable; urgency=medium + + * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. + * gccgo: escape: Analyze binary expressions (taken from the trunk). + * Explicitly build with -Wl,--no-relax on alpha again. + * Build with -O1 on sh4 (try to work around PR target/66358). + + -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 + +gcc-5 (5.1.1-10) unstable; urgency=medium + + * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. + * Make removal of byte-compiled libstdc++ pretty printer files more + robust. Closes: #787630. + * Fix mips 32bit (o32) multilib builds (YunQiang Su). + * Build target libraries with -Wl,-z,relro. + * Build libstdc++6 when building the common libraries. + * Fix a bunch of lintian warnings. + + -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 + +gcc-5 (5.1.1-9) unstable; urgency=medium + + * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. + * Remove byte-compiled libstdc++ pretty printer files on upgrade. + Closes: #785939. + * Fix dangling libgccjit.so symlink. + * Fix base dependency for rtlibs stage builds. + * Fix build failure of the hppa64 cross compiler, introduced by the + gnat cross patches. Closes: #786692. + * Update README.source (Michael Vogt). + * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. + (Michael Vogt). LP: #1460530. + * Set CC and CXX matching the same GCC version for the stage1 build. + * Work around PR go/66368, build libgo with -fno-stack-protector. + LP: #1454183. + + -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 + +gcc-5 (5.1.1-8) unstable; urgency=medium + + * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. + * Set the priorities of the *-dev-*-cross packages to extra. + * Prepare to change the base dependency for *-cross packages. + * Fix dependencies for stage1 and stage2 builds. + * Relax dependencies on binary indep *-dev-*-cross packages. + * Disable building gdc on sh4 (bootstrap comparison failure). + + -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 + +gcc-5 (5.1.1-7) unstable; urgency=medium + + * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. + * Add description for the ada-gnattools-cross patch (YunQiang Su). + * Provide a rtlibs stage to build a subset of target library packages. + * Make symbols file symlinking for cross builds more robust. + * Prefer gnatgcc-5 over gnatgcc when building native packages. + * Various fixes to build a gnat cross compiler: + - Fix dependencies of packages. + - Fix building libgnatprj and libgnatvsn (still needed to figure + out if these are target or host libraries). + * Fix building cross compilers with dpkg 1.18. + + -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 + +gcc-5 (5.1.1-6) unstable; urgency=medium + + * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix gcc's dependency on libcc1-0 for native builds. + * Fix stripping the rpath when cross-building cross compilers. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Partially apply patches to build a gnat cross compiler (submitted + by YunQiang Su). + - gnatmake: Call the versioned gnatbind and gnatlink commands. + Closes: #782257. + - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. + - New patch ada-gnattools-cross.diff (no documentation). + * Backport patch for gccgo: + - gccgo: If unary & does not escape, the var does not escape. + * Apply the backported patches for the go escape analysis. Need to + be enabled with -fgo-optimize-alloc (this option may go away again). + * Re-enable running the tests. + + -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 + +gcc-5 (5.1.1-5) unstable; urgency=medium + + * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. + * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. + * libx32phobos-dev: Don't depend on libx32z-dev, when not available. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 + +gcc-5 (5.1.1-4) unstable; urgency=medium + + * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. + - Fix build failure on alpha. + * Fix applying the cross-biarch patch for stage1 builds. + * Fix libstdc++ symbols files for kfreebsd-amd64. + * Remove libn32phobos-5-dev from the control file. + * Really disable gnat on x32. + + -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 + +gcc-5 (5.1.1-3) unstable; urgency=high + + * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. + * Fix libstdc++ symbols files for kfreebsd-i386. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + * Backport patches for gccgo (not yet applied): + - Consider multi-result calls in escape analysis. + - Propagate escape info from closures to enclosed variables. + - Analyze function values and conversions. + - Use backend interface for stack allocation. + * More libstdc++ symbols updates for the Hurd and KFreeBSD. + * config-ml.in: Add D support. + * Update cross-biarch.diff to support D and Go. + * Apply the cross-biarch patch for every cross build. + + -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 + +gcc-5 (5.1.1-2) unstable; urgency=medium + + * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. + * Fix the gnat build dependency. + * Don't build go and gofmt for cross compilers. + + -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 + +gcc-5 (5.1.1-1) unstable; urgency=medium + + * GCC 5.1.0 release. + * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. + * Update NEWS files. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Don't build libx32phobos-5-dev when not building x32 multilibs. + * Fix standard C++ include directory for cross builds. Closes: #783241. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken + from the trunk). Turned off by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 + +gcc-5 (5.1~rc1-1) experimental; urgency=medium + + * GCC 5.1 release candidate 1. + * Update to SVN 20150414 (r222066) from the gcc-5-branch. + * Update GDC to the gcc-5 branch, 20140414. + * Don't build libobjc, when not building the common libraries. + * Don't run the gccjit tests on KFreeBSD. Works around #782444:. + * Fix not building libs built by the next GCC version. + + -- Matthias Klose Tue, 14 Apr 2015 02:03:53 +0200 + +gcc-5 (5-20150410-1) experimental; urgency=medium + + * Update to SVN 20150410 + + [ Matthias Klose ] + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + [ Samuel Thibault ] + * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424. + + -- Matthias Klose Sat, 11 Apr 2015 02:24:08 +0200 + +gcc-5 (5-20150404-1) experimental; urgency=medium + + * Update to SVN 20150404. + * Don't explicitly configure --with-gxx-include-dir and an absolute path, + so the toolchain remains relocatible. Instead, canonicalize the include + path names at runtime. + * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. + * Don't build libmpx on older releases. + * Remove the work around to build libgccjit on arm64. + * Fix the libgccjit build using the just built compiler. + * Don't break other gcc, gcj, gnat -base packages for backports, only + needed for dist-upgrades. + * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). + Instead, ignore the one differing file (gcc/ada/a-except.o) for now. + See #781457, PR ada/65618. + * Update libasan, libtsan, libgfortran and libstdc++ symbols files. + * Add symbols files for libmpx, libgccjit and libcc1. + + -- Matthias Klose Sat, 04 Apr 2015 21:53:45 +0200 + +gcc-5 (5-20150329-1) experimental; urgency=medium + + * Update to SVN 20150329. + * Fix building the gnat-5-doc package. + * Fix gnat build dependencies. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 + +gcc-5 (5-20150327-1) experimental; urgency=medium + + * Update to SVN 20150327. + * Update libcc1 build support. + * Fix syntax in libstdc++ symbols file. Closes: #780991. + * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. + * Fix PR go/65462: Fix go get dependencies. LP: #1432497. + * Limit the omp.h multilib fix to Linux. Closes: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Remove the bootstrap-debug.mk patch from the ada-mips patch. + * gnat related work (partly based on #780640): + - Update patches for GCC 5. + - Build the gnat packages from the gcc-5 source package. + - Don't build a gnat-base package from the gcc-5 source. + - Stop building the gnat-5-sjlj package for now, patch needs an update. + - Fix the packaging when not building the gnat-5-sjlj package. + - Don't apply the ada-symbolic-tracebacks, patch needs an update. + - Fix the libgnatprj build, build with -DIN_GCC. + * Replace cloog/ppl build bits with isl build bits. + + -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 + +gcc-5 (5-20150321-1) experimental; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + + -- Matthias Klose Sat, 21 Mar 2015 15:01:15 +0100 + +gcc-5 (5-20150316-1) experimental; urgency=medium + + * Update to SVN 20150316. + - Fix bootstrap failures on armel, armhh and arm64. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Tue, 17 Mar 2015 00:30:27 +0100 + +gcc-5 (5-20150314-1) experimental; urgency=medium + + * Update to SVN 20150314. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + - Fix PR/tree-optimization 65418. Closes: #778163. + - Fix PR c++/65370. Closes: #778073. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468. + + -- Matthias Klose Sat, 14 Mar 2015 14:48:19 +0100 + +gcc-5 (5-20150307-1) experimental; urgency=medium + + * Update to SVN 20150307. + - Update gccgo to Go 1.4.2. + * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). + * Remove the support to build empty libsanitizer packages on powerpc + and ppc64; libsanitizer should be stable on these architectures. + * Fix libcc1.so symlink. Closes: #779341. + * Revert the fix for PR65150 on armel and armhf to restore bootstrap. + * Don't strip the libgo library, or some things won't work as documented, + like runtime.Callers. Still keep the -dbg packages and check if some + debug information can be stripped. + * gccgo-5: Install alternatives for go and gofmt. + + -- Matthias Klose Sat, 07 Mar 2015 12:20:59 +0100 + +gcc-5 (5-20150226-1) experimental; urgency=medium + + * Update to SVN 20150226. + - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 + (closes: #778070, #778071), PR c++/64898 (closes: #778472). + * Allow not to strip the compiler executables to be able to print backtraces + for ICEs. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix the hppa64 cross build (John David Anglin). Closes: #778658. + * Fix libstdc++ pretty printers for Python3. Closes: #778436. + + -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 + +gcc-5 (5-20150205-1) experimental; urgency=medium + + * Update to SVN 20150205. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + * Apply proposed patch for PR target/64893 (AArch64), build using + 4.9 on AArch64 for now. + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + * Allow one to build using gettext built with a newer GCC. + + -- Matthias Klose Thu, 05 Feb 2015 18:31:17 +0100 + +gcc-5 (5-20150127-1) experimental; urgency=medium + + * Update to SVN 20150127. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + * Update hardening testsuite patches for GCC 5. + + -- Matthias Klose Tue, 27 Jan 2015 14:10:30 +0100 + +gcc-5 (5-20150121-1) experimental; urgency=medium + + * GCC 5 (SVN trunk 20150121). + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Wed, 21 Jan 2015 21:02:05 +0100 + +gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium + + * Update to SVN 20150120 (r219885) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, + PR libstdc++/64646, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6) unstable; urgency=medium + + * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. + - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, + PR target/50751 (SH), PR target/64108 (x86, ice), + PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), + PR c/59708, PR ipa/64153, PR target/64167) (wrong code, + closes: #771974), PR target/59593 (ARM, wrong code), + PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, + wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. + - Allow one to build with ISL 0.14. + + -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 + +gcc-4.9 (4.9.2-5) unstable; urgency=medium + + * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. + - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). + PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). + * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. + * Fix typo in last powerpcspe patch. Closes: #771654. + + -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 + +gcc-4.9 (4.9.2-4) unstable; urgency=medium + + * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. + -PR PR target/56846 (ARM), PR libstdc++/63497, + PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), + PR tree-optimization/61927 (wrong code), + PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), + PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), + PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), + PR rtl-optimization/63659 (wrong code). + * Don't let stage1 multilib builds depend on the multilib libc-dev. + Closes: #771243. + * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. + * Remove unsupported with_deps_on_target_arch_pkgs configurations. + Closes: #760770, #766924, #770413. + + -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 + +gcc-4.9 (4.9.2-3) unstable; urgency=medium + + * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. + - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), + PR target/60111 (SH), PR target/63673 (ppc), + PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), + PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), + PR ada/47500. + + [ Aurelien Jarno ] + * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, + even with multilib disabled, as it doesn't produce additional + libraries. + + [ Matthias Klose ] + * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. + + -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 + +gcc-4.9 (4.9.2-2) unstable; urgency=medium + + * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. + - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran + aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong + code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. + * Fix PR c/61553 (ice on illegal code), backported from the trunk. + Closes: #767668. + * Disable building the sanitizer libs on powerpc and ppc64. Not yet + completely ported, and causing kernel crashes running the tests. + * Update the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 + +gcc-4.9 (4.9.2-1) unstable; urgency=medium + + * GCC 4.9.2 release. + * Update GDC from the 4.9 branch. + + [ Matthias Klose ] + * Allow one to build the gcc-base package only. + + [Ludovic Brenta] + Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. + * debian/patches/ada-libgnatvsn.diff: compile the version.o of + libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the + change made in gcc-base-version.diff, which is compiled into gcc and + gnat1. Fixes: #759038. + * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion + compatibility of libgnatvsn4.9-dev with -3. + + Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low + Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low + + [Svante Signell] + * debian/patches/ada-hurd.diff: update and bring up to par with + ada-kfreebsd.diff. + + [Ludovic Brenta] + * Rebuild with newer dpkg. Fixes: #761248. + + Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low + + * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). + Fixes: #755490. + * debian/rules.d/binary-ada.mk: install the test-summary file in package + gnat-4.9 instead of gnat-4.9-base. test-summary is actually + architecture-dependent. This change reflects what happens in gcc-4.9 + and gcc-4.9-base as well. Fixes: #749869. + + Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low + + * Lintian warnings: + * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. + * debian/patches/ada-749574.diff: new. Fixes: #749574. + + -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 + +gcc-4.9 (4.9.1-19) unstable; urgency=medium + + * GCC 4.9.2 release candidate. + * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. + * Install sanitizer header files. + * Apply patch for PR 60655, taken from the trunk. + * Fix typo in the libstdc++ HTML docs. Closes: #766498. + * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. + * Force self-contained cross builds. + * Don't build functionally non-equivalent cross compilers. + * Update the Linaro support to the 4.9-2014.10-1 release. + + -- Matthias Klose Fri, 24 Oct 2014 14:20:00 +0200 + +gcc-4.9 (4.9.1-18) unstable; urgency=medium + + * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update libstdc++ symbols file for powerpcspe (Roland Stigge). + Closes: #765078. + + -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 + +gcc-4.9 (4.9.1-17) unstable; urgency=medium + + * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. + - Fix PR c++/63405 (ice) Closes: #761549. + - Fix PR ipa/61144 (wrong code). Closes: #748681. + + -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 + +gcc-4.9 (4.9.1-16) unstable; urgency=medium + + * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. + * Don't suggest libvtv and binutils-gold. Closes: #761612. + + -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 + +gcc-4.9 (4.9.1-15) unstable; urgency=medium + + * Update to SVN 20140919 (r215401) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). + + [ Aurelien Jarno ] + * Default to mips64 ISA on mips64el, with tuning for mips64r2. + + -- Matthias Klose Fri, 19 Sep 2014 20:17:27 +0200 + +gcc-4.9 (4.9.1-14) unstable; urgency=medium + + * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. + * Update the Linaro support to the 4.9-2014.09 release. + * Fix installation of the libstdc++ documentation. Closes: #760872. + + -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 + +gcc-4.9 (4.9.1-13) unstable; urgency=medium + + * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. + + -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 + +gcc-4.9 (4.9.1-12) unstable; urgency=medium + + [ Samuel Thibault ] + * boehm-gc: use anonymous mmap instead of brk also on hurd-*. + Closes: #753791. + + -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 + +gcc-4.9 (4.9.1-11) unstable; urgency=medium + + * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 + +gcc-4.9 (4.9.1-10) unstable; urgency=medium + + * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. + * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. + * Update the Linaro support from the Linaro/4.9 branch. + - Fixes Aarch64 cross build on i386. + + -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 + +gcc-4.9 (4.9.1-9) unstable; urgency=medium + + * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. + * Fix -dumpversion output to print the full version number. + Addresses: #759038. LP: #1360404. + Use the GCC base version for the D include dir name. + + -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 + +gcc-4.9 (4.9.1-8) unstable; urgency=medium + + * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut + Grohne). Closes: #758408. + * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. + Closes: #757738. + + -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 + +gcc-4.9 (4.9.1-7) unstable; urgency=medium + + * Build-depend on dpkg-dev (>= 1.17.11). + + -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 + +gcc-4.9 (4.9.1-6) unstable; urgency=medium + + * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. + * Really fix the GFDL build on AArch64. Closes: #757153. + * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. + Local patch needs an update and upstreaming. + * Apply the local ada-mips patch for snapshot builds too. + * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision + failure. Local patch needs upstreaming. + * Disable Ada for snapshot builds on hurd-i386, build dependencies are + not installable. + * Don't build the sanitizer libs for sparc snapshot builds. + * Proposed backport for PR libstdc++/61841. Closes: #749290. + + -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 + +gcc-4.9 (4.9.1-5) unstable; urgency=medium + + * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 + +gcc-4.9 (4.9.1-4) unstable; urgency=high + + * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. + - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. + Closes: #756325. + * Build libphobos on armel and armhf. Closes: #755390. + * Fix java.security symlink. Closes: #756484. + + -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 + +gcc-4.9 (4.9.1-3) unstable; urgency=medium + + * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. + * Fix the GFDL build on AArch64. + * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. + + -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 + +gcc-4.9 (4.9.1-2) unstable; urgency=medium + + * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. + + * Fix installing test logs and summaries. + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + * Don't gzip the xz compressed testsuite logs and summaries. + * Build libphobos on armel and armhf. Closes: #755390. + * Update the Linaro support to the 4.9-2014.07 release. + + -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 + +gcc-4.9 (4.9.1-1) unstable; urgency=medium + + * GCC 4.9.1 release. + * Update GDC form the 4.9 branch (20140712). + + -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 + +gcc-4.9 (4.9.0-11) unstable; urgency=medium + + * GCC 4.9.1 release candidate 1. + * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. + - Fix PR middle-end/61725. Closes: #754548. + + * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). + Closes: #745372. + * Set java_cpu to ppc64 on ppc64el. + * Build AArch64 from the Linaro 4.9-2014.06 release. + * Re-enable running the testsuite on KFreeBSD and the Hurd. + * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa. + + -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 + +gcc-4.9 (4.9.0-10) unstable; urgency=medium + + * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. + + * Explicitly set cpu_32 to ultrasparc for sparc64 builds. + * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + * Ignore missing libstdc++ symbols on armel and hppa. The future and + exception_ptr implementation is incomplete. For more information see + https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. + + -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 + +gcc-4.9 (4.9.0-9) unstable; urgency=medium + + * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. + * Update libstdc++ symbols files for ARM. + * Configure --with-cpu-32=ultrasparc on sparc64. + + -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 + +gcc-4.9 (4.9.0-8) unstable; urgency=medium + + * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. + + * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial + 4.9 uploads. + * Update libgcc1 symbols for sh4. Closes: #751919. + * Stop building the libvtv packages. Not usable unless the build is + configured with --enable-vtable-verify, which comes with a performance + penalty just for the stubs in libstdc++. + * Update libstdc++ and libvtv symbols files for builds configured with + --enable-vtable-verify. + * Remove version requirement for dependency on make. Closes: #751891. + * Fix removal of python byte-code files in libstdc++6. Closes: #751435. + * Fix a segfault in the driver from calling free on non-malloc'd area. + * Drop versioned build dependency on gdb, and apply the pretty printer + patch for libstdc++ based on the release. + * Add support to build with isl-0.13. + + -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 + +gcc-4.9 (4.9.0-7) unstable; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. + + Update context for powerpc_remove_many. + + Drop gcc-powerpcspe-ldbl-fix applied upstream. + + [ Aurelien Jarno ] + * Fix PR c++/61336, taken from the trunk. + + -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 + +gcc-4.9 (4.9.0-6) unstable; urgency=medium + + * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + * Don't install the libstdc++ pretty printer file into the debug directory, + but into the gdb auto-load directory. + * Fix the removal of the libstdc++6 package, removing byte-compiled pretty + printer files and pycache directories. + * Fix PR c++/61046, taken from the trunk. LP: #1313102. + * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. + Closes: #745906. + * Update patches for snapshot builds. + + -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 + +gcc-4.9 (4.9.0-5) unstable; urgency=medium + + * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + * Build libitm on AArch64, patch taken from the trunk. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 + +gcc-4.9 (4.9.0-4) unstable; urgency=medium + + * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. + * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. + * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. + * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt + on architectures where it is not supported. Closes: #748315. + * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. + * Apply the proposed patch for PR c/57653. Closes: #734345. + + -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 + +gcc-4.9 (4.9.0-3) unstable; urgency=medium + + * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update build dependencies for ada enabled snapshot builds. + * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. + * Ensure that the common libs (built from the next GCC version) are + available when building without common libs. + * Fix java.security symlink in libgcj15. Addresses: #746786. + * Move the libstdc++ gdb pretty printers into libstdc++6, install the + -gdb.py files into /usr/share/gdb/auto-load. + * Set the 'Multi-Arch: same' attribute for packages, cross built with + with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. + * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes + (Helmit Grohne). Addresses: #744782. + * Apply the proposed patches for PR driver/61106, PR driver/61126. + Closes: #747345. + + [ Aurelien Jarno ] + * Fix libasan1 symbols file for sparc and sparc64. + + -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 + +gcc-4.9 (4.9.0-2) unstable; urgency=medium + + * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + [Matthias Klose] + * Fix libgcc-dev dependency on gcc, when not building libgcc. + * Fix gnat for snapshot builds on ppc64el. + * Update the libsanitizer build fix for sparc. + * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 + cross compiler. Install hppa64 alternatives. Addresses: #745967. + * Fix the as and ld symlinks for the hppa64 cross compiler. + * Add the gnat backport for AArch64. + * Update gnat patches not to use tabs and too long lines. + * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat + build dependency on g++. Addresses: #746688. + + Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: + + [Ludovic Brenta] + * debian/patches/ada-hurd.diff: refresh for new upstream version that + restores POSIX compliance in System.OS_Interface.timespec. + * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec + consistent with s-osinte-posix.adb. + [Nicolas Boulenguez] + * rules.conf (Build-Depends): mention gnat before gnat-x.y so that + buildds can bootstrap 4.9 in unstable. Fixes: #744724. + + -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 + +gcc-4.9 (4.9.0-1) unstable; urgency=medium + + * GCC 4.9.0 release. + * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. + + [Matthias Klose] + * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). + * Update gold architectures. + * Update NEWS files. + * Remove more mudflap left overs. Closes: #742606. + * Add new libraries src/libvtv and src/libcilkrts to + cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. + * Let lib*gcc-dev depend on the corresponding libtsan packages. + * Build the liblsan packages (amd64 only). + * Install the libcilkrts spec file. + * Build the D frontend and libphobos from the gdc trunk. + + Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * Revert g4.9-base to Architecture: all. Fixes: #743833. + * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh. + + Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low + + * debian/patches/ada-arm.diff: new. Improve support for ZCX on this + architecture. + * debian/patches/rules.patch: apply architecture- and Ada-specific + patches before Debian-specific patches. + * debian/patches/ada-link-lib.diff, + debian/patches/ada-libgnatvsn.diff, + debian/patches/ada-libgnatprj.diff: refresh for the new upstream + sources. + + Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low + + [Nicolas Boulenguez] + * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. + * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | + gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). + + Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium + + * Uploading to unstable was a mistake. Upload to experimental. + + Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * patches/ada-ppc64.diff: replace undefined variable arch with + target_cpu; this overrides the patch proposed by Ulrich Weigand as + it is more correct; approved by Ludovic Brenta. Fixes: #742590. + * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. + + Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: + (Suggests): suggest the correct version of ada-reference-manual. + (Vcs-Svn): specify the publicly accessible repository. + * Receive debian_packaging.mk from dh-ada-library (not library specific). + * Receive gnatgcc symlink from gnat (useful outside default compiler). + * debian/source/local-options: new. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + * debian/patches/ada-default-project-path.diff: when passed options such + as -m32 or -march, do not look for the RTS in + /usr/share/ada/adainclude but in + /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look + for project files in /usr/share/ada/adainclude. + * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: + Switch to ZCX by default on arm, armel, armhf; built SJLJ as the + package gnat-4.9-sjlj like on all other architectures. This is made + possible by the new upstream version. + * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of + timespec.tv_nsec from long to time_t, for compatibility with + s-osinte-posix.adb, even though this violates POSIX. Better solution + to come from upstream. Fixes: #740286. + + -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 + +gcc-4.9 (4.9-20140411-2) unstable; urgency=medium + + * Disable running the testsuite on kfreebsd, hangs the buildds. + * Stop building the sanitizer libs on sparc, fails to build. No reaction + from the Debian port maintainers and upstream. See PR sanitize/59758. + + -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 + +gcc-4.9 (4.9-20140411-1) unstable; urgency=medium + + * GCC 4.9.0 release candidate 1. + * Configure for i586-linux-gnu on i386. + + -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 + +gcc-4.9 (4.9-20140406-1) experimental; urgency=medium + + [Matthias Klose] + * Include include and include-fixed header files into the stage1 + gcc-4.9 package. + * Explicitly configure with --disable-multilib on sparc64 when no + multilibs are requested (Helmut Grohne). Addresses: #743342. + * Drop mudflap from cross-install-location.diff since mudflap was removed + from gcc 4.9. Closes: #742606 + * Build gnat in ppc64el snapshot builds. + * Apply the ada-ppc64 patch for snapshot builds as well. + * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. + * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. + * Add replaces when upgrading from a standalone gccgo build. + + [Yunqiang Su] + * Lower default optimization for mips64/n32 to mips3/mips64(32). + Closes: #742617. + + -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 + +gcc-4.9 (4.9-20140330-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + [Matthias Klose] + * Update symbols files. + * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). + * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. + + [Ludovic Brenta] + * debian/control.m4 (Build-Depends), debian/rules.conf: remove + AUTOGEN_BUILD_DEP and hardcode autogen. It is called by + fixincludes/genfixes during bootstrap and also when building gnat-*, + not just when running checks on gcc-*. + + -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 + +gcc-4.9 (4.9-20140322-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140322. + - Fixes build error on the Hurd. Closes: #740153. + + [Matthias Klose] + * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. + + Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: suggest the correct version of + ada-reference-manual. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + + Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low + + * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but + not *86-linux-gnu, the target tripled used by GNU/Linux. + + Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler + warnings. + * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): + do not try to install the gnattools, this is the job of + gnattools/Makefile.in. + * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even + when making install-gnatlib. + + [Xavier Grave] + * debian/patches/ada-kfreebsd.diff: refresh. + * debian/rules.patch: re-enable the above. + + -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 + +gcc-4.9 (4.9-20140303-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140303. + + -- Matthias Klose Tue, 04 Mar 2014 02:13:20 +0100 + +gcc-4.9 (4.9-20140218-1) experimental; urgency=medium + + * Fix gij wrapper script on hppa. Closes: #739224. + + -- Matthias Klose Tue, 18 Feb 2014 23:59:31 +0100 + +gcc-4.9 (4.9-20140205-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140205. + * Install the libsanitizer spec file. + * Fix building standalone gccgo, including the libgcc packages. + * On AArch64, use "generic" target, if no other default. + + -- Matthias Klose Wed, 05 Feb 2014 12:53:52 +0100 + +gcc-4.9 (4.9-20140122-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + * Update libstdc++ -dbg and -doc conflicts. + * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. + * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). + * Apply proposed patch for PR target/59799, allow passing arrays in + registers on AArch64 (Michael Hudson). + + -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 + +gcc-4.9 (4.9-20140116-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140116. + * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. + * Fix call frame information in ffi_closure_SYSV on AArch64. + + -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 + +gcc-4.9 (4.9-20140111-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140111. + * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. + * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + + -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 + +gcc-4.9 (4.9-20140110-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140110. + + -- Matthias Klose Fri, 10 Jan 2014 18:03:07 +0100 + +gcc-4.9 (4.9-20140109-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot. + + -- Matthias Klose Thu, 09 Jan 2014 18:57:46 +0100 + +gcc-4.8 (4.8.2-11) unstable; urgency=low + + * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. + * Don't build x32 multilibs for wheezy backports. + * Set the goarch to arm64 for aarch64-linux-gnu. + * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). + LP: #1261604. + * Merge accumulated Ada changes from gnat-4.8. + * Update gnat build dependencies when not built from a separate source. + * Default to -mieee on alpha again (Michael Cree). Closes: #733291. + * Prepare gnat package for cross builds. + + -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 + +gcc-4.8 (4.8.2-10) unstable; urgency=low + + * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. + * Add missing commit in libjava for gcc-linaro. + + -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 + +gcc-4.8 (4.8.2-9) unstable; urgency=low + + * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Fix libitm symbols files for ppc64. + * Update libatomic symbol file for arm64 and ppc64. + * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. + * Fix permissions of some override files. + * Let cross compilers conflict with gcc-multilib (providing + /usr/include/asm for the non-default multilib). + * Configure --with-long-double-128 on powerpcspe (Roland Stigge). + Closes: #731941. + * Update the Linaro support to the 4.8-2013.12 release. + * Update the ibm branch to 20131212. + + [ Aurelien Jarno ] + * patches/note-gnu-stack.diff: restore and rebase lost parts. + + -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 + +gcc-4.8 (4.8.2-8) unstable; urgency=medium + + * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. + * Fix PR libgcc/57363, taken from the trunk. + + -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 + +gcc-4.8 (4.8.2-7) unstable; urgency=low + + * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. + * Introduce aarch64 goarch. + * libgo: Backport fix for calling a function or method that takes or returns + an empty struct via reflection. + * go frontend: Backport fix for the generated hash functions of types that + are aliases for structures containing unexported fields. + * Skip Go testcase on AArch64 which hangs on the buildds. + * Fix freetype includes in libjava/classpath. + + -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 + +gcc-4.8 (4.8.2-6) unstable; urgency=low + + * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. + + [ Matthias Klose ] + * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. + * Update the gcc-as-needed patch for mips*. Closes: #722067. + * Use dpkg-vendor information for distribution specific settings. + Closes: #697805. + * Check for the sys/auxv.h header file. + * On AArch64, make the frame grow downwards, taken from the trunk. + Enable ssp on AArch64. + * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. + + [ Aurelien Jarno ] + * Update README.Debian for s390 and s390x. + + [ Thorsten Glaser ] + * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and + gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to + fix more CC0-specific and m68k/Ada-specific problems. + * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, + to avoid relocation errors when linking big shared objects. + * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, + to fix ICE while building boost 1.54 on m68k. + * pr52306.diff: Disables -fauto-inc-dec by default on m68k to + work around ICE when building C++ code (e.g. Qt-related). + + -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 + +gcc-4.8 (4.8.2-5) unstable; urgency=low + + * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.11 release. + * Add missing replaces in libgcj14. Closes: #729022. + + -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 + +gcc-4.8 (4.8.2-4) unstable; urgency=low + + * Really fix disabling the gdc tests. + + -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 + +gcc-4.8 (4.8.2-3) unstable; urgency=low + + * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. + * Don't ship java.security in both libgcj14 and gcj-4.8-headless. + Closes: #729022. + * Disable gdc tests on architectures without libphobos port. + + -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 + +gcc-4.8 (4.8.2-2) unstable; urgency=low + + * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. + * Build ObjC, Obj-C++ and Go for AArch64. + * Fix some gcj symlinks. Closes: #726792, #728403. + * Stop building libmudflap (removed in GCC 4.9). + + -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 + +gcc-4.8 (4.8.2-1) unstable; urgency=low + + * GCC 4.8.2 release. + + * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.10 release. + * Fix PR c++/57850, option -fdump-translation-unit not working. + * Don't run the testsuite on aarch64. + * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. + * [ARM] Fix bug in add patterns due to commutativity modifier, + backport from trunk. LP: #1234060. + * Build libatomic on AArch64. + * Fix dependency generation for the cross gcc-4.8 package. + * Make the libstdc++ pretty printers compatible with Python3, if + gdb is built with Python3 support. + * Fix loading of libstdc++ pretty printers. Closes: #701935. + * Don't let gcc-snapshot build-depend on gnat on AArch64. + + -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 + +gcc-4.8 (4.8.1-10) unstable; urgency=low + + * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Don't rely on the most recent Debian release name for configuration + of the package. Addresses: #720263. Closes: #711824. + * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). + Closes: #718614. + * Add packaging support for mips64(el) and mipsn32(el) including multilib + configurations (YunQiang Su). Addresses: #708143. + * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. + * Fix boehm-gc test failures with a linker defaulting to + --no-copy-dt-needed-entries. + * Fix libstdc++ and libjava test failures with a linker defaulting + to --as-needed. + * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. + * Fix some gcc and g++ test failures for a compiler with hardening + defaults enabled. + * Fix gcc-default-format-security.diff for GCC 4.8. + * Run the testsuite again on armel and armhf. + * Disable running the testsuite on mips. Fails on the buildds, preventing + migration to testing for three months. No feedback from the mips porters. + + [ Thorsten Glaser ] + * Merge several old m68k-specific patches from gcc-4.6 package: + - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. + - m68k-revert-pr45144: Needed for Ada. + - pr52714: Revert optimisation that breaks CC0 arch. + * Fix PR49847 (Mikael Pettersson). Closes: #711558. + * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). + + -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 + +gcc-4.8 (4.8.1-9) unstable; urgency=low + + * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. + * Enable gomp on AArch64. + * Update the Linaro support to the 4.8-2013.08 release. + + -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 + +gcc-4.8 (4.8.1-8) unstable; urgency=low + + * Fix PR rtl-optimization/57878, taken from the 4.8 branch. + * Fix PR target/57909 (ARM), Linaro only. + + -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 + +gcc-4.8 (4.8.1-7) unstable; urgency=low + + * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. + - Go 1.1.1 updates. + * Define CPP_SPEC for aarch64. + * Don't include in libgcc/libgcc2.c, taken from the trunk. + Closes: #696267. + * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). + Closes: #717024. + + -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 + +gcc-4.8 (4.8.1-6) unstable; urgency=low + + * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Add 32-bit biarch packages on sparc64. + + [ Matthias Klose ] + * Fix multiarch include path for aarch64. + * Update the Linaro support to the 4.8-2013.07 release. + * Revert the proposed fix for PR target/57637 (ARM only). + * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. + + [ Iain Buclaw ] + * Avoid compiler warnings redefining D builtin macros. + + -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 + +gcc-4.8 (4.8.1-5) unstable; urgency=low + + * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Don't pass --with-mips-plt on mips/mipsel. + + [ Matthias Klose ] + * Fix documentation builds with texinfo-5.1. + * Update the ARM libsanitizer backport from the 4.8 Linaro branch. + * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). + * The gdc cross compiler doesn't depend on libphobos-4.8-dev. + * Work around libgo build failure on ia64. PR 57689. #714090. + * Apply proposed fix for PR target/57637 (ARM only). + + -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 + +gcc-4.8 (4.8.1-4) unstable; urgency=low + + * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. + - Bump the libgo soname (change in type layout for functions that take + function arguments). + - Fix finding the liblto_plugin.so without x permissions set (see + PR driver/57651). Closes: #712704. + * Update maintainer list. + * Fall back to the binutils version of the binutils build dependency + if the binutils version used for the build cannot be determined. + * For ARM multilib builds, use libsf/libhf system directories to lookup + files for the non-default multilib (for now, only for the cross compilers). + * Split out a gcj-4.8 package, allow to build a gcj cross compiler. + * Allow one to cross build gcj. + * Don't include object.di in the D cross compiler, but depend on gdc instead. + * Allow one to cross build gdc. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + + -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 + +gcc-4.8 (4.8.1-3) unstable; urgency=low + + * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Prepare gdc for cross builds, and multiarch installation. + * Prepare gnat to build out of the gcc-4.8 source package, not + building the gnat-4.8-base package anymore. + * Don't build a gcj cross compiler by default (not yet tested). + * Disable D on s390 (doesn't terminate the D testsuite). + * Build libphobos on x32. + * Fix build with DEB_BUILD_OPTIONS="nolang=d". + * Disable D for arm64. + * Update the Linaro support to the 4.8-2013.06 release. + * Fix cross building a native compiler. + * Work around dh_shlibdeps not working on target libraries (see #698881). + * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. + * Add handling for unwind inside signal trampoline for kfreebsd (Petr + Salinger). Closes: #712016. + * Let gcc depend on the binutils upstream version it was built with. + Addresses #710142. + * Force a build using binutils 2.23.52 in unstable. + + [ Iain Buclaw ] + * Update gdc to 20130610. + * Build libphobos on kFreeBSD. + + -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-9) unstable; urgency=low + + * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. + * Drop build dependency on automake, not used anymore. + * Build with binutils from unstable (the 4.8.0-8 package was accidentally + built with binutils from experimental). Closes: #710142. + * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when + not building these libraries. Closes: #710224. + + -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4) experimental; urgency=low + + * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. + * Ignore the return value for dh_shlibdeps for builds on precise/ARM. + * Use target specific names for libstdc++ baseline files. LP: #1168267. + * Update gcc-d-lang.diff for GDC port. + * Don't use extended libstdc++-doc build dependencies for older releases. + * In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. Addresses: #680292. + * Build gcj for aarch64-linux-gnu. + * Update the Linaro support to the 4.8-2013.04 release. + * Fix gdc build on architectures not providing libphobos. + + -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 + +gcc-4.8 (4.8.0-3) experimental; urgency=low + + * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. + + [ Iain Buclaw ] + * Port GDC to GCC 4.8.0 release. + + -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 + +gcc-4.8 (4.8.0-2) experimental; urgency=low + + * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. + * Update NEWS files. + * Apply proposed patch for PR c++/55951. Closes: #703945. + * Configure with --disable-libatomic for hppa64. Closes: #704020. + + -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 + +gcc-4.8 (4.8.0-1) experimental; urgency=low + + * GCC 4.8.0 release. + * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. + + -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 + +gcc-4.8 (4.8-20130318-1) experimental; urgency=low + + * GCC snapshot 20130318, taken from the trunk. + - Fix the build failures on ARM. + * Install the libasan_preinit.o files. Closes: #703229. + + -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 + +gcc-4.8 (4.8-20130315-1) experimental; urgency=low + + * GCC snapshot 20130315, taken from the trunk. + + -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 + +gcc-4.8 (4.8-20130308-1) experimental; urgency=low + + * GCC snapshot 20130308, taken from the trunk. + + -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 + +gcc-4.8 (4.8-20130222-1) experimental; urgency=low + + * GCC snapshot 20130222, taken from the trunk. + * Update libasan symbols files. + + -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 + +gcc-4.8 (4.8-20130217-1) experimental; urgency=low + + * GCC snapshot 20130217, taken from the trunk. + + * Update libasan symbols files. + * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael + Cree). Closes: #699220. + + -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 + +gcc-4.8 (4.8-20130209-1) experimental; urgency=low + + * GCC snapshot 20130209, taken from the trunk. + + [ Matthias Klose ] + * Add a Build-Using attribute for each binary package, which can be + built from the gcc-4.7-source package (patch derived from a proposal by + Ansgar Burchardt). + - Use it for cross-compiler packages. + - Not yet used when building gcj, gdc or gnat using the gcc-source package. + These packages don't require an exact version of the gcc-source package, + but just a versions which is specified by the build dependencies. + * Fix dh_shlibdeps calls for the libgo packages. + * libstdc-doc: Depend on libjs-jquery. + * Update libstdc++ symbols files. + * Downgrade the priority of the non-default multilib libasan packages. + + [ Thibaut Girka ] + * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for + libgfortran-dev packages. + + -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 + +gcc-4.8 (4.8-20130127-1) experimental; urgency=low + + * GCC snapshot 20130127, taken from the trunk. + + [ Matthias Klose ] + * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. + + [ Thibaut Girka ] + * Fix installation path for libatomic and libsanitizer when building a + cross-compiler with with_deps_on_target_arch_pkgs. + * Fix regexp used to list patched autotools files. + + -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 + +gcc-4.8 (4.8-20130113-1) experimental; urgency=low + + * GCC snapshot 20130113, taken from the trunk. + * Always configure --with-system-zlib. + * Search library dependencies in the build-sysroot too. + * Don't complain about missing .substvars files when trying to mangle + these files. + * Add ARM multilib packages to the control file for staged cross builds. + * Fix ARM multilib shlibs dependency generation for cross builds. + * Don't call dh_shlibdeps for staged cross builds. These packages + are never shipped, and the information is irrelevant. + * Build the libasan and libtsan packages before libstdc++. + * Bump build dependencies on isl and cloog. + * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. + + -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 + +gcc-4.8 (4.8-20130105-1) experimental; urgency=low + + * GCC snapshot 20130105, taken from the trunk. + * Keep the debug link for libstdc++6. Closes: #696854. + * Update libgfortran symbols file for the trunk. + * Fix libstdc++ symbols files for sparc 128bit symbols. + * Update libgcc and libstdc++ symbols files for s390. + * Keep the rt.jar symlink in the gcj-jre-headless package. + * Explicitly search multiarch and multilib system directories when + calling dh_shlibdeps. + * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. + * Fix build configured with --enable-java-maintainer-mode. + * Don't ship .md5 files in the libstdc++-doc package. + + -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 + +gcc-4.8 (4.8-20130102-1) experimental; urgency=low + + * GCC snapshot 20130102, taken from the trunk. + + [ Matthias Klose ] + * Resolve libgo dependencies with the built runtime libraries. + * Fix g++-4.8-multilib dependencies. + + [ Thibaut Girka ] + * Prepare for optional dependencies on the packages built on the + target architecture. + * When using the above, + - use the same settings for gcc_lib_dir, sysroot, header and C++ header + locations as for the native build. + - install libraries into the multiarch directories. + - use cpp-4.x- instead of gcc-4.x-base to collect doc files. + + -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 + +gcc-4.8 (4.8-20121218-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix dependency generation for asan and atomic multilibs. + * Fix libobjc-dbg dependencies on libgcc-dbg packages. + * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). + Closes: #695661. + * Move .jar symlinks from the -jre-lib into the -jre-headless package. + + -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 + +gcc-4.8 (4.8-20121217-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix package builds with the common libraries provided by a newer + gcc-X.Y package. + * Drop build-dependency on libelf. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. Provide an asm symlink for + the build. + * Stop configuring cross compilers --with-headers --with-libs. + * Always call dh_shlibdeps with -l, pointing to the correct dependency + packages. + * Fix cross build stage1 package installation, only including the target + files in the gcc package. + * Explicitly configure with --enable-multiarch when doing builds + supporting the multiarch layout. + * Only configure --with-sysroot, --with-build-sysroot when values are set. + * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. + * Allow multilib enabled stage1 and stage2 cross builds. + * Don't check glibc version to configure --with-long-double-128. + * Don't auto-detect multilib osdirnames. + * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. + * Allow building a gcj cross compiler. + * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). + + -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 + +gcc-4.8 (4.8-20121211-1) experimental; urgency=low + + * GCC snapshot 20121211, taken from the trunk. + * Fix build failure on multilib configurations. + + -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 + +gcc-4.8 (4.8-20121210-1) experimental; urgency=low + + * GCC snapshot 20121210, taken from the trunk. + * For cross builds, don't use the multiarch location for the C++ headers. + * For cross builds, fix multilib inter package dependencies. + * For cross builds, fix libc6 dependencies for non-default multilib packages. + * Build libasan packages on powerpc, ppc64. + * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. + * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. + * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts + with the native compiler for the target architecture. + * For cross builds, don't add /usr/local/include to the standard include + path, however /usr/local/include/ is still on the path. + * For cross builds, provide symbols files based on the symbols files for + the native build. Not picked up by dh_makeshlibs yet. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. + * Fix spu cross build on powerpc/ppc64. + * Make libgcj packages Multi-Arch: same, append the Debian architecture + name to the gcj java home. + * Don't encode versioned build dependencies on binutils and dpkg-dev in + the control file (makes the package cross-buildable). + * Only include gengtype for native builds. Needs upstream changes. + See #645018. + * Fix cross build failure with --enable-libstdcxx-debug. + * Only install libbacktrace if it is built. + * When cross building the native compiler, configure --with-sysroot=/ + and without --without-isl. + + -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 + +gcc-4.8 (4.8-20121128-1) experimental; urgency=low + + [ Matthias Klose ] + * Update patches for GCC 4.8. + * Update debian/copyright for libatomic, libbacktrace, libsanitizer. + * Remove the soversion from the libstdc++*-dev packages. + * Build libatomic and libasan packages. + * Install the static libbacktrace library and header files. + * Update build-indep dependencies for building the libstdc++ docs. + * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. + * Apply proposed fix for PR fortran/55395, supposed to fix the build + failure on armhf and powerpc. + * For hardened builds, disable gcc-default-format-security for now, causing + build failure building the target libstdc++ library. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Fix gnat build failure on kfreebsd. + * Rename the gccgo info to gccgo-4.8 on installation. + * Install the libitm documentation (if built). + * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. + * Include libquadmath documentation in the gcc-4.8-doc package. + * Build libtsan packages. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 + +gcc-4.7 (4.7.2-12) experimental; urgency=low + + * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. + - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice + on valid), PR tree-optimization/54894 (ice on valid), + PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), + PR fortran/55314 (rejects valid). + + [ Matthias Klose ] + * Fix x32 multiarch name (x86_64-linux-gnux32). + * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 + +gcc-4.7 (4.7.2-11) experimental; urgency=low + + * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. + - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, + PR fortran/55352. + + * Update build-indep dependencies for building the libstdc++ docs. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Pass --hash-style=gnu instead of --hash-style=both. + * Link using --hash-style=gnu on arm64 by default. + * Split multiarch patches into local and upstreamed parts. + * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew + Gretton-Dann). LP: #1049614, #1065509. + * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. + * Include libquadmath documentation in the gcc-4.7-doc package. + * Don't pretend to understand .d files, no D frontend available for 4.7. + * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. + * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). + + -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 + +gcc-4.7 (4.7.2-10) experimental; urgency=low + + * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. + - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, + PR rtl-optimization/53701, PR target/53975 (ia64), + PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, + PR target/55019 (ARM), PR c++/54984, PR target/55175, + PR tree-optimization/53708, PR tree-optimization/54985, + PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, + PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, + PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, + PR tree-optimization/54986, PR target/55204, PR debug/54828, + PR tree-optimization/54877, PR c++/54988, PR other/52438, + PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.11 release. + * Define MULTIARCH_DIRNAME for arm64 (Wookey). + * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. + * Let the libstdc++-dev package depend on the libgcc-dev package. + * Drop the dependency of the libstdc++-dev package on g++, make + libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. + * Install override files before calling dh_fixperms. + * Backport the libffi arm64 port. + * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. + * Allow conditional building of the x32 multilibs. + * Fix libmudflap build failure for x32 multilibs. + * Fix dependency on glibc for triarch builds. + * Add build-{arch,indep} targets. + * Fix libquadmath x32 multilib builds on kernels which don't support x32. + * Fix location of x32 specific C++ header files. + * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, + only if the optimization level is > 0. + * Keep the host alias when building multilib libraries which need to + be cross-built on some architectures/buildds. + * Update arm64 from the aarch64 branch 20121105. + * Fix PR other/54411, libiberty: objalloc_alloc integer overflows + (CVE-2012-3509). + * Use /usr/include//c++/4.x as the include directory + for host dependent c++ header files. + * Add alternative libelf-dev build dependency. Closes: #690952. + * Always build the aarch64-linux-gnu target from the Linaro branch. + * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. + * For powerpcspe prevent floating point register handling when there + are none available (Roland Stigge). Closes: #693328. + * Don't apply hurd-pthread.diff for trunk builds, integrated + upstream (Samuel Thibault). Addresses: #692538. + * Again, suggest graphite runtime dependencies. + * Clean up libstdc++ man pages. Closes: #692445. + + [ Thibaut Girka ] + * Split out lib*gcc-dev packages. + * Split out lib*objc-dev packages. + * Split out lib*gfortran-dev packages. + + [ Daniel Schepler ] + * Add support for x32. Closes: #667005. + * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from + that branch, including --with-abi=mx32 option. + * Split out lib*stdc++-dev packages. + + [ Marcin Juszkiewicz ] + * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. + * Remove conflicts for armhf/armel cross packages. + + -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 + +gcc-4.7 (4.7.2-4) unstable; urgency=low + + * Fix PR c++/54858 (ice on valid), taken from the branch. + * Build again Go on armel and armhf. + + -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 + +gcc-4.7 (4.7.2-3) unstable; urgency=low + + * Revert the fix PR c/33763, and just disable the sorry message, + taken from the branch. Closes: #678589. LP: #1062343. + * Update libgo to 1.0.3. + * Go fixes: + - Fix a, b, c := b, a, 1 when a and b already exist. + - Fix some type reflection strings. + - Fix parse of (<- chan <- chan <- int)(x). + - Fix handling of omitted expression in switch. + - Better error for switch on non-comparable type. + * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), + PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. + * gcc-4.7-base: ensure smooth upgrades from squeeze by adding + Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) + as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + Closes: #677582. + * Add arm64 support, partly based on Wookey's patches (only applied for + arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, + Obj-C++ and Java). + + -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 + +gcc-4.7 (4.7.2-2) unstable; urgency=low + + * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin + fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice + on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 + branch. + * Go fixes, taken from the 4.7 branch. + * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, + taken from the trunk. + * Mention the NEWS changes for all uploads. Closes: #688278. + + -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 + +gcc-4.7 (4.7.2-1) unstable; urgency=low + + * GCC 4.7.2 release. + * Issues addressed after the release candidate: + - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. + * Update NEWS files. + + -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 + +gcc-4.7 (4.7.1-9) unstable; urgency=low + + * GCC 4.7.2 release candidate 1. + * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. + - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, + PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), + PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), + PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), + PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, + PR fortran/54556. + * Update the Linaro support to the 4.7-2012.09 release. + - Adds support for the NEON vext instruction when shuffling. + - Backports improvements to scheduling transfers between VFP and core + registers. + - Backports support for the UBFX instruction on certain bit extract idioms. + + -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 + +gcc-4.7 (4.7.1-8) unstable; urgency=low + + * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. + - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, + PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), + PR target/54220 (AVR), PR fortran/54208 (rejects valid), + PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), + PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), + PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), + PR tree-optimization/54494 (wrong code), PR target/54436 (x86), + PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), + PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, + PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), + PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), + PR lto/53572, PR tree-optimization/53922 (wrong code). + - Go fixes. + + [ Nobuhiro Iwamatsu ] + * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. + + [ Matthias Klose ] + * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. + * Update libitm package description. Closes: #686802. + + -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 + +gcc-4.7 (4.7.1-7) unstable; urgency=low + + * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. + - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, + PR rtl-optimization/53942, PR rtl-optimization/54157. + + [ Thibaut Girka ] + * Fix cross compilers for 64bit architectures when using + DEB_CROSS_NO_BIARCH. + * Fix glibc dependency for multiarch enabled builds for architectures + with a different libc-dev package name. + + [ Aurelien Jarno ] + * powerpc64: Fix non-multilib builds. + + [ Matthias Klose ] + * Fix syntax error generating the control file for cross builds. + Closes: #682104. + * spu build: Move static libraries to version specific directories. + Closes: #680022. + * Don't run the libstdc++ tests on mipsel, times out on the buildds. + * Update the Linaro support to the 4.7-2012.08 release. + + -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 + +gcc-4.7 (4.7.1-6) unstable; urgency=low + + * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. + - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, + PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, + PR middle-end/54017, PR target/54029, PR target/53961 (x86), + PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, + PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), + PR c++/53953. + + -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 + +gcc-4.7 (4.7.1-5) unstable; urgency=high + + * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. + - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, + PR target/53853. + + -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 + +gcc-4.7 (4.7.1-4) unstable; urgency=medium + + * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. + - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, + PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, + PR middle-end/52621, PR middle-end/53433, PR fortran/53732, + PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. + * Update the Linaro support to the 4.7-2012.07 release. + * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). + Closes: #680590. + + -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 + +gcc-4.7 (4.7.1-3) unstable; urgency=low + + * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. + - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), + PR middle-end/53790, PR debug/53682, PR target/53759 (x86), + PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, + PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. + - The change for PR libstdc++/49561 was reverted. The std::list size is + now the same again in c++98 and c++11 mode. + * Revert the local std::list work around. + * Build using isl instead of ppl for snapshot builds. + + -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 + +gcc-4.7 (4.7.1-2) unstable; urgency=medium + + * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. + - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, + PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, + PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, + PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. + * Update NEWS files for 4.7.1. + * Bump gcc/FULL-VERSION to 4.7.1. + * Update the Linaro support to the 4.7-2012.06 release. + * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour + can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around + will be replaced with an upstream solution. + * Fix PR debug/53682, taken from the trunk. Closes: #677606. + * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it + in the control file (Thibaut Girka). + * When building a cross-compiler, runtime libraries for the target + architecture may be cross-built. Tell debhelper/dpkg-dev those packages + are indeed for a foreign architecture (Thibaut Girka). + + -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 + +gcc-4.7 (4.7.1-1) unstable; urgency=low + + * GCC 4.7.1 release. + + -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 + +gcc-4.7 (4.7.0-13) unstable; urgency=low + + * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. + - Fix PR c++/53602 (LP: #1007616). + + * Document the changed ssp-buffer-size default in Ubuntu 10.10 and + later (Kees Cook). LP: #990141. + * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. + * Fix PR c++/53599 (reverting the fix for PR c++/53137). + Closes: #676729. LP: #1010896. + * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. + * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). + Closes: #675511. + + -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 + +gcc-4.7 (4.7.0-12) unstable; urgency=low + + * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release + candidate 1 or 4.7.1). + - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, + PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, + PR target/46261, PR tree-optimization/53550, PR middle-end/52080, + PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, + PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, + PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, + PR c++/52905, PR fortran/53521. + - Go and libgo updates. + * Include README.Debian in README.Debian.. + * Fix PR c/33763, proposed patch from the issue. Closes: #672411. + * Fix build failure in libgo with hardening defaults. + + -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 + +gcc-4.7 (4.7.0-11) unstable; urgency=low + + * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. + - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, + PR middle-end/53501, PR rtl-optimization/53519, + PR tree-optimization/53516, PR tree-optimization/53438, + PR target/52999, PR middle-end/53008. + + [ Matthias Klose ] + * Build-depend on netbase when building Go. Closes: #674306. + + [ Marcin Juszkiewicz ] + * Use the multiarch default for staged builds. + + -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 + +gcc-4.7 (4.7.0-10) unstable; urgency=low + + * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. + - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, + PR ada/52362, PR target/53385, PR middle-end/53460, + PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, + PR ada/52362, PR fortran/53389. + * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. + + -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 + +gcc-4.7 (4.7.0-9) unstable; urgency=low + + * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. + - Fix PR bootstrap/53183, PR tree-optimization/53436, + PR tree-optimization/53366, PR tree-optimization/53409, + PR tree-optimization/53410, PR c/53418, PR target/53416, + PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, + PR target/53358, PR rtl-optimization/52804, PR target/46098, + PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, + PR fortran/53310 + * Update the Linaro support to the 4.7-2012.05 release. + + -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 + +gcc-4.7 (4.7.0-8) unstable; urgency=low + + * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. + - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, + PR tree-optimization/53195, PR target/52999, PR target/53228, + PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, + PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, + PR debug/53174, PR target/53187, PR tree-optimization/53144, + PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. + - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. + * Install man pages for gcc-{ar,nm,ranlib}-4.7. + + -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 + +gcc-4.7 (4.7.0-7) unstable; urgency=low + + * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. + - Fix PR libstdc++/53115, PR tree-optimization/53163, + PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. + - libgo fix for mips. + * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. + * Build Go on mips. + * Revert: Don't build multilib gnat on armel and armhf. + * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. + * Fix Go multilib packaging issue for mips and mipsel. + + -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 + +gcc-4.7 (4.7.0-6) unstable; urgency=low + + * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. + - Fix PR target/53138. + * Build Go on ARM. + * Treat wheezy the same as sid in more places (Peter Green). + Addresses: #670821. + + -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 + +gcc-4.7 (4.7.0-5) unstable; urgency=medium + + * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. + - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, + PR c/51527, PR target/53120. + + [ Matthias Klose ] + * Don't build multilib gnat on armel and armhf. + * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. + * Install the unwind-arm-common.h header file. + * Fix ARM biarch package builds. + + [ Aurelien Jarno ] + * Reenable parallel builds on GNU/kFreeBSD. + * Fix libgcc building on MIPS N32/64. Closes: #669858. + * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. + + -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 + +gcc-4.7 (4.7.0-4) unstable; urgency=low + + * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. + - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, + PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, + PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, + PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, + PR middle-end/53084, PR middle-end/52999, PR c/53060, + PR tree-optimizations/52891, PR target/53033, PR target/53020, + PR target/52932, PR middle-end/52939, PR tree-optimization/52969, + PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, + PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, + PR c++/52465, PR c++/52824, PR c++/52906. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.04 release. + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Reenable the spu build on ppc64. Closes: #668272. + * Update and reenable the gcc-cloog-dl patch. + + [ Samuel Thibault ] + * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, + ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: + Add ada support for GNU/Hurd, thanks Svante Signell for the patches + and bootstrap! (Closes: #668426). + + -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 + +gcc-4.7 (4.7.0-3) unstable; urgency=low + + * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. + - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, + PR tree-optimization/52406, PR c++/52596, PR c++/52796, + PR fortran/52893, PR fortran/52668. + + [ Matthias Klose ] + * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. + * Add support for GNU locales for GNU/Hurd (Svante Signell). + Closes: #667662. + * Reenable the spu build on ppc64. Closes: #664617. + * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa + (John David Anglin). Closes: #667969. + + [ Nobuhiro Iwamatsu ] + * Fix cross build targeting sh4. Closes: #663028. + * Enable -mieee by default on sh4. Closes: #665328. + + -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 + +gcc-4.7 (4.7.0-2) unstable; urgency=low + + * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. + - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, + PR target/52507, PR target/52505, PR target/52461, PR target/52508, + PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, + PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, + PR rtl-optimization/52543, PR target/52461, PR target/52488, + PR target/52499, PR target/52148, PR target/52496, PR target/52484, + PR target/52506, PR target/52505, PR target/52461, PR other/52545, + PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, + PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, + PR middle-end/52691, PR middle-end/52750, PR target/52692, + PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, + PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, + PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, + PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, + PR tree-optimization/52701, PR tree-optimization/52754, + PR tree-optimization/52835. + + [ Matthias Klose ] + * Update NEWS files for 4.7. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Don't build Go on MIPS. + * Update alpha-ieee.diff for 4.7. + * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. + * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. + * Re-add build dependency on doxygen. + + [ Samuel Thibault ] + * debian/patches/ada-bug564232.diff: Enable on hurd too. + * debian/patches/ada-libgnatprj.diff: Add hurd configuration. + + -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 + +gcc-4.7 (4.7.0-1) unstable; urgency=low + + * GCC 4.7.0 release. + + -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 + +gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low + + * GCC-4.7 release candidate 2 (r185376). + * libgo: Work around parse error of struct timex_ on ARM. + * Update libstdc++6 symbols files. + * Allow building Go from a separate source package. + * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Disable Go on mips* (PR go/52586). + + -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 + +gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low + + * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. + * Always configure with --enable-gnu-unique-object. LP: #949805. + * Enable Go for ARM on releases with working getcontext/setcontext. + + -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 + +gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low + + * GCC-4.7 release candidate 1 (r184777). + + [ Marcin Juszkiewicz ] + * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. + + [ Matthias Klose ] + * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, + but return ENOSYS. + * Fix multiarch build on ia64. + * Fix path calculation for the libstdc++ -gdb.py file when installed into + multiarch locations. Closes: #661385. LP: #908163. + * Disable Go on sparc (libgo getcontext/setcontext check failing). + + [ Thorsten Glaser ] + * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. + + [ Jonathan Nieder ] + * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support + (Eugene V. Lyubimkin). Closes: #584572. + * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks + pre-multiarch gcc. Closes: #651550. + * libstdc++6: Lower priority from required to important. Closes: #661118. + + [Samuel Thibault] + * Remove local patch, integrated upstream. Closes: ##661859. + + -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 + +gcc-4.7 (4.7-20120210-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). + * kbsd-gnu.diff: Remove, integrated upstream. + * Strip whitespace from with_libssp definition. Closes: #653255. + * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. + * Fix control file generation for cross packages. LP: #913734. + + -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 + +gcc-4.7 (4.7-20120205-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). + * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. + * libgo: Fix ioctl macro extracton. + * Fix PR middle-end/52074, ICE in libgo on powerpc. + * Revert: * Install static libc++{98,11} libraries. + * Don't strip a `/' sysroot from the C++ include directories. + Closes: #658442. + + -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 + +gcc-4.7 (4.7-20120129-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). + * Configure --with-sysroot for wheezy and sid. + * Install static libc++{98,11} libraries. + * Install libstdc++ gdb.py file into /usr/lib/debug. + * Just copy libstdc++convenience.a for the libstdc++_pic installation. + * Remove trailing dir separator from system root. + + -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 + +gcc-4.7 (4.7-20120121-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). + + [ Matthias Klose ] + * Fix C++ include paths when configured --with-system-root. + + [ Marcin Juszkiewicz ] + * Fix control file generation for ARM multiarch cross builds. + + -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 + +gcc-4.7 (4.7-20120107-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). + + * On armel/armhf, allow g*-multilib installation using the runtime + libraries of the corresponding multiarch architecture. + * Fix location of .jinfo files. Addresses: #654579. + * Replace Fortran 95 with Fortran in package descriptions. + + -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 + +gcc-4.7 (4.7-20111231-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). + + [ Aurelien Jarno ] + * Re-enable parallel builds on kfreebsd-i386, as the problem from bug + #637236 only affects kfreebsd-amd64. + + [ Matthias Klose ] + * Fix generating libphobos dependency for gdc. Addresses: #653078. + * Link libmudflapth.so with -lpthread. + + -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 + +gcc-4.7 (4.7-20111222-1) experimental; urgency=low + + * Update to SVN 20111222 (r182617) from the trunk. + + [Matthias Klose] + * Remove obsolete ARM patch. + * Install loongson.h header. + * Update libgcc and libstdc++ symbols files. + + [Samuel Thibault] + * Update hurd patch for 4.7, fixing build failure. Closes: #652693. + + [Robert Millan] + * Update kbsd-gnu.diff for the trunk. + + -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 + +gcc-4.7 (4.7-20111217-2) experimental; urgency=low + + * Don't provide 4.6.x symlinks. + * Disable multilib for armhf. + * Fix spu installation. + + -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 + +gcc-4.7 (4.7-20111217-1) experimental; urgency=low + + * GCC-4.7 snapshot build. + - Including the GFDL documentation; will stay in experimental + until the 4.7.0 release sometime next year. + * Update patches for the trunk. + * Update symbols files. + * Build libitm packages. + + -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 + +gcc-4.6 (4.6.2-9) unstable; urgency=medium + + * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. + - Fix PR c++/51331. + * Fix build dependencies for armel/armhf. + + -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 + +gcc-4.6 (4.6.2-8) unstable; urgency=low + + * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. + - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, + PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, + PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, + PR fortran/51075. + + [ Matthias Klose ] + * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. + + [Ludovic Brenta] + Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low + [Євгеній Мещеряков] + * debian/patches/pr47818.diff: new. Fixes: #614402. + * debian/rules.patch: apply it. + + Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low + [Ludovic Brenta] + * Suggest ada-reference-manual-{html,info,pdf,text} instead of just + ada-reference-manual which no longer exists. + * Do not suggest gnat-gdb, superseded by gdb. + * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict + with their 4.4 counterparts and priority optional packages may not + conflict with one another, per Policy 2.5. + + -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 + +gcc-4.6 (4.6.2-7) unstable; urgency=medium + + * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. + - Fix PR rtl-optimization/51469, PR tree-optimization/51466, + PR tree-optimization/50078, PR target/51408, PR fortran/51310, + PR fortran/51448. + + -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 + +gcc-4.6 (4.6.2-6) unstable; urgency=low + + * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. + - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), + PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, + PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), + PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, + PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, + PR middle-end/51323 (LP: #897583), PR middle-end/50074, + PR middle-end/50074. + + [ Matthias Klose ] + * Run the libstdc++ testsuite on all architectures again. Closes: #622699. + * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. + * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. + * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. + * Install the libstdc++.so-gdb.py file. LP: #883269. + * Fix PR c++/50114, backport from trunk. LP: #827806. + * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. + * Update the Linaro support to the 4.6 branch. + + [ Marcin Juszkiewicz ] + * Fix issues with gcc-snapshot cross builds. + * Allow building Linaro binary packages in a single package. + * Apply hardening patches for cross builds when enabled for native builds. + + -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 + +gcc-4.6 (4.6.2-5) unstable; urgency=low + + * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. + - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, + PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, + PR target/50979, PR target/4810, PR rtl-optimization/51187, + PR target/50493, PR target/49992, PR target/49641, PR c++/51150, + PR target/50678, PR libstdc++/51142, PR libstdc++/51133. + + [ Matthias Klose ] + * Use the default gcc as stage1 compiler for all architectures. + + [ Marcin Juszkiewicz ] + * debian/control.m4: Use BASEDEP in more places. + * Work around debhelper not calling the correct strip for cross builds. + * Drop dpkg-cross build dependency for cross builds. + + -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 + +gcc-4.6 (4.6.2-4) unstable; urgency=low + + * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. + - Fix PR target/50691, PR c++/50901, PR target/50945, + PR rtl-optimization/47918, PR libstdc++/50880. + + * Configure the armel build by explicitly passing --with-arch=armv4t + --with-float=soft. + * libffi: Simplify PowerPC assembly and avoid CPU-specific string + instructions (Kyle Moffett). + * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. + + -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 + +gcc-4.6 (4.6.2-3) unstable; urgency=low + + * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS + enables them (continued investigation for #637236). + + -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 + +gcc-4.6 (4.6.2-2) unstable; urgency=low + + * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. + - Fix PR target/50875. + + * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler + package dependency fixes. + * Update the Linaro support to the 4.6 branch. + * Fix gcc-4.6-hppa64 installation. Closes: #646805. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + * Don't use parallel builds on kfreebsd. + + -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 + +gcc-4.6 (4.6.2-1) unstable; urgency=low + + * GCC 4.6.2 release. + + * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. + * Fix stage1 cross-compiler package dependencies (Kyle Moffett). + Closes: #644439. + + -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 + +gcc-4.6 (4.6.1-16) unstable; urgency=medium + + * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. + - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, + PR tree-optimization/50700, PR c/50565 (closes: #642144), + PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, + PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, + PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, + PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, + PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, + PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, + PR fortran/50016, PR target/50737. + + [ Matthias Klose ] + * Fix libjava installation into /usr/lib/gcc//4.6. + * Fix powerpc and ppc64 libffi builds (Kyle Moffett). + * Apply proposed patch for PR target/50350. Closes: #642313. + * Re-apply the fix for PR tree-optimization/49911 on ia64. + * Apply proposed patch for PR target/50106 (ARM). + + [Xavier Grave] + * debian/patches/address-clauses-timed-entry-calls.diff: new; backport + bug fix about address clauses and timed entry calls. + + [Ludovic Brenta] + * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy + implementations of some optional POSIX Threads functions missing in + GNU/kFreeBSD. Closes: #642128. + + -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 + +gcc-4.6 (4.6.1-15) unstable; urgency=low + + * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. + - Fix PR target/50652. + * Update the Linaro support to the 4.6-2011.10-1 release. + * Fix gcc-spu installation. + * Restore symlink for subminor GCC version. Closes: #644849. + + -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 + +gcc-4.6 (4.6.1-14) unstable; urgency=low + + * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. + - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, + PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, + PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, + PR libstdc++/48698. + + [ Matthias Klose ] + * Configure and build to install into /usr/lib/gcc//4.6. + Closes: #643891. + * libgcc1: Versioned break to gcc-4.3. + * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. + * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). + + [ Marcin Juszkiewicz ] + * Enable gcc-snapshot cross builds. + + [ Iain Buclaw ] + * Port gdc to GCC-4.6. + + [ Aurelien Jarno ] + * Backport fix for PR target/49696 from the trunk (Closes: #633443). + + -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 + +gcc-4.6 (4.6.1-13) unstable; urgency=low + + * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. + - Fix PR tree-optimization/50472, PR tree-optimization/50413, + PR tree-optimization/50412, PR c++/20039, PR c++/42844, + PR libstdc++/50510, PR libstdc++/50509. + * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. + * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). + + -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 + +gcc-4.6 (4.6.1-12) unstable; urgency=low + + * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. + - Fix PR target/50464, PR target/50341, PR middle-end/49886, + PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). + + -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 + +gcc-4.6 (4.6.1-11) unstable; urgency=low + + * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. + - Fix PR c++/50424, PR c++/48320, PR fortran/49479. + + [ Matthias Klose ] + * Update the Linaro support to the 4.6-2011.09-1 release. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 + +gcc-4.6 (4.6.1-10) unstable; urgency=medium + + * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. + - Fix PR middle-end/50266, PR tree-optimization/49911, + PR tree-optimization/49518, PR tree-optimization/49628, + PR tree-optimization/49628, PR target/50310, PR target/50289, + PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. + - Revert fix for PR middle-end/49886, causing PR middle-end/50295. + + -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 + +gcc-4.6 (4.6.1-9) unstable; urgency=low + + * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. + - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, + PR c++/50157, PR fortran/50163, PR libfortran/50192, + PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, + PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, + PR libstdc++/50268. + + [ Matthias Klose ] + * Fix gcc --print-multilib-osdir for non-biarch architectures. + * Fix multiarch for non-biarch builds. Closes: #635860. + * Move the lto plugin to the cpp packge. Closes: #639531. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #639303. + + -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 + +gcc-4.6 (4.6.1-8) unstable; urgency=low + + * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. + Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, + PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, + PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, + PR c++/46862. + + * Properly disable multilib builds for selected libraries on armel and armhf. + * Update and re-enable the gcc-ice patch. + * Update and re-enable the gcc-cloog-dl patch. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Re-work the multiarch patches. + * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. + * Omit the target alias from the go libdir. + * Linaro updates from the 4.6-2011.07-stable branch. + * Revert: + - libjava: Build with the system libffi PIC library. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 + +gcc-4.6 (4.6.1-7) unstable; urgency=low + + * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. + - Fix PR middle-end/49923. + + [ Matthias Klose ] + * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. + * Don't hard-code build dependency on gcc-multilib. + * Build-depends on python when building java. + * Fix thinko in java::lang::Class::finalize (taken from the trunk). + * Add support for ARM 64bit sync intrinsics (David Gilbert). Only + enable for armv7 or better. + * libjava: Build with the system libffi PIC library. + * Disable gnat multilib builds on armel and armhf. + + Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + + Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low + + [Євгеній Мещеряков] + * debian/patches/ada-mips.diff: do not use the alternate stack on mips, + as on mipsel. Closes: #566234. + + [Ludovic Brenta] + * debian/patches/pr49940.diff: new; copy the definition of function + lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. + Closes: #636291. + * debian/patches/pr49944.diff: new. Closes: #636692. + * debian/patches/pr49819.diff: drop, merged upstream. + + -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 + +gcc-4.6 (4.6.1-6) unstable; urgency=low + + * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. + - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, + PR target/49866, PR tree-optimization/49671, PR target/39386, + PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, + PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), + PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, + PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, + PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, + PR c++/49988, PR fortran/49112. + + [ Aurelien Jarno ] + * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. + * Add s390x support. + + [ Marcin Juszkiewicz ] + * Fixes for multilib cross builds. LP: #816852, #819147. + + [ Matthias Klose ] + * Fix libgo installation for cross builds. + * Only apply arm-multilib when building for multilib. + + -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 + +gcc-4.6 (4.6.1-5) unstable; urgency=low + + * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. + - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, + PR target/49746, PR middle-end/49732, PR tree-optimization/49725, + PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, + PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, + PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, + PR fortran/49708, PR libstdc++/49293. + * Update the Linaro support to the 4.6-2011.07-0 release. + - Fix PR target/49335. LP: #791327. + * Update gcc-multiarch: + - Add -print-multiarch option. + - Fix library path for non-default multilib(s). + - Handle `.' in MULTILIB_DIRNAMES. + * Add support to build multilib on armel and armhf, only enable it for + Ubuntu/oneiric. LP: #810360. + * cpp-4.6: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + * Fix PR c++/49756, backport from trunk. LP: #721378. + * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 + +gcc-4.6 (4.6.1-4) unstable; urgency=low + + * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. + - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, + PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, + PR target/49487, PR tree-optimization/49651, PR ada/48711. + + [ Matthias Klose ] + * Build Go on alpha for gcc-snapshot builds. + * For multicore ARM, clear both caches, not just the dcache (proposed + patch by Andrew Haley). + * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. + LP: #807573. + * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit + off function pointers (Richard Sandiford). LP: #721531. + + [ Marcin Juszkiewicz ] + * Define DEB_TARGET_MULTIARCH macro. + * debian/rules2: Macro and configuration consolidation. + + -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 + +gcc-4.6 (4.6.1-3) unstable; urgency=medium + + * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. + - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, + PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, + PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, + PR c++/48157, PR c/49644, PR fortran/48926. + - Apparently fixes a boost issue. Closes: #632938. + * Apply proposed patch for PR fortran/49690. Closes: #631204. + + * README.Debian: New section 'Former and/or inactive maintainers'. + + -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 + +gcc-4.6 (4.6.1-2) unstable; urgency=medium + + * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. + - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, + PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, + PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, + PR target/49089, PR rtl-optimization/49014, PR target/48273, + PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, + PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, + PR fortran/49540. + + [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave] + * Adjust patches to GCC 4.6. + * Remove patches merged upstream: + - debian/patches/ada-arm-eabi.diff + - debian/patches/ada-bug589164.diff + - debian/patches/ada-bug601133.diff + - debian/patches/ada-gnatvsn.diff + - debian/patches/ada-mips.diff + - debian/patches/ada-polyorb-dsa.diff + + [Ludovic Brenta] + * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH + and ADA_OBJECTS_PATH so that the GNAT testsuite runs. + * debian/patches/adalibgnat{vsn,prj}.diff, + debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct + multiarch directory. + * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version + of the Ada run-time library to a new package, gnat-4.6-sjlj. + * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, + libgnatprj4.6-dbg): pre-depend on multiarch-support and add + Multi-Arch: same. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + + [ Matthias Klose ] + * Do not install the spu and hppa64 cross compilers into the multiarch path. + * Update the Linaro support to 20110704. + + [ Thorsten Glaser ] + * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. + - debian/rules.defs: Remove m68k from locale_no_cpus. + - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. + - debian/patches/pr43804.diff: Fix backported from SVN. + - debian/rules.patch: Add pr43804. + + -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 + +gcc-4.6 (4.6.1-1) unstable; urgency=low + + * GCC 4.6.1 release. + + [Ludovic Brenta] + * debian/patches/ada-gnatvsn.diff, + debian/patches/ada-polyorb-dsa.diff: remove backports, no longer + needed. + + [ Matthias Klose ] + * Fix plugin header installation. Closes: #631082. + * Stop passing -Wno-error=unused-but-set-parameter and + -Wno-error=unused-but-set-variable if -Werror is present. + This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. + * gcc-4.6-spu: Install the lto plugin. Closes: #631772. + + -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 + +gcc-4.6 (4.6.0-14) unstable; urgency=low + + * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. + - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, + PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, + PR tree-optimization/49419 (closes: #630567). + * Update the Linaro support to the 4.6-2011.06-0 release. + + -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 + +gcc-4.6 (4.6.0-13) unstable; urgency=low + + * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. + * Extend multiarch support for mips/mipsel. + * Fix control files for gcj multiarch builds. + * Update libstdc++ symbols files. + + -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 + +gcc-4.6 (4.6.0-12) unstable; urgency=medium + + * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. + - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, + PR tree-optimization/49243, PR c++/49134, PR target/49238, + PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. + * Fix c++ biarch header installation on i386. LP: #793411. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Adjust build dependency on multiarch glibc. + + -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 + +gcc-4.6 (4.6.0-11) unstable; urgency=low + + * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. + - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, + PR target/43700, PR target/43995, PR tree-optimization/49217, + PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, + PR c++/49176, PR fortran/48955, PR tree-optimization/49038, + PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, + PR c++/49276, PR fortran/49265, PR fortran/45786. + * Configure the hppa64 and spu cross builds with --enable-plugin. + + -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 + +gcc-4.6 (4.6.0-10) unstable; urgency=high + + * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. + - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, + PR target/49128, PR tree-optimization/44897, PR target/49133, + PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, + PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, + PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, + PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, + PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, + PR libobjc/48177. + * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. + Closes: #627795. + * Proposed fix for PR fortran/PR48955. + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 + +gcc-4.6 (4.6.0-9) unstable; urgency=low + + * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. + - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, + PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, + PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. + * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around + a bootstrap issue. + + -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 + +gcc-4.6 (4.6.0-8) unstable; urgency=low + + * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. + - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, + PR tree-optimization/48822, PR debug/48967, PR debug/48159, + PR target/48857, PR target/48495, PR tree-optimization/48837, + PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, + PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, + PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, + PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, + PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, + PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, + PR tree-optimization/49079, PR tree-optimization/49073. + * Update the Linaro support to the 4.6-2011.05-0 release. + * pr45979.diff: Update to the version from the trunk. + + -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 + +gcc-4.6 (4.6.0-7) unstable; urgency=low + + * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. + - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, + PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, + PR target/48262, PR fortran/48462, PR fortran/48746, + PR fortran/48810, PR fortran/48800, PR libstdc++/48760, + PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, + PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, + PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, + PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, + PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. + + * Fix issue with volatile bitfields vs. inline asm memory constraints, + taken from the trunk, apply for ARM only. Addresses: #625825. + + -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 + +gcc-4.6 (4.6.0-6) unstable; urgency=low + + * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. + - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, + PR c/48742, PR debug/48768, PR tree-optimization/48734, + PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, + PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, + PR preprocessor/48740. + * Update the ibm/gcc-4_6-branch to 20110428. + * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. + + -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 + +gcc-4.6 (4.6.0-5) unstable; urgency=low + + * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. + - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, + PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, + PR c++/46304, PR target/48708, PR middle-end/48695. + + * Update the Linaro support to the 4.6-2011.04-0 release. + + -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 + +gcc-4.6 (4.6.0-4) unstable; urgency=medium + + * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. + - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, + PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, + PR libstdc++/48635, PR libfortran/47571. + + [ Aurelien Jarno ] + * Enable SSP on mips/mipsel. + + [ Matthias Klose ] + * (Build-)depend on binutils 2.21.51. + + -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 + +gcc-4.6 (4.6.0-3) unstable; urgency=high + + * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. + - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, + PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, + PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, + PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, + PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, + PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, + PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, + PR libstdc++/48465, PR middle-end/48591, PR target/48605, + PR middle-end/48591, PR target/48090, PR tree-optimization/48195, + PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, + PR fortran/48360, PR fortran/48456, PR libstdc++/48631, + PR libstdc++/48635, PR libstdc++/48476. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Add mudflap support for varargs (patch taken from the trunk). + * gcc-4.6-plugin-dev: Install gtype.state. + * Bootstrap with gcc-4.4 -g -O2 on armel. + * Fix linker plugin configuration. Closes: #620661. + * Update the Linaro support for GCC-4.6. + * gcc-snapshot builds: + - Fix build with multiarch changes. + - Use gcc-snapshot as the bootstrap compiler on armel. + - Re-enable building java in the gcc-snapshot package. + * Build supporting multiarch on wheezy/sid. + * Adjust (build)-dependency to new libgmp-dev name. + + [ Marcin Juszkiewicz ] + * Configure stage1 cross builds with --disable-libquadmath. + + -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 + +gcc-4.6 (4.6.0-2) unstable; urgency=low + + * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. + - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, + PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, + PR other/48179, PR other/48221, PR other/48234, PR target/48237, + PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, + PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, + PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, + PR c++/47570, PR preprocessor/48248, PR c++/48319. + + [ Matthias Klose ] + * Update NEWS files. + * Configure the hppa64 cross build with --disable-libquadmath. + * Don't build armhf from the Linaro branch. + * Don't try to build Go on sh4. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 + +gcc-4.6 (4.6.0-1) unstable; urgency=low + + * GCC 4.6.0 release. + + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR target/47487 ICE building libgo, taken from the trunk. + * Merge multiarch changes from the gcc-4.5 package. + * Apply proposed patch to reduce the overhead of dwarf2 location tracking. + Addresses: #618748. + + -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 + +gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low + + * GCC 4.6.0 release candidate 2. + + -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgfortran symbols files. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. + + [ Matthias Klose ] + * Update gcc-default-ssp* patches for the release candidate. + * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary + for rebuild tests). + * Always configure --with-plugin-ld, always install liblto_plugin.so. + + [ Marcin Juszkiewicz ] + * Add conflicts with -4.5-*dev packages. Closes: #618450. + + [ Petr Salinger] + * Disable lock-2.c test on kfreebsd-*. Closes: #618988. + * Re-enable parallel builds on kfreebsd. + * Package lto_plugin for kfreebsd-* and Hurd. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low + + * Build from the GCC 4.6.0 release candidate tarball. + + [ Matthias Klose ] + * Disable Go on powerpc. Closes: #615827. + * Fix lintian errors for the -plugin-dev package. + * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. + * Disable parallel builds on kfreebsd (Petr Salinger). + * Update gmp (build) dependencies. + * Update GFDL compliant builds. Closes: #609161. + * For GFDL compliant builds, build a dummy s-tm-texi without access + to the texinfo sources. + + [ Aurelien Jarno ] + * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and + sparc64 from gcc-4.5. + + -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 + +gcc-4.6 (4.6-20110227-1) experimental; urgency=low + + [ Matthias Klose ] + * Update libquadmath symbols file. + * gcc-4.6-plugin-dev: Install gengtype. + + [ Sebastian Andrzej Siewior ] + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 + +gcc-4.6 (4.6-20110216-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 + +gcc-4.6 (4.6-20110125-1) experimental; urgency=low + + * debian/copyright: Add unicode copyright for + libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. + + -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 + +gcc-4.6 (4.6-20110123-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 + +gcc-4.6 (4.6-20110116-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Update patches for the trunk. + * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary + for rebuild tests). + * Work around PR libffi/47248, force a read only eh frame section. + + -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 + +gcc-4.6 (4.6-20110105-1) experimental; urgency=low + + [ Matthias Klose ] + * Rename and update libobjc symbols files. + * Update cloog/ppl build dependencies. + * Adjust libstdc++ configure and paths for stylesheets and dtds. + * Update copyright for libquadmath, libgo, gcc/go/gofrontend. + * Enable Go for more architectures. + * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc + + [ Kees Cook ] + * Update hardening patches for GCC-4.6. LP: #696990. + + -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 + +gcc-4.6 (4.6-20101220-1) maverick; urgency=low + + * GCC snapshot, taken from the trunk. + + -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 + +gcc-4.5 (4.5.2-7) unstable; urgency=low + + * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. + - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, + PR libfortran/48066, PR target/48171, PR target/47862. + PR preprocessor/48192. + + [ Steve Langasek ] + * Make dpkg-dev versioned build-dependency conditional on whether we want + to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by architecture; + but don't enable this yet, we still need to wait for dpkg-dev. + * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), + use it as our multiarch path. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. + * OTOH, libgcj_bc *is* in $(libdir). + * the spu build is not a multiarch build; look in the correct + non-multiarch directory. + * debian/rules2: pass --libdir also for stageX builds, needed in order to + successfully build for multiarch. + * debian/rules2: $(usr_lib) for a cross-build should not include the + multiarch dir as part of the path. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. + * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of + in README.Debian, so that the individual files are architecture-neutral + and play nicely with multiarch. LP: #737846. + * Add a comment at the bottom of README.Debian with a pointer to the new + file listing the patches. + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR preprocessor/48192, make conditional macros not defined for + #ifdef, proposed patch. + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. + * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields + again on armel for Linaro builds. LP: #675347. + + -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 + +gcc-4.5 (4.5.2-6) unstable; urgency=low + + * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. + - Fix PR tree-optimization/45967, PR tree-optimization/47278, + PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, + PR c++/47488, PR libgfortran/47778, PR c++/48029. + + [ Steve Langasek ] + * Make sure our libs Pre-Depend on 'multiarch-support' when building for + multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we need to be sure we + are building against a libc-dev that supports the corresponding paths. + (the referenced version number for this needs to be bumped once this is + officially in the archive.) + + [ Matthias Klose ] + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. + * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). + * Undefine LINK_EH_SPEC before redefining it to turn off warnings on + powerpc. + * Update gmp (build) dependencies. + + [ Aurelien Jarno ] + * Add symbol files on kfreebsd-i386. + * Add symbol files on kfreebsd-amd64. + * Add symbol files on sparc64. + * Add symbol files on sh4. + + -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 + +gcc-4.5 (4.5.2-5) unstable; urgency=low + + * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. + - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, + PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, + PR tree-optimization/46723, PR target/45261, PR target/45808, + PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, + PR target/42240, PR fortran/47878, PR libfortran/47694. + * Update the Linaro support to the 4.5-2011.03-0 release. + - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, + LP: #721021, LP: #709453. + + -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 + +gcc-4.5 (4.5.2-4) unstable; urgency=low + + * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. + - Fix PR target/43653, PR fortran/47775, PR target/47840, + PR libfortran/47830. + + [ Matthias Klose ] + * Don't apply a patch twice. + * Build libgcc_s with -fno-stack-protector, when not building from the + Linaro branch. + * Backport proposed fix for PR tree-optimization/46723 from the trunk. + + [ Steve Langasek ] + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + + [ Sebastian Andrzej Siewior ] + * PR target/44364 + * Remove -many on powerpcspe (__SPE__) + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe) + + -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 + +gcc-4.5 (4.5.2-3) experimental; urgency=low + + * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44469, PR tree-optimization/47411, + PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, + PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, + PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, + PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. + * Update the Linaro support to the 4.5 2011.02-0 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 + +gcc-4.5 (4.5.2-2) experimental; urgency=low + + * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. + - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, + PR target/46685, PR target/45447, PR tree-optimization/46758, + PR tree-optimization/45552, PR tree-optimization/43023, + PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, + PR target/43309, PR fortran/46874, PR tree-optimization/47286, + PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, + PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, + PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, + PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, + PR tree-optimization/47167, PR target/47318, PR target/46655, + PR fortran/47394, PR libstdc++/47354. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2011.01-1 release. + * Don't build packages now built from the gcc-4.6 package for architectures + with a sucessful gcc-4.6 build. + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all + (LP: #691722). + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 + +gcc-4.5 (4.5.2-1) experimental; urgency=low + + * GCC 4.5.2 release. + + -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 + +gcc-4.5 (4.5.1-12) experimental; urgency=low + + * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. + - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, + PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, + PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, + PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, + PR ada/40777. + + [ Matthias Klose ] + * Use lib instead of lib64 as the 64bit system dir on biarch + architectures defaulting to 64bit. Closes: #603597. + * Fix powerpc and s390 builds when biarch is disabled. + * Backport PR bootstrap/44768, miscompilation of dpkg on ARM + with -O2 (Chung-Lin Tang). LP: #674146. + * Update libgcc2 symbols file. Closes: #602099. + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 + +gcc-4.5 (4.5.1-11) experimental; urgency=low + + * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. + - Fix PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Closes: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 + +gcc-4.5 (4.5.1-10) experimental; urgency=low + + * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44691, PR tree-optimization/46355, + PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, + PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, + PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, + PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, + PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, + PR tree-optimization/46167, PR target/46098, PR target/45946, + PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, + PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, + PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, + PR fortran/46007, PR c++/46024. + * Update the Linaro support to the 4.5 2010.11 release. + * Update gcc-4.5 source dependencies. Closes: #600503. + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 + +gcc-4.5 (4.5.1-9) experimental; urgency=low + + * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. + - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, + PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, + PR libffi/45677, PR middle-end/45869, PR middle-end/45569, + PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, + PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, + PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, + PR tree-optimization/45982. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2010.10 release. + * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when + java was built from the same source package). Addresses: #599976. + * Remove the gpc packaging support. + * Fix libmudflap.so symlink. Addresses: #600161. + * Fix pch test failures with heap randomization on armel (PR pch/45979). + + [ Kees Cook ] + * Don't enable -fstack-protector with -ffreestanding. + + -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 + +gcc-4.5 (4.5.1-8) experimental; urgency=low + + * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. + - Fix PR middle-end/44763, PR java/44095, PR target/35664, + PR rtl-optimization/41085, PR rtl-optimization/45051, + PR target/45694, PR middle-end/45678, PR middle-end/45678, + PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, + PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, + PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, + PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, + * Find 32bit system libraries on sparc64, s390x. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + * Don't include info files and man pages in hppa64 and spu builds. + Closes: #597435. + * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) + (Brian M. Carlson) Closes: #507514. + + -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 + +gcc-4.5 (4.5.1-7) experimental; urgency=low + + * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. + - Fix PR target/40959, PR middle-end/45567, PR debug/45660, + PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, + PR target/42313, PR target/44651. + * Add support to build from the Linaro 4.5 2010.09 release. + * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. + + -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 + +gcc-4.5 (4.5.1-6) experimental; urgency=low + + * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. + - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, + PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, + PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, + PR fortran/45019, PR libstdc++/45398. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Marcin Juszkiewicz ] + * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. + * Build the gcc-4.5-plugin-dev for stage1 cross builds. + * Fix priorities and sections for some cross packages. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. + + -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 + +gcc-4.5 (4.5.1-5) experimental; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 + +gcc-4.5 (4.5.1-4) experimental; urgency=low + + * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. + - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, + PR middle-end/45423, PR c/45079, PR tree-optimization/45393, + PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. + + [ Matthias Klose ] + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mipsel and sparc64 too. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Al Viro ] + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 + +gcc-4.5 (4.5.1-3) experimental; urgency=low + + * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. + - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, + PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, + PR tree-optimization/45260, PR c++/45315. + + [ Matthias Klose ] + * Don't run the libstdc++ testsuite on armel on the buildds. + * Integrate and extend bi/tri-arch cross builds patches. + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + + [ Al Viro ] + * Bi/tri-arch cross builds patches. + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + + -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 + +gcc-4.5 (4.5.1-2) experimental; urgency=low + + * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. + - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, + PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, + PR target/44805, PR middle-end/45034, PR tree-optimization/45109, + PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, + PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, + PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), + PR libstdc++/45283, PR target/45296. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Configure with --enable-checking+release. LP: #612822. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + * Apply proposed patch for PR middle-end/45292. + * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 + +gcc-4.5 (4.5.1-1) experimental; urgency=low + + * GCC-4.5.1 release. + * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. + - Fix PR tree-optimization/45052, PR target/43698. + * Apply proposed fixes for PR c++/45112, PR c/45079. + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + * Stop building java packages from the gcc-4.5 source package. + + -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 + +gcc-4.5 (4.5.0-10) experimental; urgency=low + + * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. + - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. + * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). + * Update libstdc++6 symbols files. + + -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 + +gcc-4.5 (4.5.0-9) experimental; urgency=low + + * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post + GCC-4.5.1 release candidate 1). + - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, + PR tree-optimization/44977, PR c++/44996, PR fortran/44929, + PR fortran/30668, PR fortran/31346, PR fortran/34260, + PR fortran/40011. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files to the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + + -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 + +gcc-4.5 (4.5.0-8) experimental; urgency=low + + * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. + - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, + PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, + PR tree-optimization/43801, PR target/44575, PR debug/44104, + PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, + PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, + PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, + PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, + PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, + PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, + PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, + PR target/43888, PR tree-optimization/44284, PR middle-end/44828, + PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, + PR fortran/44847. + + [ Marcin Juszkiewicz ] + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584819. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 + +gcc-4.5 (4.5.0-7) experimental; urgency=low + + * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. + - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, + PR target/43740, PR libstdc++/44630 (closes: #577458), + PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, + PR fortran/44556, PR c/44555. + - Update libstdc++'s pretty printer for python2.6. Closes: #585202. + + [ Matthias Klose ] + * Fix libstdc++ symbols files for powerpc and sparc. + * Add maintainer scripts for cross packages. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584454, + #584819. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + + -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 + +gcc-4.5 (4.5.0-6) experimental; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: + PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, + PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, + PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, + PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, + PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, + PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, + PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, + PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. + * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Fix PR bootstrap/43847, --enable-plugin for cross builds. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Update libgcc and libstdc++ symbols files. + + [ Aurelien Jarno ] + + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 + +gcc-4.5 (4.5.0-5) experimental; urgency=low + + * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: + PR target/44338, PR middle-end/44337, PR tree-optimization/44182, + PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Fix passing the expanded -iplugindir option. + * Disable broken profiled bootstrap on alpha. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 + +gcc-4.5 (4.5.0-4) experimental; urgency=low + + * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: + PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, + PR lto/44196, PR target/43733, PR target/44245, PR target/43869, + PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, + PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, + PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, + PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, + PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, + PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Fix setting biarch_cpu macro. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. + + -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 + +gcc-4.5 (4.5.0-3) experimental; urgency=low + + * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: + PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, + PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, + PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, + PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, + PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, + PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, + PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, + PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, + PR debug/44028, PR rtl-optimization/44012, PR target/44046, + PR documentation/44016, PR fortran/44036, PR fortran/40728, + PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, + PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, + PR fortran/43591, PR fortran/44135, PR libstdc++/43259. + + [ Matthias Klose ] + * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. + * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. + * Backport two libjava fixes from the trunk to run josm with gcj. + * Ubuntu only: + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Update configury to be able to target i686 instead of i486 on i386. + + [ Aurelien Jarno] + * Don't link with --hash-style=both on mips/mipsel as GNU hash is not + compatible with the MIPS ABI. + * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit + mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). + + -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 + +gcc-4.5 (4.5.0-2) experimental; urgency=low + + * Update to SVN 20100419 from the gcc-4_5-branch. + - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, + PR fortran/31538, PR fortran/30073, PR target/43662, + PR tree-optimization/43572, PR tree-optimization/43771. + * Install the linker plugin. + * Search the linker plugin as a readable, not an executable file. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + * Sequel to PR40521, fix -g to generate .eh_frame on ARM. + * On ARM, let gcj pass --no-merge-exidx-entries to the linker. + * Build-depend/depend on binutils snapshot. + * Update NEWS.html and NEWS.gcc. + + -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 + +gcc-4.5 (4.5.0-1) experimental; urgency=low + + * GCC 4.5.0 release. + * Always apply biarch patches. + * Build the lto-linker plugin again. Closes: #575448. + * Run the libstdc++v3 testsuite on armel again. + * Fix --enable-libstdcxx-time documentation, show configure result. + * On linux targets always pass --no-add-needed to the linker. + * Update the patch to search for plugins in a default plugin directory. + * Fix java installations in snapshot builds. + * Configure --with-plugin-ld=ld.gold. + * Linker selection: ld is used by default, to use the gold linker, + pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr + is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld + for ld.bfd or /usr/lib/gold-ld for ld.gold. + * Don't apply the gold-and-ld patch for now. + * Stop building the documentation for dfsg compliant builds. Closes: #571759. + + -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 + +gcc-4.5 (4.5-20100404-1) experimental; urgency=low + + * Update to SVN 20100404 from the trunk. + * Fix build failures building cross compilers configure --with-ld. + * lib32gcc1: Set priority to `extra'. + * Apply proposed patch to search for plugins in a default plugin directory. + * In snapshot builds, use for javac/ecj1 the jvm provided by the package. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + + -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 + +gcc-4.5 (4.5-20100321-1) experimental; urgency=low + + * Update to SVN 20100321 from the trunk. + * gcj-4.5-jre-headless: Stop providing java-virtual-machine. + * gcj-4.5-plugin-dev: Don't suggest mudflap packages. + * Apply proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 + +gcc-4.5 (4.5-20100227-1) experimental; urgency=low + + * Update to SVN 20100227 from the trunk. + * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when + defaulting to thumb mode (Timeouts on the Ubuntu buildd). + + -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 + +gcc-4.5 (4.5-20100222-1) experimental; urgency=low + + * Update to SVN 20100222 from the trunk. + - Install additional header files needed by plugins. Closes: #562881. + * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. + * Update libstdc++6 symbols files. + + -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 + +gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low + + * Update to SVN 20100216 from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + * Don't run the libstdc++-v3 testsuite in thumb mode on armel + to work around buildd timeout (see PR target/42509). + + -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 + +gcc-4.5 (4.5-20100204-1) experimental; urgency=low + + * Update to SVN 20100204 from the trunk. + + -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 + +gcc-4.5 (4.5-20100202-1) experimental; urgency=low + + * Update to SVN 20100202 from the trunk. + - gcc-stack_chk_fail-check.diff: Remove, applied upstream. + * Update libstdc++6 symbol files. + * Build gnat in snapshot builds on arm. + * Configure with --enable-checking=yes for snapshot builds, and for + 4.5 builds before the release. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + * When building the hppa64 cross compiler, add $(builddir)/gcc to + LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. + * On sh4-linux, use sh as java architecture name instead of sh4. + * On armel, build gnat-4.5 using gcc-snapshot. + * Revert the bump of the libgcc soversion on hppa (6 -> 4). + + -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 + +gcc-4.5 (4.5-20100107-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100107 from the trunk. + * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). + * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. + * Build-depend again on autogen. + * Work around PR lto/41569 (installation bug when configured with + --enabled-gold). + * On armel run the testsuite both in arm and thumb mode, when the + distribution is supporthing tumb processors. + * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but + applying libcpp-arm-workaround.diff. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 + +gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low + + * Update to SVN 20100106 from the trunk. + * gcj-4.5-jdk: Include /usr/lib/jvm-exports. + * Rename libgcc symbols file for hppa. + * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap + failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). + * Base the source build-dependency on the package version instead of the + gcc version. + + -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 + +gcc-4.5 (4.5-20100103-1) experimental; urgency=low + + * Update to SVN 20100103 from the trunk. + + [ Samuel Thibault ] + * Update hurd patch for 4.5. Closes: #562802. + + [ Aurelien Jarno ] + * Remove patches/kbsd-gnu-ada.diff (merged upstream). + + [ Matthias Klose ] + * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. + * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Bump libgcc soversion on hppa (4 -> 6). + * Default to v9a (ultrasparc) on sparc*-linux. + + -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 + +gcc-4.5 (4.5-20091226-1) experimental; urgency=low + + * Update to SVN 20091226 from the trunk. + * Fix powerpc spu installation. + * Enable multiarch for sh4. + * Fix libffi multilib test runs. + * Configure the hppa -> hppa64 cross compiler --with-system-zlib. + * gcc-4.5-hppa64: Don't ship info dir file. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + + -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 + +gcc-4.5 (4.5-20091223-1) experimental; urgency=low + + * Update to SVN 20091223 from the trunk. + + [ Matthias Klose ] + * Update hardening patches for 4.5. + * Don't call install-info directly, depend on dpkg | install-info instead. + * Add conflicts with packages built from GCC 4.4 sources. + * On ARM, pass --hash-style=both to ld. + * Update libgfortran3 symbols file. + * Update libstdc++6 symbols file. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 + +gcc-4.5 (4.5-20091220-1) experimental; urgency=low + + * Update to SVN 20091220 from the trunk. + - Remove patches applied upstream: arm-boehm-gc-locks.diff, + arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, + gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, + gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, + gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, + libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, + pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, + s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. + - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, + libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, + libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, + rename-info-files.diff, s390-biarch.diff. + * Stop building the protoize package, removed from the GCC 4.5 sources. + * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. + * libstdc++6-4.5-dbg: Install the python files for use with gdb. + * Build java packages from the gcc-4.5 source package. + + -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow one to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 diff --git a/compat b/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +11 diff --git a/control b/control new file mode 100644 index 0000000..5237ce5 --- /dev/null +++ b/control @@ -0,0 +1,5778 @@ +Source: gcc-15 +Section: devel +Priority: optional +Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.7.4 +Build-Depends: debhelper (>= 11), dpkg-dev (>= 1.17.14), g++-multilib [amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32] , + libc6.1-dev (>= 2.23-1~) [alpha ia64] | libc0.3-dev (>= 2.23-1~) [hurd-amd64 hurd-i386] | libc6-dev (>= 2.23-1~), libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el sparc64 x32], libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, + linux-libc-dev [m68k], + m4, libtool, autoconf2.69, gcc-16-base, + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + libzstd-dev, zlib1g-dev, systemtap-sdt-dev [linux-any], + binutils:native (>= 2.39), binutils-hppa64-linux-gnu:native (>= 2.39) [hppa amd64 i386 x32], + gperf, bison, flex, + gettext, nvptx-tools [amd64 arm64 ppc64el], amdgcn-tools-21 [amd64], + texinfo, locales-all, sharutils, + procps, gnat-15:native [!arc !ia64 !sh3 !sh3eb !sh4eb], g++-15:native, netbase, gdc-15:native [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386], python3:any, cargo [!alpha !hppa !ia64 !m68k !sh4 !x32 !hurd-amd64 !hurd-i386], + libisl-dev (>= 0.20), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64], lib64z1-dev [i386], unzip , + dejagnu [!alpha !hurd-amd64 !hurd-i386] , git [!alpha !hurd-amd64 !hurd-i386] , python3-pytest [!alpha !hppa !m68k !sh4 !x32] , python3-check-jsonschema [!alpha !hppa !m68k !sh4 !x32] , chrpath, lsb-release, quilt, time, + pkgconf, libgc-dev, + g++-15-for-host , gobjc-15-for-host [!avr] , gfortran-15-for-host , gdc-15-for-host [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386] , gccgo-15-for-host [!arc !avr !hppa !loong64 !m68k !sh4] , gnat-15-for-host [!arc !ia64 !sh3 !sh3eb !sh4eb] , gm2-15-for-host [!powerpc !ppc64 !sh4] , gcobol-15-for-host [!alpha !arc !hppa !loong64 !m68k !mips !mipsel !mips64 !mips64el !powerpc !ppc64 !s390x !sh4 !sparc !sparc64 !x32 !i386 !hurd-i386 !arm !armel !armhf !hurd-amd64 !hurd-i386] , ga68-15-for-host , +Build-Depends-Indep: doxygen , graphviz , ghostscript , texlive-latex-base , xsltproc , libxml2-utils , docbook-xsl-ns , +Homepage: https://gcc.gnu.org/ +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian +XS-Testsuite: autopkgtest +Rules-Requires-Root: binary-targets + +Package: gcc-15-base +Architecture: any +Multi-Arch: same +Section: libs +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). + +Package: libgcc-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Breaks: libtsan2 (<< 12-20211113-2~) +Replaces: libtsan2 (<< 12-20211113-2~) +Multi-Arch: same +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib64gcc-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libn32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libx32gcc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Recommends: ${dep:libcdev} +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: gcc-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: cpp-15-alpha-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-alpha-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-alpha-linux-gnu +Description: GNU C compiler for the alpha-linux-gnu architecture + This is the GNU C compiler for the alpha-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: cpp-15-x86-64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-x86-64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-x86-64-linux-gnu +Description: GNU C compiler for the x86_64-linux-gnu architecture + This is the GNU C compiler for the x86_64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: cpp-15-arm-linux-gnueabi (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-arm-linux-gnueabi (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-arm-linux-gnueabi +Description: GNU C compiler for the arm-linux-gnueabi architecture + This is the GNU C compiler for the arm-linux-gnueabi architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: cpp-15-arm-linux-gnueabihf (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-arm-linux-gnueabihf (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-arm-linux-gnueabihf +Description: GNU C compiler for the arm-linux-gnueabihf architecture + This is the GNU C compiler for the arm-linux-gnueabihf architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: cpp-15-aarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-aarch64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-aarch64-linux-gnu +Description: GNU C compiler for the aarch64-linux-gnu architecture + This is the GNU C compiler for the aarch64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: cpp-15-i686-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-i686-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-i686-linux-gnu +Description: GNU C compiler for the i686-linux-gnu architecture + This is the GNU C compiler for the i686-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: cpp-15-loongarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-loongarch64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-loongarch64-linux-gnu +Description: GNU C compiler for the loongarch64-linux-gnu architecture + This is the GNU C compiler for the loongarch64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: cpp-15-mipsel-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsel-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsel-linux-gnu +Description: GNU C compiler for the mipsel-linux-gnu architecture + This is the GNU C compiler for the mipsel-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: cpp-15-mips64-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64-linux-gnuabi64 +Description: GNU C compiler for the mips64-linux-gnuabi64 architecture + This is the GNU C compiler for the mips64-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: cpp-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64el-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64el-linux-gnuabi64 +Description: GNU C compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU C compiler for the mips64el-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: cpp-15-mips64-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64-linux-gnuabin32 +Description: GNU C compiler for the mips64-linux-gnuabin32 architecture + This is the GNU C compiler for the mips64-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: cpp-15-powerpc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc-linux-gnu +Description: GNU C compiler for the powerpc-linux-gnu architecture + This is the GNU C compiler for the powerpc-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: cpp-15-powerpc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc64-linux-gnu +Description: GNU C compiler for the powerpc64-linux-gnu architecture + This is the GNU C compiler for the powerpc64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: cpp-15-powerpc64le-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-powerpc64le-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-powerpc64le-linux-gnu +Description: GNU C compiler for the powerpc64le-linux-gnu architecture + This is the GNU C compiler for the powerpc64le-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: cpp-15-m68k-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-m68k-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-m68k-linux-gnu +Description: GNU C compiler for the m68k-linux-gnu architecture + This is the GNU C compiler for the m68k-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: cpp-15-riscv64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-riscv64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-riscv64-linux-gnu +Description: GNU C compiler for the riscv64-linux-gnu architecture + This is the GNU C compiler for the riscv64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: cpp-15-sh4-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sh4-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sh4-linux-gnu +Description: GNU C compiler for the sh4-linux-gnu architecture + This is the GNU C compiler for the sh4-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: cpp-15-sparc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sparc-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sparc-linux-gnu +Description: GNU C compiler for the sparc-linux-gnu architecture + This is the GNU C compiler for the sparc-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: cpp-15-sparc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-sparc64-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-sparc64-linux-gnu +Description: GNU C compiler for the sparc64-linux-gnu architecture + This is the GNU C compiler for the sparc64-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: cpp-15-s390x-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-s390x-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-s390x-linux-gnu +Description: GNU C compiler for the s390x-linux-gnu architecture + This is the GNU C compiler for the s390x-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: cpp-15-x86-64-linux-gnux32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-x86-64-linux-gnux32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-x86-64-linux-gnux32 +Description: GNU C compiler for the x86_64-linux-gnux32 architecture + This is the GNU C compiler for the x86_64-linux-gnux32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: cpp-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mips64el-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mips64el-linux-gnuabin32 +Description: GNU C compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU C compiler for the mips64el-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa32r6-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa32r6-linux-gnu +Description: GNU C compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU C compiler for the mipsisa32r6-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa32r6el-linux-gnu (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa32r6el-linux-gnu +Description: GNU C compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU C compiler for the mipsisa32r6el-linux-gnu architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6el-linux-gnuabi64 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: cpp-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils-mipsisa64r6el-linux-gnuabin32 (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + a fairly portable optimizing compiler for C. + +Package: gcc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), + cpp-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU C compiler for the host architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gcc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:Version}), cpp-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU C compiler for the build architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package. + +Package: gcc-15 +Architecture: any +Depends: gcc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), + cpp-15 (= ${gcc:Version}), + binutils (>= ${binutils:Version}), + ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp-15 (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}), + gcc-15-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (multilib support) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gcc-15-test-results +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. + +Package: gcc-15-plugin-dev +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.0), ${shlibs:Depends}, ${misc:Depends} +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. + +Package: gcc-15-hppa64-linux-gnu +Architecture: hppa amd64 i386 x32 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: cpp-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for alpha-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + alpha-linux-gnu architecture but not the compiler. + +Package: cpp-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for x86_64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + x86_64-linux-gnu architecture but not the compiler. + +Package: cpp-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for arm-linux-gnueabi + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arm-linux-gnueabi architecture but not the compiler. + +Package: cpp-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for arm-linux-gnueabihf + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arm-linux-gnueabihf architecture but not the compiler. + +Package: cpp-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for aarch64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + aarch64-linux-gnu architecture but not the compiler. + +Package: cpp-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for i686-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + i686-linux-gnu architecture but not the compiler. + +Package: cpp-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for loongarch64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + loongarch64-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsel-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsel-linux-gnu architecture but not the compiler. + +Package: cpp-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64el-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64el-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc-linux-gnu architecture but not the compiler. + +Package: cpp-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc64-linux-gnu architecture but not the compiler. + +Package: cpp-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for powerpc64le-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + powerpc64le-linux-gnu architecture but not the compiler. + +Package: cpp-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for m68k-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + m68k-linux-gnu architecture but not the compiler. + +Package: cpp-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for riscv64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + riscv64-linux-gnu architecture but not the compiler. + +Package: cpp-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sh4-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sh4-linux-gnu architecture but not the compiler. + +Package: cpp-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sparc-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sparc-linux-gnu architecture but not the compiler. + +Package: cpp-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for sparc64-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + sparc64-linux-gnu architecture but not the compiler. + +Package: cpp-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for s390x-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + s390x-linux-gnu architecture but not the compiler. + +Package: cpp-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for x86_64-linux-gnux32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + x86_64-linux-gnux32 architecture but not the compiler. + +Package: cpp-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mips64el-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mips64el-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa32r6-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa32r6-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa32r6el-linux-gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa32r6el-linux-gnu architecture but not the compiler. + +Package: cpp-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabi64 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6el-linux-gnuabi64 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabin32 + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + mipsisa64r6el-linux-gnuabin32 architecture but not the compiler. + +Package: cpp-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: GNU C preprocessor for the host architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the host architecture but not + the compiler. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: cpp-15-for-build +Architecture: all +Multi-Arch: foreign +Section: interpreters +Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:Version}), ${misc:Depends} +Description: GNU C preprocessor for the build architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the build architecture but not + the compiler. + . + This is a dependency package. + +Package: cpp-15 +Architecture: any +Section: interpreters +Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: gcc-15-locales +Architecture: all +Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-15 (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. + +Package: g++-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-alpha-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the alpha-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + alpha-linux-gnu architecture. + +Package: g++-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-x86-64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the x86_64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + x86_64-linux-gnu architecture. + +Package: g++-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-arm-linux-gnueabi +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the arm-linux-gnueabi architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arm-linux-gnueabi architecture. + +Package: g++-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-arm-linux-gnueabihf +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the arm-linux-gnueabihf architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arm-linux-gnueabihf architecture. + +Package: g++-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-aarch64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the aarch64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + aarch64-linux-gnu architecture. + +Package: g++-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-i686-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the i686-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + i686-linux-gnu architecture. + +Package: g++-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-loongarch64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the loongarch64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + loongarch64-linux-gnu architecture. + +Package: g++-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsel-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsel-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsel-linux-gnu architecture. + +Package: g++-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64-linux-gnuabi64 architecture. + +Package: g++-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64el-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64el-linux-gnuabi64 architecture. + +Package: g++-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64-linux-gnuabin32 architecture. + +Package: g++-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc-linux-gnu architecture. + +Package: g++-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc64-linux-gnu architecture. + +Package: g++-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-powerpc64le-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the powerpc64le-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + powerpc64le-linux-gnu architecture. + +Package: g++-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-m68k-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the m68k-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + m68k-linux-gnu architecture. + +Package: g++-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-riscv64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the riscv64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + riscv64-linux-gnu architecture. + +Package: g++-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sh4-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sh4-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sh4-linux-gnu architecture. + +Package: g++-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sparc-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sparc-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sparc-linux-gnu architecture. + +Package: g++-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-sparc64-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the sparc64-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + sparc64-linux-gnu architecture. + +Package: g++-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-s390x-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the s390x-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + s390x-linux-gnu architecture. + +Package: g++-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-x86-64-linux-gnux32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the x86_64-linux-gnux32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + x86_64-linux-gnux32 architecture. + +Package: g++-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mips64el-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mips64el-linux-gnuabin32 architecture. + +Package: g++-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa32r6-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa32r6-linux-gnu architecture. + +Package: g++-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa32r6el-linux-gnu +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa32r6el-linux-gnu architecture. + +Package: g++-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6-linux-gnuabi64 architecture. + +Package: g++-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6el-linux-gnuabi64 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6el-linux-gnuabi64 architecture. + +Package: g++-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6-linux-gnuabin32 architecture. + +Package: g++-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler-mipsisa64r6el-linux-gnuabin32 +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + mipsisa64r6el-linux-gnuabin32 architecture. + +Package: g++-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), g++-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU C++ compiler for the host architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the host architecture. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: g++-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:Version}), ${misc:Depends}, + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) +Description: GNU C++ compiler for the build architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. + . + This is a dependency package. + +Package: g++-15 +Architecture: any +Depends: g++-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), g++-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib support) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgccjit15 +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev, binutils, ${dep:libcdev}, + ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-15-doc +Section: doc +Architecture: all +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, + libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, + libgccjit-13-doc, libgccjit-14-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-15-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgccjit15 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgccjit-15-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +#Package: libgdiagnostics`'PV-doc +#Section: doc +#Architecture: all +#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +#Conflicts: libgdiagnostics-14-doc, +#Description: GCC diagnostic-handling code wrapped into a library (documentation) +# GCCs diagnostic-handling code covers things like +# - quoting pertinent source code (with a cache) +# - underlining points and ranges in the source code, possibly with labels +# - emitting fix-it hints +# - generating patches from fix-it hints +# - SARIF output + +Package: libgdiagnostics-15-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgdiagnostic-15-dbg +Description: GCC diagnostic-handling code wrapped into a library (development files) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +Package: gcc-15-diagnostics +Section: devel +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC diagnostic tools + Currently only provides the sarif-replay command-line tool, which takes + SARIF files as input, and uses libdiagnostics to replay any diagnostics + within them as if they were GCC diagnostics. + +Package: gobjc++-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-alpha-linux-gnu (= ${gcc:Version}), g++-15-alpha-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-alpha-linux-gnu +Description: GNU Objective-C++ compiler for the alpha-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + alpha-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnu (= ${gcc:Version}), g++-15-x86-64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-x86-64-linux-gnu +Description: GNU Objective-C++ compiler for the x86_64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + x86_64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabi (= ${gcc:Version}), g++-15-arm-linux-gnueabi (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-arm-linux-gnueabi +Description: GNU Objective-C++ compiler for the arm-linux-gnueabi architecture + This is the GNU Objective-C++ compiler for the + arm-linux-gnueabi architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabihf (= ${gcc:Version}), g++-15-arm-linux-gnueabihf (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-arm-linux-gnueabihf +Description: GNU Objective-C++ compiler for the arm-linux-gnueabihf architecture + This is the GNU Objective-C++ compiler for the + arm-linux-gnueabihf architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-aarch64-linux-gnu (= ${gcc:Version}), g++-15-aarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-aarch64-linux-gnu +Description: GNU Objective-C++ compiler for the aarch64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + aarch64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-i686-linux-gnu (= ${gcc:Version}), g++-15-i686-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-i686-linux-gnu +Description: GNU Objective-C++ compiler for the i686-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + i686-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-loongarch64-linux-gnu (= ${gcc:Version}), g++-15-loongarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-loongarch64-linux-gnu +Description: GNU Objective-C++ compiler for the loongarch64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + loongarch64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsel-linux-gnu (= ${gcc:Version}), g++-15-mipsel-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsel-linux-gnu +Description: GNU Objective-C++ compiler for the mipsel-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsel-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mips64-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64el-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mips64el-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mips64-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc-linux-gnu (= ${gcc:Version}), g++-15-powerpc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64-linux-gnu (= ${gcc:Version}), g++-15-powerpc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc64-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64le-linux-gnu (= ${gcc:Version}), g++-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-powerpc64le-linux-gnu +Description: GNU Objective-C++ compiler for the powerpc64le-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + powerpc64le-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-m68k-linux-gnu (= ${gcc:Version}), g++-15-m68k-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-m68k-linux-gnu +Description: GNU Objective-C++ compiler for the m68k-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + m68k-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-riscv64-linux-gnu (= ${gcc:Version}), g++-15-riscv64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-riscv64-linux-gnu +Description: GNU Objective-C++ compiler for the riscv64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + riscv64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sh4-linux-gnu (= ${gcc:Version}), g++-15-sh4-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sh4-linux-gnu +Description: GNU Objective-C++ compiler for the sh4-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sh4-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc-linux-gnu (= ${gcc:Version}), g++-15-sparc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sparc-linux-gnu +Description: GNU Objective-C++ compiler for the sparc-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sparc-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc64-linux-gnu (= ${gcc:Version}), g++-15-sparc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-sparc64-linux-gnu +Description: GNU Objective-C++ compiler for the sparc64-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + sparc64-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-s390x-linux-gnu (= ${gcc:Version}), g++-15-s390x-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-s390x-linux-gnu +Description: GNU Objective-C++ compiler for the s390x-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + s390x-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnux32 (= ${gcc:Version}), g++-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-x86-64-linux-gnux32 +Description: GNU Objective-C++ compiler for the x86_64-linux-gnux32 architecture + This is the GNU Objective-C++ compiler for the + x86_64-linux-gnux32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mips64el-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mips64el-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa32r6-linux-gnu +Description: GNU Objective-C++ compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsisa32r6-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa32r6el-linux-gnu +Description: GNU Objective-C++ compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Objective-C++ compiler for the + mipsisa32r6el-linux-gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6el-linux-gnuabi64 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Objective-C++ compiler for the + mipsisa64r6el-linux-gnuabin32 architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gobjc++-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (>= ${gcc:SoftVersion}), + gobjc-15-for-host (= ${gcc:Version}), g++-15-for-host (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Objective-C++ compiler for the host architecture + This is the GNU Objective-C++ compiler for the host architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gobjc++-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc++-15 (>= ${gcc:Version}), + gobjc-15-for-build (= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Objective-C++ compiler for the build architecture + This is the GNU Objective-C++ compiler for the build architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc++-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), g++-15 (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc++-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15 (= ${gcc:Version}), g++-15-multilib (= ${gcc:Version}), gobjc-15-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gobjc-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-alpha-linux-gnu +Description: GNU Objective-C compiler for the alpha-linux-gnu architecture + This is the GNU Objective-C compiler for the alpha-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-x86-64-linux-gnu +Description: GNU Objective-C compiler for the x86_64-linux-gnu architecture + This is the GNU Objective-C compiler for the x86_64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-arm-linux-gnueabi +Description: GNU Objective-C compiler for the arm-linux-gnueabi architecture + This is the GNU Objective-C compiler for the arm-linux-gnueabi + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-arm-linux-gnueabihf +Description: GNU Objective-C compiler for the arm-linux-gnueabihf architecture + This is the GNU Objective-C compiler for the arm-linux-gnueabihf + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-aarch64-linux-gnu +Description: GNU Objective-C compiler for the aarch64-linux-gnu architecture + This is the GNU Objective-C compiler for the aarch64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-i686-linux-gnu +Description: GNU Objective-C compiler for the i686-linux-gnu architecture + This is the GNU Objective-C compiler for the i686-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-loongarch64-linux-gnu +Description: GNU Objective-C compiler for the loongarch64-linux-gnu architecture + This is the GNU Objective-C compiler for the loongarch64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsel-linux-gnu +Description: GNU Objective-C compiler for the mipsel-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsel-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64-linux-gnuabi64 +Description: GNU Objective-C compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mips64-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64el-linux-gnuabi64 +Description: GNU Objective-C compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mips64el-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64-linux-gnuabin32 +Description: GNU Objective-C compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mips64-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc-linux-gnu +Description: GNU Objective-C compiler for the powerpc-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc64-linux-gnu +Description: GNU Objective-C compiler for the powerpc64-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-powerpc64le-linux-gnu +Description: GNU Objective-C compiler for the powerpc64le-linux-gnu architecture + This is the GNU Objective-C compiler for the powerpc64le-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-m68k-linux-gnu +Description: GNU Objective-C compiler for the m68k-linux-gnu architecture + This is the GNU Objective-C compiler for the m68k-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-riscv64-linux-gnu +Description: GNU Objective-C compiler for the riscv64-linux-gnu architecture + This is the GNU Objective-C compiler for the riscv64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sh4-linux-gnu +Description: GNU Objective-C compiler for the sh4-linux-gnu architecture + This is the GNU Objective-C compiler for the sh4-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sparc-linux-gnu +Description: GNU Objective-C compiler for the sparc-linux-gnu architecture + This is the GNU Objective-C compiler for the sparc-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-sparc64-linux-gnu +Description: GNU Objective-C compiler for the sparc64-linux-gnu architecture + This is the GNU Objective-C compiler for the sparc64-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-s390x-linux-gnu +Description: GNU Objective-C compiler for the s390x-linux-gnu architecture + This is the GNU Objective-C compiler for the s390x-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-x86-64-linux-gnux32 +Description: GNU Objective-C compiler for the x86_64-linux-gnux32 architecture + This is the GNU Objective-C compiler for the x86_64-linux-gnux32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mips64el-linux-gnuabin32 +Description: GNU Objective-C compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mips64el-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa32r6-linux-gnu +Description: GNU Objective-C compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsisa32r6-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa32r6el-linux-gnu +Description: GNU Objective-C compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Objective-C compiler for the mipsisa32r6el-linux-gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6-linux-gnuabi64 +Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6el-linux-gnuabi64 +Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6-linux-gnuabin32 +Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), +Provides: objc-compiler-mipsisa64r6el-linux-gnuabin32 +Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gobjc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Objective-C compiler for the host architecture + This is the GNU Objective-C compiler for the host architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gobjc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc-15 (>= ${gcc:Version}), ${misc:Depends}, + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) +Description: GNU Objective-C compiler for the build architecture + This is the GNU Objective-C compiler for the build architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C compiler (multilib support) + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libobjc-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libx32objc-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: gfortran-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the alpha-linux-gnu architecture + This is the GNU Fortran compiler for the alpha-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the x86_64-linux-gnu architecture + This is the GNU Fortran compiler for the x86_64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the arm-linux-gnueabi architecture + This is the GNU Fortran compiler for the arm-linux-gnueabi architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the arm-linux-gnueabihf architecture + This is the GNU Fortran compiler for the arm-linux-gnueabihf architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the aarch64-linux-gnu architecture + This is the GNU Fortran compiler for the aarch64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the i686-linux-gnu architecture + This is the GNU Fortran compiler for the i686-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the loongarch64-linux-gnu architecture + This is the GNU Fortran compiler for the loongarch64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsel-linux-gnu architecture + This is the GNU Fortran compiler for the mipsel-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mips64-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mips64-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc64-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the powerpc64le-linux-gnu architecture + This is the GNU Fortran compiler for the powerpc64le-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the m68k-linux-gnu architecture + This is the GNU Fortran compiler for the m68k-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the riscv64-linux-gnu architecture + This is the GNU Fortran compiler for the riscv64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sh4-linux-gnu architecture + This is the GNU Fortran compiler for the sh4-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sparc-linux-gnu architecture + This is the GNU Fortran compiler for the sparc-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the sparc64-linux-gnu architecture + This is the GNU Fortran compiler for the sparc64-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the s390x-linux-gnu architecture + This is the GNU Fortran compiler for the s390x-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the x86_64-linux-gnux32 architecture + This is the GNU Fortran compiler for the x86_64-linux-gnux32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran-15-doc, + libcoarrays-dev +Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + +Package: gfortran-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gfortran-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Fortran compiler for the host architecture + This is the GNU Fortran compiler for the host architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gfortran-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gfortran-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Fortran compiler for the build architecture + This is the GNU Fortran compiler for the build architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gfortran-15 +Architecture: any +Depends: gfortran-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-15-doc +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gfortran-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran compiler (multilib support) + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgfortran-15-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libx32gfortran-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: gccgo-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the alpha-linux-gnu architecture + This is the GNU Go compiler for the alpha-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the x86_64-linux-gnu architecture + This is the GNU Go compiler for the x86_64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the arm-linux-gnueabi architecture + This is the GNU Go compiler for the arm-linux-gnueabi architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the arm-linux-gnueabihf architecture + This is the GNU Go compiler for the arm-linux-gnueabihf architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the aarch64-linux-gnu architecture + This is the GNU Go compiler for the aarch64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the i686-linux-gnu architecture + This is the GNU Go compiler for the i686-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsel-linux-gnu architecture + This is the GNU Go compiler for the mipsel-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Go compiler for the mips64-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Go compiler for the mips64el-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Go compiler for the mips64-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc-linux-gnu architecture + This is the GNU Go compiler for the powerpc-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc64-linux-gnu architecture + This is the GNU Go compiler for the powerpc64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the powerpc64le-linux-gnu architecture + This is the GNU Go compiler for the powerpc64le-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the riscv64-linux-gnu architecture + This is the GNU Go compiler for the riscv64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the sparc-linux-gnu architecture + This is the GNU Go compiler for the sparc-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the sparc64-linux-gnu architecture + This is the GNU Go compiler for the sparc64-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the s390x-linux-gnu architecture + This is the GNU Go compiler for the s390x-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the x86_64-linux-gnux32 architecture + This is the GNU Go compiler for the x86_64-linux-gnux32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Go compiler for the mips64el-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Go compiler for the mipsisa32r6-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Go compiler for the mipsisa32r6el-linux-gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + +Package: gccgo-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Go compiler for the host architecture + This is the GNU Go compiler for the host architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccgo-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccgo-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Go compiler for the build architecture + This is the GNU Go compiler for the build architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + This is a dependency package. + +Package: gccgo-15 +Architecture: any +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-15-doc, , +Conflicts: ${golang:Conflicts} +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gccgo-15-multilib +Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 +Depends: gcc-15-base (= ${gcc:Version}), gccgo-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Description: GNU Go compiler (multilib support) + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgo-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgo24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libx32go-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libgo24 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32go24 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go24 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libstdc++-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), + libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends} +Suggests: libstdc++-15-doc +Provides: libstdc++-dev +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libstdc++-15-pic +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (shared library subset kit) + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. + +Package: libstdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + , ${shlibs:Depends}, ${misc:Depends} +Provides: +Multi-Arch: same +Recommends: libstdc++-15-dev (= ${gcc:Version}) +Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, + libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, + libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg, + libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg, + libstdc++6-4.9-dbg, libstdc++6-5-dbg, libstdc++6-6-dbg, + libstdc++6-7-dbg, libstdc++6-8-dbg, libstdc++6-9-dbg, + libstdc++6-10-dbg, libstdc++6-11-dbg, libstdc++6-12-dbg, + libstdc++6-13-dbg, libstdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, + lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, + lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, + lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg, + lib32stdc++6-5-dbg, lib32stdc++6-6-dbg, lib32stdc++6-7-dbg, + lib32stdc++6-8-dbg, lib32stdc++6-9-dbg, lib32stdc++6-10-dbg, + lib32stdc++6-11-dbg, lib32stdc++6-12-dbg, lib32stdc++6-13-dbg, + lib32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib64stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib64stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, + lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, + lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, + lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg, + lib64stdc++6-5-dbg, lib64stdc++6-6-dbg, lib64stdc++6-7-dbg, + lib64stdc++6-8-dbg, lib64stdc++6-9-dbg, lib64stdc++6-10-dbg, + lib64stdc++6-11-dbg, lib64stdc++6-12-dbg, lib64stdc++6-13-dbg, + lib64stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libn32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libn32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, + libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, + libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, + libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg, + libn32stdc++6-5-dbg, libn32stdc++6-6-dbg, libn32stdc++6-7-dbg, + libn32stdc++6-8-dbg, libn32stdc++6-9-dbg, libn32stdc++6-10-dbg, + libn32stdc++6-11-dbg, libn32stdc++6-12-dbg, libn32stdc++6-13-dbg, + libn32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libx32stdc++-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libx32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libx32stdc++6-15-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Depends: gcc-15-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-15-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, + libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg, + libx32stdc++6-5-dbg, libx32stdc++6-6-dbg, libx32stdc++6-7-dbg, + libx32stdc++6-8-dbg, libx32stdc++6-9-dbg, libx32stdc++6-10-dbg, + libx32stdc++6-11-dbg, libx32stdc++6-12-dbg, libx32stdc++6-13-dbg, + libx32stdc++6-14-dbg, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libstdc++-15-doc +Build-Profiles: +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, + libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. + +Package: gnat-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-alpha-linux-gnu, gnat-8-alpha-linux-gnu, + gnat-9-alpha-linux-gnu, gnat-10-alpha-linux-gnu, + gnat-11-alpha-linux-gnu, gnat-12-alpha-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the alpha-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-x86-64-linux-gnu, gnat-8-x86-64-linux-gnu, + gnat-9-x86-64-linux-gnu, gnat-10-x86-64-linux-gnu, + gnat-11-x86-64-linux-gnu, gnat-12-x86-64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the x86_64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-arm-linux-gnueabi, gnat-8-arm-linux-gnueabi, + gnat-9-arm-linux-gnueabi, gnat-10-arm-linux-gnueabi, + gnat-11-arm-linux-gnueabi, gnat-12-arm-linux-gnueabi, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the arm-linux-gnueabi architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-arm-linux-gnueabihf, gnat-8-arm-linux-gnueabihf, + gnat-9-arm-linux-gnueabihf, gnat-10-arm-linux-gnueabihf, + gnat-11-arm-linux-gnueabihf, gnat-12-arm-linux-gnueabihf, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the arm-linux-gnueabihf architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-aarch64-linux-gnu, gnat-8-aarch64-linux-gnu, + gnat-9-aarch64-linux-gnu, gnat-10-aarch64-linux-gnu, + gnat-11-aarch64-linux-gnu, gnat-12-aarch64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the aarch64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-i686-linux-gnu, gnat-8-i686-linux-gnu, + gnat-9-i686-linux-gnu, gnat-10-i686-linux-gnu, + gnat-11-i686-linux-gnu, gnat-12-i686-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the i686-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-loongarch64-linux-gnu, gnat-8-loongarch64-linux-gnu, + gnat-9-loongarch64-linux-gnu, gnat-10-loongarch64-linux-gnu, + gnat-11-loongarch64-linux-gnu, gnat-12-loongarch64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the loongarch64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsel-linux-gnu, gnat-8-mipsel-linux-gnu, + gnat-9-mipsel-linux-gnu, gnat-10-mipsel-linux-gnu, + gnat-11-mipsel-linux-gnu, gnat-12-mipsel-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsel-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64-linux-gnuabi64, gnat-8-mips64-linux-gnuabi64, + gnat-9-mips64-linux-gnuabi64, gnat-10-mips64-linux-gnuabi64, + gnat-11-mips64-linux-gnuabi64, gnat-12-mips64-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64el-linux-gnuabi64, gnat-8-mips64el-linux-gnuabi64, + gnat-9-mips64el-linux-gnuabi64, gnat-10-mips64el-linux-gnuabi64, + gnat-11-mips64el-linux-gnuabi64, gnat-12-mips64el-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64el-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64-linux-gnuabin32, gnat-8-mips64-linux-gnuabin32, + gnat-9-mips64-linux-gnuabin32, gnat-10-mips64-linux-gnuabin32, + gnat-11-mips64-linux-gnuabin32, gnat-12-mips64-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc-linux-gnu, gnat-8-powerpc-linux-gnu, + gnat-9-powerpc-linux-gnu, gnat-10-powerpc-linux-gnu, + gnat-11-powerpc-linux-gnu, gnat-12-powerpc-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc64-linux-gnu, gnat-8-powerpc64-linux-gnu, + gnat-9-powerpc64-linux-gnu, gnat-10-powerpc64-linux-gnu, + gnat-11-powerpc64-linux-gnu, gnat-12-powerpc64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-powerpc64le-linux-gnu, gnat-8-powerpc64le-linux-gnu, + gnat-9-powerpc64le-linux-gnu, gnat-10-powerpc64le-linux-gnu, + gnat-11-powerpc64le-linux-gnu, gnat-12-powerpc64le-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the powerpc64le-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-m68k-linux-gnu, gnat-8-m68k-linux-gnu, + gnat-9-m68k-linux-gnu, gnat-10-m68k-linux-gnu, + gnat-11-m68k-linux-gnu, gnat-12-m68k-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the m68k-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-riscv64-linux-gnu, gnat-8-riscv64-linux-gnu, + gnat-9-riscv64-linux-gnu, gnat-10-riscv64-linux-gnu, + gnat-11-riscv64-linux-gnu, gnat-12-riscv64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the riscv64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sh4-linux-gnu, gnat-8-sh4-linux-gnu, + gnat-9-sh4-linux-gnu, gnat-10-sh4-linux-gnu, + gnat-11-sh4-linux-gnu, gnat-12-sh4-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sh4-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sparc-linux-gnu, gnat-8-sparc-linux-gnu, + gnat-9-sparc-linux-gnu, gnat-10-sparc-linux-gnu, + gnat-11-sparc-linux-gnu, gnat-12-sparc-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sparc-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-sparc64-linux-gnu, gnat-8-sparc64-linux-gnu, + gnat-9-sparc64-linux-gnu, gnat-10-sparc64-linux-gnu, + gnat-11-sparc64-linux-gnu, gnat-12-sparc64-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the sparc64-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-s390x-linux-gnu, gnat-8-s390x-linux-gnu, + gnat-9-s390x-linux-gnu, gnat-10-s390x-linux-gnu, + gnat-11-s390x-linux-gnu, gnat-12-s390x-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the s390x-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-x86-64-linux-gnux32, gnat-8-x86-64-linux-gnux32, + gnat-9-x86-64-linux-gnux32, gnat-10-x86-64-linux-gnux32, + gnat-11-x86-64-linux-gnux32, gnat-12-x86-64-linux-gnux32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the x86_64-linux-gnux32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mips64el-linux-gnuabin32, gnat-8-mips64el-linux-gnuabin32, + gnat-9-mips64el-linux-gnuabin32, gnat-10-mips64el-linux-gnuabin32, + gnat-11-mips64el-linux-gnuabin32, gnat-12-mips64el-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mips64el-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa32r6-linux-gnu, gnat-8-mipsisa32r6-linux-gnu, + gnat-9-mipsisa32r6-linux-gnu, gnat-10-mipsisa32r6-linux-gnu, + gnat-11-mipsisa32r6-linux-gnu, gnat-12-mipsisa32r6-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa32r6-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa32r6el-linux-gnu, gnat-8-mipsisa32r6el-linux-gnu, + gnat-9-mipsisa32r6el-linux-gnu, gnat-10-mipsisa32r6el-linux-gnu, + gnat-11-mipsisa32r6el-linux-gnu, gnat-12-mipsisa32r6el-linux-gnu, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa32r6el-linux-gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6-linux-gnuabi64, gnat-8-mipsisa64r6-linux-gnuabi64, + gnat-9-mipsisa64r6-linux-gnuabi64, gnat-10-mipsisa64r6-linux-gnuabi64, + gnat-11-mipsisa64r6-linux-gnuabi64, gnat-12-mipsisa64r6-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6el-linux-gnuabi64, gnat-8-mipsisa64r6el-linux-gnuabi64, + gnat-9-mipsisa64r6el-linux-gnuabi64, gnat-10-mipsisa64r6el-linux-gnuabi64, + gnat-11-mipsisa64r6el-linux-gnuabi64, gnat-12-mipsisa64r6el-linux-gnuabi64, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabi64 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6-linux-gnuabin32, gnat-8-mipsisa64r6-linux-gnuabin32, + gnat-9-mipsisa64r6-linux-gnuabin32, gnat-10-mipsisa64r6-linux-gnuabin32, + gnat-11-mipsisa64r6-linux-gnuabin32, gnat-12-mipsisa64r6-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012 +Provides: gnat-15-${libgnat:alihash} +Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, + gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, + gnat-7-mipsisa64r6el-linux-gnuabin32, gnat-8-mipsisa64r6el-linux-gnuabin32, + gnat-9-mipsisa64r6el-linux-gnuabin32, gnat-10-mipsisa64r6el-linux-gnuabin32, + gnat-11-mipsisa64r6el-linux-gnuabin32, gnat-12-mipsisa64r6el-linux-gnuabin32, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabin32 architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: gnat-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gnat-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Ada compiler for the host architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gnat-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gnat-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Ada compiler for the build architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + This is a dependency package. + +Package: gnat-15 +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: gnat-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gnat-15-doc, ada-reference-manual-2012, gnat-15-sjlj +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: libgnat-15 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: gdc-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the x86_64-linux-gnu architecture + This is the GNU D compiler for the x86_64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the arm-linux-gnueabi architecture + This is the GNU D compiler for the arm-linux-gnueabi architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the arm-linux-gnueabihf architecture + This is the GNU D compiler for the arm-linux-gnueabihf architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the aarch64-linux-gnu architecture + This is the GNU D compiler for the aarch64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the i686-linux-gnu architecture + This is the GNU D compiler for the i686-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the loongarch64-linux-gnu architecture + This is the GNU D compiler for the loongarch64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsel-linux-gnu architecture + This is the GNU D compiler for the mipsel-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64-linux-gnuabi64 architecture + This is the GNU D compiler for the mips64-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64el-linux-gnuabi64 architecture + This is the GNU D compiler for the mips64el-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64-linux-gnuabin32 architecture + This is the GNU D compiler for the mips64-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc-linux-gnu architecture + This is the GNU D compiler for the powerpc-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc64-linux-gnu architecture + This is the GNU D compiler for the powerpc64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the powerpc64le-linux-gnu architecture + This is the GNU D compiler for the powerpc64le-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the riscv64-linux-gnu architecture + This is the GNU D compiler for the riscv64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the sparc-linux-gnu architecture + This is the GNU D compiler for the sparc-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the sparc64-linux-gnu architecture + This is the GNU D compiler for the sparc64-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the s390x-linux-gnu architecture + This is the GNU D compiler for the s390x-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the x86_64-linux-gnux32 architecture + This is the GNU D compiler for the x86_64-linux-gnux32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mips64el-linux-gnuabin32 architecture + This is the GNU D compiler for the mips64el-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa32r6-linux-gnu architecture + This is the GNU D compiler for the mipsisa32r6-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa32r6el-linux-gnu architecture + This is the GNU D compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU D compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU D compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU D compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU D compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gdc-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU D compiler (version 2) for the host architecture + This is the GNU D compiler for the host architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gdc-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU D compiler (version 2) for the build architecture + This is the GNU D compiler for the build architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + This is a dependency package. + +Package: gdc-15 +Architecture: any +Depends: gdc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +Description: GNU D compiler (version 2) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-15-multilib +Architecture: any +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2, multilib support) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgphobos6 (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib64gphobos6 (>= ${gdc:Version}), + lib64gcc-15-dev (= ${gcc:Version}), lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), lib32gphobos6 (>= ${gdc:Version}), + lib32gcc-15-dev (= ${gcc:Version}), lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libn32gphobos6 (>= ${gdc:Version}), + libn32gcc-15-dev (= ${gcc:Version}), libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos-15-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libx32gphobos6 (>= ${gdc:Version}), + libx32gcc-15-dev (= ${gcc:Version}), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68 +Breaks: dub (<< 1.16.0-1~) +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32phobos6 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos6 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: gm2-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the alpha-linux-gnu architecture + This is the GNU Modula-2 compiler for the alpha-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the x86_64-linux-gnu architecture + This is the GNU Modula-2 compiler for the x86_64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the arm-linux-gnueabi architecture + This is the GNU Modula-2 compiler for the arm-linux-gnueabi architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the arm-linux-gnueabihf architecture + This is the GNU Modula-2 compiler for the arm-linux-gnueabihf architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the aarch64-linux-gnu architecture + This is the GNU Modula-2 compiler for the aarch64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the i686-linux-gnu architecture + This is the GNU Modula-2 compiler for the i686-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the loongarch64-linux-gnu architecture + This is the GNU Modula-2 compiler for the loongarch64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsel-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsel-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture + This is the GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the m68k-linux-gnu architecture + This is the GNU Modula-2 compiler for the m68k-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the riscv64-linux-gnu architecture + This is the GNU Modula-2 compiler for the riscv64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the sparc-linux-gnu architecture + This is the GNU Modula-2 compiler for the sparc-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the sparc64-linux-gnu architecture + This is the GNU Modula-2 compiler for the sparc64-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the s390x-linux-gnu architecture + This is the GNU Modula-2 compiler for the s390x-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture + This is the GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gm2-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gm2-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Modula-2 compiler for the host architecture + This is the GNU Modula-2 compiler for the host architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gm2-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gm2-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Modula-2 compiler for the build architecture + This is the GNU Modula-2 compiler for the build architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gm2-15 +Architecture: any +Depends: gm2-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} +Provides: gm2, m2-compiler +Description: GNU Modula-2 compiler (version 2) + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libgm2-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgm2-20 (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +Package: libgm2-20 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: gm2-15-doc +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gm2-15 +Description: Documentation for the GNU Modula-2 compiler (gm2) + Documentation for the GNU Modula-2 compiler in HTML and info format. + +Package: gccrs-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the x86_64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the arm-linux-gnueabi architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the arm-linux-gnueabihf architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the aarch64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the i686-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the loongarch64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsel-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64el-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the powerpc64le-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the riscv64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the sparc-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the sparc64-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the s390x-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mips64el-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa32r6-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa32r6el-linux-gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabi64 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabin32 architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gccrs-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gccrs-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Rust compiler for the host architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccrs-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Rust compiler for the build architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + This is a dependency package. + +Package: gccrs-15 +Architecture: any +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15${target:suffix} (= ${gcc:Version}), g++-15 (>= ${gcc:SoftVersion}), ${misc:Depends} +Provides: gccrs, rust-compiler +Description: GNU Rust compiler + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + +Package: gcobol-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the x86_64-linux-gnu architecture + This is the GNU COBOL compiler for the x86_64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the aarch64-linux-gnu architecture + This is the GNU COBOL compiler for the aarch64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mips64-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mips64-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the powerpc64le-linux-gnu architecture + This is the GNU COBOL compiler for the powerpc64le-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the riscv64-linux-gnu architecture + This is the GNU COBOL compiler for the riscv64-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, + libgcobol-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: gcobol-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), gcobol-15${target:suffix} (>= ${gcc:SoftVersion}), + g++-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU COBOL compiler for the host architecture + This is the GNU COBOL compiler for the host architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gcobol-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcobol-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU COBOL compiler for the build architecture + This is the GNU COBOL compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gcobol-15 +Architecture: any +Depends: gcobol-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} +Provides: gcobol, cobol-compiler +Description: GNU COBOL compiler + This is the GNU COBOL compiler, which compiles COBOL on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libgcobol-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libgcobol1 (>= ${gcobol:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL standard library + This is the COBOL standard library that comes with the gcobol compiler. + +Package: libgcobol1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +Package: ga68-15-alpha-linux-gnu +Architecture: alpha +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the alpha-linux-gnu architecture + This is the GNU Algol 68 compiler for the alpha-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-x86-64-linux-gnu +Architecture: amd64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the x86_64-linux-gnu architecture + This is the GNU Algol 68 compiler for the x86_64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-arm-linux-gnueabi +Architecture: armel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the arm-linux-gnueabi architecture + This is the GNU Algol 68 compiler for the arm-linux-gnueabi architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-arm-linux-gnueabihf +Architecture: armhf +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the arm-linux-gnueabihf architecture + This is the GNU Algol 68 compiler for the arm-linux-gnueabihf architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-aarch64-linux-gnu +Architecture: arm64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the aarch64-linux-gnu architecture + This is the GNU Algol 68 compiler for the aarch64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-i686-linux-gnu +Architecture: i386 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the i686-linux-gnu architecture + This is the GNU Algol 68 compiler for the i686-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-loongarch64-linux-gnu +Architecture: loong64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the loongarch64-linux-gnu architecture + This is the GNU Algol 68 compiler for the loongarch64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsel-linux-gnu +Architecture: mipsel +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsel-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsel-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64-linux-gnuabi64 +Architecture: mips64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64el-linux-gnuabi64 +Architecture: mips64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64-linux-gnuabin32 +Architecture: mipsn32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc-linux-gnu +Architecture: powerpc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc64-linux-gnu +Architecture: ppc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc64-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-powerpc64le-linux-gnu +Architecture: ppc64el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture + This is the GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-m68k-linux-gnu +Architecture: m68k +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the m68k-linux-gnu architecture + This is the GNU Algol 68 compiler for the m68k-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-riscv64-linux-gnu +Architecture: riscv64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the riscv64-linux-gnu architecture + This is the GNU Algol 68 compiler for the riscv64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sh4-linux-gnu +Architecture: sh4 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sh4-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sh4-linux-gnu architecture + This is the GNU Algol 68 compiler for the sh4-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sparc-linux-gnu +Architecture: sparc +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sparc-linux-gnu architecture + This is the GNU Algol 68 compiler for the sparc-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-sparc64-linux-gnu +Architecture: sparc64 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the sparc64-linux-gnu architecture + This is the GNU Algol 68 compiler for the sparc64-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-s390x-linux-gnu +Architecture: s390x +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the s390x-linux-gnu architecture + This is the GNU Algol 68 compiler for the s390x-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-x86-64-linux-gnux32 +Architecture: x32 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture + This is the GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mips64el-linux-gnuabin32 +Architecture: mipsn32el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa32r6-linux-gnu +Architecture: mipsr6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa32r6el-linux-gnu +Architecture: mipsr6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture + This is the GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6-linux-gnuabi64 +Architecture: mips64r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6el-linux-gnuabi64 +Architecture: mips64r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6-linux-gnuabin32 +Architecture: mipsn32r6 +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-mipsisa64r6el-linux-gnuabin32 +Architecture: mipsn32r6el +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, + libga68-15-dev (= ${gcc:Version}), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture + This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + +Package: ga68-15-for-host +Architecture: any +X-DH-Build-For-Type: target +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ga68-15${target:suffix} (>= ${gcc:SoftVersion}), + gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} +Description: GNU Algol 68 compiler for the host architecture + This is the GNU Algol 68 compiler for the host architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: ga68-15-for-build +Architecture: all +Multi-Arch: foreign +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ga68-15 (>= ${gcc:Version}), + cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), + ${misc:Depends} +Description: GNU Algol 68 compiler for the build architecture + This is the GNU Algol 68 compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: ga68-15 +Architecture: any +Depends: ga68-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} +Provides: ga68, algol68-compiler +Description: GNU Algol 68 compiler + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libga68-15-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Depends: gcc-15-base (= ${gcc:Version}), libga68-1 (>= ${ga68:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 standard library + This is the Algol 68 standard library that comes with the ga68 compiler. + +Package: libga68-1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +Package: ga68-15-doc +Architecture: all +Section: doc +Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: ga68-15 +Description: Documentation for the GNU Algol 68 compiler (ga68) + Documentation for the GNU Algol 68 compiler in HTML and info format. + +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. + +Package: gcc-15-offload-nvptx +Architecture: amd64 arm64 ppc64el +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx1 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +Package: libgomp-plugin-nvptx1 +Architecture: amd64 arm64 ppc64el +Multi-Arch: same +Section: libs +Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. + +Package: gcc-15-offload-amdgcn +Architecture: amd64 +Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, + libgomp-plugin-amdgcn1 (>= ${gcc:Version}), + amdgcn-tools-21 [amd64], ${shlibs:Depends}, ${misc:Depends} +Description: GCC offloading compiler to GCN + The package provides offloading support for AMD GCN. OpenMP and OpenACC + programs linked with -fopenmp will by default add GCN code into the binaries, + which can be offloaded to AMD GCN capable devices if available. + +Package: libgomp-plugin-amdgcn1 +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP v4.5 plugin for offloading to GCN + This package contains libgomp plugin for offloading to AMD GCN. + +Package: gcc-15-source +Multi-Arch: foreign +Architecture: all +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, m4, libtool, autoconf2.69, + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). diff --git a/control.m4 b/control.m4 new file mode 100644 index 0000000..0ee6922 --- /dev/null +++ b/control.m4 @@ -0,0 +1,5350 @@ +divert(-1) + +define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 +')m4exit(1)')') +define(`errexit',`errprint(`error: undefined macro `$1' +')m4exit(1)') + +dnl The following macros must be defined, when called: +dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) +dnl ifdef(`PV', , errexit(`PV')) +dnl ifdef(`ARCH', , errexit(`ARCH')) + +dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) + +define(`PN', `$1') +define(`MAINTAINER', `Debian GCC Maintainers ') + +define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') +define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') +define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all')) +define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',` +define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))') +')') +ifelse(index(enabled_languages, `libdbg'), -1, ` +define(`libdbgdep', `') +',` +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +')`'dnl libdbg + +define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} +')) +define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target +') +define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')') +define(`for_each_arch',`_for_each(`_arch',`dnl +pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl +pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl +pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl +$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl +patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))') + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: optional +ifelse(DIST,`Ubuntu',`dnl +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +Uploaders: Matthias Klose +Standards-Version: 4.7.4 +ifdef(`TARGET',`dnl cross +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP + linux-libc-dev [m68k], + dwz, LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP + SOURCE_BUILD_DEP CROSS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, + libzstd-dev, zlib1g-dev, BINUTILS_BUILD_DEP, + gawk, lzma, xz-utils, patchutils, + PKGCONF_BUILD_DEP libgc-dev, + zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP + bison, flex, GNAT_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP + lsb-release, quilt, time +',`dnl native +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP GCC_MULTILIB_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP + linux-libc-dev [m68k], + AUTO_BUILD_DEP BASE_BUILD_DEP + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + libzstd-dev, zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP + BINUTILS_BUILD_DEP, BUILD_DEP_FOR_BINUTILS + gperf, bison, flex, + gettext, OFFLOAD_BUILD_DEP + texinfo, LOCALES, sharutils, + procps, FORTRAN_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP RS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP PHOBOS_BUILD_DEP + CHECK_BUILD_DEP chrpath, lsb-release, quilt, time, + PKGCONF_BUILD_DEP libgc-dev, + TARGET_TOOL_BUILD_DEP +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP +')dnl +ifelse(regexp(SRCNAME, `gdc'),0,`dnl +Homepage: https://gdcproject.org/ +', `dnl +Homepage: https://gcc.gnu.org/ +')dnl SRCNAME +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian +XS-Testsuite: autopkgtest +Rules-Requires-Root: binary-targets + +ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl +Package: gcc-snapshot`'TS +Architecture: any +Depends: binutils`'TS (>= ${binutils:Version}), + ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, + ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${snap:recommends} +BUILT_USING`'dnl +Description: SNAPSHOT of the GNU Compiler Collection + This package contains a recent development SNAPSHOT of all files + contained in the GNU Compiler Collection (GCC). + . + The source code for this package has been exported from SVN trunk. + . + DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + . + This package will NEVER hit the testing distribution. It is used for + tracking gcc bugs submitted to the Debian BTS in recent development + versions of gcc. +',`dnl regexp SRCNAME +ifelse(regexp(SRCNAME, `gcc-toolchain'),0,`dnl +Package: gcc-toolchain`'PV`'TS +Architecture: any +Depends: + ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, + ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${snap:recommends} +BUILT_USING`'dnl +Description: Backport of the GNU Compiler Collection + This package contains the default GCC and binutils as found + in a newer Ubuntu LTS release. +',`dnl regexp SRCNAME +dnl default base package dependencies +define(`BASEDEP', `gcc`'PV`'TS-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'PV`'TS-base (>= ${gcc:SoftVersion})') + +ifdef(`TARGET',` +define(`BASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH,`all',`-cross')-base`'GCC_PORTS_BUILD (= ${gcc:Version})') +define(`SOFTBASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH, `all',`-cross')-base`'GCC_PORTS_BUILD (>= ${gcc:SoftVersion})') +',`dnl +define(`BASELDEP', `BASEDEP') +define(`SOFTBASELDEP', `SOFTBASEDEP') +') + +ifenabled(`gccbase',` +Package: gcc`'PV`'TS-base +Architecture: any +Multi-Arch: same +ifdef(`TARGET',`dnl',`Section: libs') +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gccbase + +ifenabled(`gcclbase',` +Package: gcc`'PV-cross-base`'GCC_PORTS_BUILD +Architecture: all +ifdef(`TARGET',`dnl',`Section: libs') +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (library base package) + This empty package contains changelog and copyright files common to + all libraries contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gcclbase + +ifenabled(`libgcc',` +Package: libgcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: libgcc1`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s1-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +ifdef(`TARGET',`dnl +Breaks: libgcc1`'LS (<< 1:10) +Replaces: libgcc1`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc1`'LS (<< 1:10) +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s1`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`') +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,,=,${gcc:Version}), ${misc:Depends} +ifdef(`MULTIARCH',`Multi-Arch: same +')dnl +Breaks: libgcc1-dbg`'LS (<< 1:10) +Replaces: libgcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libgcc-s1-dbg`'LS, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg + +Package: libgcc-s2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +ifdef(`TARGET',`dnl',`Section: libs') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: libgcc2`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s2-TARGET-dcv1')`' +ifdef(`TARGET',`dnl +Breaks: libgcc2`'LS (<< 1:10) +Replaces: libgcc2`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc2`'LS (<< 1:10) +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s2`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +ifdef(`TARGET',`Provides: libgcc-s2-TARGET-dcv1 +')`'dnl +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Depends: BASELDEP, libdep(gcc-s2,,=,${gcc:Version}), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Breaks: libgcc2-dbg`'LS (<< 1:10) +Replaces: libgcc2-dbg`'LS (<< 1:10) +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Depends: BASELDEP, libgcc-s2-dbg`'LS, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg + +Package: libgcc-s4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +ifdef(`LIBGCCPROTECTED', `XB-Important: yes +Protected: yes +')`'dnl +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Provides: libgcc4`'LS (= ${gcc:EpochVersion}) +ifdef(`TARGET',`dnl +Breaks: libgcc4`'LS (<< 1:10) +Replaces: libgcc4`'LS (<< 1:10) +',`dnl +Breaks: ${libgcc:Breaks} +Replaces: libgcc4`'LS (<< 1:10) +')`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libgcc-s4`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} +ifdef(`MULTIxxxARCH', `Multi-Arch: same +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libgcc-s4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: debug +Depends: BASELDEP, libdep(gcc-s4,,=,${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Breaks: libgcc4-dbg`'LS (<< 1:10) +Replaces: libgcc4-dbg`'LS (<< 1:10) +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libgcc4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +Section: debug +Depends: BASELDEP, libgcc-s4-dbg`'LS, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIxxxARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libgcc + +ifenabled(`cdev',` +Package: libgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Breaks: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) +Replaces: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib64gcc',` +Package: lib64gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1`'LS (= ${gcc:EpochVersion}), lib64gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: lib64gcc1`'LS (<< 1:10) +Replaces: lib64gcc1`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib64gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, lib64gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') (64bit) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: lib64gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,64,=,${gcc:Version}), ${misc:Depends} +Breaks: lib64gcc1-dbg`'LS (<< 1:10) +Replaces: lib64gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib64gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, lib64gcc-s1-dbg`'LS, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl lib64gcc + +ifenabled(`cdev',` +Package: lib64gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib32gcc',` +Package: lib32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +Breaks: lib32gcc1`'LS (<< 1:10) +Replaces: lib32gcc1`'LS (<< 1:10) +ifdef(`TARGET',`Provides: lib32gcc1`'LS (= ${gcc:EpochVersion}), lib32gcc-s1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (32 bit Version) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, lib32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (dependency package, 32bit) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: lib32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,32,=,${gcc:Version}), ${misc:Depends} +Breaks: lib32gcc1-dbg`'LS (<< 1:10) +Replaces: lib32gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: lib32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, lib32gcc-s1-dbg`'LS, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl lib32gcc1 + +ifenabled(`cdev',` +Package: lib32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libn32gcc',` +Package: libn32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32gcc1`'LS (= ${gcc:EpochVersion}), libn32gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: libn32gcc1`'LS (<< 1:10) +Replaces: libn32gcc1`'LS (<< 1:10) +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1 [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libn32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libn32gcc-s1`'LS, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1 [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libn32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,n32,=,${gcc:Version}), ${misc:Depends} +Breaks: libn32gcc1-dbg`'LS (<< 1:10) +Replaces: libn32gcc1-dbg`'LS (<< 1:10) +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libn32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libn32gcc-s1-dbg`'LS, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libn32gcc + +ifenabled(`cdev',` +Package: libn32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libx32gcc',` +Package: libx32gcc-s1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1`'LS (= ${gcc:EpochVersion}), libx32gcc-s1-TARGET-dcv1 +',`')`'dnl +Breaks: libx32gcc1`'LS (<< 1:10) +Replaces: libx32gcc1`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libx32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libx32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc + +ifenabled(`libdbg',` +Package: libx32gcc-s1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(gcc-s1,x32,=,${gcc:Version}), ${misc:Depends} +Breaks: libx32gcc1-dbg`'LS (<< 1:10) +Replaces: libx32gcc1-dbg`'LS (<< 1:10) +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`libcompatgcc',` +Package: libx32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libx32gcc-s1-dbg`'LS, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + This is a dependency package, and can be safely removed after upgrade. +')`'dnl libcompatgcc +')`'dnl libdbg +')`'dnl libx32gcc + +ifenabled(`cdev',` +ifenabled(`x32dev',` +Package: libx32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl x32dev +')`'dnl cdev + +ifenabled(`cdev',`dnl +for_each_arch(` +Package: gcc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + ${dep:libcc1}, + binutils`'arch_gnusuffix (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), + libdbgdep(hwasan`'HWASAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(quadmath`'QMATH_SO-dbg,), +Provides: c-compiler`'arch_gnusuffix +ifdef(`TARGET',`Conflicts: gcc-multilib +')`'dnl +BUILT_USING`'dnl +Description: GNU C compiler for the arch_gnu architecture + This is the GNU C compiler for the arch_gnu architecture, + a fairly portable optimizing compiler for C. +')`'dnl for_each_arch + +Package: gcc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + cpp`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler for the host architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gcc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcc`'PV (>= ${gcc:Version}), cpp`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler for the build architecture + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package. + +Package: gcc`'PV +Architecture: any +Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + cpp`'PV (= ${gcc:Version}), + binutils (>= ${binutils:Version}), + ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp`'PV (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(quadmath`'QMATH_SO-dbg), +Provides: c-compiler +BUILT_USING`'dnl +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl + +ifenabled(`multilib',` +Package: gcc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`testresults',` +Package: gcc`'PV-test-results +Architecture: any +Depends: BASEDEP, ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +BUILT_USING`'dnl +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. +')`'dnl testresults + +ifenabled(`plugindev',` +Package: gcc`'PV-plugin-dev`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP MPC_BUILD_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. +')`'dnl plugindev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV-hppa64-linux-gnu +Architecture: ifdef(`TARGET',`any',hppa amd64 i386 x32) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl cdev + +ifenabled(`cdev',`dnl +for_each_arch(` +Package: cpp`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +ifdef(`TARGET',`dnl',`Section: interpreters') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}), cpp`'PV-doc (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +BUILT_USING`'dnl +Description: GNU C preprocessor for arch_gnu + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those + who require the preprocessor configured for the + arch_gnu architecture but not the compiler. +')`'dnl for_each_arch + +Package: cpp`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Section: ifdef(`TARGET',`devel',`interpreters') +Depends: BASEDEP, cpp`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C preprocessor for the host architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the host architecture but not + the compiler. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: cpp`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Section: ifdef(`TARGET',`devel',`interpreters') +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C preprocessor for the build architecture + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor configured for the build architecture but not + the compiler. + . + This is a dependency package. + +Package: cpp`'PV +Architecture: any +Section: interpreters +Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +BUILT_USING`'dnl +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. +')`'dnl + +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: cpp`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info `format'. +')`'dnl gfdldoc +')`'dnl native + +ifdef(`TARGET', `', ` +Package: gcc`'PV-locales +Architecture: all +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc`'PV (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. +')`'dnl native +')`'dnl cdev + +ifenabled(`c++',` +ifenabled(`c++dev',`dnl +for_each_arch(` +Package: g++`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler`'arch_gnusuffix +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) +BUILT_USING`'dnl +Description: GNU C++ compiler for the arch_gnu architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. +')`'dnl for_each_arch + +Package: g++`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, g++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C++ compiler for the host architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the host architecture. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: g++`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV (>= ${gcc:Version}), ${misc:Depends}, + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) +BUILT_USING`'dnl +Description: GNU C++ compiler for the build architecture + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This package contains C++ cross-compiler for the + arch_gnu architecture. + . + This is a dependency package. + +Package: g++`'PV +Architecture: any +Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +BUILT_USING`'dnl +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: g++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +BUILT_USING`'dnl +Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl c++dev +')`'dnl c++ + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Section: libs +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (32bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib64ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch64_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (64bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libn32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchn32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'SSP_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC stack smashing protection library (n32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libx32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchx32_archs +Section: libs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (x32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. +')`'dnl +')`'dnl native + +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: lib32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: lib32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: lib64gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: lib64gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. +')`'dnl libdbg + +Package: libn32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gomp`'GOMP_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libn32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'GOMP_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libdbg + +ifenabled(`libx32gomp',` +Package: libx32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +ifenabled(`libdbg',` +Package: libx32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libdbg +')`'dnl libx32gomp +')`'dnl libgomp + +ifenabled(`libitm',` +Package: libitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: libitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +Package: lib32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: lib32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +Package: lib64itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: lib64itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libdbg + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +ifenabled(`libx32itm',` +Package: libx32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +ifenabled(`libdbg',` +Package: libx32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. +')`'dnl libdbg +')`'dnl libx32itm +')`'dnl libitm + +ifenabled(`libatomic',` +Package: libatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: lib32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: lib32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: lib64atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: lib64atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +Package: libn32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libn32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg + +ifenabled(`libx32atomic',` +Package: libx32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libdbg',` +Package: libx32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libdbg +')`'dnl libx32atomic +')`'dnl libatomic + +ifenabled(`libasan',` +Package: libasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +Package: lib32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: lib32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +Package: lib64asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: lib64asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libx32asan',` +Package: libx32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libx32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg +')`'dnl libx32asan +')`'dnl libasan + +ifenabled(`libhwasan',` +Package: libhwasan`'HWASAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (HWASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libdbg',` +Package: libhwasan`'HWASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(hwasan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (HWASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libdbg +')`'dnl libhwasan + +ifenabled(`liblsan',` +Package: liblsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +ifenabled(`libdbg',` +Package: liblsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libdbg + +ifenabled(`lib32lsan',` +Package: lib32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +ifenabled(`libdbg',` +Package: lib32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libdbg +')`'dnl lib32lsan + +ifenabled(`lib64lsan',` +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +ifenabled(`libdbg',` +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libdbg +')`'dnl lib64lsan + +ifenabled(`libn32lsan',` +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +ifenabled(`libdbg',` +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libdbg +')`'dnl libn32lsan + +ifenabled(`libx32lsan',` +Package: libx32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +ifenabled(`libdbg',` +Package: libx32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libdbg +')`'dnl libx32lsan +')`'dnl liblsan + +ifenabled(`libtsan',` +Package: libtsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libtsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg + +ifenabled(`lib32tsan',` +Package: lib32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: lib32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl lib32tsan + +ifenabled(`lib64tsan',` +Package: lib64tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: lib64tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl lib64tsan + +ifenabled(`libn32tsan',` +Package: libn32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libn32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl libn32tsan + +ifenabled(`libx32tsan',` +Package: libx32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`libdbg',` +Package: libx32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libdbg +')`'dnl libx32tsan +')`'dnl libtsan + +ifenabled(`libubsan',` +Package: libubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: libubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg + +ifenabled(`lib32ubsan',` +Package: lib32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: lib32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl lib32ubsan + +ifenabled(`lib64ubsan',` +Package: lib64ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: lib64ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl lib64ubsan + +ifenabled(`libn32ubsan',` +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +ifenabled(`libdbg',` +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl libn32ubsan + +ifenabled(`libx32ubsan',` +Package: libx32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`libdbg',` +Package: libx32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libdbg +')`'dnl libx32ubsan +')`'dnl libubsan + +ifenabled(`libvtv',` +Package: libvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (runtime) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU vtable verification library (debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg + +ifenabled(`lib32vtv',` +Package: lib32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU vtable verification library (32bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: lib32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (32 bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl lib32vtv + +ifenabled(`lib64vtv',` +Package: lib64vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: lib64vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl lib64vtv + +ifenabled(`libn32vtv',` +Package: libn32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU vtable verification library (n32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libn32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU vtable verification library (n32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl libn32vtv + +ifenabled(`libx32vtv',` +Package: libx32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`libdbg',` +Package: libx32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libdbg +')`'dnl libx32vtv +')`'dnl libvtv + +ifenabled(`libbacktrace',` +Package: libbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: stack backtrace library (debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: lib32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: stack backtrace library (32bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: lib32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (32 bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: lib64backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: lib64backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +Package: libn32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: stack backtrace library (n32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libn32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: stack backtrace library (n32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg + +ifenabled(`libx32backtrace',` +Package: libx32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libdbg',` +Package: libx32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libdbg +')`'dnl libx32backtrace +')`'dnl libbacktrace + +ifenabled(`libqmath',` +Package: libquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: libquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +Package: lib32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: lib32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +Package: lib64quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: lib64quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO-dbg [biarch32_conflicts]') +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. +')`'dnl libdbg + +ifenabled(`libx32qmath',` +Package: libx32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +ifenabled(`libdbg',` +Package: libx32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libdbg +')`'dnl libx32qmath +')`'dnl libqmath + +ifenabled(`libcc1',` +Package: libcc1-`'CC1_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC cc1 plugin for GDB + libcc1 is a plugin for GDB. +')`'dnl libcc1 + +ifenabled(`libjit',` +Package: libgccjit`'GCCJIT_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgcc`'PV-dev, binutils, ${dep:libcdev}, + ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +BUILT_USING`'dnl +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +ifenabled(`libdbg',` +Package: libgccjit`'GCCJIT_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC just-in-time compilation (debug information) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl libdbg +')`'dnl libjit + +ifenabled(`jit',` +Package: libgccjit`'PV-doc +Section: doc +Architecture: all +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, + libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, + libgccjit-13-doc, libgccjit-14-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'PV-dev +ifdef(`TARGET',`dnl',`Section: libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgccjit`'GCCJIT_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgccjit`'PV-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl jit + +ifenabled(`libdiag',` +Package: libgdiagnostics`'DIAGNOSTICS_SO +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic-handling code wrapped into a library (shared library) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +ifenabled(`libdbg',` +Package: libgdiagnostics`'DIAGNOSTICS_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic-handling code wrapped into a library (debug information) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output +')`'dnl libdbg +')`'dnl libdiag + +ifenabled(`gdiag',` +#Package: libgdiagnostics`'PV-doc +#Section: doc +#Architecture: all +#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +#Conflicts: libgdiagnostics-14-doc, +#Description: GCC diagnostic-handling code wrapped into a library (documentation) +# GCCs diagnostic-handling code covers things like +# - quoting pertinent source code (with a cache) +# - underlining points and ranges in the source code, possibly with labels +# - emitting fix-it hints +# - generating patches from fix-it hints +# - SARIF output + +Package: libgdiagnostics`'PV-dev +ifdef(`TARGET',`dnl',`Section: libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgdiagnostic`'PV-dbg +Description: GCC diagnostic-handling code wrapped into a library (development files) + GCCs diagnostic-handling code covers things like + - quoting pertinent source code (with a cache) + - underlining points and ranges in the source code, possibly with labels + - emitting fix-it hints + - generating patches from fix-it hints + - SARIF output + +Package: gcc`'PV-diagnostics +ifdef(`TARGET',`dnl',`Section: devel') +Architecture: any +Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC diagnostic tools + Currently only provides the sarif-replay command-line tool, which takes + SARIF files as input, and uses libdiagnostics to replay any diagnostics + within them as if they were GCC diagnostics. +')`'dnl gdiag + +ifenabled(`objpp',` +ifenabled(`objppdev',` +for_each_arch(` +Package: gobjc++`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gobjc`'PV`'arch_gnusuffix (= ${gcc:Version}), g++`'PV`'arch_gnusuffix (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'arch_gnusuffix +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the arch_gnu architecture + This is the GNU Objective-C++ compiler for the + arch_gnu architecture, which compiles Objective-C++ + on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. +')`'dnl for_each_arch + +Package: gobjc++`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gobjc`'PV`'-for-host (= ${gcc:Version}), g++`'PV`'-for-host (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the host architecture + This is the GNU Objective-C++ compiler for the host architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gobjc++`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gobjc++`'PV (>= ${gcc:Version}), + gobjc`'PV`'-for-build (= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler for the build architecture + This is the GNU Objective-C++ compiler for the build architecture, + which compiles Objective-C++ on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc++`'PV +Architecture: any +Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (= ${gcc:Version}), gobjc`'PV (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl TARGET +')`'dnl obcppdev + +ifenabled(`multilib',` +Package: gobjc++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +for_each_arch(` +Package: gobjc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) +Provides: objc-compiler`'arch_gnusuffix +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the arch_gnu architecture + This is the GNU Objective-C compiler for the arch_gnu + architecture, which compiles Objective-C on platforms supported by the + gcc compiler. It uses the gcc backend to generate optimized code. +')`'dnl for_each_arch + +Package: gobjc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gobjc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the host architecture + This is the GNU Objective-C compiler for the host architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gobjc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gobjc`'PV (>= ${gcc:Version}), ${misc:Depends}, + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) +BUILT_USING`'dnl +Description: GNU Objective-C compiler for the build architecture + This is the GNU Objective-C compiler for the build architecture, + which compiles Objective-C on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gobjc`'PV +Architecture: any +Depends: BASEDEP, gobjc`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler +BUILT_USING`'dnl +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl ifndef TARGET +ifenabled(`multilib',` +Package: gobjc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +ifenabled(`x32dev',` +Package: libx32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl libx32objc +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: lib64objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: lib32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libn32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libn32objc + +ifenabled(`libx32objc',` +Package: libx32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +ifenabled(`libdbg',` +Package: libx32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libdbg +')`'dnl libx32objc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',`dnl +for_each_arch(`ifelse(index(` 'fortran_no_archs` ',` !'arch_deb` '),`-1',` +Package: gfortran`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gfortran`'PV-doc, + libdbgdep(gfortran`'FORTRAN_SO-dbg), + libcoarrays-dev +BUILT_USING`'dnl +Description: GNU Fortran compiler for the arch_gnu architecture + This is the GNU Fortran compiler for the arch_gnu architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. +')')`'dnl for_each_arch + +Package: gfortran`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gfortran`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler for the host architecture + This is the GNU Fortran compiler for the host architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gfortran`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gfortran`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler for the build architecture + This is the GNU Fortran compiler for the build architecture, + which compiles Fortran on platforms supported by the gcc compiler. + It uses the gcc backend to generate optimized code. + . + This is a dependency package. + +Package: gfortran`'PV +Architecture: any +Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran`'PV-doc +BUILT_USING`'dnl +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: gfortran`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gfortran`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info `format'. +')`'dnl gfdldoc + +Package: libgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +ifenabled(`x32dev',` +Package: libx32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl libx32gfortran +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib64gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libn32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libn32gfortran + +ifenabled(`libx32gfortran',` +Package: libx32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libx32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libdbg +')`'dnl libx32gfortran +')`'dnl fortran + +ifenabled(`ggo',` +ifenabled(`godev',` +for_each_arch(`ifelse(index(` 'go_no_archs` ',` !'arch_deb` '),`-1',` +Package: gccgo`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), +Conflicts: ${golang:Conflicts} +Breaks: libgo12`'LS (<< 8-20171209-2) +Replaces: libgo12`'LS (<< 8-20171209-2) +BUILT_USING`'dnl +Description: GNU Go compiler for the arch_gnu architecture + This is the GNU Go compiler for the arch_gnu architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. +')')`'dnl for_each_arch + +Package: gccgo`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gccgo`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Go compiler for the host architecture + This is the GNU Go compiler for the host architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gccgo`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gccgo`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Go compiler for the build architecture + This is the GNU Go compiler for the build architecture, which + compiles Go on platforms supported by the gcc compiler. It uses the gcc + backend to generate optimized code. + . + This is a dependency package. + +Package: gccgo`'PV +Architecture: any +Depends: BASEDEP, gccgo`'PV`'${target:suffix} (= ${gcc:Version}), ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), +Conflicts: ${golang:Conflicts} +BUILT_USING`'dnl +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. +')`'dnl no-TARGET + +ifenabled(`multilib',` +Package: gccgo`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +BUILT_USING`'dnl +Description: GNU Go compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gccgo`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info `format'. +')`'dnl gfdldoc + +Package: libgo`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(go`'GO_SO,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(go`'GO_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(go`'GO_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(go`'GO_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +ifenabled(`x32dev',` +Package: libx32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(go`'GO_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. +')`'dnl libx32go +')`'dnl godev + +ifenabled(`libggo',` +Package: libgo`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libgo`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libgo + +ifenabled(`lib64ggo',` +Package: lib64go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib64go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl lib64go + +ifenabled(`lib32ggo',` +Package: lib32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: lib32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl lib32go + +ifenabled(`libn32ggo',` +Package: libn32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libn32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libn32go + +ifenabled(`libx32ggo',` +Package: libx32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +ifenabled(`libdbg',` +Package: libx32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libdbg +')`'dnl libx32go +')`'dnl ggo + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Conflicts: scim (<< 1.4.2-1) +Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3) +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libcxx + +ifenabled(`lib32cxx',` +Package: lib32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,32), ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (32 bit Version) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32cxx + +ifenabled(`lib64cxx',` +Package: lib64stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,64), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64cxx + +ifenabled(`libn32cxx',` +Package: libn32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,n32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: lib32stdc++`'CXX_SO [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (n32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32cxx + +ifenabled(`libx32cxx',` +Package: libx32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libs') +Depends: BASELDEP, libdep(gcc-s1,x32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (x32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32cxx + +ifenabled(`c++dev',` +Package: libstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,,=), + libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends} +ifdef(`TARGET',`',`dnl native +Suggests: libstdc++`'PV-doc +')`'dnl native +Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++`'PV-pic`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET',` (TARGET)', `') + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Recommends: libdevdep(stdc++`'PV-dev,) +Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, + libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, + libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS, + libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS, + libstdc++6-4.9-dbg`'LS, libstdc++6-5-dbg`'LS, libstdc++6-6-dbg`'LS, + libstdc++6-7-dbg`'LS, libstdc++6-8-dbg`'LS, libstdc++6-9-dbg`'LS, + libstdc++6-10-dbg`'LS, libstdc++6-11-dbg`'LS, libstdc++6-12-dbg`'LS, + libstdc++6-13-dbg`'LS, libstdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), + libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, + lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, + lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, + lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS, + lib32stdc++6-5-dbg`'LS, lib32stdc++6-6-dbg`'LS, lib32stdc++6-7-dbg`'LS, + lib32stdc++6-8-dbg`'LS, lib32stdc++6-9-dbg`'LS, lib32stdc++6-10-dbg`'LS, + lib32stdc++6-11-dbg`'LS, lib32stdc++6-12-dbg`'LS, lib32stdc++6-13-dbg`'LS, + lib32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), + libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,64), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, + lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, + lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, + lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS, + lib64stdc++6-5-dbg`'LS, lib64stdc++6-6-dbg`'LS, lib64stdc++6-7-dbg`'LS, + lib64stdc++6-8-dbg`'LS, lib64stdc++6-9-dbg`'LS, lib64stdc++6-10-dbg`'LS, + lib64stdc++6-11-dbg`'LS, lib64stdc++6-12-dbg`'LS, lib64stdc++6-13-dbg`'LS, + lib64stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), + libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,n32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, + libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, + libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, + libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS, + libn32stdc++6-5-dbg`'LS, libn32stdc++6-6-dbg`'LS, libn32stdc++6-7-dbg`'LS, + libn32stdc++6-8-dbg`'LS, libn32stdc++6-9-dbg`'LS, libn32stdc++6-10-dbg`'LS, + libn32stdc++6-11-dbg`'LS, libn32stdc++6-12-dbg`'LS, libn32stdc++6-13-dbg`'LS, + libn32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`x32dev',` +Package: libx32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +ifdef(`TARGET',`dnl',`Section: libdevel') +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), + libdep(stdc++CXX_SO,x32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl x32dev + +ifenabled(`libx32dbgcxx',` +Package: libx32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Depends: BASELDEP, libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, + libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS, + libx32stdc++6-5-dbg`'LS, libx32stdc++6-6-dbg`'LS, libx32stdc++6-7-dbg`'LS, + libx32stdc++6-8-dbg`'LS, libx32stdc++6-9-dbg`'LS, libx32stdc++6-10-dbg`'LS, + libx32stdc++6-11-dbg`'LS, libx32stdc++6-12-dbg`'LS, libx32stdc++6-13-dbg`'LS, + libx32stdc++6-14-dbg`'LS, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32dbgcxx + +ifdef(`TARGET', `', ` +Package: libstdc++`'PV-doc +Build-Profiles: +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, + libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +')`'dnl native +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`ada',` +for_each_arch(`ifelse(index(` 'ada_no_archs` ',` !'arch_deb` '),`-1',` +Package: gnat`'-GNAT_V`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012 +ifdef(`TARGET',`',`dnl +Provides: gnat`'-GNAT_V-${libgnat:alihash} +')`'dnl +Conflicts: gnat-4.9, gnat-5`'TS, gnat-6`'TS, gnat-7`'TS, gnat-8`'TS, gnat-9`'TS, + gnat-10`'TS, gnat-11`'TS, gnat-12`'TS, gnat-13`'TS, gnat-14`'TS, + gnat-7`'arch_gnusuffix, gnat-8`'arch_gnusuffix, + gnat-9`'arch_gnusuffix, gnat-10`'arch_gnusuffix, + gnat-11`'arch_gnusuffix, gnat-12`'arch_gnusuffix, +# Previous versions conflict for (at least) /usr/bin/gnatmake. +BUILT_USING`'dnl +Description: GNU Ada compiler for the arch_gnu architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. +')')`'dnl for_each_arch + +Package: gnat`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gnat`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler for the host architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gnat`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gnat`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler for the build architecture + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + . + This is a dependency package. + +Package: gnat`'-GNAT_V +Architecture: any +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: gnat`'-GNAT_V`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj +BUILT_USING`'dnl +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. +')`'dnl no-TARGET + +ifenabled(`adasjlj',` +Package: gnat`'-GNAT_V-sjlj`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler (setjump/longjump runtime library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides an alternative runtime library that handles + exceptions using the setjump/longjump mechanism (as a static library + only). You can install it to supplement the normal compiler. +')`'dnl adasjlj + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +ifenabled(`libdbg',` +Package: libgnat`'-GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. +')`'dnl libdbg +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (64 bits shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library for 64 bits architectures. +')`'dnl libgnat + +ifenabled(`gfdldoc',` +Package: gnat`'PV-doc +Architecture: all +Section: doc +Depends: ${misc:Depends} +Suggests: gnat`'PV +Conflicts: gnat-4.9-doc, + gnat-5-doc, gnat-6-doc, gnat-7-doc, gnat-8-doc, gnat-9-doc, gnat-10-doc, + gnat-11-doc, gnat-12-doc, gnat-13-doc, gnat-14-doc, +BUILT_USING`'dnl +Description: GNU Ada compiler (documentation) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the documentation in info `format'. +')`'dnl gfdldoc +')`'dnl ada + +ifenabled(`d ',`dnl +for_each_arch(`ifelse(index(` 'd_no_archs` ',` !'arch_deb` '),`-1',` +Package: gdc`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the arch_gnu architecture + This is the GNU D compiler for the arch_gnu architecture, + which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. +')')`'dnl for_each_arch + +Package: gdc`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gdc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the host architecture + This is the GNU D compiler for the host architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gdc`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gdc`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2) for the build architecture + This is the GNU D compiler for the build architecture, which compiles D on + platforms supported by gcc. It uses the gcc backend to generate optimised + code. + . + This compiler supports D language version 2. + . + This is a dependency package. + +Package: gdc`'PV +Architecture: any +Depends: gdc`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +BUILT_USING`'dnl +Description: GNU D compiler (version 2) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. +')`'dnl TARGET + +ifenabled(`multilib',` +Package: gdc`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gdc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2, multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`libdevphobos',` +Package: libgphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,64), ifdef(`TARGET',`',`lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdevn32phobos',` +Package: libn32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libn32phobos + +ifenabled(`libdevx32phobos',` +Package: libx32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libx32phobos +')`'dnl libdevphobos + +ifenabled(`libphobos',` +Package: libgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68`'LS +Breaks: dub (<< 1.16.0-1~) +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +Package: lib64gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: lib64gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +Package: lib32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: lib32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg + +ifenabled(`libn32phobos',` +Package: libn32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libn32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg +')`'dnl libn32phobos + +ifenabled(`libx32phobos',` +Package: libx32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdbg',` +Package: libx32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libdbg +')`'dnl libx32phobos + +')`'dnl libphobos +')`'dnl d + +ifenabled(`m2 ',`dnl +for_each_arch(`ifelse(index(` 'm2_no_archs` ',` !'arch_deb` '),`-1',` +Package: gm2`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gm2cross}, libidevdep(gm2`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the arch_gnu architecture + This is the GNU Modula-2 compiler for the arch_gnu architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: gm2`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gm2`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the host architecture + This is the GNU Modula-2 compiler for the host architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gm2`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gm2`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler for the build architecture + This is the GNU Modula-2 compiler for the build architecture, + which compiles Modula-2 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gm2`'PV +Architecture: any +Depends: gm2`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} +Provides: gm2, m2-compiler +BUILT_USING`'dnl +Description: GNU Modula-2 compiler (version 2) + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multigm2lib',` +Package: gm2`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gm2`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgm2biarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multigm2lib + +ifenabled(`libdevgm2',` +Package: libgm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgm2`'-GM2_V`'LS (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`multigm2lib',` +Package: lib64gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (64bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (32bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdevn32gm2',` +Package: libn32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (n32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libn32gm2 + +ifenabled(`libdevx32gm2',` +Package: libx32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (x32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libx32gm2 +')`'dnl multigm2lib +')`'dnl libdevgm2 + +ifenabled(`libgm2',` +Package: libgm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libgm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: libgm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +ifenabled(`multigm2lib',` +Package: lib64gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: lib64gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib64gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +Package: lib32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: lib32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib32gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg + +ifenabled(`libn32gm2',` +Package: libn32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libn32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V-dbg [biarch32_conflicts]') +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg +')`'dnl libn32gm2 + +ifenabled(`libx32gm2',` +Package: libx32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdbg',` +Package: libx32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libdbg +')`'dnl libx32gm2 +')`'dnl multigm2lib +')`'dnl libgm2 + +Package: gm2`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gm2`'PV +Description: Documentation for the GNU Modula-2 compiler (gm2) + Documentation for the GNU Modula-2 compiler in HTML and info `format'. +')`'dnl m2 + +ifenabled(`rust ',` +for_each_arch(`ifelse(index(` 'rs_no_archs` ',` !'arch_deb` '),`-1',` +Package: gccrs`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the arch_gnu architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! +')')`'dnl for_each_arch + +Package: gccrs`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gccrs`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the host architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. + +Package: gccrs`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gccrs`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Rust compiler for the build architecture + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + This is a dependency package. + +Package: gccrs`'PV +Architecture: any +Depends: SOFTBASEDEP, gccrs`'PV`'${target:suffix} (= ${gcc:Version}), g++`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Provides: gccrs, rust-compiler +BUILT_USING`'dnl +Description: GNU Rust compiler + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! + . + gccrs is a full alternative implementation of the Rust + language ontop of GCC with the goal to become fully + upstream with the GNU toolchain. + . + !!!!! Please note, the compiler is in a very early stage + and not usable yet for compiling real Rust programs !!!!! +')`'dnl rust + +ifenabled(`cobol ',`dnl +for_each_arch(`ifelse(index(` 'cobol_no_archs` ',` !'arch_deb` '),`-1',` +Package: gcobol`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gcobolcross}, + libidevdep(gcobol`'PV-dev,,=), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the arch_gnu architecture + This is the GNU COBOL compiler for the arch_gnu architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: gcobol`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, gcobol`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + g++`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the host architecture + This is the GNU COBOL compiler for the host architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: gcobol`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcobol`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler for the build architecture + This is the GNU COBOL compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: gcobol`'PV +Architecture: any +Depends: gcobol`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} +Provides: gcobol, cobol-compiler +BUILT_USING`'dnl +Description: GNU COBOL compiler + This is the GNU COBOL compiler, which compiles COBOL on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multigcobollib',` +Package: gcobol`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, gcobol`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgcobolbiarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU COBOL compiler, which compiles COBOL on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multigcobollib + +ifenabled(`libdevgcobol',` +Package: libgcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library + This is the COBOL standard library that comes with the gcobol compiler. + +ifenabled(`multigcobollib',` +Package: lib64gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (64bit development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +Package: lib32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (32bit development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdevn32gcobol',` +Package: libn32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (n32 development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libn32gcobol + +ifenabled(`libdevx32gcobol',` +Package: libx32gcobol`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (x32 development files) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libx32gcobol +')`'dnl multigcobollib +')`'dnl libdevgcobol + +ifenabled(`libgcobol',` +Package: libgcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libgcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: libgcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +ifenabled(`multigcobollib',` +Package: lib64gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gcobol68`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: lib64gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: lib64gcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +Package: lib32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gcobol68`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: lib32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +Replaces: lib32gcobol68-dbg`'LS +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg + +ifenabled(`libn32gcobol',` +Package: libn32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libn32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg +')`'dnl libn32gcobol + +ifenabled(`libx32gcobol',` +Package: libx32gcobol`'GCOBOL_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (runtime library) + This is the GNU COBOL standard library that comes with the gcobol compiler. + +ifenabled(`libdbg',` +Package: libx32gcobol`'GCOBOL_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU COBOL standard library (debug symbols) + This is the GNU COBOL standard library that comes with the gcobol compiler. +')`'dnl libdbg +')`'dnl libx32gcobol +')`'dnl multigcobollib +')`'dnl libgcobol + +ifenabled(`doccobol',` +Package: gcobol`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: gcobol`'PV +Description: Documentation for the GNU COBOL compiler (gcobol) + Documentation for the GNU COBOL compiler in HTML and info `format'. +')`'dnl doccobol +')`'dnl cobol + + +ifenabled(`algol ',`dnl +for_each_arch(`ifelse(index(` 'algol_no_archs` ',` !'arch_deb` '),`-1',` +Package: ga68`'PV`'arch_gnusuffix +Architecture: ifdef(`TARGET',`any',arch_deb) +Multi-Arch: foreign +Depends: SOFTBASEDEP, gcc`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:ga68cross}, + libidevdep(ga68`'PV-dev,,=), + ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the arch_gnu architecture + This is the GNU Algol 68 compiler for the arch_gnu architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. +')')`'dnl for_each_arch + +Package: ga68`'PV`'-for-host +Architecture: ifdef(`TARGET',`TARGET',`any') +TARGET_PACKAGE`'dnl +Multi-Arch: same +Depends: BASEDEP, ga68`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), + gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the host architecture + This is the GNU Algol 68 compiler for the host architecture, + which compiles Algol 68 on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + When using this package, tools must be invoked with an architecture prefix. + . + This is a dependency package. +ifdef(`TARGET',`',` +Package: ga68`'PV`'-for-build +Architecture: all +Multi-Arch: foreign +Depends: SOFTBASEDEP, ga68`'PV (>= ${gcc:Version}), + cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), + ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler for the build architecture + This is the GNU Algol 68 compiler for the build architecture, + which compiles COBOL on platforms supported by gcc. It uses the gcc + backend to generate optimised code. + . + This is a dependency package. + +Package: ga68`'PV +Architecture: any +Depends: ga68`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} +Provides: ga68, algol68-compiler +BUILT_USING`'dnl +Description: GNU Algol 68 compiler + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. +')`'dnl TARGET + +ifenabled(`multiga68lib',` +Package: ga68`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: SOFTBASEDEP, ga68`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libga68biarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multiga68lib + +ifenabled(`libdevga68',` +Package: libga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Depends: BASELDEP, libga68-`'GA68_V`'LS (>= ${ga68:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library + This is the Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`multiga68lib',` +Package: lib64ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (64bit development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +Package: lib32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (32bit development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdevn32ga68',` +Package: libn32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (n32 development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libn32ga68 + +ifenabled(`libdevx32ga68',` +Package: libx32ga68`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (>= ${ga68:Version}), + libdevdep(gcc`'PV-dev,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (x32 development files) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libx32ga68 +')`'dnl multiga68lib +')`'dnl libdevga68 + +ifenabled(`libga68',` +Package: libga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Depends: BASELDEP, libga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +ifenabled(`multiga68lib',` +Package: lib64ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: lib64ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +Package: lib32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: lib32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg + +ifenabled(`libn32ga68',` +Package: libn32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libn32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg +')`'dnl libn32ga68 + +ifenabled(`libx32ga68',` +Package: libx32ga68-`'GA68_V`'LS +TARGET_PACKAGE`'dnl +ifdef(`TARGET',`dnl',`Section: libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (runtime library) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. + +ifenabled(`libdbg',` +Package: libx32ga68-`'GA68_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Algol 68 standard library (debug symbols) + This is the GNU Algol 68 standard library that comes with the ga68 compiler. +')`'dnl libdbg +')`'dnl libx32ga68 +')`'dnl multiga68lib +')`'dnl libga68 + +Package: ga68`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Suggests: ga68`'PV +Description: Documentation for the GNU Algol 68 compiler (ga68) + Documentation for the GNU Algol 68 compiler in HTML and info `format'. +')`'dnl algol + + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl commonlibs +')`'dnl + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: gcc`'PV-doc +Architecture: all +Section: doc +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifenabled(`olnvptx',` +Package: gcc`'PV-offload-nvptx +Architecture: nvptx_archs +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx`'GOMP_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +ifenabled(`gompnvptx',` +Package: libgomp-plugin-nvptx`'GOMP_SO +Architecture: nvptx_archs +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. +')`'dnl gompnvptx +')`'dnl olnvptx + +ifenabled(`olgcn',` +Package: gcc`'PV-offload-amdgcn +Architecture: gcn_archs +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + libgomp-plugin-amdgcn`'GOMP_SO (>= ${gcc:Version}), + AMDGCN_TOOLS_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to GCN + The package provides offloading support for AMD GCN. OpenMP and OpenACC + programs linked with -fopenmp will by default add GCN code into the binaries, + which can be offloaded to AMD GCN capable devices if available. + +ifenabled(`gompgcn',` +Package: libgomp-plugin-amdgcn`'GOMP_SO +Architecture: gcn_archs +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to GCN + This package contains libgomp plugin for offloading to AMD GCN. +')`'dnl gompgcn +')`'dnl olgcn + +ifenabled(`olhsa',` +ifenabled(`gomphsa',` +Package: libgomp-plugin-hsa`'GOMP_SO +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to HSA + This package contains libgomp plugin for offloading to HSA. +')`'dnl gomphsa +')`'dnl olhsa + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Multi-Arch: foreign +Architecture: all +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, AUTO_BUILD_DEP + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')')`'dnl regexp SRCNAME +dnl last line in file diff --git a/copyright b/copyright new file mode 100644 index 0000000..f2bf22f --- /dev/null +++ b/copyright @@ -0,0 +1,1638 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + +The current gcc-15 source package is taken from the git gcc-15-branch. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-15 libgnat-15 gnat-15-doc +Algol-68 ga68-15 libga68-1 libga68-15-doc +C gcc-15 gcc-15-doc +C++ g++-15 libstdc++6 libstdc++6-15-doc +COBOL gcobol-15 libgcobol1 +D gdc-15 libgphobos6 +Fortran 95 gfortran-15 libgfortran5 gfortran-15-doc +Go gccgo-15 libgo0 +Objective C gobjc-15 libobjc4 +Objective C++ gobjc++-15 +Modula-2 gm2-15 libgm2 libgm2-15-doc +Rust gccrs-15 + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-15-dbg libstdc++6-15-pic +D libphobos-15-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-15-base Base files common to all compilers +gcc-15-soft-float Software floating point (ARM only) +gcc-15-source The sources with patches + +Ada: +libgnat-util15-dev, libgnat-util15 GNAT version library + +C: +cpp-15, cpp-15-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgm2 + - libgomp + - libgrust + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-15 Ada support library and libgnat-util15 library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2019 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2011 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/ + Copyright (C) 1992-2018 Free Software Foundation, Inc. + + Written by Francois-Xavier Coudert + Written by Tobias Burnus + Contributions by Ulrich Drepper + Conversion to long double by Jakub Jelinek + + This file is part of the libquadmath library. + Libquadmath is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + Libiberty is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/isinfq.c: + Written by J.T. Conklin . + Change for long double by Jakub Jelinek + Public domain. + +libquadmath/math/ + llroundq.c, lroundq.c, tgammaq.c: + + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, + copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, + fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, + logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, + rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, + tanhq.c, tanq.c, tanq_kernel.c: + + Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + . + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +libquadmath/math/ + acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: + + In addition to the Sun Microsystems copyright: + + Long double expansions are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the LGPL 2.1 or later. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009-2023 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-15 GNU D Compiler +libphobos-15-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 +Copyright (C) 2015-2024 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-3'. + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - zlib/* + + (C) 1995-2016 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - libphobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com +Written by Walter Bright +Copyright (C) 2018-2023, The D Language Foundation + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +gcc/m2: +gcc/m2/gm2-libiberty: +gcc/m2/mc-boot/: +gcc/m2/mc-boot-ch/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/m2/**/*.texi: +Copyright (C) 2000-2024 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/m2/gm2-coroutines: +gcc/m2/gm2-libs: +gcc/m2/gm2-libs-min: +gcc/m2/gm2-libs-pim: +gcc/m2/gm2-libs-ch: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +gcc/m2/gm2-libs-iso/: +This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library +Exception, version 3.1. + +gcc/m2/gm2-libs-iso/*.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/m2/examples: +Copyright (C) 2005-2024 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/m2/images: +GPL-3+ + +gcc/m2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +libgm2/libpim/: +libgm2/liblog/: +libgm2/libcor/: +libgm2/libmin/: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +newlib-X.Y.Z/ (only for the offload compilers): + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-2025 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the GNU C Library; if not, see https://www.gnu.org/licenses/. + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +contrib/unicode: + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + +contrib/unicode/from_glibc: + +# Copyright (C) 2014-2019 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +gcc/cobol, libgcobol: + + * Copyright (c) 2021-2024 Symas Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of the Symas Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +gcc/algol68 + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along with + GCC; see the file COPYING3. If not see . + +libga68: + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + Under Section 7 of GPL version 3, you are granted additional permissions + described in the GCC Runtime Library Exception, version 3.1, as published by + the Free Software Foundation. + + You should have received a copy of the GNU General Public License and a copy + of the GCC Runtime Library Exception along with this program; see the files + COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ +libgrust/libformat_parser/vendor/ + + Vendored crates are authored by "The Rust Project Developers", + licensed under the Apache-2.0/MIT licenses. + + MIT License: + + Permission is hereby granted, free of charge, to any + person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the + Software without restriction, including without + limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice + shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +On Debian GNU/Linux systems, the complete text of Apache 2.0 License +is in `/usr/share/common-licenses/Apache-2.0'. diff --git a/copyright.in b/copyright.in new file mode 100644 index 0000000..ee2a755 --- /dev/null +++ b/copyright.in @@ -0,0 +1,1638 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + +The current gcc-@BV@ source package is taken from the git @SVN_BRANCH@. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc +Algol-68 ga68-@BV@ libga68-1 libga68-@BV@-doc +C gcc-@BV@ gcc-@BV@-doc +C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc +COBOL gcobol-@BV@ libgcobol1 +D gdc-@BV@ libgphobos6 +Fortran 95 gfortran-@BV@ libgfortran5 gfortran-@BV@-doc +Go gccgo-@BV@ libgo0 +Objective C gobjc-@BV@ libobjc4 +Objective C++ gobjc++-@BV@ +Modula-2 gm2-@BV@ libgm2 libgm2-@BV@-doc +Rust gccrs-@BV@ + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic +D libphobos-@BV@-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-@BV@-base Base files common to all compilers +gcc-@BV@-soft-float Software floating point (ARM only) +gcc-@BV@-source The sources with patches + +Ada: +libgnat-util@BV@-dev, libgnat-util@BV@ GNAT version library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgm2 + - libgomp + - libgrust + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-@BV@ Ada support library and libgnat-util@BV@ library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2019 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2011 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/ + Copyright (C) 1992-2018 Free Software Foundation, Inc. + + Written by Francois-Xavier Coudert + Written by Tobias Burnus + Contributions by Ulrich Drepper + Conversion to long double by Jakub Jelinek + + This file is part of the libquadmath library. + Libquadmath is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + Libiberty is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/isinfq.c: + Written by J.T. Conklin . + Change for long double by Jakub Jelinek + Public domain. + +libquadmath/math/ + llroundq.c, lroundq.c, tgammaq.c: + + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +libquadmath/math/ + acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, + copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, + fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, + logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, + rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, + tanhq.c, tanq.c, tanq_kernel.c: + + Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + . + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +libquadmath/math/ + acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: + + In addition to the Sun Microsystems copyright: + + Long double expansions are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the LGPL 2.1 or later. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009-2023 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-@BV@ GNU D Compiler +libphobos-@BV@-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 +Copyright (C) 2015-2024 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-3'. + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - zlib/* + + (C) 1995-2016 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - libphobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com +Written by Walter Bright +Copyright (C) 2018-2023, The D Language Foundation + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +gcc/m2: +gcc/m2/gm2-libiberty: +gcc/m2/mc-boot/: +gcc/m2/mc-boot-ch/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/m2/**/*.texi: +Copyright (C) 2000-2024 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/m2/gm2-coroutines: +gcc/m2/gm2-libs: +gcc/m2/gm2-libs-min: +gcc/m2/gm2-libs-pim: +gcc/m2/gm2-libs-ch: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +gcc/m2/gm2-libs-iso/: +This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library +Exception, version 3.1. + +gcc/m2/gm2-libs-iso/*.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/m2/examples: +Copyright (C) 2005-2024 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/m2/images: +GPL-3+ + +gcc/m2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +Copyright (C) 2001-2024 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +libgm2/libpim/: +libgm2/liblog/: +libgm2/libcor/: +libgm2/libmin/: +Copyright (C) 2002-2024 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +Under Section 7 of GPL version 3, you are granted additional +permissions described in the GCC Runtime Library Exception, version +3.1, as published by the Free Software Foundation. + +newlib-X.Y.Z/ (only for the offload compilers): + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-2025 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the GNU C Library; if not, see https://www.gnu.org/licenses/. + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +contrib/unicode: + +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF +online code charts under the directory http://www.unicode.org/Public/. +Software includes any source code published in the Unicode Standard or under +the directories http://www.unicode.org/Public/, +http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS +ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE +DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + +contrib/unicode/from_glibc: + +# Copyright (C) 2014-2019 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +gcc/cobol, libgcobol: + + * Copyright (c) 2021-2024 Symas Corporation + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of the Symas Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +gcc/algol68 + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + You should have received a copy of the GNU General Public License along with + GCC; see the file COPYING3. If not see . + +libga68: + + Copyright (C) 2025 Jose E. Marchesi. + + This file is NOT part of GCC. + + GCC is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + details. + + Under Section 7 of GPL version 3, you are granted additional permissions + described in the GCC Runtime Library Exception, version 3.1, as published by + the Free Software Foundation. + + You should have received a copy of the GNU General Public License and a copy + of the GCC Runtime Library Exception along with this program; see the files + COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ +libgrust/libformat_parser/vendor/ + + Vendored crates are authored by "The Rust Project Developers", + licensed under the Apache-2.0/MIT licenses. + + MIT License: + + Permission is hereby granted, free of charge, to any + person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the + Software without restriction, including without + limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software + is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice + shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +On Debian GNU/Linux systems, the complete text of Apache 2.0 License +is in `/usr/share/common-licenses/Apache-2.0'. diff --git a/cpp-BV-CRB.preinst.in b/cpp-BV-CRB.preinst.in new file mode 100644 index 0000000..408889b --- /dev/null +++ b/cpp-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/cpp-BV-doc.doc-base.cpp b/cpp-BV-doc.doc-base.cpp new file mode 100644 index 0000000..d64e86f --- /dev/null +++ b/cpp-BV-doc.doc-base.cpp @@ -0,0 +1,16 @@ +Document: cpp-@BV@ +Title: The GNU C preprocessor +Author: Various +Abstract: The C preprocessor is a "macro processor" that is used automatically + by the C compiler to transform your program before actual compilation. + It is called a macro processor because it allows you to define "macros", + which are brief abbreviations for longer constructs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cpp.html +Files: /usr/share/doc/gcc-@BV@-base/cpp.html + +Format: info +Index: /usr/share/info/cpp-@BV@.info.gz +Files: /usr/share/info/cpp-@BV@* diff --git a/cpp-BV-doc.doc-base.cppint b/cpp-BV-doc.doc-base.cppint new file mode 100644 index 0000000..151d319 --- /dev/null +++ b/cpp-BV-doc.doc-base.cppint @@ -0,0 +1,17 @@ +Document: cppinternals-@BV@ +Title: The GNU C preprocessor (internals) +Author: Various +Abstract: This brief manual documents the internals of cpplib, and + explains some of the tricky issues. It is intended that, along with + the comments in the source code, a reasonably competent C programmer + should be able to figure out what the code is doing, and why things + have been implemented the way they have. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html +Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html + +Format: info +Index: /usr/share/info/cppinternals-@BV@.info.gz +Files: /usr/share/info/cppinternals-@BV@* diff --git a/dh_doclink b/dh_doclink new file mode 100755 index 0000000..8372658 --- /dev/null +++ b/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg diff --git a/dh_rmemptydirs b/dh_rmemptydirs new file mode 100755 index 0000000..4a010c7 --- /dev/null +++ b/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 diff --git a/dummy-man.1 b/dummy-man.1 new file mode 100644 index 0000000..966d935 --- /dev/null +++ b/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. diff --git a/dummy.texi b/dummy.texi new file mode 100644 index 0000000..127ccaa --- /dev/null +++ b/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) diff --git a/g++-BV-CRB.preinst.in b/g++-BV-CRB.preinst.in new file mode 100644 index 0000000..b69c8f8 --- /dev/null +++ b/g++-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/ga68-BV-doc.doc-base b/ga68-BV-doc.doc-base new file mode 100644 index 0000000..c1f81ed --- /dev/null +++ b/ga68-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: ga68-@BV@ +Title: The GNU Algol 68 Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gm68', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Algol68 + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html +Files: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html + +Format: info +Index: /usr/share/info/ga68-@BV@.info.gz +Files: /usr/share/info/ga68-@BV@* diff --git a/gcc-BV-CRB.preinst.in b/gcc-BV-CRB.preinst.in new file mode 100644 index 0000000..ca34796 --- /dev/null +++ b/gcc-BV-CRB.preinst.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ + update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gcc-BV-doc.doc-base.gcc b/gcc-BV-doc.doc-base.gcc new file mode 100644 index 0000000..106e18d --- /dev/null +++ b/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* diff --git a/gcc-BV-doc.doc-base.gccint b/gcc-BV-doc.doc-base.gccint new file mode 100644 index 0000000..85f4af1 --- /dev/null +++ b/gcc-BV-doc.doc-base.gccint @@ -0,0 +1,17 @@ +Document: gccint-@BV@ +Title: Internals of the GNU C and C++ compiler +Author: Various +Abstract: This manual documents the internals of the GNU compilers, + including how to port them to new targets and some information about + how to write front ends for new languages. It corresponds to GCC + version @BV@.x. The use of the GNU compilers is documented in a + separate manual. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccint.html +Files: /usr/share/doc/gcc-@BV@-base/gccint.html + +Format: info +Index: /usr/share/info/gccint-@BV@.info.gz +Files: /usr/share/info/gccint-@BV@* diff --git a/gcc-BV-doc.doc-base.gomp b/gcc-BV-doc.doc-base.gomp new file mode 100644 index 0000000..69ccede --- /dev/null +++ b/gcc-BV-doc.doc-base.gomp @@ -0,0 +1,15 @@ +Document: gcc-@BV@-gomp +Title: The GNU OpenMP Implementation (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libgomp, the GNU implementation + of the OpenMP Application Programming Interface (API) for multi-platform + shared-memory parallel programming in C/C++ and Fortran. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libgomp.html +Files: /usr/share/doc/gcc-@BV@-base/libgomp.html + +Format: info +Index: /usr/share/info/libgomp-@BV@.info.gz +Files: /usr/share/info/libgomp-@BV@* diff --git a/gcc-BV-doc.doc-base.itm b/gcc-BV-doc.doc-base.itm new file mode 100644 index 0000000..130a70f --- /dev/null +++ b/gcc-BV-doc.doc-base.itm @@ -0,0 +1,16 @@ +Document: gcc-@BV@-itm +Title: The GNU Transactional Memory Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage and internals of libitm, + the GNU Transactional Memory Library. It provides transaction support + for accesses to a process' memory, enabling easy-to-use synchronization + of accesses to shared memory by several threads. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libitm.html +Files: /usr/share/doc/gcc-@BV@-base/libitm.html + +Format: info +Index: /usr/share/info/libitm-@BV@.info.gz +Files: /usr/share/info/libitm-@BV@* diff --git a/gcc-BV-doc.doc-base.qmath b/gcc-BV-doc.doc-base.qmath new file mode 100644 index 0000000..bdc2d4c --- /dev/null +++ b/gcc-BV-doc.doc-base.qmath @@ -0,0 +1,14 @@ +Document: gcc-@BV@-qmath +Title: The GCC Quad-Precision Math Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libquadmath, the GCC + Quad-Precision Math Library Application Programming Interface (API). +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html +Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html + +Format: info +Index: /usr/share/info/libquadmath-@BV@.info.gz +Files: /usr/share/info/libquadmath-@BV@* diff --git a/gcc-BV-hppa64-linux-gnu.overrides b/gcc-BV-hppa64-linux-gnu.overrides new file mode 100644 index 0000000..9f7ebd0 --- /dev/null +++ b/gcc-BV-hppa64-linux-gnu.overrides @@ -0,0 +1,3 @@ +gcc-@BV@-hppa64-linux-gnu binary: binary-from-other-architecture +gcc-@BV@-hppa64-linux-gnu binary: binary-without-manpage +gcc-@BV@-hppa64-linux-gnu binary: hardening-no-pie diff --git a/gcc-BV-multilib.overrides b/gcc-BV-multilib.overrides new file mode 100644 index 0000000..545ca0e --- /dev/null +++ b/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture diff --git a/gcc-BV-source.overrides b/gcc-BV-source.overrides new file mode 100644 index 0000000..46e8559 --- /dev/null +++ b/gcc-BV-source.overrides @@ -0,0 +1,5 @@ +gcc-@BV@-source: changelog-file-not-compressed + +# these are patches taken over unmodified from 4.3 +gcc-@BV@-source: script-not-executable +gcc-@BV@-source: shell-script-fails-syntax-check diff --git a/gcc-XX-BV.1 b/gcc-XX-BV.1 new file mode 100644 index 0000000..f02b309 --- /dev/null +++ b/gcc-XX-BV.1 @@ -0,0 +1,21 @@ +.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" +.SH NAME +gcc-@TOOL@ \- a wrapper around @TOOL@ adding the \-\-plugin option + +.SH SYNOPSIS +gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcc-@TOOL@\fR is a wrapper around +.BR @TOOL@ (1) +adding the appropriate +\fB\-\-plugin\fR option for the GCC @BV@ compiler. + +.SH OPTIONS +See +.BR @TOOL@ (1) +for a list of options that nm understands. + +.SH "SEE ALSO" +.BR @TOOL@ (1) diff --git a/gcc-dummy.texi b/gcc-dummy.texi new file mode 100644 index 0000000..b84b670 --- /dev/null +++ b/gcc-dummy.texi @@ -0,0 +1,41 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header + +@settitle The GNU Compiler Collection (GCC) + +@c Create a separate index for command line options. +@defcodeindex op +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@paragraphindent 1 + +@c %**end of header + +@copying +The current documentation is licensed under the same terms as the Debian packaging. +@end copying +@ifnottex +@dircategory Programming +@direntry +* @name@: (@name@). The GNU Compiler Collection (@name@). +@end direntry +@sp 1 +@end ifnottex + +@summarycontents +@contents +@page + +@node Top +@top Introduction +@cindex introduction +The official GNU compilers' documentation is released under the terms +of the GNU Free Documentation License with cover texts. This has been +considered non free by the Debian Project. Thus you will find it in the +non-free section of the Debian archive. +@bye diff --git a/gcc-snapshot.overrides b/gcc-snapshot.overrides new file mode 100644 index 0000000..124c256 --- /dev/null +++ b/gcc-snapshot.overrides @@ -0,0 +1,17 @@ +gcc-snapshot binary: bad-permissions-for-ali-file +gcc-snapshot binary: non-standard-file-perm + +# libphobos non-multilib builds +gcc-snapshot binary: embedded-library + +gcc-snapshot binary: binary-from-other-architecture +gcc-snapshot binary: extra-license-file +gcc-snapshot binary: triplet-dir-and-architecture-mismatch +gcc-snapshot binary: unstripped-binary-or-object +gcc-snapshot binary: missing-prerequisite-for-gfortran-module + +# intended +gcc-snapshot binary: hardening-no-pie + +# nvptx offload, silly lintian +gcc-snapshot binary: no-code-sections diff --git a/gcc-snapshot.prerm b/gcc-snapshot.prerm new file mode 100644 index 0000000..000148c --- /dev/null +++ b/gcc-snapshot.prerm @@ -0,0 +1,6 @@ +#! /bin/sh -e + +find /usr/lib/gcc-snapshot/share/gcc/python -name '*.py[co]' | xargs -r rm -f +find /usr/lib/gcc-snapshot/share/gcc/python -name __pycache__ -type d | xargs -r rm -rf + +#DEBHELPER# diff --git a/gcc.css b/gcc.css new file mode 100644 index 0000000..e32c4b9 --- /dev/null +++ b/gcc.css @@ -0,0 +1,154 @@ +/* CSS for the GCC web site. + + Gerald Pfeifer + */ + +body { background-color: white; color: black; } + +a:link { color: #0066bb; text-decoration: none; } +a:visited { color: #003399; text-decoration: none; } +a:hover { color: darkorange; text-decoration: none; } + +h1 { color: darkslategray; text-align:center; } +h2 { color: darkslategray; } + +.highlight{ color: darkslategray; font-weight:bold; } +.smaller { font-size: 80%; } + +.left { text-align:left; } +.right { text-align:right; } +.center { text-align:center; margin-left:auto; margin-right:auto; } +.top { vertical-align:top; } +.middle { vertical-align:middle; } + +.width33 { width:33%; } +.border0 { border-width:0; } + +.no-margin-top { margin-top:0; } +.twocolumns { column-count:2; } +.imgleft { margin: 5px 20px; float: left; } + +img.right { float: right; } + +td.news { width: 50%; padding-right: 8px; vertical-align: top; } +td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } +td.news dl { margin-top:0; } +td.news dt { color:darkslategrey; font-weight:bold; margin-top:0.3em; } +td.news dd { margin-left:3ex; margin-top:0.1em; margin-bottom:0.1em; } +td.news .date { color:darkslategrey; font-size:90%; margin-left:0.1ex; } + +td.status { width: 50%; padding-left: 12px; vertical-align: top; + border-left: #3366cc thin solid; } +td.status h2 { font-size: 1.2em; margin-top:0; margin-bottom: 1%; } +td.status dl { margin-top:0; } +td.status .version { font-weight:bold; } +td.status .regress { font-size: 80%; } +td.status dd { margin-left:3ex; } + +table.nav { + padding-left: 32px; + border-spacing: 0pt; +} + +table.nav td { + border-width: 0; +} + +table.navitem { + width: 100%; + border-spacing: 0pt; +} + +table.navitem tr:nth-child(1) { + border-color: #3366cc; + border-style: solid; + border-width: thin; + color: #f2f2f9; + background-color: #0066dd; + font-weight: bold; +} +table.navitem tr:nth-child(2) { + padding-top: 3px; + padding-left: 8px; + padding-bottom: 3px; + background-color: #f2f2f9; + font-size: smaller; +} + +div.copyright { + clear: both; + font-size: smaller; + background: #f2f2f9; + border: 2px solid #3366cc; + border-style: solid; + border-width: thin; + padding: 4px; +} +div.copyright p:nth-child(3) { margin-bottom: 0; } + +.bold { font-weight:bold; } +.boldcyan { font-weight:bold; color:cyan; } +.boldlime { font-weight:bold; color:lime; } +.boldmagenta { font-weight:bold; color:magenta; } +.boldred { font-weight:bold; color:red; } +.boldgreen { font-weight:bold; color:green; } +.boldblue { font-weight:bold; color:blue; } +.red { color:red; } +.green { color:green; } +.blue { color:blue; } +.blackbg { color:white; background-color: #000000; } + +/* Inline markup for differences. */ +ins { background-color: lightgreen } +del { background-color: pink } + +/* Quote an e-mail. The first
has the sender, the second the quote. */ +blockquote.mail div:nth-child(2) { border-left: solid blue; padding-left: 4pt; } + +/* This comes close to , alas a bit less bordersome. */ +table.border th { border:2px solid; } + +/* C++ status tables. */ +table.cxxstatus th, table.cxxstatus td { border: 1px solid gray; } +table.cxxstatus td:nth-child(3) { text-align:center; } +table.cxxstatus tr.separator { background: #f2f2f9; } + +/* C++ Defect Report table. */ +table.cxxdrstatus th, table.cxxdrstatus td { border: 1px solid gray; } +table.cxxdrstatus td:nth-child(4) { text-align:center; } +table.cxxdrstatus tr.separator { background: #f2f2f9; } +table.cxxdrstatus { width: 65%; } + +/* OpenMP status tables. */ +table.ompstatus thead th, table.cxxstatus thead td { border: 1px solid gray; } +table.ompstatus tbody td:nth-child(2) { text-align:center; } +table.ompstatus thead tr { background: #f2f2f9; } + +/* Padded tables. */ +table.padding5 th, td { border: 1px solid gray; padding:5px; } + +.supported { background-color: lightgreen; } +.unsupported { background-color: lightsalmon; } +.other { background-color: lightgray; } +.partial { background-color: lightyellow; } +.open { color: #AAAAAA; } + +/* Online documentation. */ + +pre.smallexample { + font-size: medium; + background: #f2f2f9; + padding: 4px; + display: inline-block; +} + +/* Classpath versus libgcj merge status page. */ + +.classpath-only { background-color: #FFFFAA; } +.libgcj-only { background-color: #FFFFAA; } +.VM-specific { background-color: #CCCCFF; } +.GCJ-specific { background-color: #CCCCFF; } +.needsmerge { background-color: #FF9090; } +.merged { background-color: #22FF22; } +.merged-expected-diff { background-color: #22FF22; } +.merged-unexpected-diff { background-color: #FF4444; } diff --git a/gccgo-BV-doc.doc-base b/gccgo-BV-doc.doc-base new file mode 100644 index 0000000..86ce258 --- /dev/null +++ b/gccgo-BV-doc.doc-base @@ -0,0 +1,17 @@ +Document: gccgo-@BV@ +Title: The GNU Go compiler (version @BV@) +Author: Various +Abstract: This manual describes how to use gccgo, the GNU compiler for + the Go programming language. This manual is specifically about + gccgo. For more information about the Go programming + language in general, including language specifications and standard + package documentation, see http://golang.org/. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccgo.html +Files: /usr/share/doc/gcc-@BV@-base/gccgo.html + +Format: info +Index: /usr/share/info/gccgo-@BV@.info.gz +Files: /usr/share/info/gccgo-@BV@* diff --git a/gen-libstdc-breaks.sh b/gen-libstdc-breaks.sh new file mode 100755 index 0000000..de35a4a --- /dev/null +++ b/gen-libstdc-breaks.sh @@ -0,0 +1,178 @@ +#! /bin/sh + +# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org + +vendor=Debian +if dpkg-vendor --derives-from Ubuntu; then + vendor=Ubuntu +fi + +if [ "$vendor" = Debian ]; then + : + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.54.0 +libboost-date-time1.55.0 +libcpprest2.4 +printer-driver-brlaser +c++-annotations +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +digikam-private-libs +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.7 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +schroot +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +else + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.55.0 +libcpprest2.2 +printer-driver-brlaser +c++-annotations +chromium-browser +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +libkgeomap2 +libmediawiki1 +libkvkontakte1 +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.6 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +fi + +fn=debian/libstdc++-breaks.$vendor +rm -f $fn +echo $pkgs +for p in $pkgs; do + #echo $p + if ! apt-cache show --no-all-versions $p >/dev/null; then + echo "not found: $p" + fi + v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}') + case "$p" in + libboost-date-time*) + echo "$p," >> $fn + ;; + *) + echo "$p (<= $v)," >> $fn + esac +done diff --git a/gfortran-BV-CRB.preinst.in b/gfortran-BV-CRB.preinst.in new file mode 100644 index 0000000..f6e7cfd --- /dev/null +++ b/gfortran-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gfortran-BV-doc.doc-base b/gfortran-BV-doc.doc-base new file mode 100644 index 0000000..485d458 --- /dev/null +++ b/gfortran-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gfortran-@BV@ +Title: The GNU Fortran Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gfortran', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Fortran + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html + +Format: info +Index: /usr/share/info/gfortran-@BV@.info.gz +Files: /usr/share/info/gfortran-@BV@* diff --git a/gm2-BV-doc.doc-base b/gm2-BV-doc.doc-base new file mode 100644 index 0000000..63315b5 --- /dev/null +++ b/gm2-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gm2-@BV@ +Title: The GNU Modula-2 Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gm2', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Modula-2 + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html +Files: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html + +Format: info +Index: /usr/share/info/gm2-@BV@.info.gz +Files: /usr/share/info/gm2-@BV@* diff --git a/gnat-BV-doc.doc-base.rm b/gnat-BV-doc.doc-base.rm new file mode 100644 index 0000000..7957275 --- /dev/null +++ b/gnat-BV-doc.doc-base.rm @@ -0,0 +1,16 @@ +Document: gnat-rm-@BV@ +Title: GNAT (GNU Ada) Reference Manual +Author: Various +Abstract: This manual contains useful information in writing programs + using the GNAT compiler. It includes information on implementation + dependent characteristics of GNAT, including all the information + required by Annex M of the standard. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* diff --git a/gnat-BV-doc.doc-base.style b/gnat-BV-doc.doc-base.style new file mode 100644 index 0000000..db6dfc8 --- /dev/null +++ b/gnat-BV-doc.doc-base.style @@ -0,0 +1,16 @@ +Document: gnat-style-@BV@ +Title: GNAT Coding Style +Author: Various +Abstract: Most of GNAT is written in Ada using a consistent style to + ensure readability of the code. This document has been written to + help maintain this consistent style, while having a large group of + developers work on the compiler. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html + +Format: info +Index: /usr/share/info/gnat-style-@BV@.info.gz +Files: /usr/share/info/gnat-style-@BV@* diff --git a/gnat-BV-doc.doc-base.ug b/gnat-BV-doc.doc-base.ug new file mode 100644 index 0000000..00dedf1 --- /dev/null +++ b/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat-ugn-@BV@ +Title: GNAT User's Guide for Unix Platforms +Author: Various +Abstract: This guide describes the use of GNAT, a compiler and + software development toolset for the full Ada 95 programming language. + It describes the features of the compiler and tools, and details how + to use them to build Ada 95 applications. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html + +Format: info +Index: /usr/share/info/gnat_ugn-@BV@.info.gz +Files: /usr/share/info/gnat_ugn-@BV@* diff --git a/gnat.1 b/gnat.1 new file mode 100644 index 0000000..33a42c7 --- /dev/null +++ b/gnat.1 @@ -0,0 +1,43 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" Copyright (C) 2011 Nicolas Boulenguez +.\" +.\" This is free software; you can redistribute it and/or modify it under +.\" the terms of the GNU General Public License as published by the Free +.\" Software Foundation; either version 2, or (at your option) any later +.\" version. +.\" +.\" This is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the +.\" dpkg source package as the file COPYING. If not, write to the Free +.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.\" +.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" +.SH NAME +gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.8 +and +.B info gnat-rm-4.8 +for the sections related to the reference manual. +If those sections cannot be found, you will have to install the +gnat-4.4-doc package as well (since these manuals contain invariant parts, +the package is located in the non-free part of the Debian archive). +You may also browse +.B http://gcc.gnu.org/onlinedocs +which provides the GCC online documentation. +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. diff --git a/lib32asan8.symbols b/lib32asan8.symbols new file mode 100644 index 0000000..62205b2 --- /dev/null +++ b/lib32asan8.symbols @@ -0,0 +1,2099 @@ +# SymbolsHelper-Confirmed: 15 amd64 ppc64 s390x sparc64 x32 +libasan.so.8 lib32asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvj@Base 15 + _ZdaPvjSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvj@Base 15 + _ZdlPvjSt11align_val_t@Base 15 + _Znaj@Base 15 + _ZnajRKSt9nothrow_t@Base 15 + _ZnajSt11align_val_t@Base 15 + _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwj@Base 15 + _ZnwjRKSt9nothrow_t@Base 15 + _ZnwjSt11align_val_t@Base 15 + _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + (arch=!sparc64)__interceptor___isoc23_fscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_scanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + (arch=!sparc64)__interceptor___isoc23_vfscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_vscanf@Base 15 + (arch=!sparc64)__interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + (arch=!sparc64)__interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + (arch=!sparc64)__interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc23_vsscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl___isoc99_vsscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_asprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_fprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_fscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_printf@Base 15 + (arch=sparc64)__interceptor___nldbl_scanf@Base 15 + (arch=sparc64)__interceptor___nldbl_snprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_sprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_sscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vasprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vfprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vfscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vscanf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsnprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsprintf@Base 15 + (arch=sparc64)__interceptor___nldbl_vsscanf@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + (arch=!s390x)__interceptor___tls_get_addr@Base 15 + (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 + (arch=ppc64)__interceptor___tls_get_addr_opt@Base 15 + (arch=s390x)__interceptor___tls_get_offset@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + (arch=!sparc64)__interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + (arch=!sparc64)__interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + (arch=!sparc64)__interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + (arch=!sparc64)__interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64)__interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + (arch=!sparc64)__interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + (arch=!sparc64)__interceptor_snprintf@Base 15 + (arch=!sparc64)__interceptor_sprintf@Base 15 + (arch=!sparc64)__interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + (arch=!sparc64)__interceptor_vasprintf@Base 15 + (arch=amd64 x32)__interceptor_vfork@Base 15 + (arch=!sparc64)__interceptor_vfprintf@Base 15 + (arch=!sparc64)__interceptor_vfscanf@Base 15 + (arch=!sparc64)__interceptor_vprintf@Base 15 + (arch=!sparc64)__interceptor_vscanf@Base 15 + (arch=!sparc64)__interceptor_vsnprintf@Base 15 + (arch=!sparc64)__interceptor_vsprintf@Base 15 + (arch=!sparc64)__interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + (arch=!sparc64)__isoc23_fscanf@Base 15 + (arch=!sparc64)__isoc23_scanf@Base 15 + (arch=!sparc64)__isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + (arch=!sparc64)__isoc23_vfscanf@Base 15 + (arch=!sparc64)__isoc23_vscanf@Base 15 + (arch=!sparc64)__isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + (arch=!sparc64)__isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + (arch=!sparc64)__isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + (arch=!sparc64)__isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + (arch=!sparc64)__isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + (arch=!sparc64)__isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + (arch=!sparc64)__isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + (arch=sparc64)__nldbl___isoc23_fscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_scanf@Base 15 + (arch=sparc64)__nldbl___isoc23_sscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vfscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vscanf@Base 15 + (arch=sparc64)__nldbl___isoc23_vsscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_fscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_scanf@Base 15 + (arch=sparc64)__nldbl___isoc99_sscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vfscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vscanf@Base 15 + (arch=sparc64)__nldbl___isoc99_vsscanf@Base 15 + (arch=sparc64)__nldbl_asprintf@Base 15 + (arch=sparc64)__nldbl_fprintf@Base 15 + (arch=sparc64)__nldbl_fscanf@Base 15 + (arch=sparc64)__nldbl_printf@Base 15 + (arch=sparc64)__nldbl_scanf@Base 15 + (arch=sparc64)__nldbl_snprintf@Base 15 + (arch=sparc64)__nldbl_sprintf@Base 15 + (arch=sparc64)__nldbl_sscanf@Base 15 + (arch=sparc64)__nldbl_vasprintf@Base 15 + (arch=sparc64)__nldbl_vfprintf@Base 15 + (arch=sparc64)__nldbl_vfscanf@Base 15 + (arch=sparc64)__nldbl_vprintf@Base 15 + (arch=sparc64)__nldbl_vscanf@Base 15 + (arch=sparc64)__nldbl_vsnprintf@Base 15 + (arch=sparc64)__nldbl_vsprintf@Base 15 + (arch=sparc64)__nldbl_vsscanf@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + (arch=sparc64)__sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=!ppc64 !s390x)__tls_get_addr@Base 15 + (arch=s390x)__tls_get_addr_internal@Base 15 + (arch=ppc64)__tls_get_addr_opt@Base 15 + (arch=s390x)__tls_get_offset@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + (arch=!sparc64)asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + (arch=!sparc64)fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + (arch=!sparc64)fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + (arch=!sparc64)printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + (arch=!ppc64)ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + (arch=!sparc64)scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + (arch=!sparc64)snprintf@Base 15 + (arch=!sparc64)sprintf@Base 15 + (arch=!sparc64)sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + (arch=!sparc64)vasprintf@Base 15 + (arch=amd64 x32)vfork@Base 15 + (arch=!sparc64)vfprintf@Base 15 + (arch=!sparc64)vfscanf@Base 15 + (arch=!sparc64)vprintf@Base 15 + (arch=!sparc64)vscanf@Base 15 + (arch=!sparc64)vsnprintf@Base 15 + (arch=!sparc64)vsprintf@Base 15 + (arch=!sparc64)vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/lib32gccLC.postinst b/lib32gccLC.postinst new file mode 100644 index 0000000..0163e03 --- /dev/null +++ b/lib32gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib32stdc++CXX.postinst b/lib32stdc++CXX.postinst new file mode 100644 index 0000000..0ebbeb0 --- /dev/null +++ b/lib32stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64asan8.symbols b/lib64asan8.symbols new file mode 100644 index 0000000..a32f8ce --- /dev/null +++ b/lib64asan8.symbols @@ -0,0 +1,3013 @@ +# SymbolsHelper-Confirmed: 15 i386 powerpc +libasan.so.8 lib64asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvm@Base 15 + _ZdaPvmSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvm@Base 15 + _ZdlPvmSt11align_val_t@Base 15 + _Znam@Base 15 + _ZnamRKSt9nothrow_t@Base 15 + _ZnamSt11align_val_t@Base 15 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwm@Base 15 + _ZnwmRKSt9nothrow_t@Base 15 + _ZnwmSt11align_val_t@Base 15 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 15 + (arch=i386)___interceptor__Unwind_RaiseException@Base 15 + (arch=i386)___interceptor___b64_ntop@Base 15 + (arch=i386)___interceptor___b64_pton@Base 15 + (arch=i386)___interceptor___bzero@Base 15 + (arch=i386)___interceptor___cxa_atexit@Base 15 + (arch=i386)___interceptor___cxa_throw@Base 15 + (arch=i386)___interceptor___fprintf_chk@Base 15 + (arch=i386)___interceptor___getdelim@Base 15 + (arch=i386)___interceptor___isoc23_fscanf@Base 15 + (arch=i386)___interceptor___isoc23_scanf@Base 15 + (arch=i386)___interceptor___isoc23_sscanf@Base 15 + (arch=i386)___interceptor___isoc23_strtoimax@Base 15 + (arch=i386)___interceptor___isoc23_strtol@Base 15 + (arch=i386)___interceptor___isoc23_strtoll@Base 15 + (arch=i386)___interceptor___isoc23_strtoumax@Base 15 + (arch=i386)___interceptor___isoc23_vfscanf@Base 15 + (arch=i386)___interceptor___isoc23_vscanf@Base 15 + (arch=i386)___interceptor___isoc23_vsscanf@Base 15 + (arch=i386)___interceptor___isoc99_fprintf@Base 15 + (arch=i386)___interceptor___isoc99_fscanf@Base 15 + (arch=i386)___interceptor___isoc99_printf@Base 15 + (arch=i386)___interceptor___isoc99_scanf@Base 15 + (arch=i386)___interceptor___isoc99_snprintf@Base 15 + (arch=i386)___interceptor___isoc99_sprintf@Base 15 + (arch=i386)___interceptor___isoc99_sscanf@Base 15 + (arch=i386)___interceptor___isoc99_vfprintf@Base 15 + (arch=i386)___interceptor___isoc99_vfscanf@Base 15 + (arch=i386)___interceptor___isoc99_vprintf@Base 15 + (arch=i386)___interceptor___isoc99_vscanf@Base 15 + (arch=i386)___interceptor___isoc99_vsnprintf@Base 15 + (arch=i386)___interceptor___isoc99_vsprintf@Base 15 + (arch=i386)___interceptor___isoc99_vsscanf@Base 15 + (arch=i386)___interceptor___libc_memalign@Base 15 + (arch=i386)___interceptor___longjmp_chk@Base 15 + (arch=i386)___interceptor___lxstat64@Base 15 + (arch=i386)___interceptor___lxstat@Base 15 + (arch=i386)___interceptor___overflow@Base 15 + (arch=i386)___interceptor___snprintf_chk@Base 15 + (arch=i386)___interceptor___sprintf_chk@Base 15 + (arch=i386)___interceptor___strdup@Base 15 + (arch=i386)___interceptor___strndup@Base 15 + (arch=i386)___interceptor___strxfrm_l@Base 15 + (arch=i386)___interceptor___tls_get_addr@Base 15 + (arch=i386)___interceptor___uflow@Base 15 + (arch=i386)___interceptor___underflow@Base 15 + (arch=i386)___interceptor___vsnprintf_chk@Base 15 + (arch=i386)___interceptor___vsprintf_chk@Base 15 + (arch=i386)___interceptor___wcsxfrm_l@Base 15 + (arch=i386)___interceptor___woverflow@Base 15 + (arch=i386)___interceptor___wuflow@Base 15 + (arch=i386)___interceptor___wunderflow@Base 15 + (arch=i386)___interceptor___xpg_strerror_r@Base 15 + (arch=i386)___interceptor___xstat64@Base 15 + (arch=i386)___interceptor___xstat@Base 15 + (arch=i386)___interceptor__exit@Base 15 + (arch=i386)___interceptor__longjmp@Base 15 + (arch=i386)___interceptor__obstack_begin@Base 15 + (arch=i386)___interceptor__obstack_begin_1@Base 15 + (arch=i386)___interceptor__obstack_newchunk@Base 15 + (arch=i386)___interceptor_accept4@Base 15 + (arch=i386)___interceptor_accept@Base 15 + (arch=i386)___interceptor_aligned_alloc@Base 15 + (arch=i386)___interceptor_argp_parse@Base 15 + (arch=i386)___interceptor_asctime@Base 15 + (arch=i386)___interceptor_asctime_r@Base 15 + (arch=i386)___interceptor_asprintf@Base 15 + (arch=i386)___interceptor_atoi@Base 15 + (arch=i386)___interceptor_atol@Base 15 + (arch=i386)___interceptor_atoll@Base 15 + (arch=i386)___interceptor_backtrace@Base 15 + (arch=i386)___interceptor_backtrace_symbols@Base 15 + (arch=i386)___interceptor_bcmp@Base 15 + (arch=i386)___interceptor_bsearch@Base 15 + (arch=i386)___interceptor_bzero@Base 15 + (arch=i386)___interceptor_calloc@Base 15 + (arch=i386)___interceptor_canonicalize_file_name@Base 15 + (arch=i386)___interceptor_capget@Base 15 + (arch=i386)___interceptor_capset@Base 15 + (arch=i386)___interceptor_cfree@Base 15 + (arch=i386)___interceptor_clock_getcpuclockid@Base 15 + (arch=i386)___interceptor_clock_getres@Base 15 + (arch=i386)___interceptor_clock_gettime@Base 15 + (arch=i386)___interceptor_clock_settime@Base 15 + (arch=i386)___interceptor_confstr@Base 15 + (arch=i386)___interceptor_ctermid@Base 15 + (arch=i386)___interceptor_ctime@Base 15 + (arch=i386)___interceptor_ctime_r@Base 15 + (arch=i386)___interceptor_dlclose@Base 15 + (arch=i386)___interceptor_dlopen@Base 15 + (arch=i386)___interceptor_dn_comp@Base 15 + (arch=i386)___interceptor_dn_expand@Base 15 + (arch=i386)___interceptor_drand48_r@Base 15 + (arch=i386)___interceptor_endgrent@Base 15 + (arch=i386)___interceptor_endpwent@Base 15 + (arch=i386)___interceptor_ether_aton@Base 15 + (arch=i386)___interceptor_ether_aton_r@Base 15 + (arch=i386)___interceptor_ether_hostton@Base 15 + (arch=i386)___interceptor_ether_line@Base 15 + (arch=i386)___interceptor_ether_ntoa@Base 15 + (arch=i386)___interceptor_ether_ntoa_r@Base 15 + (arch=i386)___interceptor_ether_ntohost@Base 15 + (arch=i386)___interceptor_eventfd_read@Base 15 + (arch=i386)___interceptor_eventfd_write@Base 15 + (arch=i386)___interceptor_fclose@Base 15 + (arch=i386)___interceptor_fdopen@Base 15 + (arch=i386)___interceptor_fflush@Base 15 + (arch=i386)___interceptor_fgetgrent@Base 15 + (arch=i386)___interceptor_fgetgrent_r@Base 15 + (arch=i386)___interceptor_fgetpwent@Base 15 + (arch=i386)___interceptor_fgetpwent_r@Base 15 + (arch=i386)___interceptor_fgets@Base 15 + (arch=i386)___interceptor_fgetxattr@Base 15 + (arch=i386)___interceptor_flistxattr@Base 15 + (arch=i386)___interceptor_fmemopen@Base 15 + (arch=i386)___interceptor_fopen64@Base 15 + (arch=i386)___interceptor_fopen@Base 15 + (arch=i386)___interceptor_fopencookie@Base 15 + (arch=i386)___interceptor_fprintf@Base 15 + (arch=i386)___interceptor_fputs@Base 15 + (arch=i386)___interceptor_fread@Base 15 + (arch=i386)___interceptor_free@Base 15 + (arch=i386)___interceptor_freopen64@Base 15 + (arch=i386)___interceptor_freopen@Base 15 + (arch=i386)___interceptor_frexp@Base 15 + (arch=i386)___interceptor_frexpf@Base 15 + (arch=i386)___interceptor_frexpl@Base 15 + (arch=i386)___interceptor_fscanf@Base 15 + (arch=i386)___interceptor_fstatfs64@Base 15 + (arch=i386)___interceptor_fstatfs@Base 15 + (arch=i386)___interceptor_fstatvfs64@Base 15 + (arch=i386)___interceptor_fstatvfs@Base 15 + (arch=i386)___interceptor_ftime@Base 15 + (arch=i386)___interceptor_fwrite@Base 15 + (arch=i386)___interceptor_get_current_dir_name@Base 15 + (arch=i386)___interceptor_getaddrinfo@Base 15 + (arch=i386)___interceptor_getcwd@Base 15 + (arch=i386)___interceptor_getdelim@Base 15 + (arch=i386)___interceptor_getentropy@Base 15 + (arch=i386)___interceptor_getgrent@Base 15 + (arch=i386)___interceptor_getgrent_r@Base 15 + (arch=i386)___interceptor_getgrgid@Base 15 + (arch=i386)___interceptor_getgrgid_r@Base 15 + (arch=i386)___interceptor_getgrnam@Base 15 + (arch=i386)___interceptor_getgrnam_r@Base 15 + (arch=i386)___interceptor_getgrouplist@Base 15 + (arch=i386)___interceptor_getgroups@Base 15 + (arch=i386)___interceptor_gethostbyaddr@Base 15 + (arch=i386)___interceptor_gethostbyaddr_r@Base 15 + (arch=i386)___interceptor_gethostbyname2@Base 15 + (arch=i386)___interceptor_gethostbyname2_r@Base 15 + (arch=i386)___interceptor_gethostbyname@Base 15 + (arch=i386)___interceptor_gethostbyname_r@Base 15 + (arch=i386)___interceptor_gethostent@Base 15 + (arch=i386)___interceptor_gethostent_r@Base 15 + (arch=i386)___interceptor_getifaddrs@Base 15 + (arch=i386)___interceptor_getitimer@Base 15 + (arch=i386)___interceptor_getline@Base 15 + (arch=i386)___interceptor_getloadavg@Base 15 + (arch=i386)___interceptor_getmntent@Base 15 + (arch=i386)___interceptor_getmntent_r@Base 15 + (arch=i386)___interceptor_getnameinfo@Base 15 + (arch=i386)___interceptor_getnetbyaddr@Base 15 + (arch=i386)___interceptor_getnetbyname@Base 15 + (arch=i386)___interceptor_getnetent@Base 15 + (arch=i386)___interceptor_getpass@Base 15 + (arch=i386)___interceptor_getpeername@Base 15 + (arch=i386)___interceptor_getprotobyname@Base 15 + (arch=i386)___interceptor_getprotobyname_r@Base 15 + (arch=i386)___interceptor_getprotobynumber@Base 15 + (arch=i386)___interceptor_getprotobynumber_r@Base 15 + (arch=i386)___interceptor_getprotoent@Base 15 + (arch=i386)___interceptor_getprotoent_r@Base 15 + (arch=i386)___interceptor_getpwent@Base 15 + (arch=i386)___interceptor_getpwent_r@Base 15 + (arch=i386)___interceptor_getpwnam@Base 15 + (arch=i386)___interceptor_getpwnam_r@Base 15 + (arch=i386)___interceptor_getpwuid@Base 15 + (arch=i386)___interceptor_getpwuid_r@Base 15 + (arch=i386)___interceptor_getrandom@Base 15 + (arch=i386)___interceptor_getresgid@Base 15 + (arch=i386)___interceptor_getresuid@Base 15 + (arch=i386)___interceptor_getsockname@Base 15 + (arch=i386)___interceptor_getsockopt@Base 15 + (arch=i386)___interceptor_getusershell@Base 15 + (arch=i386)___interceptor_getutent@Base 15 + (arch=i386)___interceptor_getutid@Base 15 + (arch=i386)___interceptor_getutline@Base 15 + (arch=i386)___interceptor_getutxent@Base 15 + (arch=i386)___interceptor_getutxid@Base 15 + (arch=i386)___interceptor_getutxline@Base 15 + (arch=i386)___interceptor_getxattr@Base 15 + (arch=i386)___interceptor_glob64@Base 15 + (arch=i386)___interceptor_glob@Base 15 + (arch=i386)___interceptor_gmtime@Base 15 + (arch=i386)___interceptor_gmtime_r@Base 15 + (arch=i386)___interceptor_iconv@Base 15 + (arch=i386)___interceptor_if_indextoname@Base 15 + (arch=i386)___interceptor_if_nametoindex@Base 15 + (arch=i386)___interceptor_index@Base 15 + (arch=i386)___interceptor_inet_aton@Base 15 + (arch=i386)___interceptor_inet_ntop@Base 15 + (arch=i386)___interceptor_inet_pton@Base 15 + (arch=i386)___interceptor_initgroups@Base 15 + (arch=i386)___interceptor_ioctl@Base 15 + (arch=i386)___interceptor_lgamma@Base 15 + (arch=i386)___interceptor_lgamma_r@Base 15 + (arch=i386)___interceptor_lgammaf@Base 15 + (arch=i386)___interceptor_lgammaf_r@Base 15 + (arch=i386)___interceptor_lgammal@Base 15 + (arch=i386)___interceptor_lgammal_r@Base 15 + (arch=i386)___interceptor_lgetxattr@Base 15 + (arch=i386)___interceptor_listxattr@Base 15 + (arch=i386)___interceptor_llistxattr@Base 15 + (arch=i386)___interceptor_localtime@Base 15 + (arch=i386)___interceptor_localtime_r@Base 15 + (arch=i386)___interceptor_longjmp@Base 15 + (arch=i386)___interceptor_lrand48_r@Base 15 + (arch=i386)___interceptor_lstat64@Base 15 + (arch=i386)___interceptor_lstat@Base 15 + (arch=i386)___interceptor_makecontext@Base 15 + (arch=i386)___interceptor_mallinfo@Base 15 + (arch=i386)___interceptor_malloc@Base 15 + (arch=i386)___interceptor_malloc_stats@Base 15 + (arch=i386)___interceptor_malloc_usable_size@Base 15 + (arch=i386)___interceptor_mallopt@Base 15 + (arch=i386)___interceptor_mbsnrtowcs@Base 15 + (arch=i386)___interceptor_mbsrtowcs@Base 15 + (arch=i386)___interceptor_mbstowcs@Base 15 + (arch=i386)___interceptor_mcheck@Base 15 + (arch=i386)___interceptor_mcheck_pedantic@Base 15 + (arch=i386)___interceptor_memalign@Base 15 + (arch=i386)___interceptor_memchr@Base 15 + (arch=i386)___interceptor_memcmp@Base 15 + (arch=i386)___interceptor_memcpy@Base 15 + (arch=i386)___interceptor_memmem@Base 15 + (arch=i386)___interceptor_memmove@Base 15 + (arch=i386)___interceptor_memrchr@Base 15 + (arch=i386)___interceptor_memset@Base 15 + (arch=i386)___interceptor_mincore@Base 15 + (arch=i386)___interceptor_mktime@Base 15 + (arch=i386)___interceptor_mlock@Base 15 + (arch=i386)___interceptor_mlockall@Base 15 + (arch=i386)___interceptor_mmap64@Base 15 + (arch=i386)___interceptor_mmap@Base 15 + (arch=i386)___interceptor_modf@Base 15 + (arch=i386)___interceptor_modff@Base 15 + (arch=i386)___interceptor_modfl@Base 15 + (arch=i386)___interceptor_mprobe@Base 15 + (arch=i386)___interceptor_mprotect@Base 15 + (arch=i386)___interceptor_msgrcv@Base 15 + (arch=i386)___interceptor_msgsnd@Base 15 + (arch=i386)___interceptor_munlock@Base 15 + (arch=i386)___interceptor_munlockall@Base 15 + (arch=i386)___interceptor_munmap@Base 15 + (arch=i386)___interceptor_name_to_handle_at@Base 15 + (arch=i386)___interceptor_open_by_handle_at@Base 15 + (arch=i386)___interceptor_open_memstream@Base 15 + (arch=i386)___interceptor_open_wmemstream@Base 15 + (arch=i386)___interceptor_opendir@Base 15 + (arch=i386)___interceptor_pclose@Base 15 + (arch=i386)___interceptor_poll@Base 15 + (arch=i386)___interceptor_popen@Base 15 + (arch=i386)___interceptor_posix_memalign@Base 15 + (arch=i386)___interceptor_posix_spawn@Base 15 + (arch=i386)___interceptor_posix_spawnp@Base 15 + (arch=i386)___interceptor_ppoll@Base 15 + (arch=i386)___interceptor_prctl@Base 15 + (arch=i386)___interceptor_pread64@Base 15 + (arch=i386)___interceptor_pread@Base 15 + (arch=i386)___interceptor_preadv2@Base 15 + (arch=i386)___interceptor_preadv64@Base 15 + (arch=i386)___interceptor_preadv@Base 15 + (arch=i386)___interceptor_printf@Base 15 + (arch=i386)___interceptor_process_vm_readv@Base 15 + (arch=i386)___interceptor_process_vm_writev@Base 15 + (arch=i386)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=i386)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=i386)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=i386)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=i386)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=i386)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=i386)___interceptor_pthread_attr_getscope@Base 15 + (arch=i386)___interceptor_pthread_attr_getstack@Base 15 + (arch=i386)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=i386)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_condattr_getclock@Base 15 + (arch=i386)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_create@Base 15 + (arch=i386)___interceptor_pthread_detach@Base 15 + (arch=i386)___interceptor_pthread_exit@Base 15 + (arch=i386)___interceptor_pthread_getaffinity_np@Base 15 + (arch=i386)___interceptor_pthread_getcpuclockid@Base 15 + (arch=i386)___interceptor_pthread_getname_np@Base 15 + (arch=i386)___interceptor_pthread_getschedparam@Base 15 + (arch=i386)___interceptor_pthread_join@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=i386)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=i386)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=i386)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=i386)___interceptor_pthread_setcancelstate@Base 15 + (arch=i386)___interceptor_pthread_setcanceltype@Base 15 + (arch=i386)___interceptor_pthread_setname_np@Base 15 + (arch=i386)___interceptor_pthread_sigmask@Base 15 + (arch=i386)___interceptor_pthread_timedjoin_np@Base 15 + (arch=i386)___interceptor_pthread_tryjoin_np@Base 15 + (arch=i386)___interceptor_ptrace@Base 15 + (arch=i386)___interceptor_ptsname@Base 15 + (arch=i386)___interceptor_ptsname_r@Base 15 + (arch=i386)___interceptor_puts@Base 15 + (arch=i386)___interceptor_pututxline@Base 15 + (arch=i386)___interceptor_pvalloc@Base 15 + (arch=i386)___interceptor_pwrite64@Base 15 + (arch=i386)___interceptor_pwrite@Base 15 + (arch=i386)___interceptor_pwritev2@Base 15 + (arch=i386)___interceptor_pwritev64@Base 15 + (arch=i386)___interceptor_pwritev@Base 15 + (arch=i386)___interceptor_qsort@Base 15 + (arch=i386)___interceptor_qsort_r@Base 15 + (arch=i386)___interceptor_rand_r@Base 15 + (arch=i386)___interceptor_random_r@Base 15 + (arch=i386)___interceptor_read@Base 15 + (arch=i386)___interceptor_readdir64@Base 15 + (arch=i386)___interceptor_readdir64_r@Base 15 + (arch=i386)___interceptor_readdir@Base 15 + (arch=i386)___interceptor_readdir_r@Base 15 + (arch=i386)___interceptor_readlink@Base 15 + (arch=i386)___interceptor_readlinkat@Base 15 + (arch=i386)___interceptor_readv@Base 15 + (arch=i386)___interceptor_realloc@Base 15 + (arch=i386)___interceptor_reallocarray@Base 15 + (arch=i386)___interceptor_realpath@Base 15 + (arch=i386)___interceptor_recv@Base 15 + (arch=i386)___interceptor_recvfrom@Base 15 + (arch=i386)___interceptor_recvmmsg@Base 15 + (arch=i386)___interceptor_recvmsg@Base 15 + (arch=i386)___interceptor_regcomp@Base 15 + (arch=i386)___interceptor_regerror@Base 15 + (arch=i386)___interceptor_regexec@Base 15 + (arch=i386)___interceptor_regfree@Base 15 + (arch=i386)___interceptor_remquo@Base 15 + (arch=i386)___interceptor_remquof@Base 15 + (arch=i386)___interceptor_remquol@Base 15 + (arch=i386)___interceptor_scandir64@Base 15 + (arch=i386)___interceptor_scandir@Base 15 + (arch=i386)___interceptor_scanf@Base 15 + (arch=i386)___interceptor_sched_getaffinity@Base 15 + (arch=i386)___interceptor_sched_getparam@Base 15 + (arch=i386)___interceptor_sem_destroy@Base 15 + (arch=i386)___interceptor_sem_getvalue@Base 15 + (arch=i386)___interceptor_sem_init@Base 15 + (arch=i386)___interceptor_sem_open@Base 15 + (arch=i386)___interceptor_sem_post@Base 15 + (arch=i386)___interceptor_sem_timedwait@Base 15 + (arch=i386)___interceptor_sem_trywait@Base 15 + (arch=i386)___interceptor_sem_unlink@Base 15 + (arch=i386)___interceptor_sem_wait@Base 15 + (arch=i386)___interceptor_send@Base 15 + (arch=i386)___interceptor_sendmmsg@Base 15 + (arch=i386)___interceptor_sendmsg@Base 15 + (arch=i386)___interceptor_sendto@Base 15 + (arch=i386)___interceptor_setbuf@Base 15 + (arch=i386)___interceptor_setbuffer@Base 15 + (arch=i386)___interceptor_setgrent@Base 15 + (arch=i386)___interceptor_setitimer@Base 15 + (arch=i386)___interceptor_setlinebuf@Base 15 + (arch=i386)___interceptor_setlocale@Base 15 + (arch=i386)___interceptor_setpwent@Base 15 + (arch=i386)___interceptor_setvbuf@Base 15 + (arch=i386)___interceptor_shmctl@Base 15 + (arch=i386)___interceptor_sigaction@Base 15 + (arch=i386)___interceptor_sigaltstack@Base 15 + (arch=i386)___interceptor_sigandset@Base 15 + (arch=i386)___interceptor_sigemptyset@Base 15 + (arch=i386)___interceptor_sigfillset@Base 15 + (arch=i386)___interceptor_siglongjmp@Base 15 + (arch=i386)___interceptor_signal@Base 15 + (arch=i386)___interceptor_sigorset@Base 15 + (arch=i386)___interceptor_sigpending@Base 15 + (arch=i386)___interceptor_sigprocmask@Base 15 + (arch=i386)___interceptor_sigtimedwait@Base 15 + (arch=i386)___interceptor_sigwait@Base 15 + (arch=i386)___interceptor_sigwaitinfo@Base 15 + (arch=i386)___interceptor_sincos@Base 15 + (arch=i386)___interceptor_sincosf@Base 15 + (arch=i386)___interceptor_sincosl@Base 15 + (arch=i386)___interceptor_snprintf@Base 15 + (arch=i386)___interceptor_sprintf@Base 15 + (arch=i386)___interceptor_sscanf@Base 15 + (arch=i386)___interceptor_stat64@Base 15 + (arch=i386)___interceptor_stat@Base 15 + (arch=i386)___interceptor_statfs64@Base 15 + (arch=i386)___interceptor_statfs@Base 15 + (arch=i386)___interceptor_statvfs64@Base 15 + (arch=i386)___interceptor_statvfs@Base 15 + (arch=i386)___interceptor_strcasecmp@Base 15 + (arch=i386)___interceptor_strcasestr@Base 15 + (arch=i386)___interceptor_strcat@Base 15 + (arch=i386)___interceptor_strchr@Base 15 + (arch=i386)___interceptor_strchrnul@Base 15 + (arch=i386)___interceptor_strcmp@Base 15 + (arch=i386)___interceptor_strcpy@Base 15 + (arch=i386)___interceptor_strcspn@Base 15 + (arch=i386)___interceptor_strdup@Base 15 + (arch=i386)___interceptor_strerror@Base 15 + (arch=i386)___interceptor_strerror_r@Base 15 + (arch=i386)___interceptor_strlen@Base 15 + (arch=i386)___interceptor_strncasecmp@Base 15 + (arch=i386)___interceptor_strncat@Base 15 + (arch=i386)___interceptor_strncmp@Base 15 + (arch=i386)___interceptor_strncpy@Base 15 + (arch=i386)___interceptor_strndup@Base 15 + (arch=i386)___interceptor_strnlen@Base 15 + (arch=i386)___interceptor_strpbrk@Base 15 + (arch=i386)___interceptor_strptime@Base 15 + (arch=i386)___interceptor_strrchr@Base 15 + (arch=i386)___interceptor_strspn@Base 15 + (arch=i386)___interceptor_strstr@Base 15 + (arch=i386)___interceptor_strtoimax@Base 15 + (arch=i386)___interceptor_strtok@Base 15 + (arch=i386)___interceptor_strtol@Base 15 + (arch=i386)___interceptor_strtoll@Base 15 + (arch=i386)___interceptor_strtoumax@Base 15 + (arch=i386)___interceptor_strxfrm@Base 15 + (arch=i386)___interceptor_strxfrm_l@Base 15 + (arch=i386)___interceptor_swapcontext@Base 15 + (arch=i386)___interceptor_sysinfo@Base 15 + (arch=i386)___interceptor_tcgetattr@Base 15 + (arch=i386)___interceptor_tempnam@Base 15 + (arch=i386)___interceptor_textdomain@Base 15 + (arch=i386)___interceptor_time@Base 15 + (arch=i386)___interceptor_timerfd_gettime@Base 15 + (arch=i386)___interceptor_timerfd_settime@Base 15 + (arch=i386)___interceptor_times@Base 15 + (arch=i386)___interceptor_tmpnam@Base 15 + (arch=i386)___interceptor_tmpnam_r@Base 15 + (arch=i386)___interceptor_tsearch@Base 15 + (arch=i386)___interceptor_ttyname@Base 15 + (arch=i386)___interceptor_ttyname_r@Base 15 + (arch=i386)___interceptor_uname@Base 15 + (arch=i386)___interceptor_valloc@Base 15 + (arch=i386)___interceptor_vasprintf@Base 15 + (arch=i386)___interceptor_vfork@Base 15 + (arch=i386)___interceptor_vfprintf@Base 15 + (arch=i386)___interceptor_vfscanf@Base 15 + (arch=i386)___interceptor_vprintf@Base 15 + (arch=i386)___interceptor_vscanf@Base 15 + (arch=i386)___interceptor_vsnprintf@Base 15 + (arch=i386)___interceptor_vsprintf@Base 15 + (arch=i386)___interceptor_vsscanf@Base 15 + (arch=i386)___interceptor_wait3@Base 15 + (arch=i386)___interceptor_wait4@Base 15 + (arch=i386)___interceptor_wait@Base 15 + (arch=i386)___interceptor_waitid@Base 15 + (arch=i386)___interceptor_waitpid@Base 15 + (arch=i386)___interceptor_wcrtomb@Base 15 + (arch=i386)___interceptor_wcscat@Base 15 + (arch=i386)___interceptor_wcsdup@Base 15 + (arch=i386)___interceptor_wcslen@Base 15 + (arch=i386)___interceptor_wcsncat@Base 15 + (arch=i386)___interceptor_wcsnlen@Base 15 + (arch=i386)___interceptor_wcsnrtombs@Base 15 + (arch=i386)___interceptor_wcsrtombs@Base 15 + (arch=i386)___interceptor_wcstombs@Base 15 + (arch=i386)___interceptor_wcsxfrm@Base 15 + (arch=i386)___interceptor_wcsxfrm_l@Base 15 + (arch=i386)___interceptor_wctomb@Base 15 + (arch=i386)___interceptor_wordexp@Base 15 + (arch=i386)___interceptor_write@Base 15 + (arch=i386)___interceptor_writev@Base 15 + (arch=i386)___interceptor_xdr_bool@Base 15 + (arch=i386)___interceptor_xdr_bytes@Base 15 + (arch=i386)___interceptor_xdr_char@Base 15 + (arch=i386)___interceptor_xdr_destroy@Base 15 + (arch=i386)___interceptor_xdr_double@Base 15 + (arch=i386)___interceptor_xdr_enum@Base 15 + (arch=i386)___interceptor_xdr_float@Base 15 + (arch=i386)___interceptor_xdr_hyper@Base 15 + (arch=i386)___interceptor_xdr_int16_t@Base 15 + (arch=i386)___interceptor_xdr_int32_t@Base 15 + (arch=i386)___interceptor_xdr_int64_t@Base 15 + (arch=i386)___interceptor_xdr_int8_t@Base 15 + (arch=i386)___interceptor_xdr_int@Base 15 + (arch=i386)___interceptor_xdr_long@Base 15 + (arch=i386)___interceptor_xdr_longlong_t@Base 15 + (arch=i386)___interceptor_xdr_quad_t@Base 15 + (arch=i386)___interceptor_xdr_short@Base 15 + (arch=i386)___interceptor_xdr_string@Base 15 + (arch=i386)___interceptor_xdr_u_char@Base 15 + (arch=i386)___interceptor_xdr_u_hyper@Base 15 + (arch=i386)___interceptor_xdr_u_int@Base 15 + (arch=i386)___interceptor_xdr_u_long@Base 15 + (arch=i386)___interceptor_xdr_u_longlong_t@Base 15 + (arch=i386)___interceptor_xdr_u_quad_t@Base 15 + (arch=i386)___interceptor_xdr_u_short@Base 15 + (arch=i386)___interceptor_xdr_uint16_t@Base 15 + (arch=i386)___interceptor_xdr_uint32_t@Base 15 + (arch=i386)___interceptor_xdr_uint64_t@Base 15 + (arch=i386)___interceptor_xdr_uint8_t@Base 15 + (arch=i386)___interceptor_xdrmem_create@Base 15 + (arch=i386)___interceptor_xdrrec_create@Base 15 + (arch=i386)___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + __interceptor___tls_get_addr@Base 15 + (arch=powerpc)__interceptor___tls_get_addr_opt@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + __interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_shmctl@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + (arch=i386)__interceptor_trampoline__Unwind_RaiseException@Base 15 + (arch=i386)__interceptor_trampoline___b64_ntop@Base 15 + (arch=i386)__interceptor_trampoline___b64_pton@Base 15 + (arch=i386)__interceptor_trampoline___bzero@Base 15 + (arch=i386)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=i386)__interceptor_trampoline___cxa_throw@Base 15 + (arch=i386)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___getdelim@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtol@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoll@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=i386)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline___libc_memalign@Base 15 + (arch=i386)__interceptor_trampoline___longjmp_chk@Base 15 + (arch=i386)__interceptor_trampoline___lxstat64@Base 15 + (arch=i386)__interceptor_trampoline___lxstat@Base 15 + (arch=i386)__interceptor_trampoline___overflow@Base 15 + (arch=i386)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___strdup@Base 15 + (arch=i386)__interceptor_trampoline___strndup@Base 15 + (arch=i386)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=i386)__interceptor_trampoline___uflow@Base 15 + (arch=i386)__interceptor_trampoline___underflow@Base 15 + (arch=i386)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=i386)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline___woverflow@Base 15 + (arch=i386)__interceptor_trampoline___wuflow@Base 15 + (arch=i386)__interceptor_trampoline___wunderflow@Base 15 + (arch=i386)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=i386)__interceptor_trampoline___xstat64@Base 15 + (arch=i386)__interceptor_trampoline___xstat@Base 15 + (arch=i386)__interceptor_trampoline__exit@Base 15 + (arch=i386)__interceptor_trampoline__longjmp@Base 15 + (arch=i386)__interceptor_trampoline__obstack_begin@Base 15 + (arch=i386)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=i386)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=i386)__interceptor_trampoline_accept4@Base 15 + (arch=i386)__interceptor_trampoline_accept@Base 15 + (arch=i386)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=i386)__interceptor_trampoline_argp_parse@Base 15 + (arch=i386)__interceptor_trampoline_asctime@Base 15 + (arch=i386)__interceptor_trampoline_asctime_r@Base 15 + (arch=i386)__interceptor_trampoline_asprintf@Base 15 + (arch=i386)__interceptor_trampoline_atoi@Base 15 + (arch=i386)__interceptor_trampoline_atol@Base 15 + (arch=i386)__interceptor_trampoline_atoll@Base 15 + (arch=i386)__interceptor_trampoline_backtrace@Base 15 + (arch=i386)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=i386)__interceptor_trampoline_bcmp@Base 15 + (arch=i386)__interceptor_trampoline_bsearch@Base 15 + (arch=i386)__interceptor_trampoline_bzero@Base 15 + (arch=i386)__interceptor_trampoline_calloc@Base 15 + (arch=i386)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=i386)__interceptor_trampoline_capget@Base 15 + (arch=i386)__interceptor_trampoline_capset@Base 15 + (arch=i386)__interceptor_trampoline_cfree@Base 15 + (arch=i386)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=i386)__interceptor_trampoline_clock_getres@Base 15 + (arch=i386)__interceptor_trampoline_clock_gettime@Base 15 + (arch=i386)__interceptor_trampoline_clock_settime@Base 15 + (arch=i386)__interceptor_trampoline_confstr@Base 15 + (arch=i386)__interceptor_trampoline_ctermid@Base 15 + (arch=i386)__interceptor_trampoline_ctime@Base 15 + (arch=i386)__interceptor_trampoline_ctime_r@Base 15 + (arch=i386)__interceptor_trampoline_dlclose@Base 15 + (arch=i386)__interceptor_trampoline_dlopen@Base 15 + (arch=i386)__interceptor_trampoline_dn_comp@Base 15 + (arch=i386)__interceptor_trampoline_dn_expand@Base 15 + (arch=i386)__interceptor_trampoline_drand48_r@Base 15 + (arch=i386)__interceptor_trampoline_endgrent@Base 15 + (arch=i386)__interceptor_trampoline_endpwent@Base 15 + (arch=i386)__interceptor_trampoline_ether_aton@Base 15 + (arch=i386)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=i386)__interceptor_trampoline_ether_hostton@Base 15 + (arch=i386)__interceptor_trampoline_ether_line@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=i386)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=i386)__interceptor_trampoline_eventfd_read@Base 15 + (arch=i386)__interceptor_trampoline_eventfd_write@Base 15 + (arch=i386)__interceptor_trampoline_fclose@Base 15 + (arch=i386)__interceptor_trampoline_fdopen@Base 15 + (arch=i386)__interceptor_trampoline_fflush@Base 15 + (arch=i386)__interceptor_trampoline_fgetgrent@Base 15 + (arch=i386)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=i386)__interceptor_trampoline_fgetpwent@Base 15 + (arch=i386)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=i386)__interceptor_trampoline_fgets@Base 15 + (arch=i386)__interceptor_trampoline_fgetxattr@Base 15 + (arch=i386)__interceptor_trampoline_flistxattr@Base 15 + (arch=i386)__interceptor_trampoline_fmemopen@Base 15 + (arch=i386)__interceptor_trampoline_fopen64@Base 15 + (arch=i386)__interceptor_trampoline_fopen@Base 15 + (arch=i386)__interceptor_trampoline_fopencookie@Base 15 + (arch=i386)__interceptor_trampoline_fprintf@Base 15 + (arch=i386)__interceptor_trampoline_fputs@Base 15 + (arch=i386)__interceptor_trampoline_fread@Base 15 + (arch=i386)__interceptor_trampoline_free@Base 15 + (arch=i386)__interceptor_trampoline_freopen64@Base 15 + (arch=i386)__interceptor_trampoline_freopen@Base 15 + (arch=i386)__interceptor_trampoline_frexp@Base 15 + (arch=i386)__interceptor_trampoline_frexpf@Base 15 + (arch=i386)__interceptor_trampoline_frexpl@Base 15 + (arch=i386)__interceptor_trampoline_fscanf@Base 15 + (arch=i386)__interceptor_trampoline_fstatfs64@Base 15 + (arch=i386)__interceptor_trampoline_fstatfs@Base 15 + (arch=i386)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=i386)__interceptor_trampoline_fstatvfs@Base 15 + (arch=i386)__interceptor_trampoline_ftime@Base 15 + (arch=i386)__interceptor_trampoline_fwrite@Base 15 + (arch=i386)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=i386)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=i386)__interceptor_trampoline_getcwd@Base 15 + (arch=i386)__interceptor_trampoline_getdelim@Base 15 + (arch=i386)__interceptor_trampoline_getentropy@Base 15 + (arch=i386)__interceptor_trampoline_getgrent@Base 15 + (arch=i386)__interceptor_trampoline_getgrent_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrgid@Base 15 + (arch=i386)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrnam@Base 15 + (arch=i386)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=i386)__interceptor_trampoline_getgrouplist@Base 15 + (arch=i386)__interceptor_trampoline_getgroups@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname@Base 15 + (arch=i386)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=i386)__interceptor_trampoline_gethostent@Base 15 + (arch=i386)__interceptor_trampoline_gethostent_r@Base 15 + (arch=i386)__interceptor_trampoline_getifaddrs@Base 15 + (arch=i386)__interceptor_trampoline_getitimer@Base 15 + (arch=i386)__interceptor_trampoline_getline@Base 15 + (arch=i386)__interceptor_trampoline_getloadavg@Base 15 + (arch=i386)__interceptor_trampoline_getmntent@Base 15 + (arch=i386)__interceptor_trampoline_getmntent_r@Base 15 + (arch=i386)__interceptor_trampoline_getnameinfo@Base 15 + (arch=i386)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=i386)__interceptor_trampoline_getnetbyname@Base 15 + (arch=i386)__interceptor_trampoline_getnetent@Base 15 + (arch=i386)__interceptor_trampoline_getpass@Base 15 + (arch=i386)__interceptor_trampoline_getpeername@Base 15 + (arch=i386)__interceptor_trampoline_getprotobyname@Base 15 + (arch=i386)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=i386)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=i386)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=i386)__interceptor_trampoline_getprotoent@Base 15 + (arch=i386)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwent@Base 15 + (arch=i386)__interceptor_trampoline_getpwent_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwnam@Base 15 + (arch=i386)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=i386)__interceptor_trampoline_getpwuid@Base 15 + (arch=i386)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=i386)__interceptor_trampoline_getrandom@Base 15 + (arch=i386)__interceptor_trampoline_getresgid@Base 15 + (arch=i386)__interceptor_trampoline_getresuid@Base 15 + (arch=i386)__interceptor_trampoline_getsockname@Base 15 + (arch=i386)__interceptor_trampoline_getsockopt@Base 15 + (arch=i386)__interceptor_trampoline_getusershell@Base 15 + (arch=i386)__interceptor_trampoline_getutent@Base 15 + (arch=i386)__interceptor_trampoline_getutid@Base 15 + (arch=i386)__interceptor_trampoline_getutline@Base 15 + (arch=i386)__interceptor_trampoline_getutxent@Base 15 + (arch=i386)__interceptor_trampoline_getutxid@Base 15 + (arch=i386)__interceptor_trampoline_getutxline@Base 15 + (arch=i386)__interceptor_trampoline_getxattr@Base 15 + (arch=i386)__interceptor_trampoline_glob64@Base 15 + (arch=i386)__interceptor_trampoline_glob@Base 15 + (arch=i386)__interceptor_trampoline_gmtime@Base 15 + (arch=i386)__interceptor_trampoline_gmtime_r@Base 15 + (arch=i386)__interceptor_trampoline_iconv@Base 15 + (arch=i386)__interceptor_trampoline_if_indextoname@Base 15 + (arch=i386)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=i386)__interceptor_trampoline_index@Base 15 + (arch=i386)__interceptor_trampoline_inet_aton@Base 15 + (arch=i386)__interceptor_trampoline_inet_ntop@Base 15 + (arch=i386)__interceptor_trampoline_inet_pton@Base 15 + (arch=i386)__interceptor_trampoline_initgroups@Base 15 + (arch=i386)__interceptor_trampoline_ioctl@Base 15 + (arch=i386)__interceptor_trampoline_lgamma@Base 15 + (arch=i386)__interceptor_trampoline_lgamma_r@Base 15 + (arch=i386)__interceptor_trampoline_lgammaf@Base 15 + (arch=i386)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=i386)__interceptor_trampoline_lgammal@Base 15 + (arch=i386)__interceptor_trampoline_lgammal_r@Base 15 + (arch=i386)__interceptor_trampoline_lgetxattr@Base 15 + (arch=i386)__interceptor_trampoline_listxattr@Base 15 + (arch=i386)__interceptor_trampoline_llistxattr@Base 15 + (arch=i386)__interceptor_trampoline_localtime@Base 15 + (arch=i386)__interceptor_trampoline_localtime_r@Base 15 + (arch=i386)__interceptor_trampoline_longjmp@Base 15 + (arch=i386)__interceptor_trampoline_lrand48_r@Base 15 + (arch=i386)__interceptor_trampoline_lstat64@Base 15 + (arch=i386)__interceptor_trampoline_lstat@Base 15 + (arch=i386)__interceptor_trampoline_makecontext@Base 15 + (arch=i386)__interceptor_trampoline_mallinfo@Base 15 + (arch=i386)__interceptor_trampoline_malloc@Base 15 + (arch=i386)__interceptor_trampoline_malloc_stats@Base 15 + (arch=i386)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=i386)__interceptor_trampoline_mallopt@Base 15 + (arch=i386)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=i386)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=i386)__interceptor_trampoline_mbstowcs@Base 15 + (arch=i386)__interceptor_trampoline_mcheck@Base 15 + (arch=i386)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=i386)__interceptor_trampoline_memalign@Base 15 + (arch=i386)__interceptor_trampoline_memchr@Base 15 + (arch=i386)__interceptor_trampoline_memcmp@Base 15 + (arch=i386)__interceptor_trampoline_memcpy@Base 15 + (arch=i386)__interceptor_trampoline_memmem@Base 15 + (arch=i386)__interceptor_trampoline_memmove@Base 15 + (arch=i386)__interceptor_trampoline_memrchr@Base 15 + (arch=i386)__interceptor_trampoline_memset@Base 15 + (arch=i386)__interceptor_trampoline_mincore@Base 15 + (arch=i386)__interceptor_trampoline_mktime@Base 15 + (arch=i386)__interceptor_trampoline_mlock@Base 15 + (arch=i386)__interceptor_trampoline_mlockall@Base 15 + (arch=i386)__interceptor_trampoline_mmap64@Base 15 + (arch=i386)__interceptor_trampoline_mmap@Base 15 + (arch=i386)__interceptor_trampoline_modf@Base 15 + (arch=i386)__interceptor_trampoline_modff@Base 15 + (arch=i386)__interceptor_trampoline_modfl@Base 15 + (arch=i386)__interceptor_trampoline_mprobe@Base 15 + (arch=i386)__interceptor_trampoline_mprotect@Base 15 + (arch=i386)__interceptor_trampoline_msgrcv@Base 15 + (arch=i386)__interceptor_trampoline_msgsnd@Base 15 + (arch=i386)__interceptor_trampoline_munlock@Base 15 + (arch=i386)__interceptor_trampoline_munlockall@Base 15 + (arch=i386)__interceptor_trampoline_munmap@Base 15 + (arch=i386)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=i386)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=i386)__interceptor_trampoline_open_memstream@Base 15 + (arch=i386)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=i386)__interceptor_trampoline_opendir@Base 15 + (arch=i386)__interceptor_trampoline_pclose@Base 15 + (arch=i386)__interceptor_trampoline_poll@Base 15 + (arch=i386)__interceptor_trampoline_popen@Base 15 + (arch=i386)__interceptor_trampoline_posix_memalign@Base 15 + (arch=i386)__interceptor_trampoline_posix_spawn@Base 15 + (arch=i386)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=i386)__interceptor_trampoline_ppoll@Base 15 + (arch=i386)__interceptor_trampoline_prctl@Base 15 + (arch=i386)__interceptor_trampoline_pread64@Base 15 + (arch=i386)__interceptor_trampoline_pread@Base 15 + (arch=i386)__interceptor_trampoline_preadv2@Base 15 + (arch=i386)__interceptor_trampoline_preadv64@Base 15 + (arch=i386)__interceptor_trampoline_preadv@Base 15 + (arch=i386)__interceptor_trampoline_printf@Base 15 + (arch=i386)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=i386)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=i386)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=i386)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=i386)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_create@Base 15 + (arch=i386)__interceptor_trampoline_pthread_detach@Base 15 + (arch=i386)__interceptor_trampoline_pthread_exit@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=i386)__interceptor_trampoline_pthread_join@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=i386)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=i386)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=i386)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=i386)__interceptor_trampoline_ptrace@Base 15 + (arch=i386)__interceptor_trampoline_ptsname@Base 15 + (arch=i386)__interceptor_trampoline_ptsname_r@Base 15 + (arch=i386)__interceptor_trampoline_puts@Base 15 + (arch=i386)__interceptor_trampoline_pututxline@Base 15 + (arch=i386)__interceptor_trampoline_pvalloc@Base 15 + (arch=i386)__interceptor_trampoline_pwrite64@Base 15 + (arch=i386)__interceptor_trampoline_pwrite@Base 15 + (arch=i386)__interceptor_trampoline_pwritev2@Base 15 + (arch=i386)__interceptor_trampoline_pwritev64@Base 15 + (arch=i386)__interceptor_trampoline_pwritev@Base 15 + (arch=i386)__interceptor_trampoline_qsort@Base 15 + (arch=i386)__interceptor_trampoline_qsort_r@Base 15 + (arch=i386)__interceptor_trampoline_rand_r@Base 15 + (arch=i386)__interceptor_trampoline_random_r@Base 15 + (arch=i386)__interceptor_trampoline_read@Base 15 + (arch=i386)__interceptor_trampoline_readdir64@Base 15 + (arch=i386)__interceptor_trampoline_readdir64_r@Base 15 + (arch=i386)__interceptor_trampoline_readdir@Base 15 + (arch=i386)__interceptor_trampoline_readdir_r@Base 15 + (arch=i386)__interceptor_trampoline_readlink@Base 15 + (arch=i386)__interceptor_trampoline_readlinkat@Base 15 + (arch=i386)__interceptor_trampoline_readv@Base 15 + (arch=i386)__interceptor_trampoline_realloc@Base 15 + (arch=i386)__interceptor_trampoline_reallocarray@Base 15 + (arch=i386)__interceptor_trampoline_realpath@Base 15 + (arch=i386)__interceptor_trampoline_recv@Base 15 + (arch=i386)__interceptor_trampoline_recvfrom@Base 15 + (arch=i386)__interceptor_trampoline_recvmmsg@Base 15 + (arch=i386)__interceptor_trampoline_recvmsg@Base 15 + (arch=i386)__interceptor_trampoline_regcomp@Base 15 + (arch=i386)__interceptor_trampoline_regerror@Base 15 + (arch=i386)__interceptor_trampoline_regexec@Base 15 + (arch=i386)__interceptor_trampoline_regfree@Base 15 + (arch=i386)__interceptor_trampoline_remquo@Base 15 + (arch=i386)__interceptor_trampoline_remquof@Base 15 + (arch=i386)__interceptor_trampoline_remquol@Base 15 + (arch=i386)__interceptor_trampoline_scandir64@Base 15 + (arch=i386)__interceptor_trampoline_scandir@Base 15 + (arch=i386)__interceptor_trampoline_scanf@Base 15 + (arch=i386)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=i386)__interceptor_trampoline_sched_getparam@Base 15 + (arch=i386)__interceptor_trampoline_sem_destroy@Base 15 + (arch=i386)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=i386)__interceptor_trampoline_sem_init@Base 15 + (arch=i386)__interceptor_trampoline_sem_open@Base 15 + (arch=i386)__interceptor_trampoline_sem_post@Base 15 + (arch=i386)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=i386)__interceptor_trampoline_sem_trywait@Base 15 + (arch=i386)__interceptor_trampoline_sem_unlink@Base 15 + (arch=i386)__interceptor_trampoline_sem_wait@Base 15 + (arch=i386)__interceptor_trampoline_send@Base 15 + (arch=i386)__interceptor_trampoline_sendmmsg@Base 15 + (arch=i386)__interceptor_trampoline_sendmsg@Base 15 + (arch=i386)__interceptor_trampoline_sendto@Base 15 + (arch=i386)__interceptor_trampoline_setbuf@Base 15 + (arch=i386)__interceptor_trampoline_setbuffer@Base 15 + (arch=i386)__interceptor_trampoline_setgrent@Base 15 + (arch=i386)__interceptor_trampoline_setitimer@Base 15 + (arch=i386)__interceptor_trampoline_setlinebuf@Base 15 + (arch=i386)__interceptor_trampoline_setlocale@Base 15 + (arch=i386)__interceptor_trampoline_setpwent@Base 15 + (arch=i386)__interceptor_trampoline_setvbuf@Base 15 + (arch=i386)__interceptor_trampoline_shmctl@Base 15 + (arch=i386)__interceptor_trampoline_sigaction@Base 15 + (arch=i386)__interceptor_trampoline_sigaltstack@Base 15 + (arch=i386)__interceptor_trampoline_sigandset@Base 15 + (arch=i386)__interceptor_trampoline_sigemptyset@Base 15 + (arch=i386)__interceptor_trampoline_sigfillset@Base 15 + (arch=i386)__interceptor_trampoline_siglongjmp@Base 15 + (arch=i386)__interceptor_trampoline_signal@Base 15 + (arch=i386)__interceptor_trampoline_sigorset@Base 15 + (arch=i386)__interceptor_trampoline_sigpending@Base 15 + (arch=i386)__interceptor_trampoline_sigprocmask@Base 15 + (arch=i386)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=i386)__interceptor_trampoline_sigwait@Base 15 + (arch=i386)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=i386)__interceptor_trampoline_sincos@Base 15 + (arch=i386)__interceptor_trampoline_sincosf@Base 15 + (arch=i386)__interceptor_trampoline_sincosl@Base 15 + (arch=i386)__interceptor_trampoline_snprintf@Base 15 + (arch=i386)__interceptor_trampoline_sprintf@Base 15 + (arch=i386)__interceptor_trampoline_sscanf@Base 15 + (arch=i386)__interceptor_trampoline_stat64@Base 15 + (arch=i386)__interceptor_trampoline_stat@Base 15 + (arch=i386)__interceptor_trampoline_statfs64@Base 15 + (arch=i386)__interceptor_trampoline_statfs@Base 15 + (arch=i386)__interceptor_trampoline_statvfs64@Base 15 + (arch=i386)__interceptor_trampoline_statvfs@Base 15 + (arch=i386)__interceptor_trampoline_strcasecmp@Base 15 + (arch=i386)__interceptor_trampoline_strcasestr@Base 15 + (arch=i386)__interceptor_trampoline_strcat@Base 15 + (arch=i386)__interceptor_trampoline_strchr@Base 15 + (arch=i386)__interceptor_trampoline_strchrnul@Base 15 + (arch=i386)__interceptor_trampoline_strcmp@Base 15 + (arch=i386)__interceptor_trampoline_strcpy@Base 15 + (arch=i386)__interceptor_trampoline_strcspn@Base 15 + (arch=i386)__interceptor_trampoline_strdup@Base 15 + (arch=i386)__interceptor_trampoline_strerror@Base 15 + (arch=i386)__interceptor_trampoline_strerror_r@Base 15 + (arch=i386)__interceptor_trampoline_strlen@Base 15 + (arch=i386)__interceptor_trampoline_strncasecmp@Base 15 + (arch=i386)__interceptor_trampoline_strncat@Base 15 + (arch=i386)__interceptor_trampoline_strncmp@Base 15 + (arch=i386)__interceptor_trampoline_strncpy@Base 15 + (arch=i386)__interceptor_trampoline_strndup@Base 15 + (arch=i386)__interceptor_trampoline_strnlen@Base 15 + (arch=i386)__interceptor_trampoline_strpbrk@Base 15 + (arch=i386)__interceptor_trampoline_strptime@Base 15 + (arch=i386)__interceptor_trampoline_strrchr@Base 15 + (arch=i386)__interceptor_trampoline_strspn@Base 15 + (arch=i386)__interceptor_trampoline_strstr@Base 15 + (arch=i386)__interceptor_trampoline_strtoimax@Base 15 + (arch=i386)__interceptor_trampoline_strtok@Base 15 + (arch=i386)__interceptor_trampoline_strtol@Base 15 + (arch=i386)__interceptor_trampoline_strtoll@Base 15 + (arch=i386)__interceptor_trampoline_strtoumax@Base 15 + (arch=i386)__interceptor_trampoline_strxfrm@Base 15 + (arch=i386)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline_swapcontext@Base 15 + (arch=i386)__interceptor_trampoline_sysinfo@Base 15 + (arch=i386)__interceptor_trampoline_tcgetattr@Base 15 + (arch=i386)__interceptor_trampoline_tempnam@Base 15 + (arch=i386)__interceptor_trampoline_textdomain@Base 15 + (arch=i386)__interceptor_trampoline_time@Base 15 + (arch=i386)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=i386)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=i386)__interceptor_trampoline_times@Base 15 + (arch=i386)__interceptor_trampoline_tmpnam@Base 15 + (arch=i386)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=i386)__interceptor_trampoline_tsearch@Base 15 + (arch=i386)__interceptor_trampoline_ttyname@Base 15 + (arch=i386)__interceptor_trampoline_ttyname_r@Base 15 + (arch=i386)__interceptor_trampoline_uname@Base 15 + (arch=i386)__interceptor_trampoline_valloc@Base 15 + (arch=i386)__interceptor_trampoline_vasprintf@Base 15 + (arch=i386)__interceptor_trampoline_vfork@Base 15 + (arch=i386)__interceptor_trampoline_vfprintf@Base 15 + (arch=i386)__interceptor_trampoline_vfscanf@Base 15 + (arch=i386)__interceptor_trampoline_vprintf@Base 15 + (arch=i386)__interceptor_trampoline_vscanf@Base 15 + (arch=i386)__interceptor_trampoline_vsnprintf@Base 15 + (arch=i386)__interceptor_trampoline_vsprintf@Base 15 + (arch=i386)__interceptor_trampoline_vsscanf@Base 15 + (arch=i386)__interceptor_trampoline_wait3@Base 15 + (arch=i386)__interceptor_trampoline_wait4@Base 15 + (arch=i386)__interceptor_trampoline_wait@Base 15 + (arch=i386)__interceptor_trampoline_waitid@Base 15 + (arch=i386)__interceptor_trampoline_waitpid@Base 15 + (arch=i386)__interceptor_trampoline_wcrtomb@Base 15 + (arch=i386)__interceptor_trampoline_wcscat@Base 15 + (arch=i386)__interceptor_trampoline_wcsdup@Base 15 + (arch=i386)__interceptor_trampoline_wcslen@Base 15 + (arch=i386)__interceptor_trampoline_wcsncat@Base 15 + (arch=i386)__interceptor_trampoline_wcsnlen@Base 15 + (arch=i386)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=i386)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=i386)__interceptor_trampoline_wcstombs@Base 15 + (arch=i386)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=i386)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=i386)__interceptor_trampoline_wctomb@Base 15 + (arch=i386)__interceptor_trampoline_wordexp@Base 15 + (arch=i386)__interceptor_trampoline_write@Base 15 + (arch=i386)__interceptor_trampoline_writev@Base 15 + (arch=i386)__interceptor_trampoline_xdr_bool@Base 15 + (arch=i386)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=i386)__interceptor_trampoline_xdr_char@Base 15 + (arch=i386)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=i386)__interceptor_trampoline_xdr_double@Base 15 + (arch=i386)__interceptor_trampoline_xdr_enum@Base 15 + (arch=i386)__interceptor_trampoline_xdr_float@Base 15 + (arch=i386)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_int@Base 15 + (arch=i386)__interceptor_trampoline_xdr_long@Base 15 + (arch=i386)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_short@Base 15 + (arch=i386)__interceptor_trampoline_xdr_string@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=i386)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=i386)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=i386)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=i386)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + (arch=i386)__interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=i386)__tls_get_addr@Base 15 + (arch=powerpc)__tls_get_addr_opt@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + shmctl@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + (arch=i386)vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/lib64gccLC.postinst b/lib64gccLC.postinst new file mode 100644 index 0000000..f671fd6 --- /dev/null +++ b/lib64gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64stdc++CXX.postinst b/lib64stdc++CXX.postinst new file mode 100644 index 0000000..1c8e979 --- /dev/null +++ b/lib64stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/libasan8.symbols b/libasan8.symbols new file mode 100644 index 0000000..4b243c6 --- /dev/null +++ b/libasan8.symbols @@ -0,0 +1,3091 @@ +# SymbolsHelper-Confirmed: 15 amd64 armhf i386 powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 +libasan.so.8 libasan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + (subst)_ZdaPv{size_t}@Base 15 + (subst)_ZdaPv{size_t}St11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + (subst)_ZdlPv{size_t}@Base 15 + (subst)_ZdlPv{size_t}St11align_val_t@Base 15 + (subst)_Zna{size_t}@Base 15 + (subst)_Zna{size_t}RKSt9nothrow_t@Base 15 + (subst)_Zna{size_t}St11align_val_t@Base 15 + (subst)_Zna{size_t}St11align_val_tRKSt9nothrow_t@Base 15 + (subst)_Znw{size_t}@Base 15 + (subst)_Znw{size_t}RKSt9nothrow_t@Base 15 + (subst)_Znw{size_t}St11align_val_t@Base 15 + (subst)_Znw{size_t}St11align_val_tRKSt9nothrow_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__Unwind_RaiseException@Base 15 + (arch=armhf)___interceptor___aeabi_memclr4@Base 15 + (arch=armhf)___interceptor___aeabi_memclr8@Base 15 + (arch=armhf)___interceptor___aeabi_memclr@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy4@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy8@Base 15 + (arch=armhf)___interceptor___aeabi_memcpy@Base 15 + (arch=armhf)___interceptor___aeabi_memmove4@Base 15 + (arch=armhf)___interceptor___aeabi_memmove8@Base 15 + (arch=armhf)___interceptor___aeabi_memmove@Base 15 + (arch=armhf)___interceptor___aeabi_memset4@Base 15 + (arch=armhf)___interceptor___aeabi_memset8@Base 15 + (arch=armhf)___interceptor___aeabi_memset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___b64_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___b64_pton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___bzero@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___cxa_atexit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___cxa_throw@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___fprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_printf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___libc_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___longjmp_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___lxstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___lxstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___overflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___snprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___sprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strndup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___tls_get_addr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___uflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___underflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___vsnprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___vsprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___woverflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wuflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___wunderflow@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xpg_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor___xstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__exit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin_1@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor__obstack_newchunk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_accept4@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_accept@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_aligned_alloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_argp_parse@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asctime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_asprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atoi@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_atoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_backtrace@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_backtrace_symbols@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bsearch@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_bzero@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_calloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_canonicalize_file_name@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_capget@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_capset@Base 15 + (arch=amd64 armhf x32)___interceptor_cfree@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_getres@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_clock_settime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_confstr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctermid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dlclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dlopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dn_comp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_dn_expand@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_drand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_endgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_endpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_hostton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_line@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntohost@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_read@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_write@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fdopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fflush@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgets@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_flistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fmemopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopen64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fopencookie@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fputs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fread@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_free@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_freopen64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_freopen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexpf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_frexpl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ftime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_fwrite@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_get_current_dir_name@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getaddrinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getcwd@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getentropy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgrouplist@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getgroups@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gethostent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getifaddrs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getitimer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getloadavg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getmntent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getmntent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnameinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getnetent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpass@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpeername@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getrandom@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getresgid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getresuid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getsockname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getsockopt@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getusershell@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getutxline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_getxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_glob64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_glob@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gmtime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_gmtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_iconv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_if_indextoname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_if_nametoindex@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_index@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_aton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_inet_pton@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_initgroups@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ioctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgamma@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgamma_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammal@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgammal_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_listxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_llistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_localtime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_localtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lrand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lstat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_lstat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_makecontext@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mallinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc_stats@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_malloc_usable_size@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mallopt@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbsnrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbsrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mbstowcs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mcheck@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mcheck_pedantic@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memcpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memmem@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memmove@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memrchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_memset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mincore@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mktime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mlock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mlockall@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mmap64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mmap@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modff@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_modfl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mprobe@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_mprotect@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_msgrcv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_msgsnd@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munlock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munlockall@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_munmap@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_name_to_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_by_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_memstream@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_open_wmemstream@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_opendir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pclose@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_poll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_popen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawnp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ppoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_prctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pread64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pread@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_preadv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_printf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_readv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_writev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getscope@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstack@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getclock@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_detach@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_exit@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getname_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_join@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcancelstate@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcanceltype@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setname_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_sigmask@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_timedjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pthread_tryjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptrace@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptsname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ptsname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_puts@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pututxline@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pvalloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwrite64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwrite@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev2@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_pwritev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_qsort@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_qsort_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_rand_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_random_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_read@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir64_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readdir_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readlink@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readlinkat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_readv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_realloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_reallocarray@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_realpath@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recv@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvfrom@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_recvmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regcomp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regerror@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regexec@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_regfree@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquof@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_remquol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scandir64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scandir@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sched_getaffinity@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sched_getparam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_getvalue@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_init@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_open@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_post@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_timedwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_trywait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_unlink@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sem_wait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_send@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendmsg@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sendto@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setbuf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setbuffer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setgrent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setitimer@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setlinebuf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setlocale@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setpwent@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_setvbuf@Base 15 + (arch=amd64 riscv64)___interceptor_shmctl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigaction@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigaltstack@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigandset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigemptyset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigfillset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_siglongjmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_signal@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigorset@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigpending@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigprocmask@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigtimedwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigwait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sigwaitinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincos@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincosf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sincosl@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_stat64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_stat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_statvfs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcasestr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strchrnul@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strcspn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strerror@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncmp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strncpy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strndup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strnlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strpbrk@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strptime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strrchr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strspn@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strstr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtok@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_swapcontext@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_sysinfo@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tcgetattr@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tempnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_textdomain@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_time@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_settime@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_times@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_tsearch@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ttyname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_ttyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_uname@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_valloc@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vasprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfork@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait3@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait4@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wait@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_waitid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_waitpid@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcrtomb@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcscat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsdup@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcslen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsncat@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsnlen@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsnrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcstombs@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wctomb@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_wordexp@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_write@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_writev@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bool@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bytes@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_char@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_double@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_enum@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_float@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int16_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int32_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int64_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int8_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_long@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_short@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_string@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_char@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_int@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_long@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_short@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint16_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint32_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint64_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint8_t@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrmem_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrrec_create@Base 15 + (arch=amd64 armhf riscv64 x32)___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + (arch=armhf)__interceptor___aeabi_memclr4@Base 15 + (arch=armhf)__interceptor___aeabi_memclr8@Base 15 + (arch=armhf)__interceptor___aeabi_memclr@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy4@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy8@Base 15 + (arch=armhf)__interceptor___aeabi_memcpy@Base 15 + (arch=armhf)__interceptor___aeabi_memmove4@Base 15 + (arch=armhf)__interceptor___aeabi_memmove8@Base 15 + (arch=armhf)__interceptor___aeabi_memmove@Base 15 + (arch=armhf)__interceptor___aeabi_memset4@Base 15 + (arch=armhf)__interceptor___aeabi_memset8@Base 15 + (arch=armhf)__interceptor___aeabi_memset@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + (arch=!s390x)__interceptor___tls_get_addr@Base 15 + (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 + (arch=powerpc ppc64 ppc64el)__interceptor___tls_get_addr_opt@Base 15 + (arch=s390x)__interceptor___tls_get_offset@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + (arch=!riscv64)__interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + (arch=!powerpc)__interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + (arch=!armhf !i386 !powerpc !x32)__interceptor_shmctl@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__Unwind_RaiseException@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memclr@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memcpy@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memmove@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset4@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset8@Base 15 + (arch=armhf)__interceptor_trampoline___aeabi_memset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_pton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___bzero@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_throw@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___libc_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___longjmp_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___overflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strndup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___uflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___underflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___woverflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wuflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wunderflow@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__exit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept4@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_argp_parse@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoi@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bsearch@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bzero@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_calloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capget@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capset@Base 15 + (arch=amd64 armhf x32)__interceptor_trampoline_cfree@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getres@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_settime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_confstr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctermid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_comp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_expand@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_drand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_hostton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_line@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_read@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_write@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fdopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fflush@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgets@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_flistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fmemopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopencookie@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fputs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fread@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_free@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ftime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fwrite@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getcwd@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getdelim@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getentropy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrouplist@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgroups@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getifaddrs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getitimer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getloadavg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnameinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpass@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpeername@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getrandom@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresgid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresuid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockopt@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getusershell@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_iconv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_indextoname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_index@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_aton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_ntop@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_pton@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_initgroups@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ioctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgetxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_listxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_llistxattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_longjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lrand48_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_makecontext@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_stats@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallopt@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbstowcs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmem@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmove@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memrchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mincore@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mktime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlockall@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modff@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modfl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprobe@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprotect@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgrcv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgsnd@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlockall@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munmap@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_memstream@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_opendir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pclose@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_poll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_popen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_memalign@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ppoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_prctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_printf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_detach@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_exit@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_join@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptrace@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_puts@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pututxline@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pvalloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev2@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_rand_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_random_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_read@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlink@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlinkat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_reallocarray@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realpath@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recv@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvfrom@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regcomp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regerror@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regexec@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regfree@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquof@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getparam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_init@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_open@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_post@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_trywait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_unlink@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_wait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_send@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmsg@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendto@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuffer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setgrent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setitimer@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlinebuf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlocale@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setpwent@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setvbuf@Base 15 + (arch=amd64 riscv64)__interceptor_trampoline_shmctl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaction@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaltstack@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigandset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigemptyset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigfillset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_siglongjmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_signal@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigorset@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigpending@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigprocmask@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincos@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosl@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_snprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs64@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasestr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchrnul@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcspn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncasecmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncmp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncpy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strndup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strnlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strpbrk@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strptime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strrchr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strspn@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strstr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoimax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtok@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtol@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoll@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoumax@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_swapcontext@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sysinfo@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tcgetattr@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tempnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_textdomain@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_time@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_times@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tsearch@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname_r@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_uname@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_valloc@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vasprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfork@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsnprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsprintf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsscanf@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait3@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait4@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitpid@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcrtomb@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcscat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsdup@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcslen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsncat@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnlen@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcstombs@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wctomb@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wordexp@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_write@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_writev@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bool@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_char@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_double@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_enum@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_float@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_long@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_short@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_string@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + (arch=amd64 armhf i386 riscv64 x32)__interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + (arch=!powerpc !ppc64 !ppc64el !s390x)__tls_get_addr@Base 15 + (arch=s390x)__tls_get_addr_internal@Base 15 + (arch=powerpc ppc64 ppc64el)__tls_get_addr_opt@Base 15 + (arch=s390x)__tls_get_offset@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + (arch=!riscv64)cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + (arch=!powerpc)ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + (arch=!armhf !i386 !powerpc !x32)shmctl@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + (arch=amd64 armhf i386 riscv64 x32)vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/libatomic.symbols b/libatomic.symbols new file mode 100644 index 0000000..f50770d --- /dev/null +++ b/libatomic.symbols @@ -0,0 +1,4 @@ +libatomic.so.1 #PACKAGE# #MINVER# + (symver)LIBATOMIC_1.0 4.8 + (symver)LIBATOMIC_1.1 4.9 + (symver)LIBATOMIC_1.2 6 diff --git a/libcc1-0.symbols b/libcc1-0.symbols new file mode 100644 index 0000000..d351798 --- /dev/null +++ b/libcc1-0.symbols @@ -0,0 +1,62 @@ +# SymbolsHelper-Confirmed: 15 amd64 +libcc1.so.0 libcc1-0 #MINVER# + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJRKS5_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 + (optional=templinst|subst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKc{size_t}@Base 15 + _xexit_cleanup@Base 15 + concat@Base 15 + concat_copy2@Base 15 + concat_copy@Base 15 + concat_length@Base 15 + gcc_c_fe_context@Base 15 + gcc_cp_fe_context@Base 15 + htab_clear_slot@Base 15 + htab_collisions@Base 15 + htab_create@Base 15 + htab_create_alloc@Base 15 + htab_create_alloc_ex@Base 15 + htab_create_typed_alloc@Base 15 + htab_delete@Base 15 + htab_elements@Base 15 + htab_empty@Base 15 + htab_eq_pointer@Base 15 + htab_eq_string@Base 15 + htab_find@Base 15 + htab_find_slot@Base 15 + htab_find_slot_with_hash@Base 15 + htab_find_with_hash@Base 15 + htab_hash_pointer@Base 15 + htab_hash_string@Base 15 + htab_remove_elt@Base 15 + htab_remove_elt_with_hash@Base 15 + htab_set_functions_ex@Base 15 + htab_size@Base 15 + htab_traverse@Base 15 + htab_traverse_noresize@Base 15 + htab_try_create@Base 15 + iterative_hash@Base 15 + libiberty_concat_ptr@Base 15 + reconcat@Base 15 + xcalloc@Base 15 + xexit@Base 15 + xmalloc@Base 15 + xmalloc_failed@Base 15 + xmalloc_set_program_name@Base 15 + xre_comp@Base 15 + xre_compile_fastmap@Base 15 + xre_compile_pattern@Base 15 + xre_exec@Base 15 + xre_match@Base 15 + xre_match_2@Base 15 + xre_max_failures@Base 15 + xre_search@Base 15 + xre_search_2@Base 15 + xre_set_registers@Base 15 + xre_set_syntax@Base 15 + xre_syntax_options@Base 15 + xrealloc@Base 15 + xregcomp@Base 15 + xregerror@Base 15 + xregexec@Base 15 + xregfree@Base 15 + xstrdup@Base 15 diff --git a/libga68.symbols b/libga68.symbols new file mode 100644 index 0000000..18d7c2c --- /dev/null +++ b/libga68.symbols @@ -0,0 +1,51 @@ +libga68.so.1 #PACKAGE# #MINVER# + _libga68_abort@Base 15 + _libga68_argc@Base 15 + _libga68_argv@Base 15 + _libga68_assert@Base 15 + _libga68_bitsboundserror@Base 15 + _libga68_bounds@Base 15 + _libga68_bounds_mismatch@Base 15 + _libga68_derefnil@Base 15 + _libga68_dim@Base 15 + _libga68_free_internal@Base 15 + _libga68_init_heap@Base 15 + _libga68_invalidcharerror@Base 15 + _libga68_longlongrandom@Base 15 + _libga68_longrandom@Base 15 + _libga68_lower_bound@Base 15 + _libga68_malloc@Base 15 + _libga68_malloc_internal@Base 15 + _libga68_posixargc@Base 15 + _libga68_posixargv@Base 15 + _libga68_posixclose@Base 15 + _libga68_posixcreat@Base 15 + _libga68_posixerrno@Base 15 + _libga68_posixfconnect@Base 15 + _libga68_posixfgetc@Base 15 + _libga68_posixfgets@Base 15 + _libga68_posixfopen@Base 15 + _libga68_posixfputc@Base 15 + _libga68_posixfputs@Base 15 + _libga68_posixfsize@Base 15.2 + _libga68_posixgetchar@Base 15 + _libga68_posixgetenv@Base 15 + _libga68_posixgets@Base 15 + _libga68_posixlseek@Base 15 + _libga68_posixperror@Base 15 + _libga68_posixputchar@Base 15 + _libga68_posixputs@Base 15 + _libga68_posixstrerror@Base 15 + _libga68_random@Base 15 + _libga68_realloc@Base 15 + _libga68_realloc_unchecked@Base 15 + _libga68_set_exit_status@Base 15 + _libga68_u32_cmp2@Base 15 + _libga68_u32_cmp@Base 15 + _libga68_u32_to_u8@Base 15 + _libga68_u8_mbtouc@Base 15 + _libga68_u8_to_u32@Base 15 + _libga68_u8_uctomb@Base 15 + _libga68_unreachable@Base 15 + _libga68_upper_bound@Base 15 + main@Base 15 diff --git a/libgcc-s.symbols b/libgcc-s.symbols new file mode 100644 index 0000000..21e5f7f --- /dev/null +++ b/libgcc-s.symbols @@ -0,0 +1,31 @@ +libgcc_s.so.1 #PACKAGE# #MINVER# + (symver)GCC_3.0 3.0 + (symver)GCC_3.3 3.3 + (symver)GCC_3.3.1 3.3.1 +# __gcc_personality_sj0, __gcc_personality_v0 + (symver|arch=ia64)GCC_3.3.2 3.3.2 + (symver|arch=arc armel armhf loong64 mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc sh4)GCC_3.3.4 3.3.4 + (symver)GCC_3.4 3.4 + (symver)GCC_3.4.2 3.4.2 +#(symver|arch-bits=32)GCC_3.4.4 3.4.4 + (symver|arch=!arc !armel !armhf !any-i386 !mips !mipsel !powerpc !s390 !sh4 !sparc)GCC_3.4.4 3.4.4 + (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 3.5 + (symver)GCC_4.0.0 4.0 + (symver|arch=powerpc s390 s390x)GCC_4.1.0 4.1 + (symver)GCC_4.2.0 4.2 + (symver)GCC_4.3.0 4.3 + (symver|arch=any-i386 ia64 mips mipsel mipsn32 mipsn32el mips64 mips64el riscv64 sh4)GCC_4.4.0 4.4 + (symver|arch=arm64 any-i386 loong64 mipsn32 mipsn32el mips64 mips64el riscv64)GCC_4.5.0 4.5 +#(symver|optional)GCC_4.6.0 4.6 + (symver)GCC_4.7.0 4.7 + (symver|arch=any-amd64 any-i386 x32)GCC_4.8.0 4.8 + (symver|arch=!arc !any-amd64 !x32 !sparc64 !s390x !sh4)GLIBC_2.0 4.2 + (symver|arch=s390x sh4 sparc64)GLIBC_2.2 4.2 + (symver|arch=sparc)GCC_LDBL_3.0 3.0 + (symver|arch=alpha sparc)GCC_LDBL_4.0.0 4.0 + (symver)GCC_7.0.0 7 + (symver|arch=arm64)GCC_11.0 11 + (symver|arch=amd64 i386 x32 hurd-amd64 hurd-i386)GCC_12.0.0 12 + (symver|arch=amd64 arm64 i386 x32 hurd-amd64 hurd-i386)GCC_13.0.0 13 + (symver|arch=arm64)GCC_14.0 14 + (symver)GCC_14.0.0 14 diff --git a/libgcc-s2.symbols.m68k b/libgcc-s2.symbols.m68k new file mode 100644 index 0000000..d43214d --- /dev/null +++ b/libgcc-s2.symbols.m68k @@ -0,0 +1,169 @@ +libgcc_s.so.2 libgcc-s2 #MINVER# + GCC_14.0.0@GCC_14.0.0 14 + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3.4@GCC_3.3.4 4.4.5 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 4.3.0 + GCC_4.5.0@GCC_4.5.0 4.5 + GCC_4.7.0@GCC_4.7.0 4.7 + GCC_7.0.0@GCC_7.0.0 7.0 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __adddf3@GCC_3.0 4.4.5 + __addsf3@GCC_3.0 4.4.5 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __addxf3@GCC_3.0 4.4.5 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 4.3.0 + __bswapsi2@GCC_4.3.0 4.3.0 + __clear_cache@GCC_3.0 4.2.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdf3@GCC_3.0 4.4.5 + __divdi3@GLIBC_2.0 4.2.1 + __divmoddi4@GCC_7.0.0 7.0 + __divsc3@GCC_4.0.0 4.2.1 + __divsf3@GCC_3.0 4.4.5 + __divsi3@GCC_3.0 4.4.5 + __divxc3@GCC_4.0.0 4.2.1 + __divxf3@GCC_3.0 4.4.5 + __emutls_get_address@GCC_4.3.0 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __eqdf2@GCC_3.0 4.4.5 + __eqsf2@GCC_3.0 4.4.5 + __eqxf2@GCC_3.0 4.4.5 + __extenddfxf2@GCC_3.0 4.4.5 + __extendsfdf2@GCC_3.0 4.4.5 + __extendsfxf2@GCC_3.0 4.4.5 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __fixdfdi@GCC_3.0 4.2.1 + __fixdfsi@GCC_3.0 4.4.5 + __fixsfdi@GCC_3.0 4.2.1 + __fixsfsi@GCC_3.0 4.4.5 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __fixxfsi@GCC_3.0 4.4.5 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatsidf@GCC_3.0 4.4.5 + __floatsisf@GCC_3.0 4.4.5 + __floatsixf@GCC_3.0 4.4.5 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __floatunsidf@GCC_4.2.0 4.4.5 + __floatunsisf@GCC_4.2.0 4.4.5 + __floatunsixf@GCC_4.2.0 4.4.5 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __gedf2@GCC_3.0 4.4.5 + __gesf2@GCC_3.0 4.4.5 + __gexf2@GCC_3.0 4.4.5 + __gtdf2@GCC_3.0 4.4.5 + __gtsf2@GCC_3.0 4.4.5 + __gtxf2@GCC_3.0 4.4.5 + __hardcfr_check@GCC_14.0.0 14 + __ledf2@GCC_3.0 4.4.5 + __lesf2@GCC_3.0 4.4.5 + __lexf2@GCC_3.0 4.4.5 + __lshrdi3@GCC_3.0 4.2.1 + __ltdf2@GCC_3.0 4.4.5 + __ltsf2@GCC_3.0 4.4.5 + __ltxf2@GCC_3.0 4.4.5 + __moddi3@GLIBC_2.0 4.2.1 + __modsi3@GCC_3.0 4.4.5 + __muldc3@GCC_4.0.0 4.2.1 + __muldf3@GCC_3.0 4.4.5 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulsf3@GCC_3.0 4.4.5 + __mulsi3@GCC_3.0 4.4.5 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __mulxf3@GCC_3.0 4.4.5 + __nedf2@GCC_3.0 4.4.5 + __negdf2@GCC_3.0 4.4.5 + __negdi2@GCC_3.0 4.2.1 + __negsf2@GCC_3.0 4.4.5 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __negxf2@GCC_3.0 4.4.5 + __nesf2@GCC_3.0 4.4.5 + __nexf2@GCC_3.0 4.4.5 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __strub_enter@GCC_14.0.0 14 + __strub_leave@GCC_14.0.0 14 + __strub_update@GCC_14.0.0 14 + __subdf3@GCC_3.0 4.4.5 + __subsf3@GCC_3.0 4.4.5 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __subxf3@GCC_3.0 4.4.5 + __truncdfsf2@GCC_3.0 4.4.5 + __truncxfdf2@GCC_3.0 4.4.5 + __truncxfsf2@GCC_3.0 4.4.5 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __udivsi3@GCC_3.0 4.4.5 + __umoddi3@GLIBC_2.0 4.2.1 + __umodsi3@GCC_3.0 4.4.5 + __unorddf2@GCC_3.3.4 4.4.5 + __unordsf2@GCC_3.3.4 4.4.5 + __unordxf2@GCC_4.5.0 4.7 diff --git a/libgcc-s4.symbols.hppa b/libgcc-s4.symbols.hppa new file mode 100644 index 0000000..b3d17c8 --- /dev/null +++ b/libgcc-s4.symbols.hppa @@ -0,0 +1,103 @@ +libgcc_s.so.4 libgcc-s4 #MINVER# + GCC_14.0.0@GCC_14.0.0 14 + GCC_3.0@GCC_3.0 4.1.1 + GCC_3.3.1@GCC_3.3.1 4.1.1 + GCC_3.3@GCC_3.3 4.1.1 + GCC_3.4.2@GCC_3.4.2 4.1.1 + GCC_3.4@GCC_3.4 4.1.1 + GCC_4.0.0@GCC_4.0.0 4.1.1 + GCC_4.2.0@GCC_4.2.0 4.1.1 + GCC_4.3.0@GCC_4.3.0 4.3 + GCC_4.7.0@GCC_4.7.0 4.7 + GCC_7.0.0@GCC_7.0.0 7.0 + GLIBC_2.0@GLIBC_2.0 4.1.1 + _Unwind_Backtrace@GCC_3.3 4.1.1 + _Unwind_DeleteException@GCC_3.0 4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 + _Unwind_Find_FDE@GCC_3.0 4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 4.1.1 + _Unwind_GetCFA@GCC_3.3 4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 4.1.1 + _Unwind_GetGR@GCC_3.0 4.1.1 + _Unwind_GetIP@GCC_3.0 4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 + _Unwind_GetRegionStart@GCC_3.0 4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 4.1.1 + _Unwind_RaiseException@GCC_3.0 4.1.1 + _Unwind_Resume@GCC_3.0 4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 + _Unwind_SetGR@GCC_3.0 4.1.1 + _Unwind_SetIP@GCC_3.0 4.1.1 + __absvdi2@GCC_3.0 4.1.1 + __absvsi2@GCC_3.0 4.1.1 + __addvdi3@GCC_3.0 4.1.1 + __addvsi3@GCC_3.0 4.1.1 + __ashldi3@GCC_3.0 4.1.1 + __ashrdi3@GCC_3.0 4.1.1 + __bswapdi2@GCC_4.3.0 4.3 + __bswapsi2@GCC_4.3.0 4.3 + __clear_cache@GCC_3.0 4.1.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.1.1 + __clzsi2@GCC_3.4 4.1.1 + __cmpdi2@GCC_3.0 4.1.1 + __ctzdi2@GCC_3.4 4.1.1 + __ctzsi2@GCC_3.4 4.1.1 + __deregister_frame@GLIBC_2.0 4.1.1 + __deregister_frame_info@GLIBC_2.0 4.1.1 + __deregister_frame_info_bases@GCC_3.0 4.1.1 + __divdc3@GCC_4.0.0 4.1.1 + __divdi3@GLIBC_2.0 4.1.1 + __divmoddi4@GCC_7.0.0 7.0 + __divsc3@GCC_4.0.0 4.1.1 + __emutls_get_address@GCC_4.3.0 4.3 + __emutls_register_common@GCC_4.3.0 4.3 + __enable_execute_stack@GCC_3.4.2 4.1.1 + __ffsdi2@GCC_3.0 4.1.1 + __ffssi2@GCC_4.3.0 4.3 + __fixdfdi@GCC_3.0 4.1.1 + __fixsfdi@GCC_3.0 4.1.1 + __fixunsdfdi@GCC_3.0 4.1.1 + __fixunsdfsi@GCC_3.0 4.1.1 + __fixunssfdi@GCC_3.0 4.1.1 + __fixunssfsi@GCC_3.0 4.1.1 + __floatdidf@GCC_3.0 4.1.1 + __floatdisf@GCC_3.0 4.1.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.1.1 + __gcc_personality_v0@GCC_3.3.1 4.1.1 + __hardcfr_check@GCC_14.0.0 14 + __lshrdi3@GCC_3.0 4.1.1 + __moddi3@GLIBC_2.0 4.1.1 + __muldc3@GCC_4.0.0 4.1.1 + __muldi3@GCC_3.0 4.1.1 + __mulsc3@GCC_4.0.0 4.1.1 + __mulvdi3@GCC_3.0 4.1.1 + __mulvsi3@GCC_3.0 4.1.1 + __negdi2@GCC_3.0 4.1.1 + __negvdi2@GCC_3.0 4.1.1 + __negvsi2@GCC_3.0 4.1.1 + __paritydi2@GCC_3.4 4.1.1 + __paritysi2@GCC_3.4 4.1.1 + __popcountdi2@GCC_3.4 4.1.1 + __popcountsi2@GCC_3.4 4.1.1 + __powidf2@GCC_4.0.0 4.1.1 + __powisf2@GCC_4.0.0 4.1.1 + __register_frame@GLIBC_2.0 4.1.1 + __register_frame_info@GLIBC_2.0 4.1.1 + __register_frame_info_bases@GCC_3.0 4.1.1 + __register_frame_info_table@GLIBC_2.0 4.1.1 + __register_frame_info_table_bases@GCC_3.0 4.1.1 + __register_frame_table@GLIBC_2.0 4.1.1 + __strub_enter@GCC_14.0.0 14 + __strub_leave@GCC_14.0.0 14 + __strub_update@GCC_14.0.0 14 + __subvdi3@GCC_3.0 4.1.1 + __subvsi3@GCC_3.0 4.1.1 + __ucmpdi2@GCC_3.0 4.1.1 + __udivdi3@GLIBC_2.0 4.1.1 + __udivmoddi4@GCC_3.0 4.1.1 + __umoddi3@GLIBC_2.0 4.1.1 diff --git a/libgcc.symbols.aeabi b/libgcc.symbols.aeabi new file mode 100644 index 0000000..9e70dc2 --- /dev/null +++ b/libgcc.symbols.aeabi @@ -0,0 +1,69 @@ + __aeabi_cdcmpeq@GCC_3.5 3.5 + __aeabi_cdcmple@GCC_3.5 3.5 + __aeabi_cdrcmple@GCC_3.5 3.5 + __aeabi_cfcmpeq@GCC_3.5 3.5 + __aeabi_cfcmple@GCC_3.5 3.5 + __aeabi_cfrcmple@GCC_3.5 3.5 + __aeabi_d2f@GCC_3.5 3.5 + __aeabi_d2iz@GCC_3.5 3.5 + __aeabi_d2lz@GCC_3.5 3.5 + __aeabi_d2uiz@GCC_3.5 3.5 + __aeabi_d2ulz@GCC_3.5 3.5 + __aeabi_dadd@GCC_3.5 3.5 + __aeabi_dcmpeq@GCC_3.5 3.5 + __aeabi_dcmpge@GCC_3.5 3.5 + __aeabi_dcmpgt@GCC_3.5 3.5 + __aeabi_dcmple@GCC_3.5 3.5 + __aeabi_dcmplt@GCC_3.5 3.5 + __aeabi_dcmpun@GCC_3.5 3.5 + __aeabi_ddiv@GCC_3.5 3.5 + __aeabi_dmul@GCC_3.5 3.5 + __aeabi_dneg@GCC_3.5 3.5 + __aeabi_drsub@GCC_3.5 3.5 + __aeabi_dsub@GCC_3.5 3.5 + __aeabi_f2d@GCC_3.5 3.5 + __aeabi_f2iz@GCC_3.5 3.5 + __aeabi_f2lz@GCC_3.5 3.5 + __aeabi_f2uiz@GCC_3.5 3.5 + __aeabi_f2ulz@GCC_3.5 3.5 + __aeabi_fadd@GCC_3.5 3.5 + __aeabi_fcmpeq@GCC_3.5 3.5 + __aeabi_fcmpge@GCC_3.5 3.5 + __aeabi_fcmpgt@GCC_3.5 3.5 + __aeabi_fcmple@GCC_3.5 3.5 + __aeabi_fcmplt@GCC_3.5 3.5 + __aeabi_fcmpun@GCC_3.5 3.5 + __aeabi_fdiv@GCC_3.5 3.5 + __aeabi_fmul@GCC_3.5 3.5 + __aeabi_fneg@GCC_3.5 3.5 + __aeabi_frsub@GCC_3.5 3.5 + __aeabi_fsub@GCC_3.5 3.5 + __aeabi_i2d@GCC_3.5 3.5 + __aeabi_i2f@GCC_3.5 3.5 + __aeabi_idiv@GCC_3.5 3.5 + __aeabi_idiv0@GCC_3.5 1:4.5.0 + __aeabi_idivmod@GCC_3.5 3.5 + __aeabi_l2d@GCC_3.5 3.5 + __aeabi_l2f@GCC_3.5 3.5 + __aeabi_lasr@GCC_3.5 3.5 + __aeabi_lcmp@GCC_3.5 3.5 + __aeabi_ldivmod@GCC_3.5 3.5 + __aeabi_ldiv0@GCC_3.5 1:4.5.0 + __aeabi_llsl@GCC_3.5 3.5 + __aeabi_llsr@GCC_3.5 3.5 + __aeabi_lmul@GCC_3.5 3.5 + __aeabi_ui2d@GCC_3.5 3.5 + __aeabi_ui2f@GCC_3.5 3.5 + __aeabi_uidiv@GCC_3.5 3.5 + __aeabi_uidivmod@GCC_3.5 3.5 + __aeabi_ul2d@GCC_3.5 3.5 + __aeabi_ul2f@GCC_3.5 3.5 + __aeabi_ulcmp@GCC_3.5 3.5 + __aeabi_uldivmod@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr0@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr1@GCC_3.5 3.5 + __aeabi_unwind_cpp_pr2@GCC_3.5 3.5 + __aeabi_uread4@GCC_3.5 3.5 + __aeabi_uread8@GCC_3.5 3.5 + __aeabi_uwrite4@GCC_3.5 3.5 + __aeabi_uwrite8@GCC_3.5 3.5 diff --git a/libgccjit0.symbols b/libgccjit0.symbols new file mode 100644 index 0000000..9db8ff3 --- /dev/null +++ b/libgccjit0.symbols @@ -0,0 +1,36 @@ +libgccjit.so.0 #PACKAGE# #MINVER# + (symver)LIBGCCJIT_ABI_0 5.1 + (symver)LIBGCCJIT_ABI_1 5.1 + (symver)LIBGCCJIT_ABI_2 5.1 + (symver)LIBGCCJIT_ABI_3 5.1 + (symver)LIBGCCJIT_ABI_4 6 + (symver)LIBGCCJIT_ABI_5 6 + (symver)LIBGCCJIT_ABI_6 7 + (symver)LIBGCCJIT_ABI_7 8 + (symver)LIBGCCJIT_ABI_8 8 + (symver)LIBGCCJIT_ABI_9 8 + (symver)LIBGCCJIT_ABI_10 8 + (symver)LIBGCCJIT_ABI_11 8 + (symver)LIBGCCJIT_ABI_12 10 + (symver)LIBGCCJIT_ABI_13 10 + (symver)LIBGCCJIT_ABI_14 11 + (symver)LIBGCCJIT_ABI_15 11 + (symver)LIBGCCJIT_ABI_16 12 + (symver)LIBGCCJIT_ABI_17 12 + (symver)LIBGCCJIT_ABI_18 12 + (symver)LIBGCCJIT_ABI_19 12 + (symver)LIBGCCJIT_ABI_20 12 + (symver)LIBGCCJIT_ABI_21 12 + (symver)LIBGCCJIT_ABI_22 12 + (symver)LIBGCCJIT_ABI_23 12 + (symver)LIBGCCJIT_ABI_24 12 + (symver)LIBGCCJIT_ABI_25 14 + (symver)LIBGCCJIT_ABI_26 14 + (symver)LIBGCCJIT_ABI_27 14.2 + (symver)LIBGCCJIT_ABI_28 15 + (symver)LIBGCCJIT_ABI_29 15 + (symver)LIBGCCJIT_ABI_30 15 + (symver)LIBGCCJIT_ABI_31 15 + (symver)LIBGCCJIT_ABI_32 15 + (symver)LIBGCCJIT_ABI_33 15 + (symver)LIBGCCJIT_ABI_34 15 diff --git a/libgcobol.symbols b/libgcobol.symbols new file mode 100644 index 0000000..4471d96 --- /dev/null +++ b/libgcobol.symbols @@ -0,0 +1,456 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 ppc64el riscv64 +libgcobol.so.1 libgcobol1 #MINVER# + _Z11__gg__abortPKc@Base 15 + _Z12__gg__mabortv@Base 15 + _Z14gcobol_fileopsv@Base 15 + _Z18__gg__file_stashedv@Base 15 + (optional=templinst)_Z23enabled_exception_matchISt23_Rb_tree_const_iteratorI23cbl_enabled_exception_tEET_S3_S3_9ec_type_tm@Base 15 + _Z7flipperv@Base 15 + _ZGVZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 + _ZN11ec_status_t16copy_environmentEv@Base 15 + _ZN11ec_status_t6updateEv@Base 15 + (arch=riscv64)_ZN11ec_status_tC1ERKS_@Base 15 + (arch=riscv64)_ZN11ec_status_tC2ERKS_@Base 15 + _ZN11ec_status_tD1Ev@Base 15 + _ZN11ec_status_tD2Ev@Base 15 + _ZN24cbl_enabled_exceptions_t6decodeERKSt6vectorImSaImEE@Base 15 + _ZN24cbl_enabled_exceptions_tD1Ev@Base 15 + _ZN24cbl_enabled_exceptions_tD2Ev@Base 15 + _ZNK11ec_status_t17reset_environmentEv@Base 15 + _ZNK11ec_status_t8is_fatalEv@Base 15 + _ZNK23cbl_enabled_exception_t4dumpEi@Base 15 + _ZNK24cbl_enabled_exceptions_t4dumpEPKc@Base 15 + _ZNK24cbl_enabled_exceptions_t5matchE9ec_type_tm@Base 15 + (optional=templinst)_ZNKSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PvESaIS9_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS7_@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS8_10_Hash_nodeIS6_Lb0EEEm@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPcESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEEm@Base 15 + (optional=templinst)_ZNSt10_HashtableImSt4pairIKm14alphabet_stateESaIS3_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableImSt4pairIKmmESaIS2_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 + (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED1Ev@Base 15 + (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED2Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseImSaImEED1Ev@Base 15 + (optional=templinst)_ZNSt12_Vector_baseImSaImEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED2Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED1Ev@Base 15 + (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED2Ev@Base 15 + (optional=templinst)_ZNSt3setImSt4lessImESaImEED1Ev@Base 15 + (optional=templinst)_ZNSt3setImSt4lessImESaImEED2Ev@Base 15 + (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE17_M_reallocate_mapEmb@Base 15 + (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED1Ev@Base 15 + (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI11file_hole_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI12file_index_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_default_appendEm@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorIPvSaIS0_EED2Ev@Base 15 + (optional=templinst)_ZNSt6vectorISt17_Rb_tree_iteratorISt4pairIKS_IhSaIhEElEESaIS6_EE17_M_realloc_appendIJRKS6_EEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIhSaIhEE17_M_realloc_appendIJRKhEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorIiSaIiEE17_M_realloc_appendIJRKiEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEE17_M_realloc_appendIJRKmEEEvDpOT_@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEED1Ev@Base 15 + (optional=templinst)_ZNSt6vectorImSaImEED2Ev@Base 15 + (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKcm@Base 15 + (optional=templinst)_ZNSt8_Rb_treeISt6vectorIhSaIhEESt4pairIKS2_lESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE11equal_rangeERS4_@Base 15 + (optional=templinst)_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE16_M_insert_uniqueIRKmEESt4pairISt17_Rb_tree_iteratorImEbEOT_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_PvESaISA_ENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixEOS6_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKm14alphabet_stateESaIS4_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 + (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKmSt6vectorImSaImEEESaIS6_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 + (optional=templinst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElmNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_T0_SD_T1_T2_@Base 15 + (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_@Base 15 + (optional=templinst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_T1_@Base 15 + _ZZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 + __gg___14_linage_counter6@Base 15 + __gg___data_dev_null@Base 15 + __gg___data_dev_stderr@Base 15 + __gg___data_dev_stdin@Base 15 + __gg___data_dev_stdout@Base 15 + __gg___dev_null@Base 15 + __gg___dev_stderr@Base 15 + __gg___dev_stdin@Base 15 + __gg___dev_stdout@Base 15 + __gg___file_status@Base 15 + __gg__abs@Base 15 + __gg__accept@Base 15 + __gg__accept_arg_value@Base 15 + __gg__accept_envar@Base 15 + __gg__acos@Base 15 + __gg__add_fixed_phase1@Base 15 + __gg__add_float_phase1@Base 15 + __gg__addf1_fixed_phase2@Base 15 + __gg__addf1_float_phase2@Base 15 + __gg__addf3@Base 15 + __gg__adjust_dest_size@Base 15 + __gg__allocate@Base 15 + __gg__alphabet_create@Base 15 + __gg__alphabet_states@Base 15 + __gg__alphabet_use@Base 15 + __gg__annuity@Base 15 + __gg__arithmetic_rounds@Base 15 + __gg__arithmetic_rounds_size@Base 15 + __gg__ascii_to_ascii@Base 15 + __gg__ascii_to_ascii_chr@Base 15 + __gg__ascii_to_console@Base 15 + __gg__ascii_to_ebcdic@Base 15 + __gg__ascii_to_ebcdic_chr@Base 15 + __gg__ascii_to_internal@Base 15 + __gg__ascii_to_internal_chr@Base 15 + __gg__ascii_to_internal_field@Base 15 + __gg__ascii_to_internal_str@Base 15 + __gg__asin@Base 15 + __gg__assign_value_from_stack@Base 15 + __gg__atan@Base 15 + __gg__binary_to_string@Base 15 + __gg__binary_to_string_internal@Base 15 + __gg__binary_value_from_field@Base 15 + __gg__binary_value_from_qualified_field@Base 15 + __gg__bitop@Base 15 + __gg__bitwise_op@Base 15 + __gg__byte_length@Base 15 + __gg__call_parameter_count@Base 15 + __gg__call_parameter_lengths@Base 15 + __gg__call_parameter_signature@Base 15 + __gg__char@Base 15 + __gg__check_fatal_exception@Base 15 + __gg__classify@Base 15 + __gg__clear_exception@Base 15 + __gg__clock_gettime@Base 15 + __gg__codeset_figurative_constants@Base 15 + __gg__combined_datetime@Base 15 + __gg__compare@Base 15 + __gg__compare_2@Base 15 + __gg__concat@Base 15 + __gg__console_to_ascii@Base 15 + __gg__console_to_ebcdic@Base 15 + __gg__console_to_internal@Base 15 + __gg__console_to_internal_cm@Base 15 + __gg__copy_as_big_endian@Base 15 + __gg__cos@Base 15 + __gg__cp1140_to_cp1252_values@Base 15 + __gg__cp1252_to_cp1140_values@Base 15 + __gg__cp1252_to_ebcdic_collation@Base 15 + __gg__ct_currency_signs@Base 15 + __gg__currency_sign@Base 15 + __gg__currency_sign_init@Base 15 + __gg__currency_signs@Base 15 + __gg__current_date@Base 15 + __gg__data__file_status@Base 15 + __gg__data_high_values@Base 15 + __gg__data_linage_counter@Base 15 + __gg__data_low_values@Base 15 + __gg__data_nulls@Base 15 + __gg__data_quotes@Base 15 + __gg__data_return_code@Base 15 + __gg__data_space@Base 15 + __gg__data_upsi_0@Base 15 + __gg__data_zeros@Base 15 + __gg__date_of_integer@Base 15 + __gg__date_to_yyyymmdd@Base 15 + __gg__day_of_integer@Base 15 + __gg__day_to_yyyyddd@Base 15 + __gg__deallocate@Base 15 + __gg__decimal_point@Base 15 + __gg__decimal_point_is_comma@Base 15 + __gg__decimal_separator@Base 15 + __gg__default_compute_error@Base 15 + __gg__default_currency_sign@Base 15 + __gg__dirty_to_binary_internal@Base 15 + __gg__dirty_to_binary_source@Base 15 + __gg__dirty_to_float@Base 15 + __gg__display@Base 15 + __gg__display_clean@Base 15 + __gg__display_int128@Base 15 + __gg__display_string@Base 15 + __gg__dividef1_phase2@Base 15 + __gg__dividef23@Base 15 + __gg__dividef45@Base 15 + __gg__double_to_target@Base 15 + __gg__e@Base 15 + __gg__ebcdic_codeset_in_use@Base 15 + __gg__ebcdic_to_ascii@Base 15 + __gg__ebcdic_to_console@Base 15 + __gg__ebcdic_to_cp1252_collation@Base 15 + __gg__entry_location@Base 15 + __gg__exception_code@Base 15 + __gg__exception_file_name@Base 15 + __gg__exception_file_status@Base 15 + __gg__exception_line_number@Base 15 + __gg__exception_paragraph@Base 15 + __gg__exception_pop@Base 15 + __gg__exception_program_id@Base 15 + __gg__exception_push@Base 15 + __gg__exception_section@Base 15 + __gg__exception_source_file@Base 15 + __gg__exception_statement@Base 15 + __gg__exception_table@Base 15 + __gg__exception_table_end@Base 15 + __gg__exit_address@Base 15 + __gg__exp10@Base 15 + __gg__exp@Base 15 + __gg__factorial@Base 15 + __gg__fetch_call_by_value_value@Base 15 + __gg__file_close@Base 15 + __gg__file_delete@Base 15 + __gg__file_init@Base 15 + __gg__file_open@Base 15 + __gg__file_read@Base 15 + __gg__file_reopen@Base 15 + __gg__file_rewrite@Base 15 + __gg__file_sort_ff_input@Base 15 + __gg__file_sort_ff_output@Base 15 + __gg__file_start@Base 15 + __gg__file_stash@Base 15 + __gg__file_status_word@Base 15 + __gg__file_write@Base 15 + __gg__fixed_phase2_assign_to_c@Base 15 + __gg__float128_from_field@Base 15 + __gg__float128_from_int128@Base 15 + __gg__float128_from_location@Base 15 + __gg__float128_from_qualified_field@Base 15 + __gg__float128_to_field@Base 15 + __gg__float128_to_qualified_field@Base 15 + __gg__float32_from_128@Base 15 + __gg__float32_from_64@Base 15 + __gg__float32_from_int128@Base 15 + __gg__float64_from_128@Base 15 + __gg__float64_from_int128@Base 15 + __gg__float_phase2_assign_to_c@Base 15 + __gg__formatted_current_date@Base 15 + __gg__formatted_date@Base 15 + __gg__formatted_datetime@Base 15 + __gg__formatted_time@Base 15 + __gg__fourplet_flags@Base 15 + __gg__fourplet_flags_size@Base 15 + __gg__fprintf_stderr@Base 15 + __gg__fraction_part@Base 15 + __gg__func_exception_file@Base 15 + __gg__func_exception_location@Base 15 + __gg__func_exception_statement@Base 15 + __gg__func_exception_status@Base 15 + __gg__function_handle_from_cobpath@Base 15 + __gg__function_handle_from_literal@Base 15 + __gg__function_handle_from_name@Base 15 + __gg__get_argc@Base 15 + __gg__get_argv@Base 15 + __gg__get_command_line@Base 15 + __gg__get_date_dow@Base 15 + __gg__get_date_hhmmssff@Base 15 + __gg__get_date_yyddd@Base 15 + __gg__get_date_yymmdd@Base 15 + __gg__get_date_yyyymmdd@Base 15 + __gg__get_decimal_point@Base 15 + __gg__get_decimal_separator@Base 15 + __gg__get_default_currency_string@Base 15 + __gg__get_env_name@Base 15 + __gg__get_env_value@Base 15 + __gg__get_figconst_data@Base 15 + __gg__get_file_descriptor@Base 15 + __gg__get_integer_binary_value@Base 15 + __gg__get_yyyyddd@Base 15 + __gg__globals_are_initialized@Base 15 + __gg__handle_error@Base 15 + __gg__hex_of@Base 15 + __gg__high_value_character@Base 15 + __gg__high_values@Base 15 + __gg__highest_algebraic@Base 15 + __gg__init_program_state@Base 15 + __gg__initialize_variable@Base 15 + __gg__initialize_variable_clean@Base 15 + __gg__inspect_format_1@Base 15 + __gg__inspect_format_2@Base 15 + __gg__inspect_format_4@Base 15 + __gg__int128_to_field@Base 15 + __gg__int128_to_qualified_field@Base 15 + __gg__integer@Base 15 + __gg__integer_from_float128@Base 15 + __gg__integer_from_qualified_field@Base 15 + __gg__integer_of_date@Base 15 + __gg__integer_of_day@Base 15 + __gg__integer_of_formatted_date@Base 15 + __gg__integer_part@Base 15 + __gg__internal_codeset_map@Base 15 + __gg__internal_to_ascii@Base 15 + __gg__internal_to_console_cm@Base 15 + __gg__internal_to_console_in_place@Base 15 + __gg__is_canceled@Base 15 + __gg__is_float_infinite@Base 15 + __gg__just_mangle_name@Base 15 + __gg__literaln_alpha_compare@Base 15 + __gg__locale_compare@Base 15 + __gg__locale_date@Base 15 + __gg__locale_time@Base 15 + __gg__locale_time_from_seconds@Base 15 + __gg__log10@Base 15 + __gg__log@Base 15 + __gg__low_value_character@Base 15 + __gg__low_values@Base 15 + __gg__lower_case@Base 15 + __gg__lowest_algebraic@Base 15 + __gg__main_called@Base 15 + __gg__match_exception@Base 15 + __gg__max@Base 15 + __gg__mean@Base 15 + __gg__median@Base 15 + __gg__merge_files@Base 15 + __gg__midrange@Base 15 + __gg__min@Base 15 + __gg__mirror_range@Base 15 + __gg__mod@Base 15 + __gg__module_name@Base 15 + __gg__module_name_pop@Base 15 + __gg__module_name_push@Base 15 + __gg__move@Base 15 + __gg__move_literala@Base 15 + __gg__multiplyf1_phase1@Base 15 + __gg__multiplyf1_phase2@Base 15 + __gg__multiplyf2@Base 15 + __gg__nop@Base 15 + __gg__nulls@Base 15 + __gg__numval@Base 15 + __gg__numval_c@Base 15 + __gg__numval_f@Base 15 + __gg__one_to_one_values@Base 15 + __gg__ord@Base 15 + __gg__ord_max@Base 15 + __gg__ord_min@Base 15 + __gg__parser_set_conditional@Base 15 + __gg__pi@Base 15 + __gg__pop_local_variables@Base 15 + __gg__pop_program_state@Base 15 + __gg__pow@Base 15 + __gg__power_of_ten@Base 15 + __gg__present_value@Base 15 + __gg__process_compute_error@Base 15 + __gg__pseudo_return_bookmark@Base 15 + __gg__pseudo_return_flush@Base 15 + __gg__pseudo_return_pop@Base 15 + __gg__pseudo_return_push@Base 15 + __gg__psz_to_alpha_move@Base 15 + __gg__push_local_variable@Base 15 + __gg__push_program_state@Base 15 + __gg__quote_character@Base 15 + __gg__quotes@Base 15 + __gg__random@Base 15 + __gg__random_next@Base 15 + __gg__range@Base 15 + __gg__raw_to_ascii@Base 15 + __gg__raw_to_ebcdic@Base 15 + __gg__raw_to_internal@Base 15 + __gg__rdigits@Base 15 + __gg__realloc_if_necessary@Base 15 + __gg__rem@Base 15 + __gg__remove_trailing_zeroes@Base 15 + __gg__resize_int_p@Base 15 + __gg__resize_treeplet@Base 15 + __gg__return_code@Base 15 + __gg__reverse@Base 15 + __gg__routine_to_call@Base 15 + __gg__scale_by_power_of_ten_1@Base 15 + __gg__scale_by_power_of_ten_2@Base 15 + __gg__seconds_from_formatted_time@Base 15 + __gg__seconds_past_midnight@Base 15 + __gg__set_arg_num@Base 15 + __gg__set_env_name@Base 15 + __gg__set_env_value@Base 15 + __gg__set_envar@Base 15 + __gg__set_exception_code@Base 15 + __gg__set_exception_environment@Base 15 + __gg__set_exception_file@Base 15 + __gg__set_initial_switch_value@Base 15 + __gg__set_internal_codeset@Base 15 + __gg__set_pointer@Base 15 + __gg__set_program_list@Base 15 + __gg__set_program_name@Base 15 + __gg__set_truncation_mode@Base 15 + __gg__set_user_status@Base 15 + __gg__setop_compare@Base 15 + __gg__sign@Base 15 + __gg__sin@Base 15 + __gg__sleep@Base 15 + __gg__sort_table@Base 15 + __gg__sort_workfile@Base 15 + __gg__space@Base 15 + __gg__spaces@Base 15 + __gg__sqrt@Base 15 + __gg__standard_deviation@Base 15 + __gg__stash_argc_argv@Base 15 + __gg__string@Base 15 + __gg__string_to_alpha_edited@Base 15 + __gg__string_to_alpha_edited_ascii@Base 15 + __gg__string_to_numeric_edited@Base 15 + __gg__substitute@Base 15 + __gg__subtractf1_fixed_phase2@Base 15 + __gg__subtractf1_float_phase2@Base 15 + __gg__subtractf2_fixed_phase1@Base 15 + __gg__subtractf2_float_phase1@Base 15 + __gg__subtractf3@Base 15 + __gg__sum@Base 15 + __gg__tan@Base 15 + __gg__test_date_yyyymmdd@Base 15 + __gg__test_day_yyyyddd@Base 15 + __gg__test_formatted_datetime@Base 15 + __gg__test_numval@Base 15 + __gg__test_numval_c@Base 15 + __gg__test_numval_f@Base 15 + __gg__text_conversion_override@Base 15 + __gg__to_be_canceled@Base 15 + __gg__treeplet_1f@Base 15 + __gg__treeplet_1o@Base 15 + __gg__treeplet_1s@Base 15 + __gg__treeplet_2f@Base 15 + __gg__treeplet_2o@Base 15 + __gg__treeplet_2s@Base 15 + __gg__treeplet_3f@Base 15 + __gg__treeplet_3o@Base 15 + __gg__treeplet_3s@Base 15 + __gg__treeplet_4f@Base 15 + __gg__treeplet_4o@Base 15 + __gg__treeplet_4s@Base 15 + __gg__trim@Base 15 + __gg__unique_prog_id@Base 15 + __gg__unstring@Base 15 + __gg__upper_case@Base 15 + __gg__upsi@Base 15 + __gg__variables_to_init@Base 15 + __gg__variance@Base 15 + __gg__when_compiled@Base 15 + __gg__year_to_yyyy@Base 15 + __gg__zeros@Base 15 + _from_ctype@Base 15 + _to_ctype@Base 15 diff --git a/libgdiagnostics0.symbols b/libgdiagnostics0.symbols new file mode 100644 index 0000000..7b2059b --- /dev/null +++ b/libgdiagnostics0.symbols @@ -0,0 +1,2 @@ +libgdiagnostics.so.0 #PACKAGE# #MINVER# + (symver)LIBGDIAGNOSTICS_ABI_0 15 diff --git a/libgfortran.symbols b/libgfortran.symbols new file mode 100644 index 0000000..27d5dfb --- /dev/null +++ b/libgfortran.symbols @@ -0,0 +1,13 @@ +libgfortran.so.5 #PACKAGE# #MINVER# + (symver)GFORTRAN_8 8 + (symver)GFORTRAN_9 9 + (symver)GFORTRAN_9.2 9.1 + (symver)GFORTRAN_10 10 + (symver)GFORTRAN_10.2 10.2 + (symver)GFORTRAN_12 11.2 + (symver)GFORTRAN_13 13 + (symver)GFORTRAN_14 15 + (symver)GFORTRAN_15 15 + (symver)GFORTRAN_15.2 15.2 + (symver)GFORTRAN_C99_8 8 + (symver)GFORTRAN_F2C_8 8 diff --git a/libgm2.symbols b/libgm2.symbols new file mode 100644 index 0000000..39758b6 --- /dev/null +++ b/libgm2.symbols @@ -0,0 +1,1644 @@ +libm2cor.so.19 #PACKAGE# #MINVER# + Debug_DebugString@Base 10 + Debug_Halt@Base 10 + Debug_PushOutput@Base 10 + Executive_DebugProcess@Base 10 + Executive_GetCurrentProcess@Base 10 + Executive_InitProcess@Base 10 + Executive_InitSemaphore@Base 10 + Executive_KillProcess@Base 10 + Executive_ProcessName@Base 10 + Executive_Ps@Base 10 + Executive_Resume@Base 10 + Executive_RotateRunQueue@Base 10 + Executive_Signal@Base 10 + Executive_Suspend@Base 10 + Executive_Wait@Base 10 + Executive_WaitForIO@Base 10 + KeyBoardLEDs_SwitchCaps@Base 10 + KeyBoardLEDs_SwitchLeds@Base 10 + KeyBoardLEDs_SwitchNum@Base 10 + KeyBoardLEDs_SwitchScroll@Base 10 + SYSTEM_IOTRANSFER@Base 10 + SYSTEM_LISTEN@Base 10 + SYSTEM_ListenLoop@Base 10 + SYSTEM_NEWPROCESS@Base 10 + SYSTEM_RotateLeft@Base 10 + SYSTEM_RotateRight@Base 10 + SYSTEM_RotateVal@Base 10 + SYSTEM_ShiftLeft@Base 10 + SYSTEM_ShiftRight@Base 10 + SYSTEM_ShiftVal@Base 10 + SYSTEM_TRANSFER@Base 10 + SYSTEM_TurnInterrupts@Base 10 + TimerHandler_ArmEvent@Base 10 + TimerHandler_Cancel@Base 10 + TimerHandler_GetTicks@Base 10 + TimerHandler_ReArmEvent@Base 10 + TimerHandler_Sleep@Base 10 + TimerHandler_WaitOn@Base 10 + _M2_Debug_finish@Base 10 + _M2_Debug_init@Base 10 + _M2_Executive_finish@Base 10 + _M2_Executive_init@Base 10 + _M2_KeyBoardLEDs_finish@Base 10 + _M2_KeyBoardLEDs_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_TimerHandler_finish@Base 10 + _M2_TimerHandler_init@Base 10 +libm2iso.so.18 #PACKAGE# #MINVER# + COROUTINES_ATTACH@Base 10 + COROUTINES_CURRENT@Base 10 + COROUTINES_DETACH@Base 10 + COROUTINES_HANDLER@Base 10 + COROUTINES_IOTRANSFER@Base 10 + COROUTINES_IsATTACHED@Base 10 + COROUTINES_LISTEN@Base 10 + COROUTINES_NEWCOROUTINE@Base 10 + COROUTINES_PROT@Base 10 + COROUTINES_TRANSFER@Base 10 + COROUTINES_TurnInterrupts@Base 10 + CharClass_IsControl@Base 10 + CharClass_IsLetter@Base 10 + CharClass_IsLower@Base 10 + CharClass_IsNumeric@Base 10 + CharClass_IsUpper@Base 10 + CharClass_IsWhiteSpace@Base 10 + ClientSocket_Close@Base 10 + ClientSocket_IsSocket@Base 10 + ClientSocket_OpenSocket@Base 10 + ComplexMath_IsCMathException@Base 10 + ComplexMath_abs@Base 10 + ComplexMath_arccos@Base 10 + ComplexMath_arcsin@Base 10 + ComplexMath_arctan@Base 10 + ComplexMath_arg@Base 10 + ComplexMath_conj@Base 10 + ComplexMath_cos@Base 10 + ComplexMath_exp@Base 10 + ComplexMath_ln@Base 10 + ComplexMath_polarToComplex@Base 10 + ComplexMath_power@Base 10 + ComplexMath_scalarMult@Base 10 + ComplexMath_sin@Base 10 + ComplexMath_sqrt@Base 10 + ComplexMath_tan@Base 10 + ConvStringLong_RealToEngString@Base 10 + ConvStringLong_RealToFixedString@Base 10 + ConvStringLong_RealToFloatString@Base 10 + ConvStringReal_RealToEngString@Base 10 + ConvStringReal_RealToFixedString@Base 10 + ConvStringReal_RealToFloatString@Base 10 + EXCEPTIONS_AllocateSource@Base 10 + EXCEPTIONS_CurrentNumber@Base 10 + EXCEPTIONS_GetMessage@Base 10 + EXCEPTIONS_IsCurrentSource@Base 10 + EXCEPTIONS_IsExceptionalExecution@Base 10 + EXCEPTIONS_RAISE@Base 10 + ErrnoCategory_GetOpenResults@Base 10 + ErrnoCategory_IsErrnoHard@Base 10 + ErrnoCategory_IsErrnoSoft@Base 10 + ErrnoCategory_UnAvailable@Base 10 + GeneralUserExceptions_GeneralException@Base 10 + GeneralUserExceptions_IsGeneralException@Base 10 + GeneralUserExceptions_RaiseGeneralException@Base 10 + IOChan_ChanException@Base 10 + IOChan_CurrentFlags@Base 10 + IOChan_DeviceError@Base 10 + IOChan_Flush@Base 10 + IOChan_GetName@Base 10 + IOChan_InvalidChan@Base 10 + IOChan_IsChanException@Base 10 + IOChan_Look@Base 10 + IOChan_RawRead@Base 10 + IOChan_RawWrite@Base 10 + IOChan_ReadResult@Base 10 + IOChan_Reset@Base 10 + IOChan_SetReadResult@Base 10 + IOChan_Skip@Base 10 + IOChan_SkipLook@Base 10 + IOChan_TextRead@Base 10 + IOChan_TextWrite@Base 10 + IOChan_WriteLn@Base 10 + IOLink_AllocateDeviceId@Base 10 + IOLink_DeviceTablePtrValue@Base 10 + IOLink_IOException@Base 10 + IOLink_IsDevice@Base 10 + IOLink_IsIOException@Base 10 + IOLink_MakeChan@Base 10 + IOLink_RAISEdevException@Base 10 + IOLink_UnMakeChan@Base 10 + IOResult_ReadResult@Base 10 + LongComplexMath_IsCMathException@Base 10 + LongComplexMath_abs@Base 10 + LongComplexMath_arccos@Base 10 + LongComplexMath_arcsin@Base 10 + LongComplexMath_arctan@Base 10 + LongComplexMath_arg@Base 10 + LongComplexMath_conj@Base 10 + LongComplexMath_cos@Base 10 + LongComplexMath_exp@Base 10 + LongComplexMath_ln@Base 10 + LongComplexMath_polarToComplex@Base 10 + LongComplexMath_power@Base 10 + LongComplexMath_scalarMult@Base 10 + LongComplexMath_sin@Base 10 + LongComplexMath_sqrt@Base 10 + LongComplexMath_tan@Base 10 + LongConv_FormatReal@Base 10 + LongConv_IsRConvException@Base 10 + LongConv_LengthEngReal@Base 10 + LongConv_LengthFixedReal@Base 10 + LongConv_LengthFloatReal@Base 10 + LongConv_ScanReal@Base 10 + LongConv_ValueReal@Base 10 + LongIO_ReadReal@Base 10 + LongIO_WriteEng@Base 10 + LongIO_WriteFixed@Base 10 + LongIO_WriteFloat@Base 10 + LongIO_WriteReal@Base 10 + LongMath_IsRMathException@Base 10 + LongMath_arccos@Base 10 + LongMath_arcsin@Base 10 + LongMath_arctan@Base 10 + LongMath_cos@Base 10 + LongMath_exp@Base 10 + LongMath_ln@Base 10 + LongMath_power@Base 10 + LongMath_round@Base 10 + LongMath_sin@Base 10 + LongMath_sqrt@Base 10 + LongMath_tan@Base 10 + LongStr_RealToEng@Base 10 + LongStr_RealToFixed@Base 10 + LongStr_RealToFloat@Base 10 + LongStr_RealToStr@Base 10 + LongStr_StrToReal@Base 10 + LongWholeIO_ReadCard@Base 10 + LongWholeIO_ReadInt@Base 10 + LongWholeIO_WriteCard@Base 10 + LongWholeIO_WriteInt@Base 10 + LowLong_IsLowException@Base 10 + LowLong_currentMode@Base 10 + LowLong_exponent@Base 10 + LowLong_fraction@Base 10 + LowLong_fractpart@Base 10 + LowLong_intpart@Base 10 + LowLong_pred@Base 10 + LowLong_round@Base 10 + LowLong_scale@Base 10 + LowLong_setMode@Base 10 + LowLong_sign@Base 10 + LowLong_succ@Base 10 + LowLong_synthesize@Base 10 + LowLong_trunc@Base 10 + LowLong_ulp@Base 10 + LowReal_IsLowException@Base 10 + LowReal_currentMode@Base 10 + LowReal_exponent@Base 10 + LowReal_fraction@Base 10 + LowReal_fractpart@Base 10 + LowReal_intpart@Base 10 + LowReal_pred@Base 10 + LowReal_round@Base 10 + LowReal_scale@Base 10 + LowReal_setMode@Base 10 + LowReal_sign@Base 10 + LowReal_succ@Base 10 + LowReal_synthesize@Base 10 + LowReal_trunc@Base 10 + LowReal_ulp@Base 10 + LowShort_IsLowException@Base 10 + LowShort_currentMode@Base 10 + LowShort_exponent@Base 10 + LowShort_fraction@Base 10 + LowShort_fractpart@Base 10 + LowShort_intpart@Base 10 + LowShort_pred@Base 10 + LowShort_round@Base 10 + LowShort_scale@Base 10 + LowShort_setMode@Base 10 + LowShort_sign@Base 10 + LowShort_succ@Base 10 + LowShort_synthesize@Base 10 + LowShort_trunc@Base 10 + LowShort_ulp@Base 10 + M2EXCEPTION_IsM2Exception@Base 10 + M2EXCEPTION_M2Exception@Base 10 + M2RTS_AssignmentException@Base 10 + M2RTS_CaseException@Base 10 + M2RTS_DecException@Base 10 + M2RTS_DynamicArraySubscriptException@Base 10 + M2RTS_ErrorMessage@Base 10 + M2RTS_ExclException@Base 10 + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_ExitOnHalt@Base 10 + M2RTS_ForLoopBeginException@Base 10 + M2RTS_ForLoopEndException@Base 10 + M2RTS_ForLoopToException@Base 10 + M2RTS_HALT@Base 10 + M2RTS_Halt@Base 10 + M2RTS_HasHalted@Base 10 + M2RTS_IncException@Base 10 + M2RTS_InclException@Base 10 + M2RTS_InstallInitialProcedure@Base 10 + M2RTS_InstallTerminationProcedure@Base 10 + M2RTS_IsTerminating@Base 10 + M2RTS_Length@Base 10 + M2RTS_NoException@Base 10 + M2RTS_NoReturnException@Base 10 + M2RTS_ParameterException@Base 10 + M2RTS_PointerNilException@Base 10 + M2RTS_RealValueException@Base 10 + M2RTS_ReturnException@Base 10 + M2RTS_RotateException@Base 10 + M2RTS_ShiftException@Base 10 + M2RTS_StaticArraySubscriptException@Base 10 + M2RTS_WholeNonPosDivException@Base 10 + M2RTS_WholeNonPosModException@Base 10 + M2RTS_WholeValueException@Base 10 + M2RTS_WholeZeroDivException@Base 10 + M2RTS_WholeZeroRemException@Base 10 + MemStream_Close@Base 10 + MemStream_IsMem@Base 10 + MemStream_OpenRead@Base 10 + MemStream_OpenWrite@Base 10 + MemStream_Reread@Base 10 + MemStream_Rewrite@Base 10 + Processes_Activate@Base 10 + Processes_Attach@Base 10 + Processes_Create@Base 10 + Processes_Detach@Base 10 + Processes_Handler@Base 10 + Processes_IsAttached@Base 10 + Processes_IsProcessesException@Base 10 + Processes_Me@Base 10 + Processes_MyParam@Base 10 + Processes_ProcessesException@Base 10 + Processes_Start@Base 10 + Processes_StopMe@Base 10 + Processes_SuspendMe@Base 10 + Processes_SuspendMeAndActivate@Base 10 + Processes_Switch@Base 10 + Processes_UrgencyOf@Base 10 + Processes_Wait@Base 10 + ProgramArgs_ArgChan@Base 10 + ProgramArgs_IsArgPresent@Base 10 + ProgramArgs_NextArg@Base 10 + RTco_currentInterruptLevel@Base 10 + RTco_currentThread@Base 10 + RTco_init@Base 10 + RTco_initSemaphore@Base 10 + RTco_initThread@Base 10 + RTco_select@Base 10 + RTco_signal@Base 10 + RTco_signalThread@Base 10 + RTco_transfer@Base 10 + RTco_turnInterrupts@Base 10 + RTco_wait@Base 10 + RTco_waitThread@Base 10 + RTdata_GetData@Base 10 + RTdata_InitData@Base 10 + RTdata_KillData@Base 10 + RTdata_MakeModuleId@Base 10 + RTentity_DelKey@Base 10 + RTentity_GetKey@Base 10 + RTentity_InitGroup@Base 10 + RTentity_IsIn@Base 10 + RTentity_KillGroup@Base 10 + RTentity_PutKey@Base 10 + RTfio_dogeterrno@Base 10 + RTfio_dorbytes@Base 10 + RTfio_doreadchar@Base 10 + RTfio_dounreadchar@Base 10 + RTfio_dowbytes@Base 10 + RTfio_dowriteln@Base 10 + RTfio_iseof@Base 10 + RTfio_iseoln@Base 10 + RTfio_iserror@Base 10 + RTgen_InitChanDev@Base 10 + RTgen_KillChanDev@Base 10 + RTgen_RaiseEOFinLook@Base 10 + RTgen_RaiseEOFinSkip@Base 10 + RTgen_checkErrno@Base 10 + RTgen_doLook@Base 10 + RTgen_doReadLocs@Base 10 + RTgen_doReadText@Base 10 + RTgen_doSkip@Base 10 + RTgen_doSkipLook@Base 10 + RTgen_doWriteLn@Base 10 + RTgen_doWriteLocs@Base 10 + RTgen_doWriteText@Base 10 + RTgenif_InitGenDevIF@Base 10 + RTgenif_KillGenDevIF@Base 10 + RTgenif_doGetErrno@Base 10 + RTgenif_doRBytes@Base 10 + RTgenif_doReadChar@Base 10 + RTgenif_doUnReadChar@Base 10 + RTgenif_doWBytes@Base 10 + RTgenif_doWrLn@Base 10 + RTgenif_getDID@Base 10 + RTgenif_isEOF@Base 10 + RTgenif_isEOLN@Base 10 + RTgenif_isError@Base 10 + RTio_GetDeviceId@Base 10 + RTio_GetDevicePtr@Base 10 + RTio_GetFile@Base 10 + RTio_InitChanId@Base 10 + RTio_KillChanId@Base 10 + RTio_NilChanId@Base 10 + RTio_SetDeviceId@Base 10 + RTio_SetDevicePtr@Base 10 + RTio_SetFile@Base 10 + RandomNumber_RandomBytes@Base 10 + RandomNumber_RandomCard@Base 10 + RandomNumber_RandomInit@Base 10 + RandomNumber_RandomInt@Base 10 + RandomNumber_RandomLongCard@Base 10 + RandomNumber_RandomLongInt@Base 10 + RandomNumber_RandomLongReal@Base 10 + RandomNumber_RandomReal@Base 10 + RandomNumber_RandomShortCard@Base 10 + RandomNumber_RandomShortInt@Base 10 + RandomNumber_RandomShortReal@Base 10 + RandomNumber_Randomize@Base 10 + RawIO_Read@Base 10 + RawIO_Write@Base 10 + RealConv_FormatReal@Base 10 + RealConv_IsRConvException@Base 10 + RealConv_LengthEngReal@Base 10 + RealConv_LengthFixedReal@Base 10 + RealConv_LengthFloatReal@Base 10 + RealConv_ScanReal@Base 10 + RealConv_ValueReal@Base 10 + RealIO_ReadReal@Base 10 + RealIO_WriteEng@Base 10 + RealIO_WriteFixed@Base 10 + RealIO_WriteFloat@Base 10 + RealIO_WriteReal@Base 10 + RealMath_IsRMathException@Base 10 + RealMath_arccos@Base 10 + RealMath_arcsin@Base 10 + RealMath_arctan@Base 10 + RealMath_cos@Base 10 + RealMath_exp@Base 10 + RealMath_ln@Base 10 + RealMath_power@Base 10 + RealMath_round@Base 10 + RealMath_sin@Base 10 + RealMath_sqrt@Base 10 + RealMath_tan@Base 10 + RealStr_RealToEng@Base 10 + RealStr_RealToFixed@Base 10 + RealStr_RealToFloat@Base 10 + RealStr_RealToStr@Base 10 + RealStr_StrToReal@Base 10 + RndFile_Close@Base 10 + RndFile_CurrentPos@Base 10 + RndFile_EndPos@Base 10 + RndFile_IsRndFile@Base 10 + RndFile_IsRndFileException@Base 10 + RndFile_NewPos@Base 10 + RndFile_OpenClean@Base 10 + RndFile_OpenOld@Base 10 + RndFile_SetPos@Base 10 + RndFile_StartPos@Base 10 + SIOResult_ReadResult@Base 10 + SLongIO_ReadReal@Base 10 + SLongIO_WriteEng@Base 10 + SLongIO_WriteFixed@Base 10 + SLongIO_WriteFloat@Base 10 + SLongIO_WriteReal@Base 10 + SLongWholeIO_ReadCard@Base 10 + SLongWholeIO_ReadInt@Base 10 + SLongWholeIO_WriteCard@Base 10 + SLongWholeIO_WriteInt@Base 10 + SRawIO_Read@Base 10 + SRawIO_Write@Base 10 + SRealIO_ReadReal@Base 10 + SRealIO_WriteEng@Base 10 + SRealIO_WriteFixed@Base 10 + SRealIO_WriteFloat@Base 10 + SRealIO_WriteReal@Base 10 + SShortIO_ReadReal@Base 10 + SShortIO_WriteEng@Base 10 + SShortIO_WriteFixed@Base 10 + SShortIO_WriteFloat@Base 10 + SShortIO_WriteReal@Base 10 + SShortWholeIO_ReadCard@Base 10 + SShortWholeIO_ReadInt@Base 10 + SShortWholeIO_WriteCard@Base 10 + SShortWholeIO_WriteInt@Base 10 + STextIO_ReadChar@Base 10 + STextIO_ReadRestLine@Base 10 + STextIO_ReadString@Base 10 + STextIO_ReadToken@Base 10 + STextIO_SkipLine@Base 10 + STextIO_WriteChar@Base 10 + STextIO_WriteLn@Base 10 + STextIO_WriteString@Base 10 + SWholeIO_ReadCard@Base 10 + SWholeIO_ReadInt@Base 10 + SWholeIO_WriteCard@Base 10 + SWholeIO_WriteInt@Base 10 + SYSTEM_RotateLeft@Base 10 + SYSTEM_RotateRight@Base 10 + SYSTEM_RotateVal@Base 10 + SYSTEM_ShiftLeft@Base 10 + SYSTEM_ShiftRight@Base 10 + SYSTEM_ShiftVal@Base 10 + Semaphores_Claim@Base 10 + Semaphores_CondClaim@Base 10 + Semaphores_Create@Base 10 + Semaphores_Destroy@Base 10 + Semaphores_Release@Base 10 + SeqFile_Close@Base 10 + SeqFile_IsSeqFile@Base 10 + SeqFile_OpenAppend@Base 10 + SeqFile_OpenRead@Base 10 + SeqFile_OpenWrite@Base 10 + SeqFile_Reread@Base 10 + SeqFile_Rewrite@Base 10 + ServerSocket_Close@Base 10 + ServerSocket_IsSocket@Base 10 + ServerSocket_OpenAccept@Base 10 + ServerSocket_OpenSocketBindListen@Base 10 + ShortComplexMath_IsCMathException@Base 10 + ShortComplexMath_abs@Base 10 + ShortComplexMath_arccos@Base 10 + ShortComplexMath_arcsin@Base 10 + ShortComplexMath_arctan@Base 10 + ShortComplexMath_arg@Base 10 + ShortComplexMath_conj@Base 10 + ShortComplexMath_cos@Base 10 + ShortComplexMath_exp@Base 10 + ShortComplexMath_ln@Base 10 + ShortComplexMath_polarToComplex@Base 10 + ShortComplexMath_power@Base 10 + ShortComplexMath_scalarMult@Base 10 + ShortComplexMath_sin@Base 10 + ShortComplexMath_sqrt@Base 10 + ShortComplexMath_tan@Base 10 + ShortIO_ReadReal@Base 10 + ShortIO_WriteEng@Base 10 + ShortIO_WriteFixed@Base 10 + ShortIO_WriteFloat@Base 10 + ShortIO_WriteReal@Base 10 + ShortWholeIO_ReadCard@Base 10 + ShortWholeIO_ReadInt@Base 10 + ShortWholeIO_WriteCard@Base 10 + ShortWholeIO_WriteInt@Base 10 + SimpleCipher_InsertCipherLayer@Base 10 + SimpleCipher_RemoveCipherLayer@Base 10 + StdChans_ErrChan@Base 10 + StdChans_InChan@Base 10 + StdChans_NullChan@Base 10 + StdChans_OutChan@Base 10 + StdChans_SetErrChan@Base 10 + StdChans_SetInChan@Base 10 + StdChans_SetOutChan@Base 10 + StdChans_StdErrChan@Base 10 + StdChans_StdInChan@Base 10 + StdChans_StdOutChan@Base 10 + Storage_ALLOCATE@Base 10 + Storage_DEALLOCATE@Base 10 + Storage_IsStorageException@Base 10 + Storage_REALLOCATE@Base 10 + Storage_StorageException@Base 10 + StreamFile_Close@Base 10 + StreamFile_IsStreamFile@Base 10 + StreamFile_Open@Base 10 + StringChan_writeFieldWidth@Base 10 + StringChan_writeString@Base 10 + Strings_Append@Base 10 + Strings_Assign@Base 10 + Strings_CanAppendAll@Base 10 + Strings_CanAssignAll@Base 10 + Strings_CanConcatAll@Base 10 + Strings_CanDeleteAll@Base 10 + Strings_CanExtractAll@Base 10 + Strings_CanInsertAll@Base 10 + Strings_CanReplaceAll@Base 10 + Strings_Capitalize@Base 10 + Strings_Compare@Base 10 + Strings_Concat@Base 10 + Strings_Delete@Base 10 + Strings_Equal@Base 10 + Strings_Extract@Base 10 + Strings_FindDiff@Base 10 + Strings_FindNext@Base 10 + Strings_FindPrev@Base 10 + Strings_Insert@Base 10 + Strings_Length@Base 10 + Strings_Replace@Base 10 + SysClock_CanGetClock@Base 10 + SysClock_CanSetClock@Base 10 + SysClock_GetClock@Base 10 + SysClock_IsValidDateTime@Base 10 + SysClock_SetClock@Base 10 + TERMINATION_HasHalted@Base 10 + TERMINATION_IsTerminating@Base 10 + TermFile_Close@Base 10 + TermFile_IsTermFile@Base 10 + TermFile_Open@Base 10 + TextIO_ReadChar@Base 10 + TextIO_ReadRestLine@Base 10 + TextIO_ReadString@Base 10 + TextIO_ReadToken@Base 10 + TextIO_SkipLine@Base 10 + TextIO_WriteChar@Base 10 + TextIO_WriteLn@Base 10 + TextIO_WriteString@Base 10 + WholeConv_FormatCard@Base 10 + WholeConv_FormatInt@Base 10 + WholeConv_IsWholeConvException@Base 10 + WholeConv_LengthCard@Base 10 + WholeConv_LengthInt@Base 10 + WholeConv_ScanCard@Base 10 + WholeConv_ScanInt@Base 10 + WholeConv_ValueCard@Base 10 + WholeConv_ValueInt@Base 10 + WholeIO_ReadCard@Base 10 + WholeIO_ReadInt@Base 10 + WholeIO_WriteCard@Base 10 + WholeIO_WriteInt@Base 10 + WholeStr_CardToStr@Base 10 + WholeStr_IntToStr@Base 10 + WholeStr_StrToCard@Base 10 + WholeStr_StrToInt@Base 10 + _M2_COROUTINES_finish@Base 10 + _M2_COROUTINES_init@Base 10 + _M2_ChanConsts_finish@Base 10 + _M2_ChanConsts_init@Base 10 + _M2_CharClass_finish@Base 10 + _M2_CharClass_init@Base 10 + _M2_ClientSocket_finish@Base 10 + _M2_ClientSocket_init@Base 10 + _M2_ComplexMath_finish@Base 10 + _M2_ComplexMath_init@Base 10 + _M2_ConvStringLong_finish@Base 10 + _M2_ConvStringLong_init@Base 10 + _M2_ConvStringReal_finish@Base 10 + _M2_ConvStringReal_init@Base 10 + _M2_ConvTypes_finish@Base 10 + _M2_ConvTypes_init@Base 10 + _M2_EXCEPTIONS_finish@Base 10 + _M2_EXCEPTIONS_init@Base 10 + _M2_ErrnoCategory_finish@Base 10 + _M2_ErrnoCategory_init@Base 10 + _M2_GeneralUserExceptions_finish@Base 10 + _M2_GeneralUserExceptions_init@Base 10 + _M2_IOChan_finish@Base 10 + _M2_IOChan_init@Base 10 + _M2_IOConsts_finish@Base 10 + _M2_IOConsts_init@Base 10 + _M2_IOLink_finish@Base 10 + _M2_IOLink_init@Base 10 + _M2_IOResult_finish@Base 10 + _M2_IOResult_init@Base 10 + _M2_LongComplexMath_finish@Base 10 + _M2_LongComplexMath_init@Base 10 + _M2_LongConv_finish@Base 10 + _M2_LongConv_init@Base 10 + _M2_LongIO_finish@Base 10 + _M2_LongIO_init@Base 10 + _M2_LongMath_finish@Base 10 + _M2_LongMath_init@Base 10 + _M2_LongStr_finish@Base 10 + _M2_LongStr_init@Base 10 + _M2_LongWholeIO_finish@Base 10 + _M2_LongWholeIO_init@Base 10 + _M2_LowLong_finish@Base 10 + _M2_LowLong_init@Base 10 + _M2_LowReal_finish@Base 10 + _M2_LowReal_init@Base 10 + _M2_LowShort_finish@Base 10 + _M2_LowShort_init@Base 10 + _M2_M2EXCEPTION_finish@Base 10 + _M2_M2EXCEPTION_init@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_MemStream_finish@Base 10 + _M2_MemStream_init@Base 10 + _M2_Processes_finish@Base 10 + _M2_Processes_init@Base 10 + _M2_ProgramArgs_finish@Base 10 + _M2_ProgramArgs_init@Base 10 + _M2_RTco_finish@Base 10 + _M2_RTco_init@Base 10 + _M2_RTdata_finish@Base 10 + _M2_RTdata_init@Base 10 + _M2_RTentity_finish@Base 10 + _M2_RTentity_init@Base 10 + _M2_RTfio_finish@Base 10 + _M2_RTfio_init@Base 10 + _M2_RTgen_finish@Base 10 + _M2_RTgen_init@Base 10 + _M2_RTgenif_finish@Base 10 + _M2_RTgenif_init@Base 10 + _M2_RTio_finish@Base 10 + _M2_RTio_init@Base 10 + _M2_RandomNumber_finish@Base 10 + _M2_RandomNumber_init@Base 10 + _M2_RawIO_finish@Base 10 + _M2_RawIO_init@Base 10 + _M2_RealConv_finish@Base 10 + _M2_RealConv_init@Base 10 + _M2_RealIO_finish@Base 10 + _M2_RealIO_init@Base 10 + _M2_RealMath_finish@Base 10 + _M2_RealMath_init@Base 10 + _M2_RealStr_finish@Base 10 + _M2_RealStr_init@Base 10 + _M2_RndFile_finish@Base 10 + _M2_RndFile_init@Base 10 + _M2_SIOResult_finish@Base 10 + _M2_SIOResult_init@Base 10 + _M2_SLongIO_finish@Base 10 + _M2_SLongIO_init@Base 10 + _M2_SLongWholeIO_finish@Base 10 + _M2_SLongWholeIO_init@Base 10 + _M2_SRawIO_finish@Base 10 + _M2_SRawIO_init@Base 10 + _M2_SRealIO_finish@Base 10 + _M2_SRealIO_init@Base 10 + _M2_SShortIO_finish@Base 10 + _M2_SShortIO_init@Base 10 + _M2_SShortWholeIO_finish@Base 10 + _M2_SShortWholeIO_init@Base 10 + _M2_STextIO_finish@Base 10 + _M2_STextIO_init@Base 10 + _M2_SWholeIO_finish@Base 10 + _M2_SWholeIO_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_Semaphores_finish@Base 10 + _M2_Semaphores_init@Base 10 + _M2_SeqFile_finish@Base 10 + _M2_SeqFile_init@Base 10 + _M2_ServerSocket_finish@Base 10 + _M2_ServerSocket_init@Base 10 + _M2_ShortComplexMath_finish@Base 10 + _M2_ShortComplexMath_init@Base 10 + _M2_ShortIO_finish@Base 10 + _M2_ShortIO_init@Base 10 + _M2_ShortWholeIO_finish@Base 10 + _M2_ShortWholeIO_init@Base 10 + _M2_SimpleCipher_finish@Base 10 + _M2_SimpleCipher_init@Base 10 + _M2_StdChans_finish@Base 10 + _M2_StdChans_init@Base 10 + _M2_Storage_finish@Base 10 + _M2_Storage_init@Base 10 + _M2_StreamFile_finish@Base 10 + _M2_StreamFile_init@Base 10 + _M2_StringChan_finish@Base 10 + _M2_StringChan_init@Base 10 + _M2_Strings_finish@Base 10 + _M2_Strings_init@Base 10 + _M2_SysClock_finish@Base 10 + _M2_SysClock_init@Base 10 + _M2_TERMINATION_finish@Base 10 + _M2_TERMINATION_init@Base 10 + _M2_TermFile_finish@Base 10 + _M2_TermFile_init@Base 10 + _M2_TextIO_finish@Base 10 + _M2_TextIO_init@Base 10 + _M2_WholeConv_finish@Base 10 + _M2_WholeConv_init@Base 10 + _M2_WholeIO_finish@Base 10 + _M2_WholeIO_init@Base 10 + _M2_WholeStr_finish@Base 10 + _M2_WholeStr_init@Base 10 + _M2_wrapsock_finish@Base 10 + _M2_wrapsock_init@Base 10 + _M2_wraptime_finish@Base 10 + _M2_wraptime_init@Base 10 + currentThread@Base 10 + wrapsock_clientOpen@Base 10 + wrapsock_clientOpenIP@Base 10 + wrapsock_getClientHostname@Base 10 + wrapsock_getClientIP@Base 10 + wrapsock_getClientPortNo@Base 10 + wrapsock_getClientSocketFd@Base 10 + wrapsock_getPushBackChar@Base 10 + wrapsock_getSizeOfClientInfo@Base 10 + wrapsock_setPushBackChar@Base 10 + wraptime_GetDST@Base 10 + wraptime_GetDay@Base 10 + wraptime_GetFractions@Base 10 + wraptime_GetHour@Base 10 + wraptime_GetMinute@Base 10 + wraptime_GetMonth@Base 10 + wraptime_GetSecond@Base 10 + wraptime_GetSummerTime@Base 10 + wraptime_GetYear@Base 10 + wraptime_InitTM@Base 10 + wraptime_InitTimeval@Base 10 + wraptime_InitTimezone@Base 10 + wraptime_KillTM@Base 10 + wraptime_KillTimeval@Base 10 + wraptime_KillTimezone@Base 10 + wraptime_SetTimeval@Base 10 + wraptime_SetTimezone@Base 10 + wraptime_gettimeofday@Base 10 + wraptime_localtime_r@Base 10 + wraptime_settimeofday@Base 10 +libm2log.so.18 #PACKAGE# #MINVER# + BitBlockOps_BlockAnd@Base 10 + BitBlockOps_BlockNot@Base 10 + BitBlockOps_BlockOr@Base 10 + BitBlockOps_BlockRol@Base 10 + BitBlockOps_BlockRor@Base 10 + BitBlockOps_BlockShl@Base 10 + BitBlockOps_BlockShr@Base 10 + BitBlockOps_BlockXor@Base 10 + BitByteOps_ByteAnd@Base 10 + BitByteOps_ByteNot@Base 10 + BitByteOps_ByteOr@Base 10 + BitByteOps_ByteRol@Base 10 + BitByteOps_ByteRor@Base 10 + BitByteOps_ByteSar@Base 10 + BitByteOps_ByteShl@Base 10 + BitByteOps_ByteShr@Base 10 + BitByteOps_ByteXor@Base 10 + BitByteOps_GetBits@Base 10 + BitByteOps_HighNibble@Base 10 + BitByteOps_LowNibble@Base 10 + BitByteOps_SetBits@Base 10 + BitByteOps_Swap@Base 10 + BitWordOps_GetBits@Base 10 + BitWordOps_HighByte@Base 10 + BitWordOps_LowByte@Base 10 + BitWordOps_SetBits@Base 10 + BitWordOps_Swap@Base 10 + BitWordOps_WordAnd@Base 10 + BitWordOps_WordNot@Base 10 + BitWordOps_WordOr@Base 10 + BitWordOps_WordRol@Base 10 + BitWordOps_WordRor@Base 10 + BitWordOps_WordSar@Base 10 + BitWordOps_WordShl@Base 10 + BitWordOps_WordShr@Base 10 + BitWordOps_WordXor@Base 10 + BlockOps_BlockClear@Base 10 + BlockOps_BlockEqual@Base 10 + BlockOps_BlockMoveBackward@Base 10 + BlockOps_BlockMoveForward@Base 10 + BlockOps_BlockPosition@Base 10 + BlockOps_BlockSet@Base 10 + Break_DisableBreak@Base 10 + Break_EnableBreak@Base 10 + Break_InstallBreak@Base 10 + Break_UnInstallBreak@Base 10 + CardinalIO_Done@Base 10 + CardinalIO_ReadCardinal@Base 10 + CardinalIO_ReadHex@Base 10 + CardinalIO_ReadLongCardinal@Base 10 + CardinalIO_ReadLongHex@Base 10 + CardinalIO_ReadShortCardinal@Base 10 + CardinalIO_ReadShortHex@Base 10 + CardinalIO_WriteCardinal@Base 10 + CardinalIO_WriteHex@Base 10 + CardinalIO_WriteLongCardinal@Base 10 + CardinalIO_WriteLongHex@Base 10 + CardinalIO_WriteShortCardinal@Base 10 + CardinalIO_WriteShortHex@Base 10 + Conversions_ConvertCardinal@Base 10 + Conversions_ConvertHex@Base 10 + Conversions_ConvertInteger@Base 10 + Conversions_ConvertLongInt@Base 10 + Conversions_ConvertOctal@Base 10 + Conversions_ConvertShortInt@Base 10 + Delay_Delay@Base 10 + Display_Write@Base 10 + ErrorCode_ExitToOS@Base 10 + ErrorCode_GetErrorCode@Base 10 + ErrorCode_SetErrorCode@Base 10 + FileSystem_Close@Base 10 + FileSystem_Create@Base 10 + FileSystem_Delete@Base 10 + FileSystem_Doio@Base 10 + FileSystem_GetPos@Base 10 + FileSystem_Length@Base 10 + FileSystem_Lookup@Base 10 + FileSystem_ReadByte@Base 10 + FileSystem_ReadChar@Base 10 + FileSystem_ReadNBytes@Base 10 + FileSystem_ReadWord@Base 10 + FileSystem_Rename@Base 10 + FileSystem_Reset@Base 10 + FileSystem_SetModify@Base 10 + FileSystem_SetOpen@Base 10 + FileSystem_SetPos@Base 10 + FileSystem_SetRead@Base 10 + FileSystem_SetWrite@Base 10 + FileSystem_WriteByte@Base 10 + FileSystem_WriteChar@Base 10 + FileSystem_WriteNBytes@Base 10 + FileSystem_WriteWord@Base 10 + FloatingUtilities_Float@Base 10 + FloatingUtilities_Floatl@Base 10 + FloatingUtilities_Frac@Base 10 + FloatingUtilities_Fracl@Base 10 + FloatingUtilities_Round@Base 10 + FloatingUtilities_Roundl@Base 10 + FloatingUtilities_Trunc@Base 10 + FloatingUtilities_Truncl@Base 10 + InOut_CloseInput@Base 10 + InOut_CloseOutput@Base 10 + InOut_Done@Base 10 + InOut_OpenInput@Base 10 + InOut_OpenOutput@Base 10 + InOut_Read@Base 10 + InOut_ReadCard@Base 10 + InOut_ReadInt@Base 10 + InOut_ReadS@Base 10 + InOut_ReadString@Base 10 + InOut_Write@Base 10 + InOut_WriteCard@Base 10 + InOut_WriteHex@Base 10 + InOut_WriteInt@Base 10 + InOut_WriteLn@Base 10 + InOut_WriteOct@Base 10 + InOut_WriteS@Base 10 + InOut_WriteString@Base 10 + InOut_termCH@Base 10 + Keyboard_KeyPressed@Base 10 + Keyboard_Read@Base 10 + LongIO_Done@Base 10 + LongIO_ReadLongInt@Base 10 + LongIO_WriteLongInt@Base 10 + Random_RandomBytes@Base 10 + Random_RandomCard@Base 10 + Random_RandomInit@Base 10 + Random_RandomInt@Base 10 + Random_RandomLongReal@Base 10 + Random_RandomReal@Base 10 + Random_Randomize@Base 10 + RealConversions_LongRealToString@Base 10 + RealConversions_RealToString@Base 10 + RealConversions_SetNoOfExponentDigits@Base 10 + RealConversions_StringToLongReal@Base 10 + RealConversions_StringToReal@Base 10 + RealInOut_Done@Base 10 + RealInOut_ReadLongReal@Base 10 + RealInOut_ReadReal@Base 10 + RealInOut_ReadShortReal@Base 10 + RealInOut_SetNoOfDecimalPlaces@Base 10 + RealInOut_WriteLongReal@Base 10 + RealInOut_WriteLongRealOct@Base 10 + RealInOut_WriteReal@Base 10 + RealInOut_WriteRealOct@Base 10 + RealInOut_WriteShortReal@Base 10 + RealInOut_WriteShortRealOct@Base 10 + Strings_Assign@Base 10 + Strings_CompareStr@Base 10 + Strings_ConCat@Base 10 + Strings_Copy@Base 10 + Strings_Delete@Base 10 + Strings_Insert@Base 10 + Strings_Length@Base 10 + Strings_Pos@Base 10 + Termbase_AssignRead@Base 10 + Termbase_AssignWrite@Base 10 + Termbase_KeyPressed@Base 10 + Termbase_Read@Base 10 + Termbase_UnAssignRead@Base 10 + Termbase_UnAssignWrite@Base 10 + Termbase_Write@Base 10 + Terminal_KeyPressed@Base 10 + Terminal_Read@Base 10 + Terminal_ReadAgain@Base 10 + Terminal_ReadString@Base 10 + Terminal_Write@Base 10 + Terminal_WriteLn@Base 10 + Terminal_WriteString@Base 10 + TimeDate_CompareTime@Base 10 + TimeDate_GetTime@Base 10 + TimeDate_SetTime@Base 10 + TimeDate_TimeToString@Base 10 + TimeDate_TimeToZero@Base 10 + _M2_BitBlockOps_finish@Base 10 + _M2_BitBlockOps_init@Base 10 + _M2_BitByteOps_finish@Base 10 + _M2_BitByteOps_init@Base 10 + _M2_BitWordOps_finish@Base 10 + _M2_BitWordOps_init@Base 10 + _M2_BlockOps_finish@Base 10 + _M2_BlockOps_init@Base 10 + _M2_CardinalIO_finish@Base 10 + _M2_CardinalIO_init@Base 10 + _M2_Conversions_finish@Base 10 + _M2_Conversions_init@Base 10 + _M2_DebugPMD_finish@Base 10 + _M2_DebugPMD_init@Base 10 + _M2_DebugTrace_finish@Base 10 + _M2_DebugTrace_init@Base 10 + _M2_Delay_finish@Base 10 + _M2_Delay_init@Base 10 + _M2_Display_finish@Base 10 + _M2_Display_init@Base 10 + _M2_ErrorCode_finish@Base 10 + _M2_ErrorCode_init@Base 10 + _M2_FileSystem_finish@Base 10 + _M2_FileSystem_init@Base 10 + _M2_FloatingUtilities_finish@Base 10 + _M2_FloatingUtilities_init@Base 10 + _M2_InOut_finish@Base 10 + _M2_InOut_init@Base 10 + _M2_Keyboard_finish@Base 10 + _M2_Keyboard_init@Base 10 + _M2_LongIO_finish@Base 10 + _M2_LongIO_init@Base 10 + _M2_NumberConversion_finish@Base 10 + _M2_NumberConversion_init@Base 10 + _M2_Random_finish@Base 10 + _M2_Random_init@Base 10 + _M2_RealConversions_finish@Base 10 + _M2_RealConversions_init@Base 10 + _M2_RealInOut_finish@Base 10 + _M2_RealInOut_init@Base 10 + _M2_Strings_finish@Base 10 + _M2_Strings_init@Base 10 + _M2_Termbase_finish@Base 10 + _M2_Termbase_init@Base 10 + _M2_Terminal_finish@Base 10 + _M2_Terminal_init@Base 10 + _M2_TimeDate_finish@Base 10 + _M2_TimeDate_init@Base 10 +libm2min.so.18 #PACKAGE# #MINVER# + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_HALT@Base 10 + M2RTS_NoException@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + abort@Base 10 + exit@Base 10 +libm2pim.so.18 #PACKAGE# #MINVER# + Args_GetArg@Base 10 + Args_Narg@Base 10 + Assertion_Assert@Base 10 + Builtins_alloca@Base 10 + Builtins_alloca_trace@Base 10 + Builtins_atan2@Base 10 + Builtins_atan2f@Base 10 + Builtins_atan2l@Base 10 + Builtins_cabs@Base 10 + Builtins_cabsf@Base 10 + Builtins_cabsl@Base 10 + Builtins_carccos@Base 10 + Builtins_carccosf@Base 10 + Builtins_carccosl@Base 10 + Builtins_carcsin@Base 10 + Builtins_carcsinf@Base 10 + Builtins_carcsinl@Base 10 + Builtins_carctan@Base 10 + Builtins_carctanf@Base 10 + Builtins_carctanl@Base 10 + Builtins_carg@Base 10 + Builtins_cargf@Base 10 + Builtins_cargl@Base 10 + Builtins_ccos@Base 10 + Builtins_ccosf@Base 10 + Builtins_ccosl@Base 10 + Builtins_cexp@Base 10 + Builtins_cexpf@Base 10 + Builtins_cexpl@Base 10 + Builtins_cln@Base 10 + Builtins_clnf@Base 10 + Builtins_clnl@Base 10 + Builtins_conj@Base 10 + Builtins_conjf@Base 10 + Builtins_conjl@Base 10 + Builtins_cos@Base 10 + Builtins_cosf@Base 10 + Builtins_cosl@Base 10 + Builtins_cpower@Base 10 + Builtins_cpowerf@Base 10 + Builtins_cpowerl@Base 10 + Builtins_csin@Base 10 + Builtins_csinf@Base 10 + Builtins_csinl@Base 10 + Builtins_csqrt@Base 10 + Builtins_csqrtf@Base 10 + Builtins_csqrtl@Base 10 + Builtins_ctan@Base 10 + Builtins_ctanf@Base 10 + Builtins_ctanl@Base 10 + Builtins_exp10@Base 10 + Builtins_exp10f@Base 10 + Builtins_exp10l@Base 10 + Builtins_exp@Base 10 + Builtins_expf@Base 10 + Builtins_expl@Base 10 + Builtins_fabs@Base 10 + Builtins_fabsf@Base 10 + Builtins_fabsl@Base 10 + Builtins_frame_address@Base 10 + Builtins_huge_val@Base 10 + Builtins_huge_valf@Base 10 + Builtins_huge_vall@Base 10 + Builtins_ilogb@Base 10 + Builtins_ilogbf@Base 10 + Builtins_ilogbl@Base 10 + Builtins_index@Base 10 + Builtins_isfinite@Base 10 + Builtins_isfinitef@Base 10 + Builtins_isfinitel@Base 10 + Builtins_log10@Base 10 + Builtins_log10f@Base 10 + Builtins_log10l@Base 10 + Builtins_log@Base 10 + Builtins_logf@Base 10 + Builtins_logl@Base 10 + Builtins_longjmp@Base 10 + Builtins_memcmp@Base 10 + Builtins_memcpy@Base 10 + Builtins_memmove@Base 10 + Builtins_memset@Base 10 + Builtins_modf@Base 10 + Builtins_modff@Base 10 + Builtins_modfl@Base 10 + Builtins_nextafter@Base 10 + Builtins_nextafterf@Base 10 + Builtins_nextafterl@Base 10 + Builtins_nexttoward@Base 10 + Builtins_nexttowardf@Base 10 + Builtins_nexttowardl@Base 10 + Builtins_return_address@Base 10 + Builtins_rindex@Base 10 + Builtins_scalb@Base 10 + Builtins_scalbf@Base 10 + Builtins_scalbl@Base 10 + Builtins_scalbln@Base 10 + Builtins_scalblnf@Base 10 + Builtins_scalblnl@Base 10 + Builtins_scalbn@Base 10 + Builtins_scalbnf@Base 10 + Builtins_scalbnl@Base 10 + Builtins_setjmp@Base 10 + Builtins_signbit@Base 10 + Builtins_signbitf@Base 10 + Builtins_signbitl@Base 10 + Builtins_significand@Base 10 + Builtins_significandf@Base 10 + Builtins_significandl@Base 10 + Builtins_sin@Base 10 + Builtins_sinf@Base 10 + Builtins_sinl@Base 10 + Builtins_sqrt@Base 10 + Builtins_sqrtf@Base 10 + Builtins_sqrtl@Base 10 + Builtins_strcat@Base 10 + Builtins_strchr@Base 10 + Builtins_strcmp@Base 10 + Builtins_strcpy@Base 10 + Builtins_strcspn@Base 10 + Builtins_strlen@Base 10 + Builtins_strncat@Base 10 + Builtins_strncmp@Base 10 + Builtins_strncpy@Base 10 + Builtins_strpbrk@Base 10 + Builtins_strrchr@Base 10 + Builtins_strspn@Base 10 + Builtins_strstr@Base 10 + CmdArgs_GetArg@Base 10 + CmdArgs_Narg@Base 10 + Debug_DebugString@Base 10 + Debug_Halt@Base 10 + DynamicStrings_Add@Base 10 + DynamicStrings_Assign@Base 10 + DynamicStrings_ConCat@Base 10 + DynamicStrings_ConCatChar@Base 10 + DynamicStrings_CopyOut@Base 10 + DynamicStrings_Dup@Base 10 + DynamicStrings_DupDB@Base 10 + DynamicStrings_Equal@Base 10 + DynamicStrings_EqualArray@Base 10 + DynamicStrings_EqualCharStar@Base 10 + DynamicStrings_Fin@Base 10 + DynamicStrings_Index@Base 10 + DynamicStrings_InitString@Base 10 + DynamicStrings_InitStringChar@Base 10 + DynamicStrings_InitStringCharDB@Base 10 + DynamicStrings_InitStringCharStar@Base 10 + DynamicStrings_InitStringCharStarDB@Base 10 + DynamicStrings_InitStringDB@Base 10 + DynamicStrings_KillString@Base 10 + DynamicStrings_Length@Base 10 + DynamicStrings_Mark@Base 10 + DynamicStrings_Mult@Base 10 + DynamicStrings_MultDB@Base 10 + DynamicStrings_PopAllocation@Base 10 + DynamicStrings_PopAllocationExemption@Base 10 + DynamicStrings_PushAllocation@Base 10 + DynamicStrings_RIndex@Base 10 + DynamicStrings_RemoveComment@Base 10 + DynamicStrings_RemoveWhitePostfix@Base 10 + DynamicStrings_RemoveWhitePrefix@Base 10 + DynamicStrings_Slice@Base 10 + DynamicStrings_SliceDB@Base 10 + DynamicStrings_ToLower@Base 10 + DynamicStrings_ToUpper@Base 10 + DynamicStrings_char@Base 10 + DynamicStrings_string@Base 10 + Environment_GetEnvironment@Base 10 + FIO_Close@Base 10 + FIO_EOF@Base 10 + FIO_EOLN@Base 10 + FIO_Exists@Base 10 + FIO_FindPosition@Base 10 + FIO_FlushBuffer@Base 10 + FIO_FlushOutErr@Base 10 + FIO_GetFileName@Base 10 + FIO_GetUnixFileDescriptor@Base 10 + FIO_IsActive@Base 10 + FIO_IsNoError@Base 10 + FIO_OpenForRandom@Base 10 + FIO_OpenToRead@Base 10 + FIO_OpenToWrite@Base 10 + FIO_ReadCardinal@Base 10 + FIO_ReadChar@Base 10 + FIO_ReadNBytes@Base 10 + FIO_ReadString@Base 10 + FIO_SetPositionFromBeginning@Base 10 + FIO_SetPositionFromEnd@Base 10 + FIO_StdErr@Base 10 + FIO_StdIn@Base 10 + FIO_StdOut@Base 10 + FIO_UnReadChar@Base 10 + FIO_WasEOLN@Base 10 + FIO_WriteCardinal@Base 10 + FIO_WriteChar@Base 10 + FIO_WriteLine@Base 10 + FIO_WriteNBytes@Base 10 + FIO_WriteString@Base 10 + FIO_exists@Base 10 + FIO_getFileName@Base 10 + FIO_getFileNameLength@Base 10 + FIO_openForRandom@Base 10 + FIO_openToRead@Base 10 + FIO_openToWrite@Base 10 + FormatStrings_HandleEscape@Base 10 + FormatStrings_Sprintf0@Base 10 + FormatStrings_Sprintf1@Base 10 + FormatStrings_Sprintf2@Base 10 + FormatStrings_Sprintf3@Base 10 + FormatStrings_Sprintf4@Base 10 + FpuIO_LongIntToStr@Base 10 + FpuIO_LongRealToStr@Base 10 + FpuIO_ReadLongInt@Base 10 + FpuIO_ReadLongReal@Base 10 + FpuIO_ReadReal@Base 10 + FpuIO_RealToStr@Base 10 + FpuIO_StrToLongInt@Base 10 + FpuIO_StrToLongReal@Base 10 + FpuIO_StrToReal@Base 10 + FpuIO_WriteLongInt@Base 10 + FpuIO_WriteLongReal@Base 10 + FpuIO_WriteReal@Base 10 + GetOpt_AddLongOption@Base 10 + GetOpt_GetOpt@Base 10 + GetOpt_GetOptLong@Base 10 + GetOpt_GetOptLongOnly@Base 10 + GetOpt_InitLongOptions@Base 10 + GetOpt_KillLongOptions@Base 10 + IO_BufferedMode@Base 10 + IO_EchoOff@Base 10 + IO_EchoOn@Base 10 + IO_Error@Base 10 + IO_Read@Base 10 + IO_UnBufferedMode@Base 10 + IO_Write@Base 10 + Indexing_DebugIndex@Base 10 + Indexing_DeleteIndice@Base 10 + Indexing_ForeachIndiceInIndexDo@Base 10 + Indexing_GetIndice@Base 10 + Indexing_HighIndice@Base 10 + Indexing_InBounds@Base 10 + Indexing_IncludeIndiceIntoIndex@Base 10 + Indexing_InitIndex@Base 10 + Indexing_IsIndiceInIndex@Base 10 + Indexing_KillIndex@Base 10 + Indexing_LowIndice@Base 10 + Indexing_PutIndice@Base 10 + Indexing_RemoveIndiceFromIndex@Base 10 + LMathLib0_arctan@Base 10 + LMathLib0_cos@Base 10 + LMathLib0_entier@Base 10 + LMathLib0_exp@Base 10 + LMathLib0_ln@Base 10 + LMathLib0_sin@Base 10 + LMathLib0_sqrt@Base 10 + LMathLib0_tan@Base 10 + M2EXCEPTION_IsM2Exception@Base 10 + M2EXCEPTION_M2Exception@Base 10 + M2RTS_AssignmentException@Base 10 + M2RTS_CaseException@Base 10 + M2RTS_DecException@Base 10 + M2RTS_DynamicArraySubscriptException@Base 10 + M2RTS_ErrorMessage@Base 10 + M2RTS_ExclException@Base 10 + M2RTS_ExecuteInitialProcedures@Base 10 + M2RTS_ExecuteTerminationProcedures@Base 10 + M2RTS_ExitOnHalt@Base 10 + M2RTS_ForLoopBeginException@Base 10 + M2RTS_ForLoopEndException@Base 10 + M2RTS_ForLoopToException@Base 10 + M2RTS_HALT@Base 10 + M2RTS_Halt@Base 10 + M2RTS_IncException@Base 10 + M2RTS_InclException@Base 10 + M2RTS_InstallInitialProcedure@Base 10 + M2RTS_InstallTerminationProcedure@Base 10 + M2RTS_Length@Base 10 + M2RTS_NoException@Base 10 + M2RTS_NoReturnException@Base 10 + M2RTS_ParameterException@Base 10 + M2RTS_PointerNilException@Base 10 + M2RTS_RealValueException@Base 10 + M2RTS_ReturnException@Base 10 + M2RTS_RotateException@Base 10 + M2RTS_ShiftException@Base 10 + M2RTS_StaticArraySubscriptException@Base 10 + M2RTS_Terminate@Base 10 + M2RTS_WholeNonPosDivException@Base 10 + M2RTS_WholeNonPosModException@Base 10 + M2RTS_WholeValueException@Base 10 + M2RTS_WholeZeroDivException@Base 10 + M2RTS_WholeZeroRemException@Base 10 + MathLib0_arctan@Base 10 + MathLib0_cos@Base 10 + MathLib0_entier@Base 10 + MathLib0_exp@Base 10 + MathLib0_ln@Base 10 + MathLib0_sin@Base 10 + MathLib0_sqrt@Base 10 + MathLib0_tan@Base 10 + MemUtils_MemCopy@Base 10 + MemUtils_MemZero@Base 10 + NumberIO_BinToStr@Base 10 + NumberIO_CardToStr@Base 10 + NumberIO_HexToStr@Base 10 + NumberIO_IntToStr@Base 10 + NumberIO_OctToStr@Base 10 + NumberIO_ReadBin@Base 10 + NumberIO_ReadCard@Base 10 + NumberIO_ReadHex@Base 10 + NumberIO_ReadInt@Base 10 + NumberIO_ReadOct@Base 10 + NumberIO_StrToBin@Base 10 + NumberIO_StrToBinInt@Base 10 + NumberIO_StrToCard@Base 10 + NumberIO_StrToHex@Base 10 + NumberIO_StrToHexInt@Base 10 + NumberIO_StrToInt@Base 10 + NumberIO_StrToOct@Base 10 + NumberIO_StrToOctInt@Base 10 + NumberIO_WriteBin@Base 10 + NumberIO_WriteCard@Base 10 + NumberIO_WriteHex@Base 10 + NumberIO_WriteInt@Base 10 + NumberIO_WriteOct@Base 10 + OptLib_ConCat@Base 10 + OptLib_Dup@Base 10 + OptLib_GetArgc@Base 10 + OptLib_GetArgv@Base 10 + OptLib_IndexStrCmp@Base 10 + OptLib_IndexStrNCmp@Base 10 + OptLib_InitOption@Base 10 + OptLib_KillOption@Base 10 + OptLib_Slice@Base 10 + PushBackInput_Close@Base 10 + PushBackInput_Error@Base 10 + PushBackInput_GetCh@Base 10 + PushBackInput_GetColumnPosition@Base 10 + PushBackInput_GetCurrentLine@Base 10 + PushBackInput_GetExitStatus@Base 10 + PushBackInput_Open@Base 10 + PushBackInput_PutCh@Base 10 + PushBackInput_PutString@Base 10 + PushBackInput_SetDebug@Base 10 + PushBackInput_WarnError@Base 10 + PushBackInput_WarnString@Base 10 + RTExceptions_BaseExceptionsThrow@Base 10 + RTExceptions_DefaultErrorCatch@Base 10 + RTExceptions_GetBaseExceptionBlock@Base 10 + RTExceptions_GetExceptionBlock@Base 10 + RTExceptions_GetExceptionSource@Base 10 + RTExceptions_GetNumber@Base 10 + RTExceptions_GetTextBuffer@Base 10 + RTExceptions_GetTextBufferSize@Base 10 + RTExceptions_InitExceptionBlock@Base 10 + RTExceptions_IsInExceptionState@Base 10 + RTExceptions_KillExceptionBlock@Base 10 + RTExceptions_PopHandler@Base 10 + RTExceptions_PushHandler@Base 10 + RTExceptions_Raise@Base 10 + RTExceptions_SetExceptionBlock@Base 10 + RTExceptions_SetExceptionSource@Base 10 + RTExceptions_SetExceptionState@Base 10 + RTExceptions_SwitchExceptionState@Base 10 + RTint_AttachVector@Base 10 + RTint_ExcludeVector@Base 10 + RTint_GetTimeVector@Base 10 + RTint_IncludeVector@Base 10 + RTint_Init@Base 10 + RTint_InitInputVector@Base 10 + RTint_InitOutputVector@Base 10 + RTint_InitTimeVector@Base 10 + RTint_Listen@Base 10 + RTint_ReArmTimeVector@Base 10 + SArgs_GetArg@Base 10 + SArgs_Narg@Base 10 + SCmdArgs_GetArg@Base 10 + SCmdArgs_Narg@Base 10 + SEnvironment_GetEnvironment@Base 10 + SFIO_Exists@Base 10 + SFIO_OpenForRandom@Base 10 + SFIO_OpenToRead@Base 10 + SFIO_OpenToWrite@Base 10 + SFIO_ReadS@Base 10 + SFIO_WriteS@Base 10 + SMathLib0_arctan@Base 10 + SMathLib0_cos@Base 10 + SMathLib0_entier@Base 10 + SMathLib0_exp@Base 10 + SMathLib0_ln@Base 10 + SMathLib0_sin@Base 10 + SMathLib0_sqrt@Base 10 + SMathLib0_tan@Base 10 + Scan_CloseSource@Base 10 + Scan_DefineComments@Base 10 + Scan_GetNextSymbol@Base 10 + Scan_OpenSource@Base 10 + Scan_TerminateOnError@Base 10 + Scan_WriteError@Base 10 + Selective_FdClr@Base 10 + Selective_FdIsSet@Base 10 + Selective_FdSet@Base 10 + Selective_FdZero@Base 10 + Selective_GetTime@Base 10 + Selective_GetTimeOfDay@Base 10 + Selective_InitSet@Base 10 + Selective_InitTime@Base 10 + Selective_KillSet@Base 10 + Selective_KillTime@Base 10 + Selective_MaxFdsPlusOne@Base 10 + Selective_ReadCharRaw@Base 10 + Selective_Select@Base 10 + Selective_SetTime@Base 10 + Selective_WriteCharRaw@Base 10 + StdIO_GetCurrentInput@Base 10 + StdIO_GetCurrentOutput@Base 10 + StdIO_PopInput@Base 10 + StdIO_PopOutput@Base 10 + StdIO_PushInput@Base 10 + StdIO_PushOutput@Base 10 + StdIO_Read@Base 10 + StdIO_Write@Base 10 + Storage_ALLOCATE@Base 10 + Storage_Available@Base 10 + Storage_DEALLOCATE@Base 10 + Storage_REALLOCATE@Base 10 + StrCase_Cap@Base 10 + StrCase_Lower@Base 10 + StrCase_StrToLowerCase@Base 10 + StrCase_StrToUpperCase@Base 10 + StrIO_ReadString@Base 10 + StrIO_WriteLn@Base 10 + StrIO_WriteString@Base 10 + StrLib_IsSubString@Base 10 + StrLib_StrConCat@Base 10 + StrLib_StrCopy@Base 10 + StrLib_StrEqual@Base 10 + StrLib_StrLen@Base 10 + StrLib_StrLess@Base 10 + StrLib_StrRemoveWhitePrefix@Base 10 + StringConvert_CardinalToString@Base 10 + StringConvert_IntegerToString@Base 10 + StringConvert_LongCardinalToString@Base 10 + StringConvert_LongIntegerToString@Base 10 + StringConvert_LongrealToString@Base 10 + StringConvert_ShortCardinalToString@Base 10 + StringConvert_StringToCardinal@Base 10 + StringConvert_StringToInteger@Base 10 + StringConvert_StringToLongCardinal@Base 10 + StringConvert_StringToLongInteger@Base 10 + StringConvert_StringToLongreal@Base 10 + StringConvert_StringToShortCardinal@Base 10 + StringConvert_ToSigFig@Base 10 + StringConvert_bstoc@Base 10 + StringConvert_bstoi@Base 10 + StringConvert_ctos@Base 10 + StringConvert_hstoc@Base 10 + StringConvert_hstoi@Base 10 + StringConvert_itos@Base 10 + StringConvert_ostoc@Base 10 + StringConvert_ostoi@Base 10 + StringConvert_stoc@Base 10 + StringConvert_stoi@Base 10 + StringConvert_stolr@Base 10 + StringConvert_stor@Base 10 + SysExceptions_InitExceptionHandlers@Base 10 + SysStorage_ALLOCATE@Base 10 + SysStorage_Available@Base 10 + SysStorage_DEALLOCATE@Base 10 + SysStorage_Init@Base 10 + SysStorage_REALLOCATE@Base 10 + TimeString_GetTimeString@Base 10 + UnixArgs_ArgC@Base 10 + UnixArgs_ArgV@Base 10 + _M2_ASCII_finish@Base 10 + _M2_ASCII_init@Base 10 + _M2_Args_finish@Base 10 + _M2_Args_init@Base 10 + _M2_Assertion_finish@Base 10 + _M2_Assertion_init@Base 10 + _M2_Break_finish@Base 10 + _M2_Break_init@Base 10 + _M2_Builtins_finish@Base 10 + _M2_Builtins_init@Base 10 + _M2_COROUTINES_finish@Base 10 + _M2_COROUTINES_init@Base 10 + _M2_CmdArgs_finish@Base 10 + _M2_CmdArgs_init@Base 10 + _M2_Debug_finish@Base 10 + _M2_Debug_init@Base 10 + _M2_DynamicStrings_finish@Base 10 + _M2_DynamicStrings_init@Base 10 + _M2_Environment_finish@Base 10 + _M2_Environment_init@Base 10 + _M2_FIO_finish@Base 10 + _M2_FIO_init@Base 10 + _M2_FormatStrings_finish@Base 10 + _M2_FormatStrings_init@Base 10 + _M2_FpuIO_finish@Base 10 + _M2_FpuIO_init@Base 10 + _M2_GetOpt_finish@Base 10 + _M2_GetOpt_init@Base 10 + _M2_IO_finish@Base 10 + _M2_IO_init@Base 10 + _M2_Indexing_finish@Base 10 + _M2_Indexing_init@Base 10 + _M2_LMathLib0_finish@Base 10 + _M2_LMathLib0_init@Base 10 + _M2_LegacyReal_finish@Base 10 + _M2_LegacyReal_init@Base 10 + _M2_M2EXCEPTION_finish@Base 10 + _M2_M2EXCEPTION_init@Base 10 + _M2_M2RTS_finish@Base 10 + _M2_M2RTS_init@Base 10 + _M2_MathLib0_finish@Base 10 + _M2_MathLib0_init@Base 10 + _M2_MemUtils_finish@Base 10 + _M2_MemUtils_init@Base 10 + _M2_NumberIO_finish@Base 10 + _M2_NumberIO_init@Base 10 + _M2_OptLib_finish@Base 10 + _M2_OptLib_init@Base 10 + _M2_PushBackInput_finish@Base 10 + _M2_PushBackInput_init@Base 10 + _M2_RTExceptions_finish@Base 10 + _M2_RTExceptions_init@Base 10 + _M2_RTint_finish@Base 10 + _M2_RTint_init@Base 10 + _M2_SArgs_finish@Base 10 + _M2_SArgs_init@Base 10 + _M2_SCmdArgs_finish@Base 10 + _M2_SCmdArgs_init@Base 10 + _M2_SEnvironment_finish@Base 10 + _M2_SEnvironment_init@Base 10 + _M2_SFIO_finish@Base 10 + _M2_SFIO_init@Base 10 + _M2_SMathLib0_finish@Base 10 + _M2_SMathLib0_init@Base 10 + _M2_SYSTEM_finish@Base 10 + _M2_SYSTEM_init@Base 10 + _M2_Scan_finish@Base 10 + _M2_Scan_init@Base 10 + _M2_Selective_finish@Base 10 + _M2_Selective_init@Base 10 + _M2_StdIO_finish@Base 10 + _M2_StdIO_init@Base 10 + _M2_Storage_finish@Base 10 + _M2_Storage_init@Base 10 + _M2_StrCase_finish@Base 10 + _M2_StrCase_init@Base 10 + _M2_StrIO_finish@Base 10 + _M2_StrIO_init@Base 10 + _M2_StrLib_finish@Base 10 + _M2_StrLib_init@Base 10 + _M2_StringConvert_finish@Base 10 + _M2_StringConvert_init@Base 10 + _M2_SysExceptions_finish@Base 10 + _M2_SysExceptions_init@Base 10 + _M2_SysStorage_finish@Base 10 + _M2_SysStorage_init@Base 10 + _M2_TimeString_finish@Base 10 + _M2_TimeString_init@Base 10 + _M2_UnixArgs_finish@Base 10 + _M2_UnixArgs_init@Base 10 + _M2_dtoa_finish@Base 10 + _M2_dtoa_init@Base 10 + _M2_errno_finish@Base 10 + _M2_errno_init@Base 10 + _M2_gdbif_finish@Base 10 + _M2_gdbif_init@Base 10 + _M2_getopt_finish@Base 10 + _M2_getopt_init@Base 10 + _M2_ldtoa_finish@Base 10 + _M2_ldtoa_init@Base 10 + _M2_sckt_finish@Base 10 + _M2_sckt_init@Base 10 + _M2_termios_finish@Base 10 + _M2_termios_init@Base 10 + _M2_wrapc_finish@Base 10 + _M2_wrapc_init@Base 10 + connectSpin@Base 10 + doSetUnset@Base 10 + dtoa_calcdecimal@Base 10 + dtoa_calcmaxsig@Base 10 + dtoa_calcsign@Base 10 + dtoa_dtoa@Base 10 + dtoa_strtod@Base 10 + errno_geterrno@Base 10 + exp10@Base 10 + exp10f@Base 10 + exp10l@Base 10 + finishSpin@Base 10 + getLocalIP@Base 10 + getopt_GetLongOptionArray@Base 10 + getopt_InitOptions@Base 10 + getopt_KillOptions@Base 10 + getopt_SetOption@Base 10 + getopt_getopt@Base 10 + getopt_getopt_long@Base 10 + getopt_getopt_long_only@Base 10 + getopt_optarg@Base 10 + getopt_opterr@Base 10 + getopt_optind@Base 10 + getopt_optopt@Base 10 + ldtoa_ldtoa@Base 10 + ldtoa_strtold@Base 10 + localExit@Base 10 + sleepSpin@Base 10 + tcpClientConnect@Base 10 + tcpClientIP@Base 10 + tcpClientPortNo@Base 10 + tcpClientSocket@Base 10 + tcpClientSocketFd@Base 10 + tcpClientSocketIP@Base 10 + tcpServerAccept@Base 10 + tcpServerClientIP@Base 10 + tcpServerClientPortNo@Base 10 + tcpServerEstablish@Base 10 + tcpServerEstablishPort@Base 10 + tcpServerIP@Base 10 + tcpServerPortNo@Base 10 + tcpServerSocketFd@Base 10 + termios_GetChar@Base 10 + termios_GetFlag@Base 10 + termios_InitTermios@Base 10 + termios_KillTermios@Base 10 + termios_SetChar@Base 10 + termios_SetFlag@Base 10 + termios_cfgetispeed@Base 10 + termios_cfgetospeed@Base 10 + termios_cfmakeraw@Base 10 + termios_cfsetispeed@Base 10 + termios_cfsetospeed@Base 10 + termios_cfsetspeed@Base 10 + termios_tcdrain@Base 10 + termios_tcflowoffi@Base 10 + termios_tcflowoffo@Base 10 + termios_tcflowoni@Base 10 + termios_tcflowono@Base 10 + termios_tcflushi@Base 10 + termios_tcflushio@Base 10 + termios_tcflusho@Base 10 + termios_tcgetattr@Base 10 + termios_tcsdrain@Base 10 + termios_tcsendbreak@Base 10 + termios_tcsetattr@Base 10 + termios_tcsflush@Base 10 + termios_tcsnow@Base 10 + wrapc_fileinode@Base 10 + wrapc_filemtime@Base 10 + wrapc_filesize@Base 10 + wrapc_getnameuidgid@Base 10 + wrapc_getrand@Base 10 + wrapc_getusername@Base 10 + wrapc_isfinite@Base 10 + wrapc_isfinitef@Base 10 + wrapc_isfinitel@Base 10 + wrapc_signbit@Base 10 + wrapc_signbitf@Base 10 + wrapc_signbitl@Base 10 + wrapc_strtime@Base 10 diff --git a/libgomp.symbols b/libgomp.symbols new file mode 100644 index 0000000..8b17283 --- /dev/null +++ b/libgomp.symbols @@ -0,0 +1,39 @@ +libgomp.so.1 #PACKAGE# #MINVER# + (symver)GOACC_2.0 5 + (symver)GOACC_2.0.1 6 + (symver)GOACC_2.0.2 12 + (symver)GOMP_1.0 4.2.1 + (symver)GOMP_2.0 4.4 + (symver)GOMP_3.0 4.7 + (symver)GOMP_4.0 4.9 + (symver)GOMP_4.0.1 5 + (symver)GOMP_4.5 6 + (symver)GOMP_5.0 9 + (symver)GOMP_5.0.1 11 + (symver)GOMP_5.1 12 + (symver)GOMP_5.1.1 13 + (symver)GOMP_5.1.2 14 + (symver)GOMP_5.1.3 15 + (symver)GOMP_6.0 15 + (symver)GOMP_PLUGIN_1.0 5 + (symver)GOMP_PLUGIN_1.1 6 + (symver)GOMP_PLUGIN_1.2 9 + (symver)GOMP_PLUGIN_1.3 10 + (symver)GOMP_PLUGIN_1.4 13 + (symver)OACC_2.0 5 + (symver)OACC_2.0.1 8 + (symver)OACC_2.5 9 + (symver)OACC_2.5.1 10 + (symver)OACC_2.6 10 + (symver)OMP_1.0 4.2.1 + (symver)OMP_2.0 4.2.1 + (symver)OMP_3.0 4.4 + (symver)OMP_3.1 4.7 + (symver)OMP_4.0 4.9 + (symver)OMP_4.5 6 + (symver)OMP_5.0 9 + (symver)OMP_5.0.1 11 + (symver)OMP_5.0.2 12 + (symver)OMP_5.1 12 + (symver)OMP_5.1.1 13 + (symver)OMP_5.2 13 diff --git a/libgphobos.symbols b/libgphobos.symbols new file mode 100644 index 0000000..4ad7c7e --- /dev/null +++ b/libgphobos.symbols @@ -0,0 +1,2 @@ +libgdruntime.so.6 #PACKAGE# #MINVER# +libgphobos.so.6 #PACKAGE# #MINVER# diff --git a/libgphobos6.symbols.amd64 b/libgphobos6.symbols.amd64 new file mode 100644 index 0000000..963be83 --- /dev/null +++ b/libgphobos6.symbols.amd64 @@ -0,0 +1,22107 @@ +libgdruntime.so.6 libgphobos6 #MINVER# + CPU_ALLOC@Base 15 + CPU_ALLOC_SIZE@Base 15 + CPU_COUNT@Base 15 + CPU_COUNT_S@Base 15 + CPU_FREE@Base 15 + CPU_ISSET@Base 15 + CPU_SET@Base 15 + LOG_MASK@Base 15 + LOG_UPTO@Base 15 + SIGRTMAX@Base 15 + SIGRTMIN@Base 15 + S_TYPEISMQ@Base 15 + S_TYPEISSEM@Base 15 + S_TYPEISSHM@Base 15 + TPACKET_ALIGN@Base 15 + _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 + _D10TypeInfo_a6__initZ@Base 15 + _D10TypeInfo_a6__vtblZ@Base 15 + _D10TypeInfo_a7__ClassZ@Base 15 + _D10TypeInfo_b6__initZ@Base 15 + _D10TypeInfo_b6__vtblZ@Base 15 + _D10TypeInfo_b7__ClassZ@Base 15 + _D10TypeInfo_c6__initZ@Base 15 + _D10TypeInfo_c6__vtblZ@Base 15 + _D10TypeInfo_c7__ClassZ@Base 15 + _D10TypeInfo_d6__initZ@Base 15 + _D10TypeInfo_d6__vtblZ@Base 15 + _D10TypeInfo_d7__ClassZ@Base 15 + _D10TypeInfo_e6__initZ@Base 15 + _D10TypeInfo_e6__vtblZ@Base 15 + _D10TypeInfo_e7__ClassZ@Base 15 + _D10TypeInfo_f6__initZ@Base 15 + _D10TypeInfo_f6__vtblZ@Base 15 + _D10TypeInfo_f7__ClassZ@Base 15 + _D10TypeInfo_g6__initZ@Base 15 + _D10TypeInfo_g6__vtblZ@Base 15 + _D10TypeInfo_g7__ClassZ@Base 15 + _D10TypeInfo_h6__initZ@Base 15 + _D10TypeInfo_h6__vtblZ@Base 15 + _D10TypeInfo_h7__ClassZ@Base 15 + _D10TypeInfo_i6__initZ@Base 15 + _D10TypeInfo_i6__vtblZ@Base 15 + _D10TypeInfo_i7__ClassZ@Base 15 + _D10TypeInfo_j6__initZ@Base 15 + _D10TypeInfo_j6__vtblZ@Base 15 + _D10TypeInfo_j7__ClassZ@Base 15 + _D10TypeInfo_k6__initZ@Base 15 + _D10TypeInfo_k6__vtblZ@Base 15 + _D10TypeInfo_k7__ClassZ@Base 15 + _D10TypeInfo_l6__initZ@Base 15 + _D10TypeInfo_l6__vtblZ@Base 15 + _D10TypeInfo_l7__ClassZ@Base 15 + _D10TypeInfo_m6__initZ@Base 15 + _D10TypeInfo_m6__vtblZ@Base 15 + _D10TypeInfo_m7__ClassZ@Base 15 + _D10TypeInfo_n6__initZ@Base 15 + _D10TypeInfo_n6__vtblZ@Base 15 + _D10TypeInfo_n7__ClassZ@Base 15 + _D10TypeInfo_o6__initZ@Base 15 + _D10TypeInfo_o6__vtblZ@Base 15 + _D10TypeInfo_o7__ClassZ@Base 15 + _D10TypeInfo_p6__initZ@Base 15 + _D10TypeInfo_p6__vtblZ@Base 15 + _D10TypeInfo_p7__ClassZ@Base 15 + _D10TypeInfo_q6__initZ@Base 15 + _D10TypeInfo_q6__vtblZ@Base 15 + _D10TypeInfo_q7__ClassZ@Base 15 + _D10TypeInfo_r6__initZ@Base 15 + _D10TypeInfo_r6__vtblZ@Base 15 + _D10TypeInfo_r7__ClassZ@Base 15 + _D10TypeInfo_s6__initZ@Base 15 + _D10TypeInfo_s6__vtblZ@Base 15 + _D10TypeInfo_s7__ClassZ@Base 15 + _D10TypeInfo_t6__initZ@Base 15 + _D10TypeInfo_t6__vtblZ@Base 15 + _D10TypeInfo_t7__ClassZ@Base 15 + _D10TypeInfo_u6__initZ@Base 15 + _D10TypeInfo_u6__vtblZ@Base 15 + _D10TypeInfo_u7__ClassZ@Base 15 + _D10TypeInfo_v6__initZ@Base 15 + _D10TypeInfo_v6__vtblZ@Base 15 + _D10TypeInfo_v7__ClassZ@Base 15 + _D10TypeInfo_w6__initZ@Base 15 + _D10TypeInfo_w6__vtblZ@Base 15 + _D10TypeInfo_w7__ClassZ@Base 15 + _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D11TypeInfo_Aa6__initZ@Base 15 + _D11TypeInfo_Aa6__vtblZ@Base 15 + _D11TypeInfo_Aa7__ClassZ@Base 15 + _D11TypeInfo_Ab6__initZ@Base 15 + _D11TypeInfo_Ab6__vtblZ@Base 15 + _D11TypeInfo_Ab7__ClassZ@Base 15 + _D11TypeInfo_Ac6__initZ@Base 15 + _D11TypeInfo_Ac6__vtblZ@Base 15 + _D11TypeInfo_Ac7__ClassZ@Base 15 + _D11TypeInfo_Ad6__initZ@Base 15 + _D11TypeInfo_Ad6__vtblZ@Base 15 + _D11TypeInfo_Ad7__ClassZ@Base 15 + _D11TypeInfo_Ae6__initZ@Base 15 + _D11TypeInfo_Ae6__vtblZ@Base 15 + _D11TypeInfo_Ae7__ClassZ@Base 15 + _D11TypeInfo_Af6__initZ@Base 15 + _D11TypeInfo_Af6__vtblZ@Base 15 + _D11TypeInfo_Af7__ClassZ@Base 15 + _D11TypeInfo_Ag6__initZ@Base 15 + _D11TypeInfo_Ag6__vtblZ@Base 15 + _D11TypeInfo_Ag7__ClassZ@Base 15 + _D11TypeInfo_Ah6__initZ@Base 15 + _D11TypeInfo_Ah6__vtblZ@Base 15 + _D11TypeInfo_Ah7__ClassZ@Base 15 + _D11TypeInfo_Ai6__initZ@Base 15 + _D11TypeInfo_Ai6__vtblZ@Base 15 + _D11TypeInfo_Ai7__ClassZ@Base 15 + _D11TypeInfo_Aj6__initZ@Base 15 + _D11TypeInfo_Aj6__vtblZ@Base 15 + _D11TypeInfo_Aj7__ClassZ@Base 15 + _D11TypeInfo_Ak6__initZ@Base 15 + _D11TypeInfo_Ak6__vtblZ@Base 15 + _D11TypeInfo_Ak7__ClassZ@Base 15 + _D11TypeInfo_Al6__initZ@Base 15 + _D11TypeInfo_Al6__vtblZ@Base 15 + _D11TypeInfo_Al7__ClassZ@Base 15 + _D11TypeInfo_Am6__initZ@Base 15 + _D11TypeInfo_Am6__vtblZ@Base 15 + _D11TypeInfo_Am7__ClassZ@Base 15 + _D11TypeInfo_Ao6__initZ@Base 15 + _D11TypeInfo_Ao6__vtblZ@Base 15 + _D11TypeInfo_Ao7__ClassZ@Base 15 + _D11TypeInfo_Ap6__initZ@Base 15 + _D11TypeInfo_Ap6__vtblZ@Base 15 + _D11TypeInfo_Ap7__ClassZ@Base 15 + _D11TypeInfo_Aq6__initZ@Base 15 + _D11TypeInfo_Aq6__vtblZ@Base 15 + _D11TypeInfo_Aq7__ClassZ@Base 15 + _D11TypeInfo_Ar6__initZ@Base 15 + _D11TypeInfo_Ar6__vtblZ@Base 15 + _D11TypeInfo_Ar7__ClassZ@Base 15 + _D11TypeInfo_As6__initZ@Base 15 + _D11TypeInfo_As6__vtblZ@Base 15 + _D11TypeInfo_As7__ClassZ@Base 15 + _D11TypeInfo_At6__initZ@Base 15 + _D11TypeInfo_At6__vtblZ@Base 15 + _D11TypeInfo_At7__ClassZ@Base 15 + _D11TypeInfo_Au6__initZ@Base 15 + _D11TypeInfo_Au6__vtblZ@Base 15 + _D11TypeInfo_Au7__ClassZ@Base 15 + _D11TypeInfo_Av6__initZ@Base 15 + _D11TypeInfo_Av6__vtblZ@Base 15 + _D11TypeInfo_Av7__ClassZ@Base 15 + _D11TypeInfo_Aw6__initZ@Base 15 + _D11TypeInfo_Aw6__vtblZ@Base 15 + _D11TypeInfo_Aw7__ClassZ@Base 15 + _D11TypeInfo_Oa6__initZ@Base 15 + _D11TypeInfo_Ou6__initZ@Base 15 + _D11TypeInfo_xa6__initZ@Base 15 + _D11TypeInfo_xb6__initZ@Base 15 + _D11TypeInfo_xd6__initZ@Base 15 + _D11TypeInfo_xe6__initZ@Base 15 + _D11TypeInfo_xf6__initZ@Base 15 + _D11TypeInfo_xh6__initZ@Base 15 + _D11TypeInfo_xi6__initZ@Base 15 + _D11TypeInfo_xk6__initZ@Base 15 + _D11TypeInfo_xm6__initZ@Base 15 + _D11TypeInfo_xt6__initZ@Base 15 + _D11TypeInfo_xv6__initZ@Base 15 + _D11TypeInfo_ya6__initZ@Base 15 + _D11TypeInfo_yk6__initZ@Base 15 + _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D12TypeInfo_AOa6__initZ@Base 15 + _D12TypeInfo_AOu6__initZ@Base 15 + _D12TypeInfo_Axa6__initZ@Base 15 + _D12TypeInfo_Axa6__vtblZ@Base 15 + _D12TypeInfo_Axa7__ClassZ@Base 15 + _D12TypeInfo_Axv6__initZ@Base 15 + _D12TypeInfo_Aya6__initZ@Base 15 + _D12TypeInfo_Aya6__vtblZ@Base 15 + _D12TypeInfo_Aya7__ClassZ@Base 15 + _D12TypeInfo_G8h6__initZ@Base 15 + _D12TypeInfo_Oxk6__initZ@Base 15 + _D12TypeInfo_Pxh6__initZ@Base 15 + _D12TypeInfo_Pxv6__initZ@Base 15 + _D12TypeInfo_xAa6__initZ@Base 15 + _D12TypeInfo_xAv6__initZ@Base 15 + _D12TypeInfo_xPh6__initZ@Base 15 + _D12TypeInfo_xPv6__initZ@Base 15 + _D12TypeInfo_yAa6__initZ@Base 15 + _D13TypeInfo_AAya6__initZ@Base 15 + _D13TypeInfo_AxPv6__initZ@Base 15 + _D13TypeInfo_AyAa6__initZ@Base 15 + _D13TypeInfo_Enum6__initZ@Base 15 + _D13TypeInfo_Enum6__vtblZ@Base 15 + _D13TypeInfo_Enum7__ClassZ@Base 15 + _D13TypeInfo_G12a6__initZ@Base 15 + _D13TypeInfo_G48a6__initZ@Base 15 + _D13TypeInfo_xAPv6__initZ@Base 15 + _D13TypeInfo_xAya6__initZ@Base 15 + _D13TypeInfo_xG8h6__initZ@Base 15 + _D14TypeInfo_Array6__initZ@Base 15 + _D14TypeInfo_Array6__vtblZ@Base 15 + _D14TypeInfo_Array7__ClassZ@Base 15 + _D14TypeInfo_AxAya6__initZ@Base 15 + _D14TypeInfo_Class6__initZ@Base 15 + _D14TypeInfo_Class6__vtblZ@Base 15 + _D14TypeInfo_Class7__ClassZ@Base 15 + _D14TypeInfo_Const6__initZ@Base 15 + _D14TypeInfo_Const6__vtblZ@Base 15 + _D14TypeInfo_Const7__ClassZ@Base 15 + _D14TypeInfo_HAxam6__initZ@Base 15 + _D14TypeInfo_Inout6__initZ@Base 15 + _D14TypeInfo_Inout6__vtblZ@Base 15 + _D14TypeInfo_Inout7__ClassZ@Base 15 + _D14TypeInfo_Tuple6__initZ@Base 15 + _D14TypeInfo_Tuple6__vtblZ@Base 15 + _D14TypeInfo_Tuple7__ClassZ@Base 15 + _D14TypeInfo_xAAya6__initZ@Base 15 + _D14TypeInfo_xG12a6__initZ@Base 15 + _D14TypeInfo_xG48a6__initZ@Base 15 + _D15TypeInfo_Shared6__initZ@Base 15 + _D15TypeInfo_Shared6__vtblZ@Base 15 + _D15TypeInfo_Shared7__ClassZ@Base 15 + _D15TypeInfo_Struct6__initZ@Base 15 + _D15TypeInfo_Struct6__vtblZ@Base 15 + _D15TypeInfo_Struct7__ClassZ@Base 15 + _D15TypeInfo_Vector6__initZ@Base 15 + _D15TypeInfo_Vector6__vtblZ@Base 15 + _D15TypeInfo_Vector7__ClassZ@Base 15 + _D16TypeInfo_HPxvAya6__initZ@Base 15 + _D16TypeInfo_Pointer6__initZ@Base 15 + _D16TypeInfo_Pointer6__vtblZ@Base 15 + _D16TypeInfo_Pointer7__ClassZ@Base 15 + _D17TypeInfo_Delegate6__initZ@Base 15 + _D17TypeInfo_Delegate6__vtblZ@Base 15 + _D17TypeInfo_Delegate7__ClassZ@Base 15 + _D17TypeInfo_Function6__initZ@Base 15 + _D17TypeInfo_Function6__vtblZ@Base 15 + _D17TypeInfo_Function7__ClassZ@Base 15 + _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 + _D18TypeInfo_Interface6__initZ@Base 15 + _D18TypeInfo_Interface6__vtblZ@Base 15 + _D18TypeInfo_Interface7__ClassZ@Base 15 + _D18TypeInfo_Invariant6__initZ@Base 15 + _D18TypeInfo_Invariant6__vtblZ@Base 15 + _D18TypeInfo_Invariant7__ClassZ@Base 15 + _D18TypeInfo_xC6Object6__initZ@Base 15 + _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 + _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 + _D20TypeInfo_S6object2AA6__initZ@Base 15 + _D20TypeInfo_StaticArray6__initZ@Base 15 + _D20TypeInfo_StaticArray6__vtblZ@Base 15 + _D20TypeInfo_StaticArray7__ClassZ@Base 15 + _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 + _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 + _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 + _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 + _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 + _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 + _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 + _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 + _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 + _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 + _D25TypeInfo_S6object7AARange6__initZ@Base 15 + _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 + _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 + _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 + _D27TypeInfo_S6object9Interface6__initZ@Base 15 + _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 + _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 + _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 + _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 + _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 + _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 + _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 + _D2rt10invariant_11__moduleRefZ@Base 15.2 + _D2rt10invariant_12__ModuleInfoZ@Base 15.2 + _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 + _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 + _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 + _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 + _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 + _D2rt3aaA11__moduleRefZ@Base 15 + _D2rt3aaA12__ModuleInfoZ@Base 15 + _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 + _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA2AA6__initZ@Base 15 + _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 + _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 + _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 + _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 + _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 + _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 + _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 + _D2rt3aaA4Impl6__initZ@Base 15 + _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 + _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 + _D2rt3aaA5Range6__initZ@Base 15 + _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6Bucket6__initZ@Base 15 + _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 + _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 + _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 + _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 + _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 + _D2rt3adi11__moduleRefZ@Base 15 + _D2rt3adi12__ModuleInfoZ@Base 15 + _D2rt3deh11__moduleRefZ@Base 15 + _D2rt3deh12__ModuleInfoZ@Base 15 + _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D2rt4util7utility11__moduleRefZ@Base 15 + _D2rt4util7utility12__ModuleInfoZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo11__moduleRefZ@Base 15 + _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt5cast_11__moduleRefZ@Base 15 + _D2rt5cast_12__ModuleInfoZ@Base 15 + _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 + _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 + _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 + _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 + _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 + _D2rt5minfo11ModuleGroup6__initZ@Base 15 + _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 + _D2rt5minfo11__moduleRefZ@Base 15 + _D2rt5minfo12__ModuleInfoZ@Base 15 + _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 + _D2rt5tlsgc11__moduleRefZ@Base 15 + _D2rt5tlsgc12__ModuleInfoZ@Base 15 + _D2rt5tlsgc4Data6__initZ@Base 15 + _D2rt5tlsgc4initFNbNiZPv@Base 15 + _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 + _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 + _D2rt6aApply11__moduleRefZ@Base 15 + _D2rt6aApply12__ModuleInfoZ@Base 15 + _D2rt6config11__moduleRefZ@Base 15 + _D2rt6config12__ModuleInfoZ@Base 15 + _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 + _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6dmain210_initCountOm@Base 15 + _D2rt6dmain211__moduleRefZ@Base 15 + _D2rt6dmain212__ModuleInfoZ@Base 15 + _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 + _D2rt6dmain214UnitTestResult6__initZ@Base 15 + _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 + _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 + _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 + _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 + _D2rt6dmain25CArgs6__initZ@Base 15 + _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 + _D2rt6dmain27_d_argsAAya@Base 15 + _D2rt6memory11__moduleRefZ@Base 15 + _D2rt6memory12__ModuleInfoZ@Base 15 + _D2rt6memory16initStaticDataGCFZv@Base 15 + _D2rt7aApplyR11__moduleRefZ@Base 15 + _D2rt7aApplyR12__ModuleInfoZ@Base 15 + _D2rt7ehalloc11__moduleRefZ@Base 15 + _D2rt7ehalloc12__ModuleInfoZ@Base 15 + _D2rt8arraycat11__moduleRefZ@Base 15 + _D2rt8arraycat12__ModuleInfoZ@Base 15 + _D2rt8lifetime11__moduleRefZ@Base 15 + _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 + _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 + _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 + _D2rt8lifetime11newCapacityFmmZm@Base 15 + _D2rt8lifetime12__ModuleInfoZ@Base 15 + _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 + _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 + _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 + _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 + _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 + _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 + _D2rt8monitor_11__moduleRefZ@Base 15 + _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12__ModuleInfoZ@Base 15 + _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 + _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 + _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 + _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 + _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 + _D2rt8monitor_7Monitor6__initZ@Base 15 + _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 + _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 + _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8sections11__moduleRefZ@Base 15 + _D2rt8sections12__ModuleInfoZ@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 + _D2rt9critical_11__moduleRefZ@Base 15 + _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 + _D2rt9critical_12__ModuleInfoZ@Base 15 + _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 + _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 + _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 + _D2rt9profilegc11__moduleRefZ@Base 15 + _D2rt9profilegc11logfilenameAya@Base 15 + _D2rt9profilegc12__ModuleInfoZ@Base 15 + _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 + _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 + _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 + _D2rt9profilegc5Entry6__initZ@Base 15 + _D2rt9profilegc6bufferAa@Base 15 + _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 + _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 + _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 + _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 + _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 + _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 + _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 + _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 + _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 + _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 + _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 + _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 + _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 + _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 + _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 + _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 + _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 + _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 + _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 + _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 + _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 + _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 + _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 + _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 + _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 + _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 + _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 + _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 + _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 + _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 + _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 + _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 + _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 + _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 + _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 + _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 + _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 + _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 + _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 + _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 + _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 + _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 + _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 + _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 + _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 + _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 + _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 + _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 + _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 + _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 + _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 + _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 + _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 + _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 + _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 + _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 + _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 + _D3etc8valgrindQj11__moduleRefZ@Base 15 + _D3etc8valgrindQj12__ModuleInfoZ@Base 15 + _D3gcc10attributes11__moduleRefZ@Base 15 + _D3gcc10attributes12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace11__moduleRefZ@Base 15 + _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 + _D3gcc3deh11__moduleRefZ@Base 15 + _D3gcc3deh12__ModuleInfoZ@Base 15 + _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 + _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 + _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 + _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 + _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 + _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 + _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 + _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 + _D3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 + _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 + _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 + _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 + _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 + _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 + _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 + _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 + _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 + _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 + _D3gcc3deh20isDependentExceptionFNimZb@Base 15 + _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 + _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 + _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 + _D3gcc3deh9terminateFNiAyakZv@Base 15 + _D3gcc4simd11__moduleRefZ@Base 15 + _D3gcc4simd12__ModuleInfoZ@Base 15 + _D3gcc6config11__moduleRefZ@Base 15 + _D3gcc6config12__ModuleInfoZ@Base 15 + _D3gcc6emutls11__moduleRefZ@Base 15 + _D3gcc6emutls12__ModuleInfoZ@Base 15 + _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 + _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 + _D3gcc6unwind11__moduleRefZ@Base 15 + _D3gcc6unwind12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe11__moduleRefZ@Base 15 + _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 + _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 + _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 + _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 + _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 + _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 + _D3gcc6unwind3arm11__moduleRefZ@Base 15 + _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 + _D3gcc6unwind3c6x11__moduleRefZ@Base 15 + _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic11__moduleRefZ@Base 15 + _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D3gcc7gthread11__moduleRefZ@Base 15 + _D3gcc7gthread12__ModuleInfoZ@Base 15 + _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 + _D3gcc8builtins11__moduleRefZ@Base 15 + _D3gcc8builtins12__ModuleInfoZ@Base 15 + _D3gcc8builtins13__va_list_tag6__initZ@Base 15 + _D3gcc8sections11__moduleRefZ@Base 15 + _D3gcc8sections12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf10_rtLoadingb@Base 15 + _D3gcc8sections3elf11__moduleRefZ@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 + _D3gcc8sections3elf12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 + _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 + _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 + _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 + _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 + _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 + _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 + _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 + _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 + _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 + _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 + _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 + _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 + _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 + _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 + _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 + _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 + _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 + _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 + _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 + _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 + _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 + _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 + _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 + _D3gcc8sections3elf3DSO6__initZ@Base 15 + _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 + _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 + _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 + _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 + _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 + _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 + _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 + _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 + _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 + _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9tls_index6__initZ@Base 15 + _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 + _D3gcc8sections5macho11__moduleRefZ@Base 15 + _D3gcc8sections5macho12__ModuleInfoZ@Base 15 + _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D3gcc8sections6common11__moduleRefZ@Base 15 + _D3gcc8sections6common12__ModuleInfoZ@Base 15 + _D3gcc8sections6pecoff11__moduleRefZ@Base 15 + _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 + _D3gcc9attribute11__moduleRefZ@Base 15 + _D3gcc9attribute12__ModuleInfoZ@Base 15 + _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 + _D3gcc9backtrace11__moduleRefZ@Base 15 + _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 + _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 + _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 + _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 + _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 + _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 + _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _D3gcc9backtrace12__ModuleInfoZ@Base 15 + _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 + _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 + _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 + _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 + _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 + _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 + _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 + _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 + _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 + _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 + _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 + _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 + _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 + _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 + _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 + _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D4core10checkedint11__moduleRefZ@Base 15 + _D4core10checkedint12__ModuleInfoZ@Base 15 + _D4core13interpolation11__moduleRefZ@Base 15 + _D4core13interpolation12__ModuleInfoZ@Base 15 + _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 + _D4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D4core2gc11gcinterface11__moduleRefZ@Base 15 + _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 + _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 + _D4core2gc11gcinterface4Root6__initZ@Base 15 + _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 + _D4core2gc11gcinterface5Range6__initZ@Base 15 + _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 + _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 + _D4core2gc6config11PrettyBytes6__initZ@Base 15 + _D4core2gc6config11__moduleRefZ@Base 15 + _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 + _D4core2gc6config12__ModuleInfoZ@Base 15 + _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 + _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 + _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 + _D4core2gc6config6Config4helpMFNbNiZv@Base 15 + _D4core2gc6config6Config6__initZ@Base 15 + _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 + _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 + _D4core2gc6configQhSQsQpQo6Config@Base 15 + _D4core2gc8registry11__moduleRefZ@Base 15 + _D4core2gc8registry12__ModuleInfoZ@Base 15 + _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 + _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 + _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 + _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 + _D4core2gc8registry5Entry6__initZ@Base 15 + _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 + _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 + _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D4core3sys3elf11Elf_Options6__initZ@Base 15 + _D4core3sys3elf11__moduleRefZ@Base 15 + _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D4core3sys3elf12__ModuleInfoZ@Base 15 + _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 + _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 + _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs11__moduleRefZ@Base 15 + _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf11__moduleRefZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D4core3sys5linux3err11__moduleRefZ@Base 15 + _D4core3sys5linux3err12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link11__moduleRefZ@Base 15 + _D4core3sys5linux4link12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D4core3sys5linux4link7r_debug6__initZ@Base 15 + _D4core3sys5linux4link8link_map6__initZ@Base 15 + _D4core3sys5linux4time11__moduleRefZ@Base 15 + _D4core3sys5linux4time12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D4core3sys5linux4tipc11__moduleRefZ@Base 15 + _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll11__moduleRefZ@Base 15 + _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D4core3sys5linux5errno11__moduleRefZ@Base 15 + _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 + _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 + _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D4core3sys5linux5input10input_mask6__initZ@Base 15 + _D4core3sys5linux5input11__moduleRefZ@Base 15 + _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D4core3sys5linux5input11input_event6__initZ@Base 15 + _D4core3sys5linux5input12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D4core3sys5linux5input8input_id6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D4core3sys5linux5sched11__moduleRefZ@Base 15 + _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 + _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D4core3sys5linux5stdio11__moduleRefZ@Base 15 + _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D4core3sys5linux6config11__moduleRefZ@Base 15 + _D4core3sys5linux6config12__ModuleInfoZ@Base 15 + _D4core3sys5linux6string11__moduleRefZ@Base 15 + _D4core3sys5linux6string12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput11__moduleRefZ@Base 15 + _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D4core3sys5linux6unistd11__moduleRefZ@Base 15 + _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 + _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 + _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5linux7termios11__moduleRefZ@Base 15 + _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 + _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 + _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 + _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 + _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 + _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 + _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 + _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 + _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 + _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 + _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D4core3sys5posix3aio11__moduleRefZ@Base 15 + _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 + _D4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D4core3sys5posix3grp11__moduleRefZ@Base 15 + _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 + _D4core3sys5posix3grp5group6__initZ@Base 15 + _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 + _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 + _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D4core3sys5posix3pwd11__moduleRefZ@Base 15 + _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 + _D4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 + _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 + _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D4core3sys5posix4poll11__moduleRefZ@Base 15 + _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 + _D4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 + _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D4core3sys5posix4time11__moduleRefZ@Base 15 + _D4core3sys5posix4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4time8timespec6__initZ@Base 15 + _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 + _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D4core3sys5posix5iconv11__moduleRefZ@Base 15 + _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb11__moduleRefZ@Base 15 + _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb6netent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 + _D4core3sys5posix5netdb7servent6__initZ@Base 15 + _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D4core3sys5posix5sched11__moduleRefZ@Base 15 + _D4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn11__moduleRefZ@Base 15 + _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D4core3sys5posix5stdio11__moduleRefZ@Base 15 + _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime11__moduleRefZ@Base 15 + _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D4core3sys5posix6config11__moduleRefZ@Base 15 + _D4core3sys5posix6config12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent11__moduleRefZ@Base 15 + _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D4core3sys5posix6direntQh6__initZ@Base 15 + _D4core3sys5posix6libgen11__moduleRefZ@Base 15 + _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale11__moduleRefZ@Base 15 + _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale5lconv6__initZ@Base 15 + _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 + _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 + _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 + _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 + _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D4core3sys5posix6signal11__moduleRefZ@Base 15 + _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 + _D4core3sys5posix6signal6sigval6__initZ@Base 15 + _D4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 + _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 + _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 + _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 + _D4core3sys5posix6string11__moduleRefZ@Base 15 + _D4core3sys5posix6string12__ModuleInfoZ@Base 15 + _D4core3sys5posix6syslog11__moduleRefZ@Base 15 + _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 + _D4core3sys5posix6unistd11__moduleRefZ@Base 15 + _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread11__moduleRefZ@Base 15 + _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 + _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D4core3sys5posix7strings11__moduleRefZ@Base 15 + _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termios11__moduleRefZ@Base 15 + _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termiosQi6__initZ@Base 15 + _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 + _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 + _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 + _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 + _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D4core3sys5posixQk2un11__moduleRefZ@Base 15 + _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 + _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 + _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 + _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 + _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 + _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 + _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 + _D4core3sys5posixQk4time11__moduleRefZ@Base 15 + _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 + _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 + _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 + _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 + _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5types11__moduleRefZ@Base 15 + _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select11__moduleRefZ@Base 15 + _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 + _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 + _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 + _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 + _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 + _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 + _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 + _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 + _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 + _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 + _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D4core4math11__moduleRefZ@Base 15 + _D4core4math12__ModuleInfoZ@Base 15 + _D4core4simd11__moduleRefZ@Base 15 + _D4core4simd12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv11__moduleRefZ@Base 15 + _D4core4stdc4fenv12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D4core4stdc4math11__moduleRefZ@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 + _D4core4stdc4math12__ModuleInfoZ@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4time11__moduleRefZ@Base 15 + _D4core4stdc4time12__ModuleInfoZ@Base 15 + _D4core4stdc5ctype11__moduleRefZ@Base 15 + _D4core4stdc5ctype12__ModuleInfoZ@Base 15 + _D4core4stdc5errno11__moduleRefZ@Base 15 + _D4core4stdc5errno12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio11__moduleRefZ@Base 15 + _D4core4stdc5stdio12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D4core4stdc6config11__moduleRefZ@Base 15 + _D4core4stdc6config12__ModuleInfoZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 + _D4core4stdc6float_11__moduleRefZ@Base 15 + _D4core4stdc6float_12__ModuleInfoZ@Base 15 + _D4core4stdc6limits11__moduleRefZ@Base 15 + _D4core4stdc6limits12__ModuleInfoZ@Base 15 + _D4core4stdc6locale11__moduleRefZ@Base 15 + _D4core4stdc6locale12__ModuleInfoZ@Base 15 + _D4core4stdc6locale5lconv6__initZ@Base 15 + _D4core4stdc6signal11__moduleRefZ@Base 15 + _D4core4stdc6signal12__ModuleInfoZ@Base 15 + _D4core4stdc6stdarg11__moduleRefZ@Base 15 + _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 + _D4core4stdc6stddef11__moduleRefZ@Base 15 + _D4core4stdc6stddef12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint11__moduleRefZ@Base 15 + _D4core4stdc6stdint12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 + _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 + _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 + _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 + _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 + _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 + _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 + _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 + _D4core4stdc6stdlib11__moduleRefZ@Base 15 + _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 + _D4core4stdc6stdlib5div_t6__initZ@Base 15 + _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D4core4stdc6string11__moduleRefZ@Base 15 + _D4core4stdc6string12__ModuleInfoZ@Base 15 + _D4core4stdc6tgmath11__moduleRefZ@Base 15 + _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_11__moduleRefZ@Base 15 + _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 + _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 + _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D4core4stdc6wctype11__moduleRefZ@Base 15 + _D4core4stdc6wctype12__ModuleInfoZ@Base 15 + _D4core4stdc7assert_11__moduleRefZ@Base 15 + _D4core4stdc7assert_12__ModuleInfoZ@Base 15 + _D4core4stdc7complex11__moduleRefZ@Base 15 + _D4core4stdc7complex12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes11__moduleRefZ@Base 15 + _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D4core4stdc9stdatomic11__moduleRefZ@Base 15 + _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 + _D4core4sync11__moduleRefZ@Base 15 + _D4core4sync12__ModuleInfoZ@Base 15 + _D4core4sync5event11__moduleRefZ@Base 15 + _D4core4sync5event12__ModuleInfoZ@Base 15 + _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 + _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 + _D4core4sync5event5Event3setMFNbNiZv@Base 15 + _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 + _D4core4sync5event5Event4waitMFNbNiZb@Base 15 + _D4core4sync5event5Event5resetMFNbNiZv@Base 15 + _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 + _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 + _D4core4sync5event5Event6__initZ@Base 15 + _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 + _D4core4sync5mutex11__moduleRefZ@Base 15 + _D4core4sync5mutex12__ModuleInfoZ@Base 15 + _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 + _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 + _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 + _D4core4sync5mutex5Mutex6__initZ@Base 15 + _D4core4sync5mutex5Mutex6__vtblZ@Base 15 + _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex7__ClassZ@Base 15 + _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 + _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 + _D4core4sync6config11__moduleRefZ@Base 15 + _D4core4sync6config12__ModuleInfoZ@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 + _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync7barrier11__moduleRefZ@Base 15 + _D4core4sync7barrier12__ModuleInfoZ@Base 15 + _D4core4sync7barrier7Barrier4waitMFZv@Base 15 + _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 + _D4core4sync7barrier7Barrier6__initZ@Base 15 + _D4core4sync7barrier7Barrier6__vtblZ@Base 15 + _D4core4sync7barrier7Barrier7__ClassZ@Base 15 + _D4core4sync7rwmutex11__moduleRefZ@Base 15 + _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 + _D4core4sync9condition11__moduleRefZ@Base 15 + _D4core4sync9condition12__ModuleInfoZ@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMFZv@Base 15 + _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMOFZv@Base 15 + _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 + _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 + _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 + _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 + _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 + _D4core4sync9condition9Condition6__initZ@Base 15 + _D4core4sync9condition9Condition6__vtblZ@Base 15 + _D4core4sync9condition9Condition6notifyMFZv@Base 15 + _D4core4sync9condition9Condition6notifyMOFZv@Base 15 + _D4core4sync9condition9Condition7__ClassZ@Base 15 + _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 + _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 + _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 + _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 + _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 + _D4core4sync9exception11__moduleRefZ@Base 15 + _D4core4sync9exception12__ModuleInfoZ@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__initZ@Base 15 + _D4core4sync9exception9SyncError6__vtblZ@Base 15 + _D4core4sync9exception9SyncError7__ClassZ@Base 15 + _D4core4sync9semaphore11__moduleRefZ@Base 15 + _D4core4sync9semaphore12__ModuleInfoZ@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 + _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 + _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 + _D4core4sync9semaphore9Semaphore6__initZ@Base 15 + _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 + _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 + _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 + _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 + _D4core4time11__moduleRefZ@Base 15 + _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 + _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 + _D4core4time12TickDuration11ticksPerSecyl@Base 15 + _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 + _D4core4time12TickDuration16time_initializerFZv@Base 15 + _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 + _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 + _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 + _D4core4time12TickDuration6__initZ@Base 15 + _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 + _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 + _D4core4time12__ModuleInfoZ@Base 15 + _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 + _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__initZ@Base 15 + _D4core4time13TimeException6__vtblZ@Base 15 + _D4core4time13TimeException7__ClassZ@Base 15 + _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 + _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 + _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 + _D4core4time15_ticksPerSecondyG8l@Base 15 + _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 + _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 + _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 + _D4core4time4_absFNaNbNiNfdZd@Base 15 + _D4core4time4_absFNaNbNiNflZl@Base 15 + _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 + _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 + _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 + _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 + _D4core4time8Duration6__initZ@Base 15 + _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 + _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 + _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 + _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 + _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 + _D4core5bitop11__moduleRefZ@Base 15 + _D4core5bitop12__ModuleInfoZ@Base 15 + _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 + _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 + _D4core5bitop7Split646__initZ@Base 15 + _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 + _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 + _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 + _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 + _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 + _D4core5bitop8BitRange6__initZ@Base 15 + _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 + _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 + _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 + _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 + _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 + _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 + _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 + _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 + _D4core5cpuid10_hasPopcntyb@Base 15 + _D4core5cpuid10_hasRdrandyb@Base 15 + _D4core5cpuid10_hasRdseedyb@Base 15 + _D4core5cpuid10_isItaniumyb@Base 15 + _D4core5cpuid10_processoryAa@Base 15 + _D4core5cpuid10_x87onChipyb@Base 15 + _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 + _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 + _D4core5cpuid11CpuFeatures6__initZ@Base 15 + _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 + _D4core5cpuid11__moduleRefZ@Base 15 + _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 + _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 + _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 + _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 + _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12__ModuleInfoZ@Base 15 + _D4core5cpuid12_amd3dnowExtyb@Base 15 + _D4core5cpuid12_coresPerCPUyk@Base 15 + _D4core5cpuid12_hasLahfSahfyb@Base 15 + _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 + _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13_hasCmpxchg8byb@Base 15 + _D4core5cpuid13_hasPclmulqdqyb@Base 15 + _D4core5cpuid13_preferAthlonyb@Base 15 + _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid14_hasCmpxchg16byb@Base 15 + _D4core5cpuid14_hasVpclmulqdqyb@Base 15 + _D4core5cpuid14_threadsPerCPUyk@Base 15 + _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 + _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 + _D4core5cpuid14numCacheLevelsk@Base 15 + _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 + _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 + _D4core5cpuid15_hyperThreadingyb@Base 15 + _D4core5cpuid15_preferPentium1yb@Base 15 + _D4core5cpuid15_preferPentium4yb@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 + _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 + _D4core5cpuid17_has3dnowPrefetchyb@Base 15 + _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 + _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 + _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 + _D4core5cpuid18max_extended_cpuidk@Base 15 + _D4core5cpuid19_hasSysEnterSysExityb@Base 15 + _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 + _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 + _D4core5cpuid4_aesyb@Base 15 + _D4core5cpuid4_avxyb@Base 15 + _D4core5cpuid4_fmayb@Base 15 + _D4core5cpuid4_hleyb@Base 15 + _D4core5cpuid4_mmxyb@Base 15 + _D4core5cpuid4_rtmyb@Base 15 + _D4core5cpuid4_sseyb@Base 15 + _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5_avx2yb@Base 15 + _D4core5cpuid5_sse2yb@Base 15 + _D4core5cpuid5_sse3yb@Base 15 + _D4core5cpuid5_vaesyb@Base 15 + _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5modelk@Base 15 + _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid6_fp16cyb@Base 15 + _D4core5cpuid6_sse41yb@Base 15 + _D4core5cpuid6_sse42yb@Base 15 + _D4core5cpuid6_sse4ayb@Base 15 + _D4core5cpuid6_ssse3yb@Base 15 + _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6familyk@Base 15 + _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid7_amdMmxyb@Base 15 + _D4core5cpuid7_hasShayb@Base 15 + _D4core5cpuid7_vendoryAa@Base 15 + _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8_avx512fyb@Base 15 + _D4core5cpuid8_hasCmovyb@Base 15 + _D4core5cpuid8_hasFxsryb@Base 15 + _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 + _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 + _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 + _D4core5cpuid8steppingk@Base 15 + _D4core5cpuid9CacheInfo6__initZ@Base 15 + _D4core5cpuid9_amd3dnowyb@Base 15 + _D4core5cpuid9_hasLzcntyb@Base 15 + _D4core5cpuid9_hasRdtscyb@Base 15 + _D4core5cpuid9_isX86_64yb@Base 15 + _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 + _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9max_cpuidk@Base 15 + _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 + _D4core6atomic11__moduleRefZ@Base 15 + _D4core6atomic12__ModuleInfoZ@Base 15 + _D4core6atomic5pauseFNaNbNiNfZv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6int12811__moduleRefZ@Base 15 + _D4core6int12812__ModuleInfoZ@Base 15 + _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 + _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 + _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1284Cent6__initZ@Base 15 + _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 + _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 + _D4core6memory10initializeFZv@Base 15 + _D4core6memory11__moduleRefZ@Base 15 + _D4core6memory12__ModuleInfoZ@Base 15 + _D4core6memory2GC12ProfileStats6__initZ@Base 15 + _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 + _D4core6memory2GC5Stats6__initZ@Base 15 + _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 + _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 + _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 + _D4core6memory2GC6__initZ@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 + _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 + _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 + _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 + _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 + _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 + _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 + _D4core6memory8BlkInfo_6__initZ@Base 15 + _D4core6memory8pageSizeym@Base 15 + _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 + _D4core6stdcpp11string_view11__moduleRefZ@Base 15 + _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 + _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D4core6stdcpp4new_11__moduleRefZ@Base 15 + _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 + _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 + _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 + _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 + _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D4core6stdcpp5array11__moduleRefZ@Base 15 + _D4core6stdcpp5array12__ModuleInfoZ@Base 15 + _D4core6stdcpp6memory11__moduleRefZ@Base 15 + _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 + _D4core6stdcpp6string11__moduleRefZ@Base 15 + _D4core6stdcpp6string12__ModuleInfoZ@Base 15 + _D4core6stdcpp6vector11__moduleRefZ@Base 15 + _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 + _D4core6stdcpp7utility11__moduleRefZ@Base 15 + _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 + _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 + _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 + _D4core6stdcpp8xutility11__moduleRefZ@Base 15 + _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D4core6stdcpp9allocator11__moduleRefZ@Base 15 + _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception11__moduleRefZ@Base 15 + _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 + _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 + _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 + _D4core6stdcpp9exceptionQk6__initZ@Base 15 + _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 + _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 + _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 + _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 + _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 + _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 + _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 + _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 + _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__initZ@Base 15 + _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 + _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 + _D4core6thread10threadbase11__moduleRefZ@Base 15 + _D4core6thread10threadbase11ll_nThreadsm@Base 15 + _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 + _D4core6thread10threadbase12__ModuleInfoZ@Base 15 + _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase12suspendDepthk@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__initZ@Base 15 + _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 + _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 + _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 + _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 + _D4core6thread10threadbase17multiThreadedFlagb@Base 15 + _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 + _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 + _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 + _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 + _D4core6thread10threadbase7ll_lockG72v@Base 15 + _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 + _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 + _D4core6thread11__moduleRefZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 + _D4core6thread11threadgroup11__moduleRefZ@Base 15 + _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 + _D4core6thread12__ModuleInfoZ@Base 15 + _D4core6thread5fiber11__moduleRefZ@Base 15 + _D4core6thread5fiber12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base11__moduleRefZ@Base 15 + _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 + _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 + _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 + _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 + _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 + _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 + _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 + _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 + _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 + _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 + _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__initZ@Base 15 + _D4core6thread5fiber5Fiber6__vtblZ@Base 15 + _D4core6thread5fiber5Fiber7__ClassZ@Base 15 + _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 + _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 + _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 + _D4core6thread5types11__moduleRefZ@Base 15 + _D4core6thread5types12__ModuleInfoZ@Base 15 + _D4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 + _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 + _D4core6thread7context11__moduleRefZ@Base 15 + _D4core6thread7context12StackContext6__initZ@Base 15 + _D4core6thread7context12__ModuleInfoZ@Base 15 + _D4core6thread7context8Callable6__initZ@Base 15 + _D4core6thread7context8Callable6opCallMFZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 + _D4core6thread8osthread11__moduleRefZ@Base 15 + _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 + _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 + _D4core6thread8osthread12__ModuleInfoZ@Base 15 + _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 + _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 + _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 + _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 + _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 + _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 + _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 + _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 + _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 + _D4core6thread8osthread18resumeSignalNumberi@Base 15 + _D4core6thread8osthread19suspendSignalNumberi@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 + _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread3runMFZv@Base 15 + _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 + _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 + _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 + _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 + _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 + _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 + _D4core6thread8osthread6Thread6__initZ@Base 15 + _D4core6thread8osthread6Thread6__vtblZ@Base 15 + _D4core6thread8osthread6Thread7__ClassZ@Base 15 + _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 + _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 + _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 + _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 + _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 + _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 + _D4core6vararg11__moduleRefZ@Base 15 + _D4core6vararg12__ModuleInfoZ@Base 15 + _D4core7factory11__moduleRefZ@Base 15 + _D4core7factory12__ModuleInfoZ@Base 15 + _D4core7runtime11__moduleRefZ@Base 15 + _D4core7runtime12__ModuleInfoZ@Base 15 + _D4core7runtime14UnitTestResult6__initZ@Base 15 + _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 + _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 + _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 + _D4core7runtime5CArgs6__initZ@Base 15 + _D4core7runtime7Runtime10initializeFZb@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 + _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 + _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 + _D4core7runtime7Runtime6__initZ@Base 15 + _D4core7runtime7Runtime9terminateFZb@Base 15 + _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 + _D4core8builtins11__moduleRefZ@Base 15 + _D4core8builtins12__ModuleInfoZ@Base 15 + _D4core8demangle11__moduleRefZ@Base 15 + _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 + _D4core8demangle12__ModuleInfoZ@Base 15 + _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 + _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 + _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 + _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 + _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 + _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 + _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 + _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 + _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 + _D4core8demangle6Buffer6__initZ@Base 15 + _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 + _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 + _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 + _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 + _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 + _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 + _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 + _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 + _D4core8demangle7NoHooks6__initZ@Base 15 + _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 + _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 + _D4core8demangle8BufSlice6__initZ@Base 15 + _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 + _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 + _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 + _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 + _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8internal10attributes11__moduleRefZ@Base 15 + _D4core8internal10attributes12__ModuleInfoZ@Base 15 + _D4core8internal10entrypoint11__moduleRefZ@Base 15 + _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 + _D4core8internal11destruction11__moduleRefZ@Base 15 + _D4core8internal11destruction12__ModuleInfoZ@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 + _D4core8internal12parseoptions11__moduleRefZ@Base 15 + _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 + _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 + _D4core8internal12parseoptions3minFNbNimmZm@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 + _D4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 + _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 + _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 + _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 + _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 + _D4core8internal2gc2os11__moduleRefZ@Base 15 + _D4core8internal2gc2os12__ModuleInfoZ@Base 15 + _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 + _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 + _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 + _D4core8internal2gc4bits11__moduleRefZ@Base 15 + _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 + _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 + _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 + _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 + _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 + _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 + _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 + _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 + _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 + _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 + _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 + _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 + _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 + _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 + _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 + _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 + _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 + _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 + _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 + _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc5proxy11__moduleRefZ@Base 15 + _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 + _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 + _D4core8internal2gc5proxy14isInstanceInitb@Base 15 + _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 + _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 + _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 + _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 + _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 + _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 + _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 + _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 + _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 + _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 + _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 + _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 + _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 + _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 + _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 + _D4core8internal3utf10UTF8strideyAi@Base 15 + _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf11__moduleRefZ@Base 15 + _D4core8internal3utf12__ModuleInfoZ@Base 15 + _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 + _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 + _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 + _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 + _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 + _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 + _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 + _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 + _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 + _D4core8internal4hash11__moduleRefZ@Base 15 + _D4core8internal4hash12__ModuleInfoZ@Base 15 + _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 + _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 + _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 + _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 + _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 + _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 + _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 + _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 + _D4core8internal4util4math11__moduleRefZ@Base 15 + _D4core8internal4util4math12__ModuleInfoZ@Base 15 + _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 + _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 + _D4core8internal4util5array11__moduleRefZ@Base 15 + _D4core8internal4util5array12__ModuleInfoZ@Base 15 + _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 + _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 + _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 + _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 + _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array6_storeG256a@Base 15 + _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 + _D4core8internal5abort11__moduleRefZ@Base 15 + _D4core8internal5abort12__ModuleInfoZ@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 + _D4core8internal5array10comparison11__moduleRefZ@Base 15 + _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 + _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array10operations11__moduleRefZ@Base 15 + _D4core8internal5array10operations12__ModuleInfoZ@Base 15 + _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 + _D4core8internal5array10operations8toStringFmZAya@Base 15 + _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 + _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 + _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 + _D4core8internal5array11duplication11__moduleRefZ@Base 15 + _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 + _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 + _D4core8internal5array12construction11__moduleRefZ@Base 15 + _D4core8internal5array12construction12__ModuleInfoZ@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 + _D4core8internal5array13concatenation11__moduleRefZ@Base 15 + _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 + _D4core8internal5array5utils11__moduleRefZ@Base 15 + _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 + _D4core8internal5array5utils12__ModuleInfoZ@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 + _D4core8internal5array7casting11__moduleRefZ@Base 15 + _D4core8internal5array7casting12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity11__moduleRefZ@Base 15 + _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 + _D4core8internal5array8equality11__moduleRefZ@Base 15 + _D4core8internal5array8equality12__ModuleInfoZ@Base 15 + _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 + _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 + _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 + _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 + _D4core8internal5array9appending11__moduleRefZ@Base 15 + _D4core8internal5array9appending12__ModuleInfoZ@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5newaa11__moduleRefZ@Base 15 + _D4core8internal5newaa12__ModuleInfoZ@Base 15 + _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 + _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 + _D4core8internal5newaa4Impl6__initZ@Base 15 + _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 + _D4core8internal5newaa6Bucket6__initZ@Base 15 + _D4core8internal5newaa7AAShell6__initZ@Base 15 + _D4core8internal5qsort11__moduleRefZ@Base 15 + _D4core8internal5qsort12__ModuleInfoZ@Base 15 + _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 + _D4core8internal6atomic11__moduleRefZ@Base 15 + _D4core8internal6atomic12__ModuleInfoZ@Base 15 + _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 + _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 + _D4core8internal6moving11__moduleRefZ@Base 15 + _D4core8internal6moving12__ModuleInfoZ@Base 15 + _D4core8internal6string11__moduleRefZ@Base 15 + _D4core8internal6string12__ModuleInfoZ@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 + _D4core8internal6traits11__moduleRefZ@Base 15 + _D4core8internal6traits12__ModuleInfoZ@Base 15 + _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D4core8internal6traits7hasDtorFAAyaZb@Base 15 + _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 + _D4core8internal7convert11__moduleRefZ@Base 15 + _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 + _D4core8internal7convert12__ModuleInfoZ@Base 15 + _D4core8internal7convert5Float6__initZ@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 + _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 + _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 + _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 + _D4core8internal7dassert11__moduleRefZ@Base 15 + _D4core8internal7dassert12__ModuleInfoZ@Base 15 + _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 + _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 + _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 + _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 + _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 + _D4core8internal7switch_11__moduleRefZ@Base 15 + _D4core8internal7switch_12__ModuleInfoZ@Base 15 + _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 + _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 + _D4core8internal8lifetime11__moduleRefZ@Base 15 + _D4core8internal8lifetime12__ModuleInfoZ@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8postblit11__moduleRefZ@Base 15 + _D4core8internal8postblit12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock11__moduleRefZ@Base 15 + _D4core8internal8spinlock12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 + _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 + _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 + _D4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 + _D4core8internal9container5array11__moduleRefZ@Base 15 + _D4core8internal9container5array12__ModuleInfoZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 + _D4core8internal9container5treap11__moduleRefZ@Base 15 + _D4core8internal9container5treap12__ModuleInfoZ@Base 15 + _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 + _D4core8internal9container5treap4Rand6__initZ@Base 15 + _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 + _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 + _D4core8internal9container6common11__moduleRefZ@Base 15 + _D4core8internal9container6common12__ModuleInfoZ@Base 15 + _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 + _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 + _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container7hashtab11__moduleRefZ@Base 15 + _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 + _D4core8lifetime11__moduleRefZ@Base 15 + _D4core8lifetime12__ModuleInfoZ@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 + _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 + _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 + _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 + _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 + _D4core8volatile11__moduleRefZ@Base 15 + _D4core8volatile12__ModuleInfoZ@Base 15 + _D4core9attribute11__moduleRefZ@Base 15 + _D4core9attribute12__ModuleInfoZ@Base 15 + _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 + _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 + _D4core9attribute9gnuAbiTag6__initZ@Base 15 + _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 + _D4core9exception10RangeError6__initZ@Base 15 + _D4core9exception10RangeError6__vtblZ@Base 15 + _D4core9exception10RangeError7__ClassZ@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 + _D4core9exception11AssertError6__initZ@Base 15 + _D4core9exception11AssertError6__vtblZ@Base 15 + _D4core9exception11AssertError7__ClassZ@Base 15 + _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11SwitchError6__initZ@Base 15 + _D4core9exception11SwitchError6__vtblZ@Base 15 + _D4core9exception11SwitchError7__ClassZ@Base 15 + _D4core9exception11__moduleRefZ@Base 15 + _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 + _D4core9exception12__ModuleInfoZ@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__initZ@Base 15 + _D4core9exception13FinalizeError6__vtblZ@Base 15 + _D4core9exception13FinalizeError7__ClassZ@Base 15 + _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 + _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 + _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 + _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 + _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception15ArrayIndexError6__initZ@Base 15 + _D4core9exception15ArrayIndexError6__vtblZ@Base 15 + _D4core9exception15ArrayIndexError7__ClassZ@Base 15 + _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 + _D4core9exception15ArraySliceError6__initZ@Base 15 + _D4core9exception15ArraySliceError6__vtblZ@Base 15 + _D4core9exception15ArraySliceError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception16OutOfMemoryError6__initZ@Base 15 + _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 + _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 + _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 + _D4core9exception16UnicodeException6__initZ@Base 15 + _D4core9exception16UnicodeException6__vtblZ@Base 15 + _D4core9exception16UnicodeException7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo6__initZ@Base 15 + _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 + _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 + _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 + _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 + _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 + _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 + _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 + _D4core9exception6_storeG256v@Base 15 + _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 + _D4core9exception9ForkError6__initZ@Base 15 + _D4core9exception9ForkError6__vtblZ@Base 15 + _D4core9exception9ForkError7__ClassZ@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 + _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 + _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 + _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 + _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 + _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 + _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 + _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 + _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 + _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 + _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D6Object6__initZ@Base 15 + _D6Object6__vtblZ@Base 15 + _D6Object7__ClassZ@Base 15 + _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 + _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 + _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 + _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 + _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo6__initZ@Base 15 + _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 + _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 + _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 + _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 + _D6object10_xopEqualsFIPvIQdZb@Base 15 + _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 + _D6object11__moduleRefZ@Base 15 + _D6object12__ModuleInfoZ@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 + _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 + _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 + _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 + _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 + _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 + _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 + _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 + _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 + _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 + _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 + _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 + _D6object14OffsetTypeInfo6__initZ@Base 15 + _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 + _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 + _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 + _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 + _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 + _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 + _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 + _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 + _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 + _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 + _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 + _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 + _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 + _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 + _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 + _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 + _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 + _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 + _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 + _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 + _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 + _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 + _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 + _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 + _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 + _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 + _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 + _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 + _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 + _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 + _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 + _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 + _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 + _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 + _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 + _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 + _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 + _D6object19__cpp_type_info_ptr6__initZ@Base 15 + _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 + _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 + _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 + _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 + _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 + _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 + _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 + _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 + _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object2AA6__initZ@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 + _D6object5Error6__initZ@Base 15 + _D6object5Error6__vtblZ@Base 15 + _D6object5Error7__ClassZ@Base 15 + _D6object6Object5opCmpMFCQqZi@Base 15 + _D6object6Object6toHashMFNbNeZm@Base 15 + _D6object6Object7Monitor11__InterfaceZ@Base 15 + _D6object6Object7factoryFAyaZCQv@Base 15 + _D6object6Object8opEqualsMFCQtZb@Base 15 + _D6object6Object8toStringMFZAya@Base 15 + _D6object7AARange6__initZ@Base 15 + _D6object7_xopCmpFIPvIQdZb@Base 15 + _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 + _D6object8TypeInfo4swapMxFPvQcZv@Base 15 + _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 + _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 + _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 + _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 + _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 + _D6object8TypeInfo7destroyMxFPvZv@Base 15 + _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 + _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 + _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 + _D6object8TypeInfo8postblitMxFPvZv@Base 15 + _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 + _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 + _D6object9Interface6__initZ@Base 15 + _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 + _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 + _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 + _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 + _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 + _D6object9Throwable6__initZ@Base 15 + _D6object9Throwable6__vtblZ@Base 15 + _D6object9Throwable7__ClassZ@Base 15 + _D6object9Throwable7messageMxFNbNfZAxa@Base 15 + _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 + _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 + _D6object9Throwable8toStringMFZAya@Base 15 + _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 + _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 + _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 + _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 + _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 + _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 + _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 + _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 + _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 + _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 + _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 + _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 + _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 + _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 + _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 + _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 + _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 + _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 + _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D8TypeInfo6__initZ@Base 15 + _D8TypeInfo6__vtblZ@Base 15 + _D8TypeInfo7__ClassZ@Base 15 + _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D9Exception6__initZ@Base 15 + _D9Exception6__vtblZ@Base 15 + _D9Exception7__ClassZ@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _ZNKSt10bad_typeid4whatEv@Base 15 + _ZNKSt13bad_exception4whatEv@Base 15 + _ZNKSt8bad_cast4whatEv@Base 15 + _ZNKSt9exception4whatEv@Base 15 + _ZNKSt9type_info4nameEv@Base 15 + _ZNKSt9type_info6beforeEPKS_@Base 15 + _ZNSt9exceptionD1Ev@Base 15 + _ZNSt9type_infoD1Ev@Base 15 + __CPUELT@Base 15 + __CPUMASK@Base 15 + __CPU_ALLOC@Base 15 + __CPU_ALLOC_SIZE@Base 15 + __CPU_COUNT_S@Base 15 + __CPU_FREE@Base 15 + __CPU_ISSET_S@Base 15 + __CPU_SET_S@Base 15 + __atomic_add_fetch_16@Base 15 + __atomic_add_fetch_1@Base 15 + __atomic_add_fetch_2@Base 15 + __atomic_add_fetch_4@Base 15 + __atomic_add_fetch_8@Base 15 + __atomic_and_fetch_16@Base 15 + __atomic_and_fetch_1@Base 15 + __atomic_and_fetch_2@Base 15 + __atomic_and_fetch_4@Base 15 + __atomic_and_fetch_8@Base 15 + __atomic_compare_exchange@Base 15 + __atomic_compare_exchange_16@Base 15 + __atomic_compare_exchange_1@Base 15 + __atomic_compare_exchange_2@Base 15 + __atomic_compare_exchange_4@Base 15 + __atomic_compare_exchange_8@Base 15 + __atomic_exchange@Base 15 + __atomic_exchange_16@Base 15 + __atomic_exchange_1@Base 15 + __atomic_exchange_2@Base 15 + __atomic_exchange_4@Base 15 + __atomic_exchange_8@Base 15 + __atomic_feraiseexcept@Base 15 + __atomic_fetch_add_16@Base 15 + __atomic_fetch_add_1@Base 15 + __atomic_fetch_add_2@Base 15 + __atomic_fetch_add_4@Base 15 + __atomic_fetch_add_8@Base 15 + __atomic_fetch_and_16@Base 15 + __atomic_fetch_and_1@Base 15 + __atomic_fetch_and_2@Base 15 + __atomic_fetch_and_4@Base 15 + __atomic_fetch_and_8@Base 15 + __atomic_fetch_nand_16@Base 15 + __atomic_fetch_nand_1@Base 15 + __atomic_fetch_nand_2@Base 15 + __atomic_fetch_nand_4@Base 15 + __atomic_fetch_nand_8@Base 15 + __atomic_fetch_or_16@Base 15 + __atomic_fetch_or_1@Base 15 + __atomic_fetch_or_2@Base 15 + __atomic_fetch_or_4@Base 15 + __atomic_fetch_or_8@Base 15 + __atomic_fetch_sub_16@Base 15 + __atomic_fetch_sub_1@Base 15 + __atomic_fetch_sub_2@Base 15 + __atomic_fetch_sub_4@Base 15 + __atomic_fetch_sub_8@Base 15 + __atomic_fetch_xor_16@Base 15 + __atomic_fetch_xor_1@Base 15 + __atomic_fetch_xor_2@Base 15 + __atomic_fetch_xor_4@Base 15 + __atomic_fetch_xor_8@Base 15 + __atomic_is_lock_free@Base 15 + __atomic_load@Base 15 + __atomic_load_16@Base 15 + __atomic_load_1@Base 15 + __atomic_load_2@Base 15 + __atomic_load_4@Base 15 + __atomic_load_8@Base 15 + __atomic_nand_fetch_16@Base 15 + __atomic_nand_fetch_1@Base 15 + __atomic_nand_fetch_2@Base 15 + __atomic_nand_fetch_4@Base 15 + __atomic_nand_fetch_8@Base 15 + __atomic_or_fetch_16@Base 15 + __atomic_or_fetch_1@Base 15 + __atomic_or_fetch_2@Base 15 + __atomic_or_fetch_4@Base 15 + __atomic_or_fetch_8@Base 15 + __atomic_store@Base 15 + __atomic_store_16@Base 15 + __atomic_store_1@Base 15 + __atomic_store_2@Base 15 + __atomic_store_4@Base 15 + __atomic_store_8@Base 15 + __atomic_sub_fetch_16@Base 15 + __atomic_sub_fetch_1@Base 15 + __atomic_sub_fetch_2@Base 15 + __atomic_sub_fetch_4@Base 15 + __atomic_sub_fetch_8@Base 15 + __atomic_test_and_set_16@Base 15 + __atomic_test_and_set_1@Base 15 + __atomic_test_and_set_2@Base 15 + __atomic_test_and_set_4@Base 15 + __atomic_test_and_set_8@Base 15 + __atomic_xor_fetch_16@Base 15 + __atomic_xor_fetch_1@Base 15 + __atomic_xor_fetch_2@Base 15 + __atomic_xor_fetch_4@Base 15 + __atomic_xor_fetch_8@Base 15 + __gdc_begin_catch@Base 15 + __gdc_personality_v0@Base 15 + _aApplyRcd1@Base 15 + _aApplyRcd2@Base 15 + _aApplyRcw1@Base 15 + _aApplyRcw2@Base 15 + _aApplyRdc1@Base 15 + _aApplyRdc2@Base 15 + _aApplyRdw1@Base 15 + _aApplyRdw2@Base 15 + _aApplyRwc1@Base 15 + _aApplyRwc2@Base 15 + _aApplyRwd1@Base 15 + _aApplyRwd2@Base 15 + _aApplycd1@Base 15 + _aApplycd2@Base 15 + _aApplycw1@Base 15 + _aApplycw2@Base 15 + _aApplydc1@Base 15 + _aApplydc2@Base 15 + _aApplydw1@Base 15 + _aApplydw2@Base 15 + _aApplywc1@Base 15 + _aApplywc2@Base 15 + _aApplywd1@Base 15 + _aApplywd2@Base 15 + _aaApply2@Base 15 + _aaApply@Base 15 + _aaClear@Base 15 + _aaDelX@Base 15 + _aaEqual@Base 15 + _aaGetHash@Base 15 + _aaGetRvalueX@Base 15 + _aaGetX@Base 15 + _aaGetY@Base 15 + _aaInX@Base 15 + _aaKeys@Base 15 + _aaLen@Base 15 + _aaNew@Base 15 + _aaRange@Base 15 + _aaRangeEmpty@Base 15 + _aaRangeFrontKey@Base 15 + _aaRangeFrontValue@Base 15 + _aaRangePopFront@Base 15 + _aaRehash@Base 15 + _aaValues@Base 15 + _aaVersion@Base 15 + _adEq2@Base 15 + _adSort@Base 15 + _d_allocmemory@Base 15 + _d_arrayappendcTX@Base 15 + _d_arrayappendcd@Base 15 + _d_arrayappendwd@Base 15 + _d_arraybounds@Base 15 + _d_arraybounds_index@Base 15 + _d_arraybounds_indexp@Base 15 + _d_arraybounds_slice@Base 15 + _d_arraybounds_slicep@Base 15 + _d_arrayboundsp@Base 15 + _d_arraycopy@Base 15 + _d_arrayliteralTX@Base 15 + _d_arraysetcapacity@Base 15 + _d_arraysetlengthT@Base 15 + _d_arraysetlengthiT@Base 15 + _d_arrayshrinkfit@Base 15 + _d_assert@Base 15 + _d_assert_msg@Base 15 + _d_assertp@Base 15 + _d_assocarrayliteralTX@Base 15 + _d_callfinalizer@Base 15 + _d_callinterfacefinalizer@Base 15 + _d_class_cast@Base 15 + _d_createTrace@Base 15 + _d_critical_init@Base 15 + _d_critical_term@Base 15 + _d_criticalenter2@Base 15 + _d_criticalenter@Base 15 + _d_criticalexit@Base 15 + _d_delThrowable@Base 15 + _d_delclass@Base 15 + _d_delinterface@Base 15 + _d_delmemory@Base 15 + _d_dso_registry@Base 15 + _d_dynamic_cast@Base 15 + _d_eh_swapContext@Base 15 + _d_initMonoTime@Base 15 + _d_interface_cast@Base 15 + _d_isbaseof2@Base 15 + _d_isbaseof@Base 15 + _d_monitor_staticctor@Base 15 + _d_monitor_staticdtor@Base 15 + _d_monitordelete@Base 15 + _d_monitordelete_nogc@Base 15 + _d_monitorenter@Base 15 + _d_monitorexit@Base 15 + _d_newarrayT@Base 15 + _d_newarrayU@Base 15 + _d_newarrayiT@Base 15 + _d_newclass@Base 15 + _d_newitemU@Base 15 + _d_paint_cast@Base 15 + _d_print_throwable@Base 15 + _d_register_conservative_gc@Base 15 + _d_register_manual_gc@Base 15 + _d_register_precise_gc@Base 15 + _d_run_main2@Base 15 + _d_run_main@Base 15 + _d_setSameMutex@Base 15 + _d_throw@Base 15 + _d_toObject@Base 15 + _d_traceContext@Base 15 + _d_unittest@Base 15 + _d_unittest_msg@Base 15 + _d_unittestp@Base 15 + atomic_flag_clear@Base 15 + atomic_flag_clear_explicit@Base 15 + atomic_flag_test_and_set@Base 15 + atomic_flag_test_and_set_explicit@Base 15 + atomic_signal_fence@Base 15 + atomic_thread_fence@Base 15 + backtrace_alloc@Base 15 + backtrace_close@Base 15 + backtrace_create_state@Base 15 + backtrace_dwarf_add@Base 15 + backtrace_free@Base 15 + backtrace_full@Base 15 + backtrace_get_view@Base 15 + backtrace_initialize@Base 15 + backtrace_open@Base 15 + backtrace_pcinfo@Base 15 + backtrace_print@Base 15 + backtrace_qsort@Base 15 + backtrace_release_view@Base 15 + backtrace_simple@Base 15 + backtrace_syminfo@Base 15 + backtrace_syminfo_to_full_callback@Base 15 + backtrace_syminfo_to_full_error_callback@Base 15 + backtrace_uncompress_lzma@Base 15 + backtrace_uncompress_zdebug@Base 15 + backtrace_uncompress_zstd@Base 15 + backtrace_vector_finish@Base 15 + backtrace_vector_grow@Base 15 + backtrace_vector_release@Base 15 + cimag@Base 15 + cimagf@Base 15 + cimagl@Base 15 + creald@Base 15 + crealf@Base 15 + creall@Base 15 + fakePureErrnoImpl@Base 15 + fakePureReprintReal@Base 15 + fiber_entryPoint@Base 15 + fiber_switchContext@Base 15 + gc_addRange@Base 15 + gc_addRoot@Base 15 + gc_addrOf@Base 15 + gc_allocatedInCurrentThread@Base 15 + gc_calloc@Base 15 + gc_clrAttr@Base 15 + gc_clrProxy@Base 15 + gc_collect@Base 15 + gc_disable@Base 15 + gc_enable@Base 15 + gc_expandArrayUsed@Base 15 + gc_extend@Base 15 + gc_free@Base 15 + gc_getArrayUsed@Base 15 + gc_getAttr@Base 15 + gc_getProxy@Base 15 + gc_inFinalizer@Base 15 + gc_init@Base 15 + gc_init_nothrow@Base 15 + gc_malloc@Base 15 + gc_minimize@Base 15 + gc_profileStats@Base 15 + gc_qalloc@Base 15 + gc_query@Base 15 + gc_realloc@Base 15 + gc_removeRange@Base 15 + gc_removeRoot@Base 15 + gc_reserve@Base 15 + gc_reserveArrayCapacity@Base 15 + gc_runFinalizers@Base 15 + gc_setAttr@Base 15 + gc_setProxy@Base 15 + gc_shrinkArrayUsed@Base 15 + gc_sizeOf@Base 15 + gc_stats@Base 15 + gc_term@Base 15 + getErrno@Base 15 + libat_lock_n@Base 15 + libat_unlock_n@Base 15 + lifetime_init@Base 15 + onArrayIndexError@Base 15 + onArraySliceError@Base 15 + onAssertError@Base 15 + onAssertErrorMsg@Base 15 + onFinalizeError@Base 15 + onForkError@Base 15 + onInvalidMemoryOperationError@Base 15 + onOutOfMemoryError@Base 15 + onOutOfMemoryErrorNoGC@Base 15 + onRangeError@Base 15 + onUnicodeError@Base 15 + onUnittestErrorMsg@Base 15 + pcinfoCallback@Base 15 + pcinfoErrorCallback@Base 15 + perf_event_open@Base 15 + profilegc_setlogfilename@Base 15 + register_default_gcs@Base 15 + rt_args@Base 15 + rt_attachDisposeEvent@Base 15 + rt_cArgs@Base 15 + rt_cmdline_enabled@Base 15 + rt_detachDisposeEvent@Base 15 + rt_envvars_enabled@Base 15 + rt_finalize2@Base 15 + rt_finalize@Base 15 + rt_finalizeFromGC@Base 15 + rt_getCollectHandler@Base 15 + rt_getTraceDeallocator@Base 15 + rt_getTraceHandler@Base 15 + rt_hasFinalizerInSegment@Base 15 + rt_init@Base 15 + rt_loadLibrary@Base 15 + rt_moduleCtor@Base 15 + rt_moduleDtor@Base 15 + rt_moduleTlsCtor@Base 15 + rt_moduleTlsDtor@Base 15 + rt_options@Base 15 + rt_setCollectHandler@Base 15 + rt_setTraceHandler@Base 15 + rt_term@Base 15 + rt_trapExceptions@Base 15 + rt_unloadLibrary@Base 15 + runModuleUnitTests@Base 15 + setErrno@Base 15 + simpleCallback@Base 15 + simpleErrorCallback@Base 15 + syminfoCallback2@Base 15 + syminfoCallback@Base 15 + thread_attachThis@Base 15 + thread_detachByAddr@Base 15 + thread_detachInstance@Base 15 + thread_detachThis@Base 15 + thread_entryPoint@Base 15 + thread_init@Base 15 + thread_isMainThread@Base 15 + thread_joinAll@Base 15 + thread_postRestartTheWorld@Base 15 + thread_postSuspend@Base 15 + thread_preStopTheWorld@Base 15 + thread_preSuspend@Base 15 + thread_resumeAll@Base 15 + thread_resumeHandler@Base 15 + thread_scanAll@Base 15 + thread_scanAllType@Base 15 + thread_setGCSignals@Base 15 + thread_setThis@Base 15 + thread_stackBottom@Base 15 + thread_stackTop@Base 15 + thread_suspendAll@Base 15 + thread_suspendHandler@Base 15 + thread_term@Base 15 + tipc_addr@Base 15 + tipc_cluster@Base 15 + tipc_node@Base 15 + tipc_zone@Base 15 +libgphobos.so.6 libgphobos6 #MINVER# + CPU_ALLOC@Base 15 + CPU_ALLOC_SIZE@Base 15 + CPU_COUNT@Base 15 + CPU_COUNT_S@Base 15 + CPU_FREE@Base 15 + CPU_ISSET@Base 15 + CPU_SET@Base 15 + LOG_MASK@Base 15 + LOG_UPTO@Base 15 + SIGRTMAX@Base 15 + SIGRTMIN@Base 15 + S_TYPEISMQ@Base 15 + S_TYPEISSEM@Base 15 + S_TYPEISSHM@Base 15 + TPACKET_ALIGN@Base 15 + _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D101TypeInfo_S3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 + _D101TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 + _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D101TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 + _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D102TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 + _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 + _D103TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 + _D105TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 + _D109TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 + _D10TypeInfo_a6__initZ@Base 15 + _D10TypeInfo_a6__vtblZ@Base 15 + _D10TypeInfo_a7__ClassZ@Base 15 + _D10TypeInfo_b6__initZ@Base 15 + _D10TypeInfo_b6__vtblZ@Base 15 + _D10TypeInfo_b7__ClassZ@Base 15 + _D10TypeInfo_c6__initZ@Base 15 + _D10TypeInfo_c6__vtblZ@Base 15 + _D10TypeInfo_c7__ClassZ@Base 15 + _D10TypeInfo_d6__initZ@Base 15 + _D10TypeInfo_d6__vtblZ@Base 15 + _D10TypeInfo_d7__ClassZ@Base 15 + _D10TypeInfo_e6__initZ@Base 15 + _D10TypeInfo_e6__vtblZ@Base 15 + _D10TypeInfo_e7__ClassZ@Base 15 + _D10TypeInfo_f6__initZ@Base 15 + _D10TypeInfo_f6__vtblZ@Base 15 + _D10TypeInfo_f7__ClassZ@Base 15 + _D10TypeInfo_g6__initZ@Base 15 + _D10TypeInfo_g6__vtblZ@Base 15 + _D10TypeInfo_g7__ClassZ@Base 15 + _D10TypeInfo_h6__initZ@Base 15 + _D10TypeInfo_h6__vtblZ@Base 15 + _D10TypeInfo_h7__ClassZ@Base 15 + _D10TypeInfo_i6__initZ@Base 15 + _D10TypeInfo_i6__vtblZ@Base 15 + _D10TypeInfo_i7__ClassZ@Base 15 + _D10TypeInfo_j6__initZ@Base 15 + _D10TypeInfo_j6__vtblZ@Base 15 + _D10TypeInfo_j7__ClassZ@Base 15 + _D10TypeInfo_k6__initZ@Base 15 + _D10TypeInfo_k6__vtblZ@Base 15 + _D10TypeInfo_k7__ClassZ@Base 15 + _D10TypeInfo_l6__initZ@Base 15 + _D10TypeInfo_l6__vtblZ@Base 15 + _D10TypeInfo_l7__ClassZ@Base 15 + _D10TypeInfo_m6__initZ@Base 15 + _D10TypeInfo_m6__vtblZ@Base 15 + _D10TypeInfo_m7__ClassZ@Base 15 + _D10TypeInfo_n6__initZ@Base 15 + _D10TypeInfo_n6__vtblZ@Base 15 + _D10TypeInfo_n7__ClassZ@Base 15 + _D10TypeInfo_o6__initZ@Base 15 + _D10TypeInfo_o6__vtblZ@Base 15 + _D10TypeInfo_o7__ClassZ@Base 15 + _D10TypeInfo_p6__initZ@Base 15 + _D10TypeInfo_p6__vtblZ@Base 15 + _D10TypeInfo_p7__ClassZ@Base 15 + _D10TypeInfo_q6__initZ@Base 15 + _D10TypeInfo_q6__vtblZ@Base 15 + _D10TypeInfo_q7__ClassZ@Base 15 + _D10TypeInfo_r6__initZ@Base 15 + _D10TypeInfo_r6__vtblZ@Base 15 + _D10TypeInfo_r7__ClassZ@Base 15 + _D10TypeInfo_s6__initZ@Base 15 + _D10TypeInfo_s6__vtblZ@Base 15 + _D10TypeInfo_s7__ClassZ@Base 15 + _D10TypeInfo_t6__initZ@Base 15 + _D10TypeInfo_t6__vtblZ@Base 15 + _D10TypeInfo_t7__ClassZ@Base 15 + _D10TypeInfo_u6__initZ@Base 15 + _D10TypeInfo_u6__vtblZ@Base 15 + _D10TypeInfo_u7__ClassZ@Base 15 + _D10TypeInfo_v6__initZ@Base 15 + _D10TypeInfo_v6__vtblZ@Base 15 + _D10TypeInfo_v7__ClassZ@Base 15 + _D10TypeInfo_w6__initZ@Base 15 + _D10TypeInfo_w6__vtblZ@Base 15 + _D10TypeInfo_w7__ClassZ@Base 15 + _D110TypeInfo_S3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 + _D111TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D111TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 + _D111TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 + _D112TypeInfo_OS3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D118TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D11TypeInfo_Aa6__initZ@Base 15 + _D11TypeInfo_Aa6__vtblZ@Base 15 + _D11TypeInfo_Aa7__ClassZ@Base 15 + _D11TypeInfo_Ab6__initZ@Base 15 + _D11TypeInfo_Ab6__vtblZ@Base 15 + _D11TypeInfo_Ab7__ClassZ@Base 15 + _D11TypeInfo_Ac6__initZ@Base 15 + _D11TypeInfo_Ac6__vtblZ@Base 15 + _D11TypeInfo_Ac7__ClassZ@Base 15 + _D11TypeInfo_Ad6__initZ@Base 15 + _D11TypeInfo_Ad6__vtblZ@Base 15 + _D11TypeInfo_Ad7__ClassZ@Base 15 + _D11TypeInfo_Ae6__initZ@Base 15 + _D11TypeInfo_Ae6__vtblZ@Base 15 + _D11TypeInfo_Ae7__ClassZ@Base 15 + _D11TypeInfo_Af6__initZ@Base 15 + _D11TypeInfo_Af6__vtblZ@Base 15 + _D11TypeInfo_Af7__ClassZ@Base 15 + _D11TypeInfo_Ag6__initZ@Base 15 + _D11TypeInfo_Ag6__vtblZ@Base 15 + _D11TypeInfo_Ag7__ClassZ@Base 15 + _D11TypeInfo_Ah6__initZ@Base 15 + _D11TypeInfo_Ah6__vtblZ@Base 15 + _D11TypeInfo_Ah7__ClassZ@Base 15 + _D11TypeInfo_Ai6__initZ@Base 15 + _D11TypeInfo_Ai6__vtblZ@Base 15 + _D11TypeInfo_Ai7__ClassZ@Base 15 + _D11TypeInfo_Aj6__initZ@Base 15 + _D11TypeInfo_Aj6__vtblZ@Base 15 + _D11TypeInfo_Aj7__ClassZ@Base 15 + _D11TypeInfo_Ak6__initZ@Base 15 + _D11TypeInfo_Ak6__vtblZ@Base 15 + _D11TypeInfo_Ak7__ClassZ@Base 15 + _D11TypeInfo_Al6__initZ@Base 15 + _D11TypeInfo_Al6__vtblZ@Base 15 + _D11TypeInfo_Al7__ClassZ@Base 15 + _D11TypeInfo_Am6__initZ@Base 15 + _D11TypeInfo_Am6__vtblZ@Base 15 + _D11TypeInfo_Am7__ClassZ@Base 15 + _D11TypeInfo_Ao6__initZ@Base 15 + _D11TypeInfo_Ao6__vtblZ@Base 15 + _D11TypeInfo_Ao7__ClassZ@Base 15 + _D11TypeInfo_Ap6__initZ@Base 15 + _D11TypeInfo_Ap6__vtblZ@Base 15 + _D11TypeInfo_Ap7__ClassZ@Base 15 + _D11TypeInfo_Aq6__initZ@Base 15 + _D11TypeInfo_Aq6__vtblZ@Base 15 + _D11TypeInfo_Aq7__ClassZ@Base 15 + _D11TypeInfo_Ar6__initZ@Base 15 + _D11TypeInfo_Ar6__vtblZ@Base 15 + _D11TypeInfo_Ar7__ClassZ@Base 15 + _D11TypeInfo_As6__initZ@Base 15 + _D11TypeInfo_As6__vtblZ@Base 15 + _D11TypeInfo_As7__ClassZ@Base 15 + _D11TypeInfo_At6__initZ@Base 15 + _D11TypeInfo_At6__vtblZ@Base 15 + _D11TypeInfo_At7__ClassZ@Base 15 + _D11TypeInfo_Au6__initZ@Base 15 + _D11TypeInfo_Au6__vtblZ@Base 15 + _D11TypeInfo_Au7__ClassZ@Base 15 + _D11TypeInfo_Av6__initZ@Base 15 + _D11TypeInfo_Av6__vtblZ@Base 15 + _D11TypeInfo_Av7__ClassZ@Base 15 + _D11TypeInfo_Aw6__initZ@Base 15 + _D11TypeInfo_Aw6__vtblZ@Base 15 + _D11TypeInfo_Aw7__ClassZ@Base 15 + _D11TypeInfo_Oa6__initZ@Base 15 + _D11TypeInfo_Ou6__initZ@Base 15 + _D11TypeInfo_Pa6__initZ@Base 15 + _D11TypeInfo_xa6__initZ@Base 15 + _D11TypeInfo_xb6__initZ@Base 15 + _D11TypeInfo_xd6__initZ@Base 15 + _D11TypeInfo_xe6__initZ@Base 15 + _D11TypeInfo_xf6__initZ@Base 15 + _D11TypeInfo_xh6__initZ@Base 15 + _D11TypeInfo_xi6__initZ@Base 15 + _D11TypeInfo_xk6__initZ@Base 15 + _D11TypeInfo_xl6__initZ@Base 15 + _D11TypeInfo_xm6__initZ@Base 15 + _D11TypeInfo_xt6__initZ@Base 15 + _D11TypeInfo_xu6__initZ@Base 15 + _D11TypeInfo_xv6__initZ@Base 15 + _D11TypeInfo_xw6__initZ@Base 15 + _D11TypeInfo_ya6__initZ@Base 15 + _D11TypeInfo_yb6__initZ@Base 15 + _D11TypeInfo_yh6__initZ@Base 15 + _D11TypeInfo_yi6__initZ@Base 15 + _D11TypeInfo_yk6__initZ@Base 15 + _D11TypeInfo_ym6__initZ@Base 15 + _D11TypeInfo_yu6__initZ@Base 15 + _D11TypeInfo_yw6__initZ@Base 15 + _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D121TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 + _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D123TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 + _D124TypeInfo_S3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 + _D125TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 + _D126TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 + _D127TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D127TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D128TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D128TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_G2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_G2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D129TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D12TypeInfo_AOa6__initZ@Base 15 + _D12TypeInfo_AOu6__initZ@Base 15 + _D12TypeInfo_Axa6__initZ@Base 15 + _D12TypeInfo_Axa6__vtblZ@Base 15 + _D12TypeInfo_Axa7__ClassZ@Base 15 + _D12TypeInfo_Axf6__initZ@Base 15 + _D12TypeInfo_Axh6__initZ@Base 15 + _D12TypeInfo_Axk6__initZ@Base 15 + _D12TypeInfo_Axm6__initZ@Base 15 + _D12TypeInfo_Axu6__initZ@Base 15 + _D12TypeInfo_Axv6__initZ@Base 15 + _D12TypeInfo_Axw6__initZ@Base 15 + _D12TypeInfo_Aya6__initZ@Base 15 + _D12TypeInfo_Aya6__vtblZ@Base 15 + _D12TypeInfo_Aya7__ClassZ@Base 15 + _D12TypeInfo_Ayh6__initZ@Base 15 + _D12TypeInfo_Ayk6__initZ@Base 15 + _D12TypeInfo_Aym6__initZ@Base 15 + _D12TypeInfo_Ayu6__initZ@Base 15 + _D12TypeInfo_Ayw6__initZ@Base 15 + _D12TypeInfo_FZv6__initZ@Base 15 + _D12TypeInfo_G2m6__initZ@Base 15 + _D12TypeInfo_G3m6__initZ@Base 15 + _D12TypeInfo_G4a6__initZ@Base 15 + _D12TypeInfo_G4m6__initZ@Base 15 + _D12TypeInfo_G8h6__initZ@Base 15 + _D12TypeInfo_Oxk6__initZ@Base 15 + _D12TypeInfo_Pxa6__initZ@Base 15.2 + _D12TypeInfo_Pxd6__initZ@Base 15.2 + _D12TypeInfo_Pxh6__initZ@Base 15 + _D12TypeInfo_Pxk6__initZ@Base 15.2 + _D12TypeInfo_Pxv6__initZ@Base 15 + _D12TypeInfo_xAa6__initZ@Base 15 + _D12TypeInfo_xAf6__initZ@Base 15 + _D12TypeInfo_xAh6__initZ@Base 15 + _D12TypeInfo_xAk6__initZ@Base 15 + _D12TypeInfo_xAm6__initZ@Base 15 + _D12TypeInfo_xAu6__initZ@Base 15 + _D12TypeInfo_xAv6__initZ@Base 15 + _D12TypeInfo_xAw6__initZ@Base 15 + _D12TypeInfo_xPa6__initZ@Base 15.2 + _D12TypeInfo_xPd6__initZ@Base 15.2 + _D12TypeInfo_xPh6__initZ@Base 15 + _D12TypeInfo_xPk6__initZ@Base 15.2 + _D12TypeInfo_xPv6__initZ@Base 15 + _D12TypeInfo_yAa6__initZ@Base 15 + _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D130TypeInfo_xS3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 + _D131TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 + _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D134TypeInfo_xS3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 + _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D13TypeInfo_AAya6__initZ@Base 15 + _D13TypeInfo_AxPv6__initZ@Base 15 + _D13TypeInfo_AyAa6__initZ@Base 15 + _D13TypeInfo_DFZv6__initZ@Base 15 + _D13TypeInfo_Enum6__initZ@Base 15 + _D13TypeInfo_Enum6__vtblZ@Base 15 + _D13TypeInfo_Enum7__ClassZ@Base 15 + _D13TypeInfo_G12a6__initZ@Base 15 + _D13TypeInfo_G48a6__initZ@Base 15 + _D13TypeInfo_xAPv6__initZ@Base 15 + _D13TypeInfo_xAya6__initZ@Base 15 + _D13TypeInfo_xAym6__initZ@Base 15 + _D13TypeInfo_xAyu6__initZ@Base 15 + _D13TypeInfo_xAyw6__initZ@Base 15 + _D13TypeInfo_xG2m6__initZ@Base 15 + _D13TypeInfo_xG3m6__initZ@Base 15 + _D13TypeInfo_xG4a6__initZ@Base 15 + _D13TypeInfo_xG4m6__initZ@Base 15 + _D13TypeInfo_xG8h6__initZ@Base 15 + _D140TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D142TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 + _D144TypeInfo_S3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 + _D145TypeInfo_S3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 + _D14TypeInfo_Array6__initZ@Base 15 + _D14TypeInfo_Array6__vtblZ@Base 15 + _D14TypeInfo_Array7__ClassZ@Base 15 + _D14TypeInfo_AxAya6__initZ@Base 15 + _D14TypeInfo_Class6__initZ@Base 15 + _D14TypeInfo_Class6__vtblZ@Base 15 + _D14TypeInfo_Class7__ClassZ@Base 15 + _D14TypeInfo_Const6__initZ@Base 15 + _D14TypeInfo_Const6__vtblZ@Base 15 + _D14TypeInfo_Const7__ClassZ@Base 15 + _D14TypeInfo_FPvZv6__initZ@Base 15 + _D14TypeInfo_HAxam6__initZ@Base 15 + _D14TypeInfo_Inout6__initZ@Base 15 + _D14TypeInfo_Inout6__vtblZ@Base 15 + _D14TypeInfo_Inout7__ClassZ@Base 15 + _D14TypeInfo_Tuple6__initZ@Base 15 + _D14TypeInfo_Tuple6__vtblZ@Base 15 + _D14TypeInfo_Tuple7__ClassZ@Base 15 + _D14TypeInfo_UPvZv6__initZ@Base 15.2 + _D14TypeInfo_xAAya6__initZ@Base 15 + _D14TypeInfo_xDFZv6__initZ@Base 15 + _D14TypeInfo_xG12a6__initZ@Base 15 + _D14TypeInfo_xG48a6__initZ@Base 15 + _D150TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 + _D152TypeInfo_S3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 + _D152TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D155TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 + _D156TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 + _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 + _D157TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D159TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 + _D159TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D15TypeInfo_HAyaQd6__initZ@Base 15 + _D15TypeInfo_PFPvZv6__initZ@Base 15 + _D15TypeInfo_PUPvZv6__initZ@Base 15.2 + _D15TypeInfo_Shared6__initZ@Base 15 + _D15TypeInfo_Shared6__vtblZ@Base 15 + _D15TypeInfo_Shared7__ClassZ@Base 15 + _D15TypeInfo_Struct6__initZ@Base 15 + _D15TypeInfo_Struct6__vtblZ@Base 15 + _D15TypeInfo_Struct7__ClassZ@Base 15 + _D15TypeInfo_Vector6__initZ@Base 15 + _D15TypeInfo_Vector6__vtblZ@Base 15 + _D15TypeInfo_Vector7__ClassZ@Base 15 + _D160TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D161TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 + _D163TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 + _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D165TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 + _D167TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 + _D167TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 + _D16TypeInfo_HAyaAQe6__initZ@Base 15 + _D16TypeInfo_HPxvAya6__initZ@Base 15 + _D16TypeInfo_Pointer6__initZ@Base 15 + _D16TypeInfo_Pointer6__vtblZ@Base 15 + _D16TypeInfo_Pointer7__ClassZ@Base 15 + _D16TypeInfo_xPFPvZv6__initZ@Base 15 + _D16TypeInfo_xPUPvZv6__initZ@Base 15.2 + _D175TypeInfo_S3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D177TypeInfo_S3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 + _D178TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 + _D179TypeInfo_S3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 + _D17TypeInfo_Delegate6__initZ@Base 15 + _D17TypeInfo_Delegate6__vtblZ@Base 15 + _D17TypeInfo_Delegate7__ClassZ@Base 15 + _D17TypeInfo_Function6__initZ@Base 15 + _D17TypeInfo_Function6__vtblZ@Base 15 + _D17TypeInfo_Function7__ClassZ@Base 15 + _D183TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D184TypeInfo_S3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D184TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D185TypeInfo_G4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D185TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 + _D185TypeInfo_S3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 + _D185TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 + _D185TypeInfo_xS3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D186TypeInfo_xG4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D188TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 + _D18TypeInfo_HAyaAxAya6__initZ@Base 15.2 + _D18TypeInfo_Interface6__initZ@Base 15 + _D18TypeInfo_Interface6__vtblZ@Base 15 + _D18TypeInfo_Interface7__ClassZ@Base 15 + _D18TypeInfo_Invariant6__initZ@Base 15 + _D18TypeInfo_Invariant6__vtblZ@Base 15 + _D18TypeInfo_Invariant7__ClassZ@Base 15 + _D18TypeInfo_xC6Object6__initZ@Base 15 + _D190TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D191TypeInfo_xS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_AxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_PxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_S3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 + _D192TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D192TypeInfo_xAS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D192TypeInfo_xPS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 + _D202TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 + _D205TypeInfo_S3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 + _D208TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 + _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 + _D20TypeInfo_S6object2AA6__initZ@Base 15 + _D20TypeInfo_StaticArray6__initZ@Base 15 + _D20TypeInfo_StaticArray6__vtblZ@Base 15 + _D20TypeInfo_StaticArray7__ClassZ@Base 15 + _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 + _D219TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 + _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 + _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 + _D230TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 + _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 + _D23TypeInfo_E3std3uni4Mode6__initZ@Base 15 + _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 + _D249TypeInfo_S3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 + _D24TypeInfo_E3std6system2OS6__initZ@Base 15 + _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 + _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 + _D24TypeInfo_S3std4uuid4UUID6__initZ@Base 15 + _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 + _D250TypeInfo_S3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 + _D251TypeInfo_S3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__initZ@Base 15 + _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 + _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 + _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_E3std6system3ISA6__initZ@Base 15 + _D25TypeInfo_S3etc1c4curl3_N26__initZ@Base 15 + _D25TypeInfo_S3std5stdio4File6__initZ@Base 15 + _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 + _D25TypeInfo_S6object7AARange6__initZ@Base 15 + _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 + _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 + _D261TypeInfo_S4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 + _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 + _D26TypeInfo_S3etc1c4curl4_N286__initZ@Base 15 + _D26TypeInfo_S3etc1c4curl4_N316__initZ@Base 15 + _D26TypeInfo_S3std3uni7unicode6__initZ@Base 15 + _D26TypeInfo_S3std5stdio5lines6__initZ@Base 15 + _D26TypeInfo_S3std8typecons2No6__initZ@Base 15 + _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 + _D26TypeInfo_xS3std5stdio4File6__initZ@Base 15 + _D27TypeInfo_E3etc1c4curl5CurlM6__initZ@Base 15 + _D27TypeInfo_E3std6digest5Order6__initZ@Base 15 + _D27TypeInfo_E3std8encoding3BOM6__initZ@Base 15 + _D27TypeInfo_S3std3net4curl3FTP6__initZ@Base 15 + _D27TypeInfo_S3std3uni8GcPolicy6__initZ@Base 15 + _D27TypeInfo_S3std3uni8Grapheme6__initZ@Base 15 + _D27TypeInfo_S3std7process4Pipe6__initZ@Base 15 + _D27TypeInfo_S3std7sumtype4This6__initZ@Base 15 + _D27TypeInfo_S3std8typecons3Yes6__initZ@Base 15 + _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 + _D27TypeInfo_S6object9Interface6__initZ@Base 15 + _D28TypeInfo_C3std6digest6Digest6__initZ@Base 15 + _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 + _D28TypeInfo_E3std3csv9Malformed6__initZ@Base 15 + _D28TypeInfo_E3std4file8SpanMode6__initZ@Base 15 + _D28TypeInfo_E3std4json8JSONType6__initZ@Base 15 + _D28TypeInfo_E3std6getopt6config6__initZ@Base 15 + _D28TypeInfo_E3std6system6Endian6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4Curl6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4HTTP6__initZ@Base 15 + _D28TypeInfo_S3std3net4curl4SMTP6__initZ@Base 15 + _D28TypeInfo_S3std4file8DirEntry6__initZ@Base 15 + _D28TypeInfo_S3std6bigint6BigInt6__initZ@Base 15 + _D28TypeInfo_S3std6digest2md3MD56__initZ@Base 15 + _D28TypeInfo_S3std6getopt6Option6__initZ@Base 15 + _D28TypeInfo_S3std6int1286Int1286__initZ@Base 15 + _D28TypeInfo_S3std6socket6Linger6__initZ@Base 15 + _D29TypeInfo_AS3std4file8DirEntry6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlFtp6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlMsg6__initZ@Base 15 + _D29TypeInfo_E3etc1c4curl7CurlVer6__initZ@Base 15 + _D29TypeInfo_E3std5stdio8LockType6__initZ@Base 15 + _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 + _D29TypeInfo_S3etc1c4curl7CURLMsg6__initZ@Base 15 + _D29TypeInfo_S3std4json9JSONValue6__initZ@Base 15 + _D29TypeInfo_S3std5range8NullSink6__initZ@Base 15 + _D29TypeInfo_S3std6socket7TimeVal6__initZ@Base 15 + _D29TypeInfo_S3std7process6Config6__initZ@Base 15 + _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 + _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 + _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 + _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 + _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 + _D29TypeInfo_xE3std4file8SpanMode6__initZ@Base 15 + _D29TypeInfo_xS3std3net4curl4Curl6__initZ@Base 15 + _D29TypeInfo_xS3std4file8DirEntry6__initZ@Base 15 + _D29TypeInfo_xS3std6getopt6Option6__initZ@Base 15 + _D2rt10invariant_11__moduleRefZ@Base 15.2 + _D2rt10invariant_12__ModuleInfoZ@Base 15.2 + _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 + _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 + _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 + _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 + _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 + _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 + _D2rt3aaA11__moduleRefZ@Base 15 + _D2rt3aaA12__ModuleInfoZ@Base 15 + _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 + _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA2AA6__initZ@Base 15 + _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 + _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 + _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 + _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 + _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 + _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 + _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 + _D2rt3aaA4Impl6__initZ@Base 15 + _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 + _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 + _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 + _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 + _D2rt3aaA5Range6__initZ@Base 15 + _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6Bucket6__initZ@Base 15 + _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 + _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 + _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 + _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 + _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 + _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 + _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 + _D2rt3adi11__moduleRefZ@Base 15 + _D2rt3adi12__ModuleInfoZ@Base 15 + _D2rt3deh11__moduleRefZ@Base 15 + _D2rt3deh12__ModuleInfoZ@Base 15 + _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D2rt4util7utility11__moduleRefZ@Base 15 + _D2rt4util7utility12__ModuleInfoZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 + _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 + _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo11__moduleRefZ@Base 15 + _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 + _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 + _D2rt5cast_11__moduleRefZ@Base 15 + _D2rt5cast_12__ModuleInfoZ@Base 15 + _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 + _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 + _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 + _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 + _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 + _D2rt5minfo11ModuleGroup6__initZ@Base 15 + _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 + _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 + _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 + _D2rt5minfo11__moduleRefZ@Base 15 + _D2rt5minfo12__ModuleInfoZ@Base 15 + _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 + _D2rt5tlsgc11__moduleRefZ@Base 15 + _D2rt5tlsgc12__ModuleInfoZ@Base 15 + _D2rt5tlsgc4Data6__initZ@Base 15 + _D2rt5tlsgc4initFNbNiZPv@Base 15 + _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 + _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 + _D2rt6aApply11__moduleRefZ@Base 15 + _D2rt6aApply12__ModuleInfoZ@Base 15 + _D2rt6config11__moduleRefZ@Base 15 + _D2rt6config12__ModuleInfoZ@Base 15 + _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 + _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 + _D2rt6dmain210_initCountOm@Base 15 + _D2rt6dmain211__moduleRefZ@Base 15 + _D2rt6dmain212__ModuleInfoZ@Base 15 + _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 + _D2rt6dmain214UnitTestResult6__initZ@Base 15 + _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 + _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 + _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 + _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 + _D2rt6dmain25CArgs6__initZ@Base 15 + _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 + _D2rt6dmain27_d_argsAAya@Base 15 + _D2rt6memory11__moduleRefZ@Base 15 + _D2rt6memory12__ModuleInfoZ@Base 15 + _D2rt6memory16initStaticDataGCFZv@Base 15 + _D2rt7aApplyR11__moduleRefZ@Base 15 + _D2rt7aApplyR12__ModuleInfoZ@Base 15 + _D2rt7ehalloc11__moduleRefZ@Base 15 + _D2rt7ehalloc12__ModuleInfoZ@Base 15 + _D2rt8arraycat11__moduleRefZ@Base 15 + _D2rt8arraycat12__ModuleInfoZ@Base 15 + _D2rt8lifetime11__moduleRefZ@Base 15 + _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 + _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 + _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 + _D2rt8lifetime11newCapacityFmmZm@Base 15 + _D2rt8lifetime12__ModuleInfoZ@Base 15 + _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 + _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 + _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 + _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 + _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 + _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 + _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 + _D2rt8monitor_11__moduleRefZ@Base 15 + _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12__ModuleInfoZ@Base 15 + _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 + _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 + _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 + _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 + _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 + _D2rt8monitor_7Monitor6__initZ@Base 15 + _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 + _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 + _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 + _D2rt8sections11__moduleRefZ@Base 15 + _D2rt8sections12__ModuleInfoZ@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 + _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 + _D2rt9critical_11__moduleRefZ@Base 15 + _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 + _D2rt9critical_12__ModuleInfoZ@Base 15 + _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 + _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 + _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 + _D2rt9profilegc11__moduleRefZ@Base 15 + _D2rt9profilegc11logfilenameAya@Base 15 + _D2rt9profilegc12__ModuleInfoZ@Base 15 + _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 + _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 + _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 + _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 + _D2rt9profilegc5Entry6__initZ@Base 15 + _D2rt9profilegc6bufferAa@Base 15 + _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 + _D30TypeInfo_AC3std6socket7Address6__initZ@Base 15 + _D30TypeInfo_AxS3std4file8DirEntry6__initZ@Base 15 + _D30TypeInfo_AxS3std6getopt6Option6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlAuth6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlForm6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlInfo6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlPoll6__initZ@Base 15 + _D30TypeInfo_E3etc1c4curl8CurlSeek6__initZ@Base 15 + _D30TypeInfo_E3std6socket8socket_t6__initZ@Base 15 + _D30TypeInfo_E3std6traits8Variadic6__initZ@Base 15 + _D30TypeInfo_E3std8compiler6Vendor6__initZ@Base 15 + _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 + _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 + _D30TypeInfo_S3etc1c4zlib8z_stream6__initZ@Base 15 + _D30TypeInfo_S3std5stdio4File4Impl6__initZ@Base 15 + _D30TypeInfo_S3std6format8NoOpSink6__initZ@Base 15 + _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 + _D30TypeInfo_xAS3std4file8DirEntry6__initZ@Base 15 + _D30TypeInfo_xAS3std6getopt6Option6__initZ@Base 15 + _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 + _D30TypeInfo_xS3std4json9JSONValue6__initZ@Base 15 + _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 + _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D316TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 + _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlError6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlIoCmd6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlPause6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlProto6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlProxy6__initZ@Base 15 + _D31TypeInfo_E3etc1c4curl9CurlRedir6__initZ@Base 15 + _D31TypeInfo_E3std3uni11GraphemeRet6__initZ@Base 15 + _D31TypeInfo_E3std7process8Redirect6__initZ@Base 15 + _D31TypeInfo_NgS3std4json9JSONValue6__initZ@Base 15.2 + _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 + _D31TypeInfo_S3etc1c4zlib9gz_header6__initZ@Base 15 + _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 + _D31TypeInfo_S3std10checkedint4Warn6__initZ@Base 15 + _D31TypeInfo_S3std11concurrency3Tid6__initZ@Base 15 + _D31TypeInfo_S3std3net4curl7CurlAPI6__initZ@Base 15 + _D31TypeInfo_S3std8typecons7Ternary6__initZ@Base 15 + _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 + _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 + _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 + _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 + _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 + _D31TypeInfo_xS3std5stdio4File4Impl6__initZ@Base 15 + _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_AS3std11concurrency3Tid6__initZ@Base 15 + _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 + _D32TypeInfo_E3std3uni12TransformRes6__initZ@Base 15 + _D32TypeInfo_E3std4json11JSONOptions6__initZ@Base 15 + _D32TypeInfo_E3std4uuid4UUID7Variant6__initZ@Base 15 + _D32TypeInfo_E3std4uuid4UUID7Version6__initZ@Base 15 + _D32TypeInfo_E3std5ascii10LetterCase6__initZ@Base 15 + _D32TypeInfo_PxS3std5stdio4File4Impl6__initZ@Base 15 + _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 + _D32TypeInfo_S3std10checkedint5Abort6__initZ@Base 15 + _D32TypeInfo_S3std10checkedint5Throw6__initZ@Base 15 + _D32TypeInfo_S3std3net4curl3FTP4Impl6__initZ@Base 15 + _D32TypeInfo_S3std3uni7unicode5block6__initZ@Base 15 + _D32TypeInfo_S3std3uni__T5StackTkZQj6__initZ@Base 15 + _D32TypeInfo_S3std5stdio10ChunksImpl6__initZ@Base 15 + _D32TypeInfo_S3std5stdio10LockedFile6__initZ@Base 15 + _D32TypeInfo_S3std8bitmanip8BitArray6__initZ@Base 15 + _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 + _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 + _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 + _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 + _D32TypeInfo_xE3std7process8Redirect6__initZ@Base 15 + _D32TypeInfo_xPS3std5stdio4File4Impl6__initZ@Base 15 + _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 + _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 + _D32TypeInfo_xS3std11concurrency3Tid6__initZ@Base 15 + _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 + _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 + _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlFtpSSL6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlGlobal6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlKHStat6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlKHType6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlOption6__initZ@Base 15 + _D33TypeInfo_E3etc1c4curl10CurlUseSSL6__initZ@Base 15 + _D33TypeInfo_E3std3uni13GraphemeState6__initZ@Base 15 + _D33TypeInfo_E3std4zlib12HeaderFormat6__initZ@Base 15 + _D33TypeInfo_E3std5ascii11ControlChar6__initZ@Base 15 + _D33TypeInfo_E3std6mmfile6MmFile4Mode6__initZ@Base 15 + _D33TypeInfo_E3std6socket10SocketType6__initZ@Base 15 + _D33TypeInfo_E3std8encoding9AsciiChar6__initZ@Base 15 + _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 + _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 + _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 + _D33TypeInfo_HAyaS3std4json9JSONValue6__initZ@Base 15 + _D33TypeInfo_HS3std11concurrency3Tidb6__initZ@Base 15.2 + _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 + _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_forms6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_khkey6__initZ@Base 15 + _D33TypeInfo_S3etc1c4curl10curl_slist6__initZ@Base 15 + _D33TypeInfo_S3etc1c7sqlite38fts5_api6__initZ@Base 15.2 + _D33TypeInfo_S3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D33TypeInfo_S3std3net4curl4SMTP4Impl6__initZ@Base 15 + _D33TypeInfo_S3std3uni13ReallocPolicy6__initZ@Base 15 + _D33TypeInfo_S3std3uni7unicode6script6__initZ@Base 15 + _D33TypeInfo_S3std8datetime4date4Date6__initZ@Base 15 + _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 + _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 + _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 + _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 + _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 + _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 + _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 + _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 + _D33TypeInfo_xS3std3net4curl3FTP4Impl6__initZ@Base 15 + _D33TypeInfo_xS3std3uni__T5StackTkZQj6__initZ@Base 15 + _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 + _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 + _D34TypeInfo_AC3std3zip13ArchiveMember6__initZ@Base 15 + _D34TypeInfo_AE3std8encoding9AsciiChar6__initZ@Base 15 + _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlCSelect6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlFormAdd6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlFtpAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlIoError6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlKHMatch6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlMOption6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlRtspReq6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlSeekPos6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlShError6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlSshAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlTlsAuth6__initZ@Base 15 + _D34TypeInfo_E3etc1c4curl11CurlVersion6__initZ@Base 15 + _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 + _D34TypeInfo_E3std4path13CaseSensitive6__initZ@Base 15 + _D34TypeInfo_E3std5range12SearchPolicy6__initZ@Base 15 + _D34TypeInfo_E3std6socket11SocketFlags6__initZ@Base 15 + _D34TypeInfo_E3std8datetime4date5Month6__initZ@Base 15 + _D34TypeInfo_S3std10checkedint7WithNaN6__initZ@Base 15 + _D34TypeInfo_S3std3uni14MatcherConcept6__initZ@Base 15 + _D34TypeInfo_S3std6socket11AddressInfo6__initZ@Base 15 + _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 + _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 + _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 + _D34TypeInfo_xC3std3zip13ArchiveMember6__initZ@Base 15 + _D34TypeInfo_xE3std6socket10SocketType6__initZ@Base 15 + _D34TypeInfo_xS3etc1c4curl10curl_slist6__initZ@Base 15 + _D34TypeInfo_xS3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D35TypeInfo_AC4core6thread5fiber5Fiber6__initZ@Base 15 + _D35TypeInfo_AS3std6socket11AddressInfo6__initZ@Base 15 + _D35TypeInfo_AxC3std3zip13ArchiveMember6__initZ@Base 15 + _D35TypeInfo_C3std8typecons10Structural6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlFileType6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlLockData6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlReadFunc6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlShOption6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlSockType6__initZ@Base 15 + _D35TypeInfo_E3etc1c4curl12CurlTimeCond6__initZ@Base 15 + _D35TypeInfo_E3std11concurrency7MsgType6__initZ@Base 15 + _D35TypeInfo_E3std3net4curl4HTTP6Method6__initZ@Base 15 + _D35TypeInfo_E3std5regex8internal2ir2IR6__initZ@Base 15 + _D35TypeInfo_E3std5stdio13StdFileHandle6__initZ@Base 15 + _D35TypeInfo_E3std6logger4core8LogLevel6__initZ@Base 15 + _D35TypeInfo_E3std6socket12ProtocolType6__initZ@Base 15 + _D35TypeInfo_E3std6socket12SocketOption6__initZ@Base 15 + _D35TypeInfo_E3std7process6Config5Flags6__initZ@Base 15 + _D35TypeInfo_E3std8encoding10Latin1Char6__initZ@Base 15 + _D35TypeInfo_E3std8encoding10Latin2Char6__initZ@Base 15 + _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 + _D35TypeInfo_HAyaS3std11concurrency3Tid6__initZ@Base 15 + _D35TypeInfo_PxS3etc1c4curl10curl_slist6__initZ@Base 15 + _D35TypeInfo_S3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 + _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D35TypeInfo_S3std10checkedint8Saturate6__initZ@Base 15 + _D35TypeInfo_S3std11concurrency7Message6__initZ@Base 15 + _D35TypeInfo_S3std3net4curl7CurlAPI3API6__initZ@Base 15 + _D35TypeInfo_S3std4json9JSONValue5Store6__initZ@Base 15 + _D35TypeInfo_S3std5range__T6RepeatTaZQk6__initZ@Base 15 + _D35TypeInfo_S3std6getopt12GetoptResult6__initZ@Base 15 + _D35TypeInfo_S3std6logger4core8MsgRange6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 + _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 + _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 + _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 + _D35TypeInfo_xAC3std3zip13ArchiveMember6__initZ@Base 15 + _D35TypeInfo_xPS3etc1c4curl10curl_slist6__initZ@Base 15 + _D35TypeInfo_xS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_AE3std8encoding10Latin1Char6__initZ@Base 15 + _D36TypeInfo_AE3std8encoding10Latin2Char6__initZ@Base 15 + _D36TypeInfo_AxS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_E3etc1c4curl13CurlFtpMethod6__initZ@Base 15 + _D36TypeInfo_E3etc1c4curl13CurlIpResolve6__initZ@Base 15 + _D36TypeInfo_E3std3net7isemail9EmailPart6__initZ@Base 15 + _D36TypeInfo_E3std5range14StoppingPolicy6__initZ@Base 15 + _D36TypeInfo_E3std6socket13AddressFamily6__initZ@Base 15 + _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 + _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D36TypeInfo_HS3std11concurrency3TidAAya6__initZ@Base 15 + _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_certinfo6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_fileinfo6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_httppost6__initZ@Base 15 + _D36TypeInfo_S3etc1c4curl13curl_sockaddr6__initZ@Base 15 + _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D36TypeInfo_S3std4file15DirIteratorImpl6__initZ@Base 15 + _D36TypeInfo_S3std5range__T6ChunksTAhZQl6__initZ@Base 15 + _D36TypeInfo_S3std5stdio14ReadlnAppender6__initZ@Base 15 + _D36TypeInfo_S3std6getopt13configuration6__initZ@Base 15 + _D36TypeInfo_S3std7process12ProcessPipes6__initZ@Base 15 + _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 + _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D36TypeInfo_xAS3std6socket11AddressInfo6__initZ@Base 15 + _D36TypeInfo_xE3std11concurrency7MsgType6__initZ@Base 15 + _D36TypeInfo_xE3std3net4curl4HTTP6Method6__initZ@Base 15 + _D36TypeInfo_xE3std6logger4core8LogLevel6__initZ@Base 15 + _D36TypeInfo_xE3std6socket12ProtocolType6__initZ@Base 15 + _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D36TypeInfo_xS3std11concurrency7Message6__initZ@Base 15 + _D375TypeInfo_S3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 + _D37TypeInfo_C3std11concurrency9Scheduler6__initZ@Base 15 + _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 + _D37TypeInfo_E3etc1c4curl14CurlLockAccess6__initZ@Base 15 + _D37TypeInfo_E3etc1c4curl14CurlSslVersion6__initZ@Base 15 + _D37TypeInfo_E3std3uni17NormalizationForm6__initZ@Base 15 + _D37TypeInfo_E3std3zip17CompressionMethod6__initZ@Base 15 + _D37TypeInfo_E3std4json16JSONFloatLiteral6__initZ@Base 15 + _D37TypeInfo_E3std4math9algebraic7PowType6__initZ@Base 15 + _D37TypeInfo_E3std6socket14SocketShutdown6__initZ@Base 15 + _D37TypeInfo_E3std7process13InternalError6__initZ@Base 15 + _D37TypeInfo_E3std8internal4test3uda4Attr6__initZ@Base 15 + _D37TypeInfo_E3std8typecons12TypeModifier6__initZ@Base 15 + _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 + _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 + _D37TypeInfo_HAyaC3std3zip13ArchiveMember6__initZ@Base 15 + _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_S3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 + _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 + _D37TypeInfo_S3std3net4curl12AutoProtocol6__initZ@Base 15 + _D37TypeInfo_S3std3uni17CodepointInterval6__initZ@Base 15 + _D37TypeInfo_S3std8datetime4date8DateTime6__initZ@Base 15 + _D37TypeInfo_S3std9container5dlist6DRange6__initZ@Base 15 + _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 + _D37TypeInfo_xE3std6socket13AddressFamily6__initZ@Base 15 + _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D37TypeInfo_xS3std4file15DirIteratorImpl6__initZ@Base 15 + _D37TypeInfo_xS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_AS3std3uni17CodepointInterval6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlClosePolicy6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlFnMAtchFunc6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlHttpVersion6__initZ@Base 15 + _D38TypeInfo_E3etc1c4curl15CurlNetRcOption6__initZ@Base 15 + _D38TypeInfo_E3std3net7isemail10AsciiToken6__initZ@Base 15 + _D38TypeInfo_E3std4math6traits10RealFormat6__initZ@Base 15 + _D38TypeInfo_E3std5stdio4File11Orientation6__initZ@Base 15 + _D38TypeInfo_E3std8datetime4date9DayOfWeek6__initZ@Base 15 + _D38TypeInfo_PxS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_S3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 + _D38TypeInfo_S3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 + _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D38TypeInfo_S3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D38TypeInfo_S3std4math8hardware9IeeeFlags6__initZ@Base 15 + _D38TypeInfo_S3std5stdio4File11ByChunkImpl6__initZ@Base 15 + _D38TypeInfo_S3std6digest6ripemd9RIPEMD1606__initZ@Base 15 + _D38TypeInfo_S3std7complex__T7ComplexTeZQl6__initZ@Base 15 + _D38TypeInfo_S3std7numeric__T6StrideTAfZQl6__initZ@Base 15 + _D38TypeInfo_S3std8datetime4date9TimeOfDay6__initZ@Base 15 + _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 + _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 + _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 + _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 + _D38TypeInfo_xPS4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D38TypeInfo_xS3std3uni17CodepointInterval6__initZ@Base 15 + _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 + _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 + _D39TypeInfo_AS3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D39TypeInfo_AxS3std3uni17CodepointInterval6__initZ@Base 15 + _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlCallbackInfo6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlChunkBgnFunc6__initZ@Base 15 + _D39TypeInfo_E3etc1c4curl16CurlChunkEndFunc6__initZ@Base 15 + _D39TypeInfo_E3std11concurrency10OnCrowding6__initZ@Base 15 + _D39TypeInfo_E3std11parallelism10TaskStatus6__initZ@Base 15 + _D39TypeInfo_E3std5range17TransverseOptions6__initZ@Base 15 + _D39TypeInfo_E3std6socket16AddressInfoFlags6__initZ@Base 15 + _D39TypeInfo_S3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D39TypeInfo_S3std11concurrency10ThreadInfo6__initZ@Base 15 + _D39TypeInfo_S3std3net7isemail11EmailStatus6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAxaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAyaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAyuZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTAywZQo6__initZ@Base 15 + _D39TypeInfo_S3std5array__T8AppenderTyAaZQo6__initZ@Base 15 + _D39TypeInfo_S3std5stdio17LockingTextReader6__initZ@Base 15 + _D39TypeInfo_S3std7variant15FakeComplexReal6__initZ@Base 15 + _D39TypeInfo_S3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8datetime7systime7SysTime6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 + _D39TypeInfo_S3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 + _D39TypeInfo_S3std9container5dlist8BaseNode6__initZ@Base 15 + _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 + _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 + _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 + _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D39TypeInfo_xAS3std3uni17CodepointInterval6__initZ@Base 15 + _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 + _D3etc1c4curl10CurlGlobal6__initZ@Base 15 + _D3etc1c4curl10CurlOption6__initZ@Base 15 + _D3etc1c4curl10curl_forms6__initZ@Base 15 + _D3etc1c4curl10curl_khkey6__initZ@Base 15 + _D3etc1c4curl10curl_slist6__initZ@Base 15 + _D3etc1c4curl11CurlCSelect6__initZ@Base 15 + _D3etc1c4curl11CurlMOption6__initZ@Base 15 + _D3etc1c4curl11CurlSshAuth6__initZ@Base 15 + _D3etc1c4curl11CurlVersion6__initZ@Base 15 + _D3etc1c4curl11__moduleRefZ@Base 15 + _D3etc1c4curl12CurlReadFunc6__initZ@Base 15 + _D3etc1c4curl12__ModuleInfoZ@Base 15 + _D3etc1c4curl13curl_certinfo6__initZ@Base 15 + _D3etc1c4curl13curl_fileinfo6__initZ@Base 15 + _D3etc1c4curl13curl_httppost6__initZ@Base 15 + _D3etc1c4curl13curl_sockaddr6__initZ@Base 15 + _D3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 + _D3etc1c4curl3_N26__initZ@Base 15 + _D3etc1c4curl4_N286__initZ@Base 15 + _D3etc1c4curl4_N316__initZ@Base 15 + _D3etc1c4curl5CurlM6__initZ@Base 15 + _D3etc1c4curl7CURLMsg6__initZ@Base 15 + _D3etc1c4curl9CurlPause6__initZ@Base 15 + _D3etc1c4curl9CurlProto6__initZ@Base 15 + _D3etc1c4odbc11__moduleRefZ@Base 15.2 + _D3etc1c4odbc12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc3sql11__moduleRefZ@Base 15.2 + _D3etc1c4odbc3sql12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3211__moduleRefZ@Base 15.2 + _D3etc1c4odbc6odbc3212__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6411__moduleRefZ@Base 15.2 + _D3etc1c4odbc6odbc6412__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc6sqlext11__moduleRefZ@Base 15.2 + _D3etc1c4odbc6sqlext12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc6sqlext15SQL_SPEC_STRINGxAa@Base 15.2 + _D3etc1c4odbc6sqlext17SQL_ODBC_KEYWORDSxAa@Base 15.2 + _D3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes11__moduleRefZ@Base 15.2 + _D3etc1c4odbc8sqltypes12__ModuleInfoZ@Base 15.2 + _D3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 + _D3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 + _D3etc1c4odbc8sqlucode11__moduleRefZ@Base 15.2 + _D3etc1c4odbc8sqlucode12__ModuleInfoZ@Base 15.2 + _D3etc1c4zlib11ZLIB_VERNUMyi@Base 15 + _D3etc1c4zlib11__moduleRefZ@Base 15 + _D3etc1c4zlib12ZLIB_VERSIONyAa@Base 15 + _D3etc1c4zlib12__ModuleInfoZ@Base 15 + _D3etc1c4zlib6Z_NULLyPv@Base 15 + _D3etc1c4zlib8z_stream6__initZ@Base 15 + _D3etc1c4zlib9gz_header6__initZ@Base 15 + _D3etc1c7sqlite311__moduleRefZ@Base 15.2 + _D3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 + _D3etc1c7sqlite312__ModuleInfoZ@Base 15.2 + _D3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 + _D3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 + _D3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 + _D3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 + _D3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 + _D3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 + _D3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info11__xopEqualsMxFKxSQCbQCaQCbQBwZb@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 + _D3etc1c7sqlite318sqlite3_index_info9__xtoHashFNbNeKxSQCaQBzQCaQBvZm@Base 15.2 + _D3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 + _D3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 + _D3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 + _D3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 + _D3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 + _D3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info11__xopEqualsMxFKxSQChQCgQChQCcZb@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 + _D3etc1c7sqlite324sqlite3_rtree_query_info9__xtoHashFNbNeKxSQCgQCfQCgQCbZm@Base 15.2 + _D3etc1c7sqlite38fts5_api6__initZ@Base 15.2 + _D3etc8valgrindQj11__moduleRefZ@Base 15 + _D3etc8valgrindQj12__ModuleInfoZ@Base 15 + _D3gcc10attributes11__moduleRefZ@Base 15 + _D3gcc10attributes12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace11__moduleRefZ@Base 15 + _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 + _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 + _D3gcc3deh11__moduleRefZ@Base 15 + _D3gcc3deh12__ModuleInfoZ@Base 15 + _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 + _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 + _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 + _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 + _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 + _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 + _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 + _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 + _D3gcc3deh15ExceptionHeader6__initZ@Base 15 + _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 + _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 + _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 + _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 + _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 + _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 + _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 + _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 + _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 + _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 + _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 + _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 + _D3gcc3deh20isDependentExceptionFNimZb@Base 15 + _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 + _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 + _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 + _D3gcc3deh9terminateFNiAyakZv@Base 15 + _D3gcc4simd11__moduleRefZ@Base 15 + _D3gcc4simd12__ModuleInfoZ@Base 15 + _D3gcc6config11__moduleRefZ@Base 15 + _D3gcc6config12__ModuleInfoZ@Base 15 + _D3gcc6emutls11__moduleRefZ@Base 15 + _D3gcc6emutls12__ModuleInfoZ@Base 15 + _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 + _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 + _D3gcc6unwind11__moduleRefZ@Base 15 + _D3gcc6unwind12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe11__moduleRefZ@Base 15 + _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 + _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 + _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 + _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 + _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 + _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 + _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 + _D3gcc6unwind3arm11__moduleRefZ@Base 15 + _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 + _D3gcc6unwind3c6x11__moduleRefZ@Base 15 + _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic11__moduleRefZ@Base 15 + _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 + _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D3gcc7gthread11__moduleRefZ@Base 15 + _D3gcc7gthread12__ModuleInfoZ@Base 15 + _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 + _D3gcc8builtins11__moduleRefZ@Base 15 + _D3gcc8builtins12__ModuleInfoZ@Base 15 + _D3gcc8builtins13__va_list_tag6__initZ@Base 15 + _D3gcc8sections11__moduleRefZ@Base 15 + _D3gcc8sections12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf10_rtLoadingb@Base 15 + _D3gcc8sections3elf11__moduleRefZ@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 + _D3gcc8sections3elf12__ModuleInfoZ@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 + _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 + _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 + _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 + _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 + _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 + _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 + _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 + _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 + _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 + _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 + _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 + _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 + _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 + _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 + _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 + _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 + _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 + _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 + _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 + _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 + _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 + _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 + _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 + _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 + _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 + _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 + _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 + _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 + _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 + _D3gcc8sections3elf3DSO6__initZ@Base 15 + _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 + _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 + _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 + _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 + _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 + _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 + _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 + _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 + _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 + _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 + _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 + _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 + _D3gcc8sections3elf9tls_index6__initZ@Base 15 + _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 + _D3gcc8sections5macho11__moduleRefZ@Base 15 + _D3gcc8sections5macho12__ModuleInfoZ@Base 15 + _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 + _D3gcc8sections6common11__moduleRefZ@Base 15 + _D3gcc8sections6common12__ModuleInfoZ@Base 15 + _D3gcc8sections6pecoff11__moduleRefZ@Base 15 + _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 + _D3gcc9attribute11__moduleRefZ@Base 15 + _D3gcc9attribute12__ModuleInfoZ@Base 15 + _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 + _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 + _D3gcc9backtrace11__moduleRefZ@Base 15 + _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 + _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 + _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 + _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 + _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 + _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 + _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _D3gcc9backtrace12__ModuleInfoZ@Base 15 + _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 + _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D3std10checkedint11__moduleRefZ@Base 15 + _D3std10checkedint12__ModuleInfoZ@Base 15 + _D3std10checkedint13ProperCompare6__initZ@Base 15 + _D3std10checkedint13ProperCompare__T9hookOpCmpTmTmZQpFNaNbNiNfmmZi@Base 15 + _D3std10checkedint4Warn13trustedStderrFNbNcNdNiNeZSQBx5stdio4File@Base 15 + _D3std10checkedint4Warn6__initZ@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 + _D3std10checkedint4Warn__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 + _D3std10checkedint4Warn__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 + _D3std10checkedint4Warn__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 + _D3std10checkedint5Abort6__initZ@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 + _D3std10checkedint5Abort__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 + _D3std10checkedint5Abort__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 + _D3std10checkedint5Abort__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 + _D3std10checkedint5Throw12CheckFailure6__initZ@Base 15 + _D3std10checkedint5Throw12CheckFailure6__vtblZ@Base 15 + _D3std10checkedint5Throw12CheckFailure7__ClassZ@Base 15 + _D3std10checkedint5Throw6__initZ@Base 15 + _D3std10checkedint7WithNaN6__initZ@Base 15 + _D3std10checkedint8Saturate6__initZ@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz11__xopEqualsMxFKxSQCnQCm__TQCdTmTQByZQCnZb@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz3getMNgFNaNbNiNfZNgm@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6toHashMxFNaNbNiNfZm@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz8__xopCmpMxFKxSQCjQCi__TQBzTmTQBuZQCjZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T10opOpAssignVAyaa1_2bTlZQyMFNcNjNfxlZSQDjQDi__TQCzTmTQCuZQDj@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTlTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxlZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTmTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxmZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T13opBinaryRightVAyaa1_2dTmZQBbMFNfxmZSQDjQDi__TQCzTmTQCuZQDj@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T17opBinaryRightImplVAyaa1_2dTmTSQDdQDc__TQCtTmTQCoZQDdZQCdMFNfxmZQBi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTQBcTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNaNbNiNfSQDyQDx__TQDoTmTQDjZQDyZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTSQChQCg__TQBxTmTQBsZQChZQBhMFNfxmZi@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTmZQkMFNaNbNcNiNfmZSQCyQCx__TQCoTmTQCjZQCy@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTxmZQlMFNaNbNcNiNfxmZSQDaQCz__TQCqTmTQClZQDa@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTlZQvMFNfxlZSQDcQDb__TQCsTmTQCnZQDc@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTmZQvMFNfxmZSQDcQDb__TQCsTmTQCnZQDc@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxSQCjQCi__TQBzTmTQBuZQCjTxQzZQBnMxFNfxQBlZb@Base 15 + _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxmTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNfxmZb@Base 15 + _D3std10checkedint__T7checkedTSQBdQBc5AbortTmZQzFNaNbNiNfxmZSQChQCg__T7CheckedTmTQBzZQp@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2bTmTlZQyFNaNbNiNfxmxlKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2bTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa1_2dTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 + _D3std10checkedint__T9opCheckedVAyaa2_3d3dTmTmZQBaFNaNbNiNfxmxmKbZb@Base 15 + _D3std10checkedint__T9opCheckedVAyaa3_636d70TmTmZQBcFNaNbNiNfxmxmKbZi@Base 15 + _D3std10functional11__moduleRefZ@Base 15 + _D3std10functional11_ctfeSkipOpFKAyaZk@Base 15 + _D3std10functional12__ModuleInfoZ@Base 15 + _D3std10functional13_ctfeSkipNameFKAyaQdZk@Base 15 + _D3std10functional15_ctfeMatchUnaryFAyaQdZk@Base 15 + _D3std10functional16_ctfeMatchBinaryFAyaQdQfZk@Base 15 + _D3std10functional16_ctfeSkipIntegerFKAyaZk@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTiTmZQoFNaNbNiNfimZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTiZQoFNaNbNiNfmiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTlZQoFNaNbNiNfmlZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTyiZQpFNaNbNiNfmyiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTyiTmZQpFNaNbNiNfyimZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTiTmZQBbFNaNbNiNfKiKmZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTiZQBbFNaNbNiNfKmKiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTlZQBbFNaNbNiNfKmKlZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTyiZQBcFNaNbNiNfKmKyiZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTymZQBcFNaNbNiNfKmKymZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb@Base 15 + _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTymTmZQBcFNaNbNiNfKymKmZb@Base 15 + _D3std10functional__T8unaryFunVAyaa11_615b305d203e2030783830VQBea1_61Z__TQCaTxSQCz3uni17CodepointIntervalZQDhFNaNbNiNfKxQBqZb@Base 15 + _D3std10functional__T8unaryFunVAyaa4_615b305dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 + _D3std10functional__T8unaryFunVAyaa4_615b315dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 + _D3std10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61Z__TQBoTySQCn8internal14unicode_tables15UnicodePropertyZQDoFNaNbNiNfKyQCjZyAa@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10LeapSecondTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTlZQEpFNaNbNiNfKyQCoKlZb@Base 15 + _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 + _D3std10functional__T9binaryFunVAyaa15_612e6e616d65203c20622e6e616d65VQBma1_61VQBva1_62Z__TQCsTSQDq5regex8internal2ir10NamedGroupTQBjZQEjFNaNbNiNfKQCaKQCeZb@Base 15 + _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone10LeapSecondTQByZQFcFNaNbNiNfKQCpKQCtZb@Base 15 + _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone14TempTransitionTQCcZQFgFNaNbNiNfKQCtKQCxZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTQBoTQBsZQChFNaNbNiNfKQCjKQCnZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTkTiZQCdFNaNbNiNfKkKiZb@Base 15 + _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTywTwZQCeFNaNbNiNfKywKwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTkTkZQCgFNaNbNiNfKkKkZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTxkTkZQChFNaNbNiNfKxkKkZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTQBrTQBvZQCkFNaNbNiNfKQCmKQCqZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTSQCw3uni__T13InversionListTSQDxQBb8GcPolicyZQBhTQBwZQEcFNaNbNiNfKQCnKQCrZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTaTaZQCgFNaNbNiNfaaZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByThThZQCgFNaNbNiNfKhKhZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTwTaZQCgFNaNbNiNfKwKaZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxSQCx8typecons__T5TupleTQCpVQCta3_6b6579TSQEl4json9JSONValueVQEaa5_76616c7565ZQCjTxQDeZQFlFNaNbNiNfKxQDwKxQEbZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxhTxhZQCiFNaNbNiNfKxhKxhZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyAaTQBvZQCkFNaNbNiNfKyQvKQCqZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhKwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhwZb@Base 15 + _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTxhZQCiFNaNbNiNfKyhKxhZb@Base 15 + _D3std11__moduleRefZ@Base 15 + _D3std11concurrency10MessageBox10setMaxMsgsMFNaNiNfmPFSQCbQCa3TidZbZv@Base 15 + _D3std11concurrency10MessageBox12isControlMsgMFNaNbNiNfKSQCdQCc7MessageZb@Base 15 + _D3std11concurrency10MessageBox13isLinkDeadMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 + _D3std11concurrency10MessageBox13isPriorityMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 + _D3std11concurrency10MessageBox14updateMsgCountMFNaNbNiNfZv@Base 15 + _D3std11concurrency10MessageBox3putMFKSQBlQBk7MessageZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZ13onLinkDeadMsgFKSQCeQCd7MessageZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZ5sweepFKSQBvQBu__T4ListTSQClQCk7MessageZQwZv@Base 15 + _D3std11concurrency10MessageBox5closeMFZv@Base 15 + _D3std11concurrency10MessageBox6__ctorMFNbNeZCQBsQBrQBh@Base 15 + _D3std11concurrency10MessageBox6__initZ@Base 15 + _D3std11concurrency10MessageBox6__vtblZ@Base 15 + _D3std11concurrency10MessageBox7__ClassZ@Base 15 + _D3std11concurrency10MessageBox8isClosedMFNaNdNiNfZb@Base 15 + _D3std11concurrency10MessageBox8mboxFullMFNaNbNiNfZb@Base 15 + _D3std11concurrency10ThreadInfo11__xopEqualsMxFKxSQBwQBvQBlZb@Base 15 + _D3std11concurrency10ThreadInfo6__initZ@Base 15 + _D3std11concurrency10ThreadInfo7cleanupMFZv@Base 15 + _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdNiNfZSQBzQByQBo@Base 15 + _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdZ3valSQBzQByQBo@Base 15 + _D3std11concurrency10ThreadInfo9__xtoHashFNbNeKxSQBvQBuQBkZm@Base 15 + _D3std11concurrency10namesByTidHSQBfQBe3TidAAya@Base 15 + _D3std11concurrency10unregisterFAyaZb@Base 15 + _D3std11concurrency11IsGenerator11__InterfaceZ@Base 15 + _D3std11concurrency11MailboxFull6__ctorMFNaNbNiNfSQBwQBv3TidAyaZCQClQCkQCa@Base 15 + _D3std11concurrency11MailboxFull6__initZ@Base 15 + _D3std11concurrency11MailboxFull6__vtblZ@Base 15 + _D3std11concurrency11MailboxFull7__ClassZ@Base 15 + _D3std11concurrency11__moduleRefZ@Base 15 + _D3std11concurrency12__ModuleInfoZ@Base 15 + _D3std11concurrency12initOnceLockFNdZ4lockOC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12initOnceLockFNdZOC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12registryLockFNdZ4implC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12registryLockFNdZC4core4sync5mutex5Mutex@Base 15 + _D3std11concurrency12unregisterMeFKSQBiQBh10ThreadInfoZv@Base 15 + _D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition13switchContextMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbS4core4time8DurationZb@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__ctorMFNbC4core4sync5mutex5MutexZCQDhQDgQCwQCj@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__initZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition6notifyMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition7__ClassZ@Base 15 + _D3std11concurrency14FiberScheduler14FiberCondition9notifyAllMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 + _D3std11concurrency14FiberScheduler6__initZ@Base 15 + _D3std11concurrency14FiberScheduler6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler6createMFNbDFZvZv@Base 15 + _D3std11concurrency14FiberScheduler7__ClassZ@Base 15 + _D3std11concurrency14FiberScheduler8dispatchMFZv@Base 15 + _D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvZCQCiQChQBxQBk@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvmZCQCjQCiQByQBl@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__initZ@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber6__vtblZ@Base 15 + _D3std11concurrency14FiberScheduler9InfoFiber7__ClassZ@Base 15 + _D3std11concurrency14LinkTerminated6__ctorMFNaNbNiNfSQBzQBy3TidAyaZCQCoQCnQCd@Base 15 + _D3std11concurrency14LinkTerminated6__initZ@Base 15 + _D3std11concurrency14LinkTerminated6__vtblZ@Base 15 + _D3std11concurrency14LinkTerminated7__ClassZ@Base 15 + _D3std11concurrency15MessageMismatch6__ctorMFNaNbNiNfAyaZCQCeQCdQBt@Base 15 + _D3std11concurrency15MessageMismatch6__initZ@Base 15 + _D3std11concurrency15MessageMismatch6__vtblZ@Base 15 + _D3std11concurrency15MessageMismatch7__ClassZ@Base 15 + _D3std11concurrency15OwnerTerminated6__ctorMFNaNbNiNfSQCaQBz3TidAyaZCQCpQCoQCe@Base 15 + _D3std11concurrency15OwnerTerminated6__initZ@Base 15 + _D3std11concurrency15OwnerTerminated6__vtblZ@Base 15 + _D3std11concurrency15OwnerTerminated7__ClassZ@Base 15 + _D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 + _D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 + _D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 + _D3std11concurrency15ThreadScheduler6__initZ@Base 15 + _D3std11concurrency15ThreadScheduler6__vtblZ@Base 15 + _D3std11concurrency15ThreadScheduler7__ClassZ@Base 15 + _D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 + _D3std11concurrency15onCrowdingBlockFNaNbNiNfSQBsQBr3TidZb@Base 15 + _D3std11concurrency15onCrowdingThrowFNaNfSQBoQBn3TidZb@Base 15 + _D3std11concurrency16onCrowdingIgnoreFNaNbNiNfSQBtQBs3TidZb@Base 15 + _D3std11concurrency17setMaxMailboxSizeFNaNfSQBqQBp3TidmEQCcQCb10OnCrowdingZv@Base 15 + _D3std11concurrency17setMaxMailboxSizeFSQBmQBl3TidmPFQoZbZv@Base 15 + _D3std11concurrency19TidMissingException6__initZ@Base 15 + _D3std11concurrency19TidMissingException6__vtblZ@Base 15 + _D3std11concurrency19TidMissingException7__ClassZ@Base 15 + _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDb@Base 15 + _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDb@Base 15 + _D3std11concurrency19_staticDtor_L270_C1FZv@Base 15 + _D3std11concurrency24PriorityMessageException11__fieldDtorMFNlNeZv@Base 15 + _D3std11concurrency24PriorityMessageException6__ctorMFSQCb7variant__T8VariantNVmi32ZQpZCQDiQDhQCx@Base 15 + _D3std11concurrency24PriorityMessageException6__initZ@Base 15 + _D3std11concurrency24PriorityMessageException6__vtblZ@Base 15 + _D3std11concurrency24PriorityMessageException7__ClassZ@Base 15 + _D3std11concurrency3Tid11__xopEqualsMxFKxSQBoQBnQBdZb@Base 15 + _D3std11concurrency3Tid6__ctorMFNaNbNcNiNfCQBpQBo10MessageBoxZSQCjQCiQBy@Base 15 + _D3std11concurrency3Tid6__initZ@Base 15 + _D3std11concurrency3Tid9__xtoHashFNbNeKxSQBnQBmQBcZm@Base 15 + _D3std11concurrency3Tid__T8toStringTSQBj5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 + _D3std11concurrency5yieldFNbZv@Base 15 + _D3std11concurrency6locateFAyaZSQBeQBd3Tid@Base 15 + _D3std11concurrency7Message11__fieldDtorMFNeZv@Base 15 + _D3std11concurrency7Message11__xopEqualsMxFKxSQBsQBrQBhZb@Base 15 + _D3std11concurrency7Message15__fieldPostblitMFNlZv@Base 15 + _D3std11concurrency7Message6__initZ@Base 15 + _D3std11concurrency7Message8opAssignMFNcNjNfSQBrQBqQBgZQl@Base 15 + _D3std11concurrency7Message9__xtoHashFNbNeKxSQBrQBqQBgZm@Base 15 + _D3std11concurrency7Message__T10convertsToTSQBqQBp3TidZQzMFNdZb@Base 15 + _D3std11concurrency7Message__T3getTSQBiQBh3TidZQrMFNdZQt@Base 15 + _D3std11concurrency7Message__T6__ctorTSQBlQBk3TidZQuMFNcEQCdQCc7MsgTypeQBhZSQCwQCvQCl@Base 15 + _D3std11concurrency7thisTidFNdNfZ4trusFNeZSQBpQBo3Tid@Base 15 + _D3std11concurrency7thisTidFNdNfZSQBgQBf3Tid@Base 15 + _D3std11concurrency8ownerTidFNdZSQBfQBe3Tid@Base 15 + _D3std11concurrency8registerFAyaSQBfQBe3TidZb@Base 15 + _D3std11concurrency8thisInfoFNbNcNdZSQBjQBi10ThreadInfo@Base 15 + _D3std11concurrency9Scheduler11__InterfaceZ@Base 15 + _D3std11concurrency9schedulerCQBcQBb9Scheduler@Base 15 + _D3std11concurrency9tidByNameHAyaSQBgQBf3Tid@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfKSQCiQCh__TQBxTQBvZQCfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfPSQCiQCh__TQBxTQBvZQCf4NodeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFQyZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__fieldDtorMFNeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__xopEqualsMxFKxSQCqQCp__TQCfTQCdZQCnQBsZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node15__fieldPostblitMFNlZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__ctorMFNcQBiZSQCnQCm__TQCcTQCaZQCkQBp@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node8opAssignMFNcNjNfSQCpQCo__TQCeTQCcZQCmQBrZQz@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node9__xtoHashFNbNeKxSQCpQCo__TQCeTQCcZQCmQBrZm@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNaNcNdNfZQBp@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNdQBiZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__ctorMFNaNbNcNiNfPSQCtQCs__TQCiTQCgZQCq4NodeZSQDuQDt__TQDjTQDhZQDrQCw@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range8popFrontMFNaNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5clearMFNaNbNiNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5emptyMFNaNbNdNiNfZb@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6lengthMFNaNbNdNiNfZm@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7newNodeMFQBcZPSQCiQCh__TQBxTQBvZQCf4Node@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7opSliceMFNaNbNiZSQCkQCj__TQBzTQBxZQCh5Range@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_headOPSQCdQCc__TQBsTQBqZQCa4Node@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_lockOSQCcQCb__TQBrTQBpZQBz8SpinLock@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock4lockMOFNbNiZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6unlockMOFNaNbNiNfZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8freeNodeMFPSQCfQCe__TQBuTQBsZQCc4NodeZv@Base 15 + _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8removeAtMFSQCeQCd__TQBtTQBrZQCb5RangeZv@Base 15 + _D3std11concurrency__T5_sendTSQBcQBb3TidZQtFEQBrQBq7MsgTypeQBeQBhZv@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZQBz@Base 15 + _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyZQBb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnZOQBs@Base 15 + _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcNfLOQBpOC4core4sync5mutex5MutexZOQCs@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZQBl@Base 15 + _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkZQn@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaOCQCj4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaZOQBf@Base 15 + _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcNfLOQBcOCQCl4sync5mutex5MutexZOQCd@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZ4flagOb@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZQBx@Base 15 + _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfZQBj@Base 15 + _D3std11mathspecial11__moduleRefZ@Base 15 + _D3std11mathspecial11logmdigammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial12__ModuleInfoZ@Base 15 + _D3std11mathspecial14betaIncompleteFNaNbNiNfeeeZe@Base 15 + _D3std11mathspecial15gammaIncompleteFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial18logmdigammaInverseFNaNbNiNfeZe@Base 15 + _D3std11mathspecial18normalDistributionFNaNbNiNfeZe@Base 15 + _D3std11mathspecial20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial21betaIncompleteInverseFNaNbNiNfeeeZe@Base 15 + _D3std11mathspecial25normalDistributionInverseFNaNbNiNfeZe@Base 15 + _D3std11mathspecial27gammaIncompleteComplInverseFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial3erfFNaNbNiNfeZe@Base 15 + _D3std11mathspecial4betaFNaNbNiNfeeZe@Base 15 + _D3std11mathspecial4erfcFNaNbNiNfeZe@Base 15 + _D3std11mathspecial5gammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial7digammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial8logGammaFNaNbNiNfeZe@Base 15 + _D3std11mathspecial8sgnGammaFNaNbNiNfeZe@Base 15 + _D3std11parallelism10foreachErrFZv@Base 15 + _D3std11parallelism11__moduleRefZ@Base 15 + _D3std11parallelism12AbstractTask11__xopEqualsMxFKxSQByQBxQBnZb@Base 15 + _D3std11parallelism12AbstractTask3jobMFZv@Base 15 + _D3std11parallelism12AbstractTask4doneMFNdZb@Base 15 + _D3std11parallelism12AbstractTask6__initZ@Base 15 + _D3std11parallelism12AbstractTask9__xtoHashFNbNeKxSQBxQBwQBmZm@Base 15 + _D3std11parallelism12__ModuleInfoZ@Base 15 + _D3std11parallelism13totalCPUsImplFNbNiNeZk@Base 15 + _D3std11parallelism16submitAndExecuteFCQBlQBk8TaskPoolMDFZvZv@Base 15 + _D3std11parallelism17ParallelismThread6__ctorMFDFZvZCQBzQByQBo@Base 15 + _D3std11parallelism17ParallelismThread6__initZ@Base 15 + _D3std11parallelism17ParallelismThread6__vtblZ@Base 15 + _D3std11parallelism17ParallelismThread7__ClassZ@Base 15 + _D3std11parallelism17cacheLineSizeImplFNbNiNeZm@Base 15 + _D3std11parallelism18defaultPoolThreadsFNdNeZk@Base 15 + _D3std11parallelism18defaultPoolThreadsFNdNekZv@Base 15 + _D3std11parallelism19_defaultPoolThreadsOk@Base 15 + _D3std11parallelism20ParallelForeachError6__ctorMFZCQByQBxQBn@Base 15 + _D3std11parallelism20ParallelForeachError6__initZ@Base 15 + _D3std11parallelism20ParallelForeachError6__vtblZ@Base 15 + _D3std11parallelism20ParallelForeachError7__ClassZ@Base 15 + _D3std11parallelism26_sharedStaticDtor_L1089_C1FZv@Base 15 + _D3std11parallelism8TaskPool10deleteItemMFPSQBqQBp12AbstractTaskZb@Base 15 + _D3std11parallelism8TaskPool10waiterLockMFZv@Base 15 + _D3std11parallelism8TaskPool11abstractPutMFPSQBrQBq12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool11queueUnlockMFZv@Base 15 + _D3std11parallelism8TaskPool11threadIndexm@Base 15 + _D3std11parallelism8TaskPool11workerIndexMxFNbNdNfZm@Base 15 + _D3std11parallelism8TaskPool12doSingleTaskMFZv@Base 15 + _D3std11parallelism8TaskPool12waiterUnlockMFZv@Base 15 + _D3std11parallelism8TaskPool13notifyWaitersMFZv@Base 15 + _D3std11parallelism8TaskPool13startWorkLoopMFZv@Base 15 + _D3std11parallelism8TaskPool15executeWorkLoopMFZv@Base 15 + _D3std11parallelism8TaskPool16deleteItemNoSyncMFPSQBwQBv12AbstractTaskZb@Base 15 + _D3std11parallelism8TaskPool16tryDeleteExecuteMFPSQBwQBv12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool17abstractPutNoSyncMFPSQBxQBw12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool17nextInstanceIndexm@Base 15 + _D3std11parallelism8TaskPool19defaultWorkUnitSizeMxFNaNbNfmZm@Base 15 + _D3std11parallelism8TaskPool19waitUntilCompletionMFZv@Base 15 + _D3std11parallelism8TaskPool22abstractPutGroupNoSyncMFPSQCcQCb12AbstractTaskQwZv@Base 15 + _D3std11parallelism8TaskPool3popMFZPSQBjQBi12AbstractTask@Base 15 + _D3std11parallelism8TaskPool4sizeMxFNaNbNdNfZm@Base 15 + _D3std11parallelism8TaskPool4stopMFNeZv@Base 15 + _D3std11parallelism8TaskPool4waitMFZv@Base 15 + _D3std11parallelism8TaskPool5doJobMFPSQBkQBj12AbstractTaskZv@Base 15 + _D3std11parallelism8TaskPool6__ctorMFNeZCQBnQBmQBc@Base 15 + _D3std11parallelism8TaskPool6__ctorMFNemZCQBoQBnQBd@Base 15 + _D3std11parallelism8TaskPool6__ctorMFPSQBlQBk12AbstractTaskiZCQCiQChQBx@Base 15 + _D3std11parallelism8TaskPool6__initZ@Base 15 + _D3std11parallelism8TaskPool6__vtblZ@Base 15 + _D3std11parallelism8TaskPool6finishMFNebZv@Base 15 + _D3std11parallelism8TaskPool6notifyMFZv@Base 15 + _D3std11parallelism8TaskPool7__ClassZ@Base 15 + _D3std11parallelism8TaskPool8isDaemonMFNdNeZb@Base 15 + _D3std11parallelism8TaskPool8isDaemonMFNdNebZv@Base 15 + _D3std11parallelism8TaskPool8priorityMFNdNeZi@Base 15 + _D3std11parallelism8TaskPool8priorityMFNdNeiZv@Base 15 + _D3std11parallelism8TaskPool9notifyAllMFZv@Base 15 + _D3std11parallelism8TaskPool9popNoSyncMFZPSQBpQBo12AbstractTask@Base 15 + _D3std11parallelism8TaskPool9queueLockMFZv@Base 15 + _D3std11parallelism8taskPoolFNdNeZ18__lambda_L3589_C26FNfZCQCfQCe8TaskPool@Base 15 + _D3std11parallelism8taskPoolFNdNeZ4poolCQBmQBl8TaskPool@Base 15 + _D3std11parallelism8taskPoolFNdNeZCQBhQBg8TaskPool@Base 15 + _D3std11parallelism__T10scopedTaskTDFZvZQsFMQjZSQBuQBt__T4TaskSQCjQCi3runTQBnZQv@Base 15 + _D3std11parallelism__T14atomicCasUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpQBsZb@Base 15 + _D3std11parallelism__T14atomicSetUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpZv@Base 15 + _D3std11parallelism__T14atomicSetUbyteThZQtFNaNbNiKhhZv@Base 15 + _D3std11parallelism__T15atomicReadUbyteTEQBnQBm8TaskPool9PoolStateZQBtFNaNbNiKQBmZh@Base 15 + _D3std11parallelism__T15atomicReadUbyteThZQuFNaNbNiKhZh@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNbNdNiNfZyk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbNiNfZyk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ3tlsk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ6resultOk@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNbNdNiNfZym@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbNiNfZym@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ3tlsm@Base 15 + _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ6resultOm@Base 15 + _D3std11parallelism__T3runTDFZvZQkFQiZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv10yieldForceMFNcNdNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11__xopEqualsMxFKxSQCkQCj__TQBzSQCxQCwQByTQBxZQCrZb@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11enforcePoolMFNaNfZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeiZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4doneMFNdNeZb@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4implFPvZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__ctorMFNaNbNcNiNfQBaZSQCpQCo__TQCeSQDcQDbQCdTQCcZQCw@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__dtorMFNfZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv7basePtrMFNaNbNdNiNfZPSQCoQCn12AbstractTask@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv8opAssignMFNfSQCfQCe__TQBuSQCsQCrQBtTQBsZQCmZQBg@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9__xtoHashFNbNeKxSQCjQCi__TQBySQCwQCvQBxTQBwZQCqZm@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9spinForceMFNcNdNeZv@Base 15 + _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9workForceMFNcNdNeZv@Base 15 + _D3std12__ModuleInfoZ@Base 15 + _D3std12experimental10checkedint11__moduleRefZ@Base 15 + _D3std12experimental10checkedint12__ModuleInfoZ@Base 15 + _D3std12experimental6logger10filelogger11__moduleRefZ@Base 15 + _D3std12experimental6logger10filelogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger10nulllogger11__moduleRefZ@Base 15 + _D3std12experimental6logger10nulllogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger11__moduleRefZ@Base 15 + _D3std12experimental6logger11multilogger11__moduleRefZ@Base 15 + _D3std12experimental6logger11multilogger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger12__ModuleInfoZ@Base 15 + _D3std12experimental6logger4core11__moduleRefZ@Base 15 + _D3std12experimental6logger4core12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator10IAllocator11__InterfaceZ@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator10reallocateMOxFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator8allocateMOxFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator10mallocator10Mallocator8instanceOSQClQCkQBzQBsQBj@Base 15 + _D3std12experimental9allocator10mallocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator10mallocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator10deallocateMOFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator10reallocateMOFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator15alignedAllocateMOFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator17alignedReallocateMOFNaNbNiKAvmkZb@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator8allocateMOFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator10mallocator17AlignedMallocator8instanceOSQCsQCrQCgQBzQBq@Base 15 + _D3std12experimental9allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator12RCIAllocator10__postblitMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator12RCIAllocator10deallocateMFNbAvZb@Base 15 + _D3std12experimental9allocator12RCIAllocator10reallocateMFNbKAvmZb@Base 15 + _D3std12experimental9allocator12RCIAllocator11__xopEqualsMxFKxSQCjQCiQBxQBqZb@Base 15 + _D3std12experimental9allocator12RCIAllocator11allocateAllMFNbZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator13deallocateAllMFNbZb@Base 15 + _D3std12experimental9allocator12RCIAllocator13goodAllocSizeMFNbmZm@Base 15 + _D3std12experimental9allocator12RCIAllocator15alignedAllocateMFNbmkZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _D3std12experimental9allocator12RCIAllocator22resolveInternalPointerMFNbxPvKAvZSQDa8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator4ownsMFNbAvZSQCd8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator5emptyMFNbZSQCc8typecons7Ternary@Base 15 + _D3std12experimental9allocator12RCIAllocator6__dtorMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator12RCIAllocator6__initZ@Base 15 + _D3std12experimental9allocator12RCIAllocator6expandMFNbKAvmZb@Base 15 + _D3std12experimental9allocator12RCIAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator12RCIAllocator9__xtoHashFNbNeKxSQCiQChQBwQBpZm@Base 15 + _D3std12experimental9allocator12RCIAllocator9alignmentMFNbNdZk@Base 15 + _D3std12experimental9allocator12RCIAllocator__T6__ctorTSQCcQCbQBqQBjZQwMFNaNbNcNiNfCQDeQDdQCs10IAllocatorZQBz@Base 15 + _D3std12experimental9allocator12RCIAllocator__T6isNullTSQCcQCbQBqQBjZQwMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator12RCIAllocator__T8opAssignZQkMFNaNbNcNiNfSQCsQCrQCgQBzZQo@Base 15 + _D3std12experimental9allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator10reallocateMOxFNaNbKAvmZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator13goodAllocSizeMOxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator22resolveInternalPointerMOxFNaNbNiNexPvKAvZSQDv8typecons7Ternary@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator6expandMOxFNaNbNeKAvmZb@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator7collectMOxFNbNeZv@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator8allocateMOxFNaNbNemZAv@Base 15 + _D3std12experimental9allocator12gc_allocator11GCAllocator8instanceOxSQCpQCoQCdQBwQBl@Base 15 + _D3std12experimental9allocator12gc_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator12gc_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator12theAllocatorFNbNcNdNiNfZSQCdQCcQBr12RCIAllocator@Base 15 + _D3std12experimental9allocator12theAllocatorFNbNdNiSQByQBxQBm12RCIAllocatorZv@Base 15 + _D3std12experimental9allocator14mmap_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator14mmap_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator10deallocateMOxFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZ16__lambda_L37_C32FNaNbNiNeZi@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator14mmap_allocator13MmapAllocator8instanceOxSQCtQCsQChQCaQBn@Base 15 + _D3std12experimental9allocator15building_blocks10bucketizer11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks10bucketizer12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks10segregator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks10segregator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe11__xopEqualsMxFKxSQHmQHlQHaQGtQGf__TQFsTQFgTQDpZQGeZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe12addAllocatorMFNaNbNimZPSQHtQHsQHhQHaQGm__TQFzTQFnTQDwZQGl4Node@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe13deallocateAllMFNaNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe14moveAllocatorsMFNaNbNiAvZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe15alignedAllocateMFNaNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node11__fieldDtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6unusedMxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node8opAssignMFNaNbNcNiNjSQHuQHtQHiQHbQGn__TQGaTQFoTQDxZQGmQCiZQBm@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node9setUnusedMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4makeMFNaNbNimZSQHjQHiQGxQGq6region__T6RegionTSQIoQInQIc14mmap_allocator13MmapAllocatorVki16VEQKj8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4ownsMFNaNbNiNfAvZSQHm8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe5emptyMxFNaNbNiNfZSQHm8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfKQElZSQHsQHrQHgQGzQGl__TQFyTQFmTQDvZQGk@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfQEkZSQHrQHqQHfQGyQGk__TQFxTQFlTQDuZQGj@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__dtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8allocateMFNaNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQFvTQFjTQDsZQGhZQBj@Base 15 + _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe9__xtoHashFNbNeKxSQHlQHkQGzQGsQGe__TQFrTQFfTQDoZQGdZm@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10deallocateMOFNaNbNiNfAvZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10reallocateMOFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator11allocateAllMOFNaNbNiNfZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator13deallocateAllMOFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator15alignedAllocateMOFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator17alignedReallocateMOFNaNbNiNfKAvmkZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator22resolveInternalPointerMOxFNaNbNiNfxPvKAvZSQEq8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator4ownsMOxFNaNbNiNfxAvZSQDu8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator5emptyMOxFNaNbNiNfZSQDs8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6expandMOFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8allocateMOFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8instanceOSQDjQDiQCxQCqQCcQBp@Base 15 + _D3std12experimental9allocator15building_blocks15affix_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15affix_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block11leadingOnesFNaNbNiNfmZk@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block13setBitsIfZeroFNaNbNiNfKmkkZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block14findContigOnesFNaNbNiNfmkZk@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block7setBitsFNaNbNiNfKmkkZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector11__xopEqualsMxFKxSQDnQDmQDbQCuQCgQBsZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13find1BackwardMFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opIndexAssignMFNaNbNiNfbmZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbmmZv@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector5find1MFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__ctorMFNaNbNcNiNfAmZSQDrQDqQDfQCyQCkQBw@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6lengthMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre0MxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre1MxFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7opIndexMFNaNbNiNfmZb@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9__xtoHashFNbNeKxSQDmQDlQDaQCtQCfQBrZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9findZerosMFNaNbNiNfymmZm@Base 15 + _D3std12experimental9allocator15building_blocks15bitmapped_block9resetBitsFNaNbNiNfKmkkZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10reallocateMFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq11__fieldDtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq15alignedAllocateMFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq4ownsMFNaNbNiNfAvZSQJzQDu7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq5emptyMFNaNbNiNfZSQJyQDt7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6defineFNaNbNfQCuAQCyXQDc@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8allocateMFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8opAssignMFNaNbNcNiNjSQKcQKbQJqQJjQIv__TQIhTQHuVmi4096Vmi0ZQJaZQBq@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq9bytesUsedMxFNaNbNiNfZxm@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d4465616c6c6f63617465VQEna15_6279746573436f6e74726163746564ZQDqMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d5265616c6c6f63617465VQEna15_6e756d5265616c6c6f636174654f4bVQFza20_6e756d5265616c6c6f63617465496e506c616365VQHva13_62797465734e6f744d6f766564VQJda13_6279746573457870616e646564VQKla15_6279746573436f6e74726163746564VQLxa10_62797465734d6f766564ZQKqMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa16_6e756d4465616c6c6f63617465416c6cZQCkMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa7_6e756d4f776e73ZQBrMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa9_6e756d457870616e64VQEea11_6e756d457870616e644f4bVQFia13_6279746573457870616e646564VQGqa14_6279746573416c6c6f6361746564ZQFrMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa11_6e756d416c6c6f63617465VQEja13_6e756d416c6c6f636174654f4bVQFra14_6279746573416c6c6f6361746564ZQEsMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa18_6e756d416c69676e6564416c6c6f63617465VQExa20_6e756d416c69676e6564416c6c6f636174654f6bVQGta14_6279746573416c6c6f6361746564ZQFuMFNaNbNiNfAmXv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10expandImplVnnVii0ZQuMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T12allocateImplVnnVii0ZQwMFNaNbNiNfmZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14deallocateImplVnnVii0ZQyMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14reallocateImplVnnVii0ZQyMFNaNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T17deallocateAllImplVnnVii0ZQBbMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T19alignedAllocateImplVnnVii0ZQBdMFNaNbNiNfmkZAv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d416c6c6f63617465ZQBiMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d457870616e644f4bZQBiMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d4465616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d5265616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna15_6e756d5265616c6c6f636174654f4bZQBqMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna16_6e756d4465616c6c6f63617465416c6cZQBsMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna18_6e756d416c69676e6564416c6c6f63617465ZQBwMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna20_6e756d5265616c6c6f63617465496e506c616365ZQCaMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna7_6e756d4f776e73ZQzMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna9_6e756d457870616e64ZQBdMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_62797465734d6f766564ZQBhMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_6279746573536c61636bZQBhMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d416c6c6f63617465ZQBjMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d457870616e644f4bZQBjMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6279746573457870616e646564ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_62797465734e6f744d6f766564ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d416c6c6f636174654f4bZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d4465616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d5265616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa14_6279746573416c6c6f6361746564ZQBpMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6279746573436f6e74726163746564ZQBrMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6e756d5265616c6c6f636174654f4bZQBrMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa16_6e756d4465616c6c6f63617465416c6cZQBtMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa18_6e756d416c69676e6564416c6c6f63617465ZQBxMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d416c69676e6564416c6c6f636174654f6bZQCbMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d5265616c6c6f63617465496e506c616365ZQCbMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa7_6e756d4f776e73ZQBaMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_627974657355736564ZQBeMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_6e756d457870616e64ZQBeMFNaNbNiNflZv@Base 15 + _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T8ownsImplVnnVii0ZQrMFNaNbNiNfAvZSQKqQEl7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks16scoped_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks16scoped_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks17kernighan_ritchie11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks17kernighan_ritchie12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks18aligned_block_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks18aligned_block_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks18fallback_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks18fallback_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator15alignedAllocateMFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator5emptyMFNbNiZSQEf8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__dtorMFNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6expandMFNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8allocateMFNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8opAssignMFNbNcNiNjSQElQEkQDzQDsQDeQChZQu@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1510deallocateMFNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513deallocateAllMFNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513goodAllocSizeMFNbNimZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1516getAvailableSizeMFNbNiZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1522extendMemoryProtectionMFNbNiPvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin154ownsMFNbNiAvZSQEq8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin156__ctorMFNbNcNimZSQEtQEsQEhQEaQDmQCp@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator12allocateImplMOFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator15alignedAllocateMOFNbNimkZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6expandMOFNbNiKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator8allocateMOFNbNimZAv@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1510deallocateMOFNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513deallocateAllMOFNbNiZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513goodAllocSizeMOFNbNimZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1516getAvailableSizeMOFNbNiZm@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1522extendMemoryProtectionMOFNbNiPvmZb@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin154ownsMOFNbNiAvZSQEx8typecons7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin156__ctorMOFNbNcNimZOSQFbQFaQEpQEiQDuQCx@Base 15 + _D3std12experimental9allocator15building_blocks6region11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks6region12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10roundedEndMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg11allocateAllMFNaNbNiNeZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg12roundedBeginMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13goodAllocSizeMxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg15alignedAllocateMFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg4ownsMxFNaNbNiNexAvZSQGhQDh7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg5emptyMxFNaNbNiNfZSQGfQDf7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__ctorMFNaNbNcNiAhZSQGhQGgQFvQFoQFa__TQEwVki16VQEji0ZQFl@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg8allocateMFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg9availableMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10deallocateMFNaNbNiAvZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10roundedEndMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn11allocateAllMFNaNbNiNeZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn12roundedBeginMxFNaNbNiNeZPv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13deallocateAllMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13goodAllocSizeMxFNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn15alignedAllocateMFNaNbNiNemkZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn4ownsMxFNaNbNiNexAvZSQHoQDh7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn5emptyMxFNaNbNiNfZSQHmQDf7Ternary@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNiAhZSQHoQHnQHcQGvQGh__TQGdTQFzVki16VQEni0ZQGw@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNimZSQHnQHmQHbQGuQGg__TQGcTQFyVki16VQEmi0ZQGv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__dtorMFNaNbNiZv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6expandMFNaNbNiNfKAvmZb@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8allocateMFNaNbNiNemZAv@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQGeTQGaVki16VQEoi0ZQGxZQBq@Base 15 + _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn9availableMxFNaNbNiNfZm@Base 15 + _D3std12experimental9allocator15building_blocks9free_list11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_list12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_tree11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9free_tree12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator15building_blocks9quantizer11__moduleRefZ@Base 15 + _D3std12experimental9allocator15building_blocks9quantizer12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator16ISharedAllocator11__InterfaceZ@Base 15 + _D3std12experimental9allocator16_threadAllocatorSQBvQBuQBj12RCIAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZ15forceAttributesFZPOSQDcQDbQCq18RCISharedAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZOSQCiQChQBw18RCISharedAllocator@Base 15 + _D3std12experimental9allocator16processAllocatorFNbNdNiKOSQCeQCdQBs18RCISharedAllocatorZv@Base 15 + _D3std12experimental9allocator17_processAllocatorOSQBxQBwQBl18RCISharedAllocator@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10__postblitMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10deallocateMOFNbAvZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator10reallocateMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator11__xopEqualsMxFKOxSQCqQCpQCeQBxZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator11allocateAllMOFNbZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator13deallocateAllMOFNbZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator13goodAllocSizeMOFNbmZm@Base 15 + _D3std12experimental9allocator18RCISharedAllocator15alignedAllocateMOFNbmkZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator17alignedReallocateMOFNbKAvmkZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator22resolveInternalPointerMOFNbxPvKAvZSQDh8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator4ownsMOFNbAvZSQCk8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator5emptyMOFNbZSQCj8typecons7Ternary@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__ctorMOFNaNbNcNiNfOCQCsQCrQCg16ISharedAllocatorZOSQDwQDvQDkQDd@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__dtorMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D3std12experimental9allocator18RCISharedAllocator6expandMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator8allocateMOFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator18RCISharedAllocator9__xtoHashFNbNeKOxSQCpQCoQCdQBwZm@Base 15 + _D3std12experimental9allocator18RCISharedAllocator9alignmentMOFNbNdZk@Base 15 + _D3std12experimental9allocator18RCISharedAllocator__T6isNullTOSQCjQCiQBxQBqZQxMOFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator18RCISharedAllocator__T8opAssignZQkMOFNaNbNcNiNfOSQDaQCzQCoQChZOQp@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11__fieldDtorMFNaNbNiNlNeZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__ctorMFNaNbNiNfKOSQDtQDsQDh18RCISharedAllocatorZCQEyQExQEmQEfFNbNcNiNfZQDm@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__initZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__vtblZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator7__ClassZ@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ17__lambda_L1010_C5FNbNiNeZv@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ21_threadAllocatorStateG4m@Base 15 + _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZSQCjQCiQBx12RCIAllocator@Base 15 + _D3std12experimental9allocator5typed11__moduleRefZ@Base 15 + _D3std12experimental9allocator5typed12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator6common11__moduleRefZ@Base 15 + _D3std12experimental9allocator6common11alignDownToFNaNbNiNkMPvkZQe@Base 15 + _D3std12experimental9allocator6common12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator6common13divideRoundUpFNaNbNiNfmmZm@Base 15 + _D3std12experimental9allocator6common13trailingZerosFNaNbNiNfmZk@Base 15 + _D3std12experimental9allocator6common15forwardToMemberFAyaAQeXQh@Base 15 + _D3std12experimental9allocator6common17roundUpToPowerOf2FNaNbNiNfmZm@Base 15 + _D3std12experimental9allocator6common18effectiveAlignmentFNaNbNiPvZm@Base 15 + _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiAvkZQe@Base 15 + _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common19roundUpToMultipleOfFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common20roundDownToAlignmentFNaNbNiNfmkZm@Base 15 + _D3std12experimental9allocator6common21isGoodStaticAlignmentFNaNbNiNfkZb@Base 15 + _D3std12experimental9allocator6common22isGoodDynamicAlignmentFNaNbNiNfkZb@Base 15 + _D3std12experimental9allocator6common22roundStartToMultipleOfFNaNbNiAvkZQe@Base 15 + _D3std12experimental9allocator6common9alignUpToFNaNbNiNkMPvkZQe@Base 15 + _D3std12experimental9allocator6common__T10reallocateTSQCaQBzQBo15building_blocks6region__T6RegionTSQDtQDsQDh14mmap_allocator13MmapAllocatorVki16VEQFo8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnZQGpFNaNbNiKQGnKAvmZb@Base 15 + _D3std12experimental9allocator6common__T13goodAllocSizeTSQCdQCcQBr15building_blocks15stats_collector__T14StatsCollectorTSQEpQEoQEdQCm6region__T6RegionTSQFuQFtQFi14mmap_allocator13MmapAllocatorVki16VEQHp8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJfFNaNbNiNfKQJcmZm@Base 15 + _D3std12experimental9allocator6common__T9alignedAtTvZQnFNaNbNiNfPvkZb@Base 15 + _D3std12experimental9allocator8showcase11__moduleRefZ@Base 15 + _D3std12experimental9allocator8showcase12__ModuleInfoZ@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__ctorMFNcmZSQDaQCzQCoQChQCbFmZQBo@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6opCallMFNaNbNimZSQDeQDdQCs15building_blocks6region__T6RegionTSQExQEwQEl14mmap_allocator13MmapAllocatorVki16VEQGs8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 + _D3std12experimental9allocator8showcase14mmapRegionListFmZSQCfQCeQBt15building_blocks14allocator_list__T13AllocatorListTSQEpQEoQEdQDwQDqFmZ7FactoryTSQFrQFqQFfQDm14null_allocator13NullAllocatorZQDl@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__initZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__vtblZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk7__ClassZ@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 + _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ5stateOG3m@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ6resultOSQEnQEmQEb18RCISharedAllocator@Base 15 + _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbNiKOxQBxZOSQEiQEhQDw18RCISharedAllocator@Base 15 + _D3std3csv11__moduleRefZ@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCnQCmQCl@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 + _D3std3csv12CSVException6__ctorMFNaNbNiNfAyammC6object9ThrowableQxmZCQCpQCoQCn@Base 15 + _D3std3csv12CSVException6__initZ@Base 15 + _D3std3csv12CSVException6__vtblZ@Base 15 + _D3std3csv12CSVException7__ClassZ@Base 15 + _D3std3csv12CSVException8toStringMxFNaNfZAya@Base 15 + _D3std3csv12__ModuleInfoZ@Base 15 + _D3std3csv23HeaderMismatchException6__initZ@Base 15 + _D3std3csv23HeaderMismatchException6__vtblZ@Base 15 + _D3std3csv23HeaderMismatchException7__ClassZ@Base 15 + _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 + _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 + _D3std3csv23IncompleteCellException6__initZ@Base 15 + _D3std3csv23IncompleteCellException6__vtblZ@Base 15 + _D3std3csv23IncompleteCellException7__ClassZ@Base 15 + _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 + _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 + _D3std3net4curl11__moduleRefZ@Base 15 + _D3std3net4curl12AutoProtocol6__initZ@Base 15 + _D3std3net4curl12__ModuleInfoZ@Base 15 + _D3std3net4curl13CurlException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCrQCqQCpQCn@Base 15 + _D3std3net4curl13CurlException6__initZ@Base 15 + _D3std3net4curl13CurlException6__vtblZ@Base 15 + _D3std3net4curl13CurlException7__ClassZ@Base 15 + _D3std3net4curl19HTTPStatusException6__ctorMFNaNbNfiAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 + _D3std3net4curl19HTTPStatusException6__initZ@Base 15 + _D3std3net4curl19HTTPStatusException6__vtblZ@Base 15 + _D3std3net4curl19HTTPStatusException7__ClassZ@Base 15 + _D3std3net4curl20CurlTimeoutException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 + _D3std3net4curl20CurlTimeoutException6__initZ@Base 15 + _D3std3net4curl20CurlTimeoutException6__vtblZ@Base 15 + _D3std3net4curl20CurlTimeoutException7__ClassZ@Base 15 + _D3std3net4curl3FTP10addCommandMFAxaZv@Base 15 + _D3std3net4curl3FTP10initializeMFZv@Base 15 + _D3std3net4curl3FTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl3FTP13clearCommandsMFZv@Base 15 + _D3std3net4curl3FTP13contentLengthMFNdmZv@Base 15 + _D3std3net4curl3FTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl3FTP3dupMFZSQzQxQvQs@Base 15 + _D3std3net4curl3FTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl3FTP4Impl11__xopEqualsMxFKxSQBpQBoQBnQBlQBkZb@Base 15 + _D3std3net4curl3FTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl3FTP4Impl6__initZ@Base 15 + _D3std3net4curl3FTP4Impl8opAssignMFNcNjSQBmQBlQBkQBiQBhZQr@Base 15 + _D3std3net4curl3FTP4Impl9__xtoHashFNbNeKxSQBoQBnQBmQBkQBjZm@Base 15 + _D3std3net4curl3FTP6__initZ@Base 15 + _D3std3net4curl3FTP6opCallFAxaZSQBeQBdQBcQBa@Base 15 + _D3std3net4curl3FTP6opCallFZSQBbQBaQzQw@Base 15 + _D3std3net4curl3FTP7performMFEQBc8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl3FTP8encodingMFNdAyaZv@Base 15 + _D3std3net4curl3FTP8encodingMFNdZAya@Base 15 + _D3std3net4curl3FTP8opAssignMFNcNjSQBhQBgQBfQBdZQo@Base 15 + _D3std3net4curl3FTP9__mixin1910dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1910onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl3FTP9__mixin1910setNoProxyMFAyaZv@Base 15 + _D3std3net4curl3FTP9__mixin1910tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1910verifyHostMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1910verifyPeerMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin1911dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdCQBu6socket15InternetAddressZv@Base 15 + _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl3FTP9__mixin1914connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1914localPortRangeMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin1916operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl3FTP9__mixin1917setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl3FTP9__mixin1922setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl3FTP9__mixin1928defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl3FTP9__mixin195proxyMFNdAxaZv@Base 15 + _D3std3net4curl3FTP9__mixin196handleMFNcNdNjZSQBsQBrQBq4Curl@Base 15 + _D3std3net4curl3FTP9__mixin196onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl3FTP9__mixin197verboseMFNdbZv@Base 15 + _D3std3net4curl3FTP9__mixin198shutdownMFZv@Base 15 + _D3std3net4curl3FTP9__mixin199isStoppedMFNdZb@Base 15 + _D3std3net4curl3FTP9__mixin199localPortMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin199onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl3FTP9__mixin199proxyPortMFNdtZv@Base 15 + _D3std3net4curl3FTP9__mixin199proxyTypeMFNdE3etc1cQBo9CurlProxyZv@Base 15 + _D3std3net4curl3FTP9getTimingMFE3etc1cQBc8CurlInfoKdZi@Base 15 + _D3std3net4curl4Curl10initializeMFZv@Base 15 + _D3std3net4curl4Curl10onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4Curl11errorStringMFiZAya@Base 15 + _D3std3net4curl4Curl13_seekCallbackUPvliZi@Base 15 + _D3std3net4curl4Curl13_sendCallbackUPammPvZm@Base 15 + _D3std3net4curl4Curl14onSocketOptionMFNdDFEQBp6socket8socket_tE3etc1cQCh12CurlSockTypeZiZv@Base 15 + _D3std3net4curl4Curl14throwOnStoppedMFAyaZv@Base 15 + _D3std3net4curl4Curl15onReceiveHeaderMFNdDFIAaZvZv@Base 15 + _D3std3net4curl4Curl16_receiveCallbackUxPammPvZm@Base 15 + _D3std3net4curl4Curl16clearIfSupportedMFE3etc1cQBl10CurlOptionZv@Base 15 + _D3std3net4curl4Curl17_progressCallbackUPvddddZi@Base 15 + _D3std3net4curl4Curl21_socketOptionCallbackUPvEQBt6socket8socket_tiZi@Base 15 + _D3std3net4curl4Curl22_receiveHeaderCallbackUxPammPvZm@Base 15 + _D3std3net4curl4Curl3dupMFZSQBaQzQxQu@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionAxaZv@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionPvZv@Base 15 + _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionlZv@Base 15 + _D3std3net4curl4Curl5clearMFE3etc1cQz10CurlOptionZv@Base 15 + _D3std3net4curl4Curl5pauseMFbbZv@Base 15 + _D3std3net4curl4Curl6__initZ@Base 15 + _D3std3net4curl4Curl6_checkMFiZv@Base 15 + _D3std3net4curl4Curl6onSeekMFNdDFlE3etc1cQBf11CurlSeekPosZEQyQwQCb8CurlSeekZv@Base 15 + _D3std3net4curl4Curl6onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4Curl7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4Curl7stoppedMxFNdZb@Base 15 + _D3std3net4curl4Curl8shutdownMFZv@Base 15 + _D3std3net4curl4Curl9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 + _D3std3net4curl4Curl9onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4CurlQkFNcNdZSQBbQBaQz7CurlAPI3API@Base 15 + _D3std3net4curl4HTTP10StatusLine11__xopEqualsMxFKxSQBxQBwQBvQBtQBrZb@Base 15 + _D3std3net4curl4HTTP10StatusLine5resetMFNfZv@Base 15 + _D3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D3std3net4curl4HTTP10StatusLine8toStringMxFZAya@Base 15 + _D3std3net4curl4HTTP10StatusLine9__xtoHashFNbNeKxSQBwQBvQBuQBsQBqZm@Base 15 + _D3std3net4curl4HTTP10initializeMFZv@Base 15 + _D3std3net4curl4HTTP10statusLineMFNdZSQBkQBjQBiQBg10StatusLine@Base 15 + _D3std3net4curl4HTTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl4HTTP11setPostDataMFAxvAyaZv@Base 15 + _D3std3net4curl4HTTP12maxRedirectsMFNdkZv@Base 15 + _D3std3net4curl4HTTP12setCookieJarMFAxaZv@Base 15 + _D3std3net4curl4HTTP12setUserAgentMFAxaZv@Base 15 + _D3std3net4curl4HTTP13contentLengthMFNdmZv@Base 15 + _D3std3net4curl4HTTP14flushCookieJarMFZv@Base 15 + _D3std3net4curl4HTTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl4HTTP15clearAllCookiesMFZv@Base 15 + _D3std3net4curl4HTTP15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 + _D3std3net4curl4HTTP15parseStatusLineFNfxAaJSQBrQBqQBpQBn10StatusLineZb@Base 15 + _D3std3net4curl4HTTP15responseHeadersMFNdZHAyaQd@Base 15 + _D3std3net4curl4HTTP16addRequestHeaderMFAxaQdZv@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZ3bufG63a@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZ9userAgentAya@Base 15 + _D3std3net4curl4HTTP16defaultUserAgentFNdZAya@Base 15 + _D3std3net4curl4HTTP16setTimeConditionMFE3etc1cQBl12CurlTimeCondSQCl8datetime7systime7SysTimeZv@Base 15 + _D3std3net4curl4HTTP19clearRequestHeadersMFZv@Base 15 + _D3std3net4curl4HTTP19clearSessionCookiesMFZv@Base 15 + _D3std3net4curl4HTTP19defaultMaxRedirectsk@Base 15 + _D3std3net4curl4HTTP19onReceiveStatusLineMFNdDFSQBuQBtQBsQBq10StatusLineZvZv@Base 15 + _D3std3net4curl4HTTP20authenticationMethodMFNdE3etc1cQBr8CurlAuthZv@Base 15 + _D3std3net4curl4HTTP3dupMFZSQBaQzQxQu@Base 15 + _D3std3net4curl4HTTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP4Impl11__xopEqualsMxFKxSQBqQBpQBoQBmQBkZb@Base 15 + _D3std3net4curl4HTTP4Impl15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 + _D3std3net4curl4HTTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl4HTTP4Impl6__initZ@Base 15 + _D3std3net4curl4HTTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 + _D3std3net4curl4HTTP4Impl9__xtoHashFNbNeKxSQBpQBoQBnQBlQBjZm@Base 15 + _D3std3net4curl4HTTP6__initZ@Base 15 + _D3std3net4curl4HTTP6caInfoMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP6methodMFNdEQBeQBdQBcQBa6MethodZv@Base 15 + _D3std3net4curl4HTTP6methodMFNdZEQBfQBeQBdQBb6Method@Base 15 + _D3std3net4curl4HTTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 + _D3std3net4curl4HTTP6opCallFZSQBcQBbQBaQy@Base 15 + _D3std3net4curl4HTTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4HTTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 + _D3std3net4curl4HTTP8postDataMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP8postDataMFNdAxvZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610setNoProxyMFAyaZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610verifyHostMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4610verifyPeerMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin4611dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 + _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl4HTTP9__mixin4614connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4614localPortRangeMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin4616operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4HTTP9__mixin4617setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl4HTTP9__mixin4622setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl4HTTP9__mixin4628defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl4HTTP9__mixin465proxyMFNdAxaZv@Base 15 + _D3std3net4curl4HTTP9__mixin466handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 + _D3std3net4curl4HTTP9__mixin466onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4HTTP9__mixin467verboseMFNdbZv@Base 15 + _D3std3net4curl4HTTP9__mixin468shutdownMFZv@Base 15 + _D3std3net4curl4HTTP9__mixin469isStoppedMFNdZb@Base 15 + _D3std3net4curl4HTTP9__mixin469localPortMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin469onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4HTTP9__mixin469proxyPortMFNdtZv@Base 15 + _D3std3net4curl4HTTP9__mixin469proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 + _D3std3net4curl4HTTP9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 + _D3std3net4curl4HTTP9setCookieMFAxaZv@Base 15 + _D3std3net4curl4SMTP10initializeMFZv@Base 15 + _D3std3net4curl4SMTP11__fieldDtorMFZv@Base 15 + _D3std3net4curl4SMTP15__fieldPostblitMFNaNbNiNlZv@Base 15 + _D3std3net4curl4SMTP3urlMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP4Impl6__dtorMFZv@Base 15 + _D3std3net4curl4SMTP4Impl6__initZ@Base 15 + _D3std3net4curl4SMTP4Impl7messageMFNdAyaZv@Base 15 + _D3std3net4curl4SMTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 + _D3std3net4curl4SMTP6__initZ@Base 15 + _D3std3net4curl4SMTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 + _D3std3net4curl4SMTP6opCallFZSQBcQBbQBaQy@Base 15 + _D3std3net4curl4SMTP7messageMFNdAyaZv@Base 15 + _D3std3net4curl4SMTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 + _D3std3net4curl4SMTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 + _D3std3net4curl4SMTP9__mixin1310dnsTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310onProgressMFNdDFmmmmZiZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310setNoProxyMFAyaZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310tcpNoDelayMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310verifyHostMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1310verifyPeerMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin1311dataTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 + _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdxG4hZv@Base 15 + _D3std3net4curl4SMTP9__mixin1314connectTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1314localPortRangeMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin1316operationTimeoutMFNdS4core4time8DurationZv@Base 15 + _D3std3net4curl4SMTP9__mixin1317setAuthenticationMFAxaQdQfZv@Base 15 + _D3std3net4curl4SMTP9__mixin1322setProxyAuthenticationMFAxaQdZv@Base 15 + _D3std3net4curl4SMTP9__mixin1328defaultAsyncStringBufferSizek@Base 15 + _D3std3net4curl4SMTP9__mixin135proxyMFNdAxaZv@Base 15 + _D3std3net4curl4SMTP9__mixin136handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 + _D3std3net4curl4SMTP9__mixin136onSendMFNdDFAvZmZv@Base 15 + _D3std3net4curl4SMTP9__mixin137verboseMFNdbZv@Base 15 + _D3std3net4curl4SMTP9__mixin138shutdownMFZv@Base 15 + _D3std3net4curl4SMTP9__mixin139isStoppedMFNdZb@Base 15 + _D3std3net4curl4SMTP9__mixin139localPortMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin139onReceiveMFNdDFAhZmZv@Base 15 + _D3std3net4curl4SMTP9__mixin139proxyPortMFNdtZv@Base 15 + _D3std3net4curl4SMTP9__mixin139proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 + _D3std3net4curl7CurlAPI3API6__initZ@Base 15 + _D3std3net4curl7CurlAPI4_apiSQBbQBaQzQw3API@Base 15 + _D3std3net4curl7CurlAPI6__initZ@Base 15 + _D3std3net4curl7CurlAPI7_handlePv@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZ5namesyAAa@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZ7cleanupUZv@Base 15 + _D3std3net4curl7CurlAPI7loadAPIFZPv@Base 15 + _D3std3net4curl7CurlAPI8instanceFNcNdZSQBlQBkQBjQBh3API@Base 15 + _D3std3net4curl8isFTPUrlFAxaZb@Base 15 + _D3std3net7isemail10AsciiToken6__initZ@Base 15 + _D3std3net7isemail11EmailStatus10domainPartMxFNaNbNdNiNjNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus10statusCodeMxFNaNbNdNiNlNfZEQCgQCfQCe15EmailStatusCode@Base 15 + _D3std3net7isemail11EmailStatus11__xopEqualsMxFKxSQBwQBvQBuQBpZb@Base 15 + _D3std3net7isemail11EmailStatus5validMxFNaNbNdNiNlNfZb@Base 15 + _D3std3net7isemail11EmailStatus6__ctorMFNaNbNcNiNfbAyaQdEQCdQCcQCb15EmailStatusCodeZSQDfQDeQDdQCy@Base 15 + _D3std3net7isemail11EmailStatus6__initZ@Base 15 + _D3std3net7isemail11EmailStatus6statusMxFNaNbNdNiNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus8toStringMxFNaNlNfZAya@Base 15 + _D3std3net7isemail11EmailStatus9__xtoHashFNbNeKxSQBvQBuQBtQBoZm@Base 15 + _D3std3net7isemail11EmailStatus9localPartMxFNaNbNdNiNjNlNfZAya@Base 15 + _D3std3net7isemail11__moduleRefZ@Base 15 + _D3std3net7isemail12__ModuleInfoZ@Base 15 + _D3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D3std3net7isemail21statusCodeDescriptionFNaNbNiNfEQBxQBwQBv15EmailStatusCodeZAya@Base 15 + _D3std3uni10compressToFNaNbNfkMKAhZv@Base 15 + _D3std3uni10isAlphaNumFNaNbNiNfwZb@Base 15 + _D3std3uni10nfkcQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkcQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkdQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10nfkdQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10numberTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10numberTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10safeRead24FNaNbNiMxPhmZk@Base 15 + _D3std3uni10symbolTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10symbolTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni10toLowerTabFNaNbNiNemZw@Base 15 + _D3std3uni10toTitleTabFNaNbNiNemZw@Base 15 + _D3std3uni10toUpperTabFNaNbNiNemZw@Base 15 + _D3std3uni10xpictoTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni10xpictoTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11__moduleRefZ@Base 15 + _D3std3uni11caseEncloseFNaNfSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhZQBv@Base 15 + _D3std3uni11composeJamoFNaNbNiNfwwwZw@Base 15 + _D3std3uni11isGraphicalFNaNbNiNfwZb@Base 15 + _D3std3uni11isSurrogateFNaNbNiNfwZb@Base 15 + _D3std3uni11prependTrieFNaNbNdNiNfZ3resySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11prependTrieFNaNbNdNiNfZySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni11safeWrite24FNaNbNiMPhkmZv@Base 15 + _D3std3uni11toTitlecaseFNaNbNiNfwZw@Base 15 + _D3std3uni12__ModuleInfoZ@Base 15 + _D3std3uni12fullCaseTrieFNaNbNdNiNfZ3resySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni12fullCaseTrieFNaNbNdNiNfZySQBkQBj__T4TrieTtTwVmi1114112TSQCoQCn__T9sliceBitsVmi13Vmi21ZQvTSQDwQDv__TQBiVmi6Vmi13ZQBvTSQExQEw__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni12isPow2OrZeroFNaNbNiNfmZb@Base 15 + _D3std3uni12isPrivateUseFNaNbNiNfwZb@Base 15 + _D3std3uni12toLowerIndexFNaNbNiNewZt@Base 15 + _D3std3uni12toTitleIndexFNaNbNiNewZt@Base 15 + _D3std3uni12toUpperIndexFNaNbNiNewZt@Base 15 + _D3std3uni13ReallocPolicy6__initZ@Base 15 + _D3std3uni13ReallocPolicy__T5allocTkZQjFNaNbNiNemZAk@Base 15 + _D3std3uni13ReallocPolicy__T6appendTkTiZQmFNaNbNiNfKAkiZv@Base 15 + _D3std3uni13ReallocPolicy__T7destroyTkZQlFNaNbNiNeMKAkZv@Base 15 + _D3std3uni13ReallocPolicy__T7reallocTkZQlFNaNbNiNeNkMAkmZQe@Base 15 + _D3std3uni13getUnicodeSetFNfMxAabbZSQBiQBh__T13InversionListTSQCiQCh8GcPolicyZQBh@Base 15 + _D3std3uni13graphicalTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13graphicalTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13isPunctuationFNaNbNiNfwZb@Base 15 + _D3std3uni13isSurrogateHiFNaNbNiNfwZb@Base 15 + _D3std3uni13isSurrogateLoFNaNbNiNfwZb@Base 15 + _D3std3uni13lowerCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13lowerCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13upperCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13upperCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni13wordCharacterFNdNfZSQBeQBd__T13InversionListTSQCeQCd8GcPolicyZQBh@Base 15 + _D3std3uni14MatcherConcept6__initZ@Base 15 + _D3std3uni14combiningClassFNaNbNiNfwZh@Base 15 + _D3std3uni14decompressFromFNaNfMAxhKmZk@Base 15 + _D3std3uni14isNonCharacterFNaNbNiNfwZb@Base 15 + _D3std3uni14simpleCaseTrieFNaNbNdNiNfZ3resySQBqQBp__T4TrieTtTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi6Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni14simpleCaseTrieFNaNbNdNiNfZySQBmQBl__T4TrieTtTwVmi1114112TSQCqQCp__T9sliceBitsVmi13Vmi21ZQvTSQDyQDx__TQBiVmi6Vmi13ZQBvTSQEzQEy__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAaZv@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAuZv@Base 15 + _D3std3uni14toLowerInPlaceFNaNfKAwZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAaZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAuZv@Base 15 + _D3std3uni14toUpperInPlaceFNaNfKAwZv@Base 15 + _D3std3uni15decomposeHangulFNaNbNfwZSQBjQBi8Grapheme@Base 15 + _D3std3uni15hangulRecomposeFNaNbNiNfMAwZv@Base 15 + _D3std3uni15punctuationTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15punctuationTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15spacingMarkTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15spacingMarkTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni15unalignedRead24FNaNbNiMxPhmZk@Base 15 + _D3std3uni16canonMappingTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi5Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni16canonMappingTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi5Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni16nonCharacterTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTSQCiQCh__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDyQDx__T9sliceBitsVmi14Vmi21ZQvTSQFgQFf__TQBiVmi10Vmi14ZQBwTSQGiQGh__TQCkVmi6Vmi10ZQCxTSQHjQHi__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni16nonCharacterTrieFNaNbNdNiNfZySQBoQBn__T4TrieTSQCeQCd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDuQDt__T9sliceBitsVmi14Vmi21ZQvTSQFcQFb__TQBiVmi10Vmi14ZQBwTSQGeQGd__TQCkVmi6Vmi10ZQCxTSQHfQHe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni16unalignedWrite24FNaNbNiMPhkmZv@Base 15 + _D3std3uni17CodepointInterval11__xopEqualsMxFKxSQBuQBtQBsZb@Base 15 + _D3std3uni17CodepointInterval1aMNgFNaNbNcNdNiNjNfZNgk@Base 15 + _D3std3uni17CodepointInterval1bMNgFNaNbNcNdNiNjNfZNgk@Base 15 + _D3std3uni17CodepointInterval6__ctorMFNaNbNcNiNfkkZSQByQBxQBw@Base 15 + _D3std3uni17CodepointInterval6__initZ@Base 15 + _D3std3uni17CodepointInterval__T8opEqualsTxSQBqQBpQBoZQwMxFNaNbNiNfxQzZb@Base 15 + _D3std3uni17compatMappingTrieFNaNbNdNiNfZ3resySQBtQBs__T4TrieTtTwVmi1114112TSQCxQCw__T9sliceBitsVmi13Vmi21ZQvTSQEfQEe__TQBiVmi5Vmi13ZQBvTSQFgQFf__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni17compatMappingTrieFNaNbNdNiNfZySQBpQBo__T4TrieTtTwVmi1114112TSQCtQCs__T9sliceBitsVmi13Vmi21ZQvTSQEbQEa__TQBiVmi5Vmi13ZQBvTSQFcQFb__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18combiningClassTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieThTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi5Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18combiningClassTrieFNaNbNdNiNfZySQBqQBp__T4TrieThTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi5Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieTSQCkQCj__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEaQDz__T9sliceBitsVmi13Vmi21ZQvTSQFiQFh__TQBiVmi8Vmi13ZQBvTSQGjQGi__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZySQBqQBp__T4TrieTSQCgQCf__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDwQDv__T9sliceBitsVmi13Vmi21ZQvTSQFeQFd__TQBiVmi8Vmi13ZQBvTSQGfQGe__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni18graphemeTransformsyAPFNaNbNiNfKEQBqQBp13GraphemeStatewZEQCoQCn12TransformRes@Base 15 + _D3std3uni18simpleCaseFoldingsFNaNbNiNfwZSQBoQBnQBmFNfwZ5Range@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfkkZSQCkQCjQCiFNfwZQBr@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfwZSQCjQCiQChFNfwZQBq@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range7isSmallMxFNaNbNdNiNfZb@Base 15 + _D3std3uni18simpleCaseFoldingsFNfwZ5Range8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni18toLowerSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni18toTitleSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni18toUpperSimpleIndexFNaNbNiNewZt@Base 15 + _D3std3uni19compositionJumpTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTtTwVmi1114112TSQCzQCy__T9sliceBitsVmi9Vmi21ZQuTSQEgQEf__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni19compositionJumpTrieFNaNbNdNiNfZySQBrQBq__T4TrieTtTwVmi1114112TSQCvQCu__T9sliceBitsVmi9Vmi21ZQuTSQEcQEb__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni19decompressIntervalsFNaNfAxhZSQBnQBm21DecompressedIntervals@Base 15 + _D3std3uni19graphemeControlTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTSQClQCk__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEbQEa__T9sliceBitsVmi13Vmi21ZQvTSQFjQFi__TQBiVmi8Vmi13ZQBvTSQGkQGj__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni19graphemeControlTrieFNaNbNdNiNfZySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni19hangulSyllableIndexFNaNbNiNfwZi@Base 15 + _D3std3uni19isRegionalIndicatorFNaNbNiNfwZb@Base 15 + _D3std3uni21DecompressedIntervals11__xopEqualsMxFKxSQByQBxQBwZb@Base 15 + _D3std3uni21DecompressedIntervals4saveMFNaNdNjNlNfZSQByQBxQBw@Base 15 + _D3std3uni21DecompressedIntervals5emptyMxFNaNdNfZb@Base 15 + _D3std3uni21DecompressedIntervals5frontMFNaNdNfZSQBvQBu17CodepointInterval@Base 15 + _D3std3uni21DecompressedIntervals6__ctorMFNaNcNfAxhZSQBzQByQBx@Base 15 + _D3std3uni21DecompressedIntervals6__initZ@Base 15 + _D3std3uni21DecompressedIntervals8popFrontMFNaNfZv@Base 15 + _D3std3uni21DecompressedIntervals9__xtoHashFNbNeKxSQBxQBwQBvZm@Base 15 + _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni23genUnrolledSwitchSearchFNaNbNfmZAya@Base 15 + _D3std3uni4icmpFNaNbNiNfAxaQdZi@Base 15 + _D3std3uni4icmpFNaNbNiNfAxuQdZi@Base 15 + _D3std3uni4icmpFNaNbNiNfAxwQdZi@Base 15 + _D3std3uni5asSetFNaNfAxhZSQyQw__T13InversionListTSQBwQBv8GcPolicyZQBh@Base 15 + _D3std3uni5low_8FNaNbNiNfkZk@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxaMQeZi@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxuMQeZi@Base 15 + _D3std3uni5sicmpFNaNbNiNfMAxwMQeZi@Base 15 + _D3std3uni6hangLVFNaNbNdNiNfZ3resySQBhQBg__T4TrieTSQBxQBw__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDnQDm__T9sliceBitsVmi13Vmi21ZQvTSQEvQEu__TQBiVmi8Vmi13ZQBvTSQFwQFv__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni6isMarkFNaNbNiNfwZb@Base 15 + _D3std3uni6read24FNaNbNiMxPhmZk@Base 15 + _D3std3uni7composeFNaNbNfwwZw@Base 15 + _D3std3uni7hangLVTFNaNbNdNiNfZ3resySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni7isAlphaFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoLFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoTFNaNbNiNfwZb@Base 15 + _D3std3uni7isJamoVFNaNbNiNfwZb@Base 15 + _D3std3uni7isLowerFNaNbNiNfwZb@Base 15 + _D3std3uni7isSpaceFNaNbNiNfwZb@Base 15 + _D3std3uni7isUpperFNaNbNiNfwZb@Base 15 + _D3std3uni7isWhiteFNaNbNiNfwZb@Base 15 + _D3std3uni7toLowerFNaNbNiNfwZw@Base 15 + _D3std3uni7toLowerFNaNfNkMAyaZQe@Base 15 + _D3std3uni7toLowerFNaNfNkMAyuZQe@Base 15 + _D3std3uni7toLowerFNaNfNkMAywZQe@Base 15 + _D3std3uni7toUpperFNaNbNiNfwZw@Base 15 + _D3std3uni7toUpperFNaNfNkMAyaZQe@Base 15 + _D3std3uni7toUpperFNaNfNkMAyuZQe@Base 15 + _D3std3uni7toUpperFNaNfNkMAywZQe@Base 15 + _D3std3uni7unicode18hangulSyllableType6__initZ@Base 15 + _D3std3uni7unicode5block6__initZ@Base 15 + _D3std3uni7unicode6__initZ@Base 15 + _D3std3uni7unicode6script6__initZ@Base 15 + _D3std3uni7unicode7findAnyFNfAyaZb@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa10_416c7068616265746963ZQBpFNaNdNfZSQCuQCt__T13InversionListTSQDuQDt8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4c43ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d63ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d65ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4d6eZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_4e64ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa2_5063ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T10opDispatchVAyaa5_4153434949ZQBeFNaNdNfZSQCjQCi__T13InversionListTSQDjQDi8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T6opCallTaZQkFNaNfMxAaZSQBqQBp__T13InversionListTSQCqQCp8GcPolicyZQBh@Base 15 + _D3std3uni7unicode__T7loadAnyTSQBdQBc__T13InversionListTSQCdQCc8GcPolicyZQBhTaZQCgFNaNfMxAaZQCk@Base 15 + _D3std3uni7write24FNaNbNiMPhkmZv@Base 15 + _D3std3uni8GcPolicy6__initZ@Base 15 + _D3std3uni8GcPolicy__T5allocTkZQjFNaNbNfmZAk@Base 15 + _D3std3uni8GcPolicy__T6appendTkTiZQmFNaNbNfKAkiZv@Base 15 + _D3std3uni8GcPolicy__T7destroyTAkZQmFNaNbNiNfKQpZv@Base 15 + _D3std3uni8GcPolicy__T7reallocTkZQlFNaNbNfAkmZQe@Base 15 + _D3std3uni8Grapheme10__postblitMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme11__xopEqualsMxFKxSQBkQBjQBiZb@Base 15 + _D3std3uni8Grapheme11smallLengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni8Grapheme12convertToBigMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme13opIndexAssignMFNaNbNiNewmZv@Base 15 + _D3std3uni8Grapheme5isBigMxFNaNbNdNiNfZh@Base 15 + _D3std3uni8Grapheme6__dtorMFNaNbNiNeZv@Base 15 + _D3std3uni8Grapheme6__initZ@Base 15 + _D3std3uni8Grapheme6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni8Grapheme6setBigMFNaNbNiNfZv@Base 15 + _D3std3uni8Grapheme6toHashMxFNeZm@Base 15 + _D3std3uni8Grapheme7opIndexMxFNaNbNiNemZw@Base 15 + _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfZSQBnQBm__T16SliceOverIndexedTSQCqQCpQCoZQBe@Base 15 + _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfmmZSQBpQBo__T16SliceOverIndexedTSQCsQCrQCqZQBe@Base 15 + _D3std3uni8Grapheme8opAssignMFNaNbNcNiNjNeSQBpQBoQBnZQl@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxiZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxwZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 + _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eZQwMFNaNbNcNiNewZSQChQCgQCf@Base 15 + _D3std3uni8Grapheme__T6__ctorTiZQkMFNaNbNcNiNfxAiXSQBxQBwQBv@Base 15 + _D3std3uni8Grapheme__T6__ctorTwZQkMFNaNbNcNiNfxAwXSQBxQBwQBv@Base 15 + _D3std3uni8Grapheme__T8opEqualsTSQBfQBeQBdZQvMxFNaNbNiNeKxSQCfQCeQCdZb@Base 15 + _D3std3uni8encodeToFNaNbNiNeMAamwZm@Base 15 + _D3std3uni8encodeToFNaNbNiNeMAwmwZm@Base 15 + _D3std3uni8encodeToFNaNeMAumwZm@Base 15 + _D3std3uni8isFormatFNaNbNiNfwZb@Base 15 + _D3std3uni8isNumberFNaNbNiNfwZb@Base 15 + _D3std3uni8isSymbolFNaNbNiNfwZb@Base 15 + _D3std3uni8markTrieFNaNbNdNiNfZ3resySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni8markTrieFNaNbNdNiNfZySQBfQBe__T4TrieTSQBvQBu__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDlQDk__T9sliceBitsVmi13Vmi21ZQvTSQEtQEs__TQBiVmi8Vmi13ZQBvTSQFuQFt__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni8midlow_8FNaNbNiNfkZk@Base 15 + _D3std3uni9alphaTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9alphaTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9isControlFNaNbNiNfwZb@Base 15 + _D3std3uni9nfcQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfcQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfdQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9nfdQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni9recomposeFNaNbNfmMAwMAhZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs11__xopEqualsMxFKxSQCzQCy__TQCxTQCoTtZQDhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMFNaNbNcNfAmXSQDbQDa__TQCzTQCqTtZQDj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQDrQDq__TQDpTQDgTtZQDz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs9__xtoHashFNbNeKxSQCyQCx__TQCwTQCnTtZQDgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTQDlVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTtVmi16ZQx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTQDtVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo11__xopEqualsMxFKxSQDvQDu__TQDtTQDkTQClZQEfZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMFNaNbNcNfAmXSQDxQDw__TQDvTQDmTQCnZQEh@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEnQEm__TQElTQEcTQDdZQEx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo9__xtoHashFNbNeKxSQDuQDt__TQDsTQDjTQCkZQEeZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQEpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTQFhTQEjTQDoTQCtZQGkZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMFNaNbNcNfAmXSQFuQFt__TQFsTQFjTQElTQDqTQCvZQGm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQGkQGj__TQGiTQFzTQFbTQEgTQDlZQHc@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTQFgTQEiTQDnTQCsZQGjZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQGeVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQFcVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi3ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQGmVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQFkVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi3ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi3ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTtVmi16ZQx@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoThZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqThZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgThZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnThZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplThVmi8ZQw@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplThVmi8ZQBc@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 + _D3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 + _D3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 + _D3std3uni__T10sharMethodSQyQw23switchUniformLowerBoundZ__TQBuVAyaa6_61203c3d2062TAxkTkZQCxFNaNbNiNfQskZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi14ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi13ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn11__xopEqualsMxFKxSQGuQGt__TQGsTbTwVii1114112TQGiTQFeTQEgTQDjZQIaZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5buildMFNaNbNeZSQGrQGq__T4TrieTSQHhQHg__T9BitPackedTbVmi1ZQrTwVmi1114112TQHjTQGfTQFhTQEkZQCm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__ctorMFNaNbNcNebZSQGvQGu__TQGtTbTwVii1114112TQGjTQFfTQEhTQDkZQIb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn9__xtoHashFNbNeKxSQGtQGs__TQGrTbTwVii1114112TQGhTQFdTQEfTQDiZQHzZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T14deduceMaxIndexTQFiTQEeTQDgTQCjZQBhFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi0TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi7ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi1TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi2TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi3TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi1TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi2TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi3TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi3ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi0TSQGtQGs__T9BitPackedTkVmi7ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi1TSQGtQGs__T9BitPackedTkVmi11ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi2TSQGtQGs__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi3TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj10putRangeAtMFNaNbNemmbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTbTwVii1114112TQEeTQDbZQFoZb@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTSQFdQFc__T9BitPackedTbVmi1ZQrTwVmi1114112TQFfTQEcZQCe@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5putAtMFNaNbNembZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__ctorMFNaNbNcNebZSQErQEq__TQEpTbTwVii1114112TQEfTQDcZQFp@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putRangeMFNaNewwbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putValueMFNaNewbZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTbTwVii1114112TQEdTQDaZQFnZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTSQGhQGg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi13ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 + _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi1TbZQqMFNaNbNebmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqThTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieThTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNehZSQFtQFs__TQFrThTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewhZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpThTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplThVmi8ZQBcZQCmMFNaNbNeKQCcZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplThVmi8ZQBcZQCqMFNaNbNeKQCcZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2ThZQqMFNaNbNehmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj10putRangeAtMFNaNbNemmtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTtTwVii1114112TQEeTQDbZQFoZb@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTtTwVmi1114112TQEdTQDaZQBc@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5putAtMFNaNbNemtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__ctorMFNaNbNcNetZSQErQEq__TQEpTtTwVii1114112TQEfTQDcZQFp@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putRangeMFNaNewwtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putValueMFNaNewtZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTtTwVii1114112TQEdTQDaZQFnZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi12ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi12ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 + _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi1TtZQqMFNaNbNetmZv@Base 15 + _D3std3uni__T11copyForwardTiTkZQsFNaNbNiNfAiAkZv@Base 15 + _D3std3uni__T11copyForwardTkTkZQsFNaNbNiNfAkQcZv@Base 15 + _D3std3uni__T11copyForwardTmTmZQsFNaNbNiNfAmQcZv@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables6blocks3tabFNaNdNfZAySQCzQByQBs15UnicodePropertyTaZQDrFNaNfMxAaZb@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables7scripts3tabFNaNdNfZAySQDaQBzQBt15UnicodePropertyTaZQDsFNaNfMxAaZb@Base 15 + _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDbQCaQBu15UnicodePropertyTaZQDtFNaNfMxAaZb@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFNfZSQIpQIo__T13InversionListTSQJpQJo8GcPolicyZQBh@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ11initializedb@Base 15 + _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ4slotSQIsQIr__T13InversionListTSQJsQJr8GcPolicyZQBh@Base 15 + _D3std3uni__T12fullCasedCmpTAxwZQtFNaNbNiNfwwKQsZi@Base 15 + _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 + _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 + _D3std3uni__T12loadPropertyTSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhTaZQCmFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTiZQFjFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTwZQFjFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 + _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 + _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh10byIntervalMFNaNbNdNlNfZSQCvQCu__TQCtTQChZQDb__T9IntervalsTAkZQo@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__fieldDtorMFNaNbNiNeZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__xopEqualsMxFKxSQCoQCn__TQCmTQCaZQCuZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11addIntervalMFNaNbNlNfiimZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNaNbNdNfZSQCuQCt__TQCsTQCgZQDaQBtMFNdNfZ14CodepointRange@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange11__xopEqualsMxFKxSQDyQDx__TQDwTQDkZQEeQCxMFNdNfZQCnZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__ctorMFNaNbNcNfSQDxQDw__TQDvTQDjZQEdZSQEtQEs__TQErTQEfZQEzQDsMFNdNfZQDi@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange9__xtoHashFNbNeKxSQDxQDw__TQDvTQDjZQEdQCwMFNdNfZQCmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZQe@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11binaryScopeTQBxZQsFNfQCgQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11linearScopeTQBxZQsFNaNfQCiQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T6bisectTQBrZQmFNfQCamQBcZQBg@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeMFNfAyaZQe@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6lengthMFNaNbNdNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7opIndexMxFNaNbNiNfkZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7subCharMFNaNbNcNfwZSQCqQCp__TQCoTQCcZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8dropUpToMFNaNbNfkmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8invertedMFNaNbNdNfZSQCqQCp__TQCoTQCcZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8opAssignMFNaNbNcNiNjNeSQCtQCs__TQCrTQCfZQCzZQw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8sanitizeMFNaNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8skipUpToMFNaNbNfkmZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9__xtoHashFNbNeKxSQCnQCm__TQClTQBzZQCtZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9intervalsMxFNaNbNdNfZAxSQCuQCt17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_26TSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTwZQyMFNaNbNcNfwZSQDlQDk__TQDjTQCxZQDr@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsTSQCpQCo21DecompressedIntervalsZQBvFNaNfQBnZSQEgQEf__TQEeTQDsZQEm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsZQqFNaNbNfAkXSQDbQDa__TQCzTQCnZQDh@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T3addTSQCeQCd__TQCcTQBqZQCkZQBbMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T6__ctorTSQChQCg__TQCfTQBtZQCnZQBeMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_26TSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_7cTSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo11__xopEqualsMxFKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo13opIndexAssignMFNaNbNiNfSQDoQDn17CodepointIntervalmZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMFNaNbNdNiNfSQDgQDf17CodepointIntervalZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMxFNaNbNdNiNfZSQDiQDh17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4saveMFNaNbNdNiNfZSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCo@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMFNaNbNdNiNfSQDhQDg17CodepointIntervalZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBaZSQDoQDn__TQDmTQDaZQDu__TQCnTQCgZQCv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBammZSQDqQDp__TQDoTQDcZQDw__TQCpTQCiZQCx@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opIndexMxFNaNbNiNfmZSQDkQDj17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opSliceMFNaNbNiNfmmZSQDkQDj__TQDiTQCwZQDq__TQCjTQCcZQCr@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo9__xtoHashFNbNeKxSQDgQDf__TQDeTQCsZQDm__TQCfTQByZQCnZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp11__xopEqualsMxFKxSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCpZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4backMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4saveMFNaNbNdNiNfZSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCp@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5frontMxFNaNbNdNiNfZSQDkQDj17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbZSQDpQDo__TQDnTQDbZQDv__TQCoTQChZQCw@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbmmZSQDrQDq__TQDpTQDdZQDx__TQCqTQCjZQCy@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opIndexMxFNaNbNiNfmZSQDlQDk17CodepointInterval@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opSliceMFNaNbNiNfmmZSQDlQDk__TQDjTQCxZQDr__TQCkTQCdZQCs@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp9__xtoHashFNbNeKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZm@Base 15 + _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9intersectTSQCkQCj__TQCiTQBwZQCqZQBhMFNaNbNcNfQBjZQBn@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleWriteMFNaNbNibmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNibmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleWriteMFNaNbNihmZv@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw13opIndexAssignMFNaNbNihmZv@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw6__ctorMNgFNaNbNcNiNfPNgmZNgSQCmQCl__TQCkThVmi8ZQCu@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplThVmi8ZQw7opIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleWriteMFNaNbNitmZv@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx13opIndexAssignMFNaNbNitmZv@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__ctorMNgFNaNbNcNiNfPNgmZNgSQCnQCm__TQClTtVmi16ZQCw@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 + _D3std3uni__T13PackedPtrImplTtVmi16ZQx7opIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T13copyBackwardsTkTkZQuFNaNbNiNfAkQcZv@Base 15 + _D3std3uni__T13copyBackwardsTmTmZQuFNaNbNiNfAmQcZv@Base 15 + _D3std3uni__T13replicateBitsVmi1Vmi64ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi2Vmi32ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi4Vmi16ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi64Vmi1ZQzFNaNbNiNfmZm@Base 15 + _D3std3uni__T13replicateBitsVmi8Vmi8ZQyFNaNbNiNfmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 + _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTaZQDuFNaNfMxAaZl@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTaZQDvFNaNfMxAaZl@Base 15 + _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTaZQDwFNaNfMxAaZl@Base 15 + _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAiZQClFNaNbNeKQCdmmQtZm@Base 15 + _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAkZQClFNaNbNeKQCdmmQtZm@Base 15 + _D3std3uni__T14graphemeStrideTaZQtFNaNfMxAamZm@Base 15 + _D3std3uni__T14graphemeStrideTuZQtFNaNfMxAumZm@Base 15 + _D3std3uni__T14graphemeStrideTwZQtFNaNbNiNfMxAwmZm@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTSQEeQEd__T13InversionListTSQFeQFd8GcPolicyZQBhTaZQFpFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTSQEfQEe__T13InversionListTSQFfQFe8GcPolicyZQBhTaZQFqFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTSQEgQEf__T13InversionListTSQFgQFf8GcPolicyZQBhTaZQFrFNaNfMxAaKQCkZb@Base 15 + _D3std3uni__T14toLowerInPlaceTaZQtFNaNeKAaZv@Base 15 + _D3std3uni__T14toLowerInPlaceTuZQtFNaNeKAuZv@Base 15 + _D3std3uni__T14toLowerInPlaceTwZQtFNaNeKAwZv@Base 15 + _D3std3uni__T14toUpperInPlaceTaZQtFNaNeKAaZv@Base 15 + _D3std3uni__T14toUpperInPlaceTuZQtFNaNeKAuZv@Base 15 + _D3std3uni__T14toUpperInPlaceTwZQtFNaNeKAwZv@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTbVmi1ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi1ZQBe@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi11ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi12ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi13ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi14ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi15ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi16ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi7ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 + _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi8ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 + _D3std3uni__T15packedArrayViewThZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplThVmi8ZQBc@Base 15 + _D3std3uni__T15packedArrayViewTtZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk11__xopEqualsMxFKxSQCrQCq__TQCpTQCaZQCxZb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk13opIndexAssignMFNaNbNiNfwmZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMFNaNbNdNiNfwZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4saveMNgFNaNbNdNiNfZNgSQCvQCu__TQCtTQCeZQDb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMFNaNbNdNiNfwZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMxFNaNbNdNiNfZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opIndexMxFNaNbNiNfmZw@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfZSQCsQCr__TQCqTQCbZQCy@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCdZQDa@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7popBackMFNaNbNiNfZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk8popFrontMFNaNbNiNfZv@Base 15 + _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk__T8opEqualsTxSQCnQCm__TQClTQBwZQCtZQBhMxFNaNbNiNfKxQBmZb@Base 15 + _D3std3uni__T16codepointSetTrieVii13Vii8Z__TQBfTSQBvQBu__T13InversionListTSQCvQCu8GcPolicyZQBhZQDeFNaNfQCdZSQEcQEb__T4TrieTSQEsQEr__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGiQGh__T9sliceBitsVmi8Vmi21ZQuTSQHpQHo__TQBhVmi0Vmi8ZQBtZQEd@Base 15 + _D3std3uni__T16propertyNameLessTaTaZQxFNaNfAxaQdZb@Base 15 + _D3std3uni__T16sliceOverIndexedTSQBfQBe8GraphemeZQBkFNaNbNiNfmmPQBgZSQCpQCo__T16SliceOverIndexedTQCnZQx@Base 15 + _D3std3uni__T18__lambda_L7012_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7035_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7044_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7054_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7074_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7089_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7101_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7124_C29TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7133_C28TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18__lambda_L7146_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 + _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi1ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNibmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNibmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi1ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi1ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi1ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi1ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc11__xopEqualsMxFKxSQCjQCi__TQChThVmi8ZQCrZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opIndexAssignMFNaNbNihmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opSliceAssignMFNaNbNihmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCvQCu__TQCtThVmi8ZQDd@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opIndexMNgFNaNbNimZh@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMFNaNbNiNfZSQCkQCj__TQCiThVmi8ZQCs@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMNgFNaNbNiNfmmZNgSQCqQCp__TQCoThVmi8ZQCy@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T8opEqualsTxSQCfQCe__TQCdThVmi8ZQCnZQBjMxFNaNbNiKxQBmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd11__xopEqualsMxFKxSQCkQCj__TQCiTtVmi16ZQCtZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opIndexAssignMFNaNbNitmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opSliceAssignMFNaNbNitmmZv@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd5zerosMFNaNbNimmZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCwQCv__TQCuTtVmi16ZQDf@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opIndexMNgFNaNbNimZt@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMFNaNbNiNfZSQClQCk__TQCjTtVmi16ZQCu@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMNgFNaNbNiNfmmZNgSQCrQCq__TQCpTtVmi16ZQDa@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T7roundUpZQjMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T8opEqualsTxSQCgQCf__TQCeTtVmi16ZQCpZQBkMxFNaNbNiKxQBnZb@Base 15 + _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T9roundDownZQlMFNaNbNiNfmZm@Base 15 + _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZb@Base 15 + _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZi@Base 15 + _D3std3uni__T20isPrettyPropertyNameTaZQzFNaNfMxAaZb@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxaZQCgFNaNfKQnZv@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxuZQCgFNaNfKQnZv@Base 15 + _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxwZQCgFNaNbNiNfKQrZv@Base 15 + _D3std3uni__T23switchUniformLowerBoundSQBl10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62ZQBvTAxkTkZQDxFNaNbNiNfQskZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi14ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi13ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf11__xopEqualsMxFKxSQHmQHl__TQHkTQHiTwVmi1114112TQGkTQFgTQEiTQDlZQIuZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf9__xtoHashFNbNeKxSQHlQHk__TQHjTQHhTwVmi1114112TQGjTQFfTQEhTQDkZQItZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMFNaNbNcNiNeSQHtQHs__T10MultiArrayTSQIqQIp__TQIaTkVmi7ZQIkTSQJoQJn__TQIyTkVmi11ZQJjTSQKnQKm__TQJxTkVmi15ZQKiTQKuZQDnZSQLuQLt__TQLsTQLqTwVmi1114112TQKsTQJoTQIqTQHtZQNc@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQIdQIc__TQIbTQHzTwVmi1114112TQHbTQFxTQEzTQEcZQJl@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T7opIndexZQjMxFNaNbNiNewZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb11__xopEqualsMxFKxSQFiQFh__TQFgTQFeTwVmi1114112TQEgTQDdZQGiZb@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb9__xtoHashFNbNeKxSQFhQFg__TQFfTQFdTwVmi1114112TQEfTQDcZQGhZm@Base 15 + _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb__T6__ctorZQiMFNaNbNcNiNeSQFpQFo__T10MultiArrayTSQGmQGl__TQFwTkVmi13ZQGhTQGtZQBqZSQHtQHs__TQHrTQHpTwVmi1114112TQGrTQFoZQIt@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiThTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhThTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpThZQCsZSQIxQIw__TQIvThTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzThTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZh@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi15ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZt@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb11__xopEqualsMxFKxSQEiQEh__TQEgTtTwVmi1114112TQEeTQDbZQFgZb@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb9__xtoHashFNbNeKxSQEhQEg__TQEfTtTwVmi1114112TQEdTQDaZQFfZm@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMFNaNbNcNiNeSQEpQEo__T10MultiArrayTSQFmQFl__T9BitPackedTkVmi12ZQsTtZQBuZSQGxQGw__TQGvTtTwVmi1114112TQGtTQFqZQHv@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQEzQEy__TQExTtTwVmi1114112TQEvTQDsZQFx@Base 15 + _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T7opIndexZQjMxFNaNbNiNewZt@Base 15 + _D3std3uni__T4icmpTAxaTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T4icmpTAxuTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T4icmpTAxwTQeZQnFNaNbNiNfQsQuZi@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm11__xopEqualsMxFKxSQCtQCs__TQCrTQCoZQCzZb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3popMFNbNeZQBt@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3topMFNaNbNcNdNiNfZQCb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm4pushMFNaNbNfQBvZv@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6lengthMFNaNbNdNiNfZm@Base 15 + _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm9__xtoHashFNbNeKxSQCsQCr__TQCqTQCnZQCyZm@Base 15 + _D3std3uni__T5StackTkZQj11__xopEqualsMxFKxSQBpQBo__TQBnTkZQBtZb@Base 15 + _D3std3uni__T5StackTkZQj3popMFNbNeZk@Base 15 + _D3std3uni__T5StackTkZQj3topMFNaNbNcNdNiNfZk@Base 15 + _D3std3uni__T5StackTkZQj4pushMFNaNbNfkZv@Base 15 + _D3std3uni__T5StackTkZQj5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3uni__T5StackTkZQj6__initZ@Base 15 + _D3std3uni__T5StackTkZQj6lengthMFNaNbNdNiNfZm@Base 15 + _D3std3uni__T5StackTkZQj9__xtoHashFNbNeKxSQBoQBn__TQBmTkZQBsZm@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 + _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 + _D3std3uni__T5forceTkTiZQlFNaNbNiNfiZk@Base 15 + _D3std3uni__T5sicmpTAxaTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T5sicmpTAxuTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T5sicmpTAxwTQeZQoFNaNbNiNfMQtMQwZi@Base 15 + _D3std3uni__T6asTrieTbVii7Vii4Vii4Vii6ZQBaFNaNbNiNfMxSQCa8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBdZxSQEoQEn__T4TrieTSQFeQFd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGuQGt__T9sliceBitsVmi14Vmi21ZQvTSQIcQIb__TQBiVmi10Vmi14ZQBwTSQJeQJd__TQCkVmi6Vmi10ZQCxTSQKfQKe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 + _D3std3uni__T6asTrieTbVii8Vii5Vii8ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi8Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 + _D3std3uni__T6asTrieTbVii8Vii6Vii7ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi7Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi7ZQCvZQFf@Base 15 + _D3std3uni__T6asTrieThVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieThTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni__T6asTrieTtVii12Vii9ZQtFNaNbNiNfMxSQBs8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQwZxSQDyQDx__T4TrieTtTwVmi1114112TSQFcQFb__T9sliceBitsVmi9Vmi21ZQuTSQGjQGi__TQBhVmi0Vmi9ZQBtZQDb@Base 15 + _D3std3uni__T6asTrieTtVii8Vii7Vii6ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi6Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi6ZQCvZQEd@Base 15 + _D3std3uni__T6asTrieTtVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAxaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyuZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAywZQDzFNaNbNfQoZQr@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyaZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyuZQDzFNaNfQmZQp@Base 15 + _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAywZQDzFNaNbNfQoZQr@Base 15 + _D3std3uni__T7toLowerTAxaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAyaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAyuZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toLowerTAywZQnFNaNbNeNkMQqZQt@Base 15 + _D3std3uni__T7toUpperTAyaZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toUpperTAyuZQnFNaNeNkMQoZQr@Base 15 + _D3std3uni__T7toUpperTAywZQnFNaNbNeNkMQqZQt@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf10__postblitMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf11__xopEqualsMxFKxSQCmQCl__TQCkTQCeZQCsZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf13opIndexAssignMFNaNbNiNfkmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf16dupThisReferenceMFNaNbNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf17freeThisReferenceMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5reuseFNaNbNiNfAkZSQCmQCl__TQCkTQCeZQCs@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__dtorMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMFNaNbNdNiNfmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfmmZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfmmZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8opAssignMFNaNbNcNiNjNeSQCrQCq__TQCpTQCjZQCxZQw@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMFNaNbNdNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMxFNaNbNdNiNfZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf9__xtoHashFNbNeKxSQClQCk__TQCjTQCdZQCrZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf__T8opEqualsZQkMxFNaNbNiNfKxSQCwQCv__TQCuTQCoZQDcZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz10__postblitMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz11__xopEqualsMxFKxSQCfQCe__TQCdTQBxZQClZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz13opIndexAssignMFNaNbNfkmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz16dupThisReferenceMFNaNbNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz17freeThisReferenceMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5reuseFNaNbNfAkZSQCdQCc__TQCbTQBvZQCj@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__dtorMFNaNbNiNfZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMFNaNbNdNfmZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfmmZAk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfmmZAxk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8opAssignMFNaNbNcNiNjNeSQCkQCj__TQCiTQCcZQCqZQw@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMFNaNbNdNiNfkZv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMxFNaNbNdNiNfZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz9__xtoHashFNbNeKxSQCeQCd__TQCcTQBwZQCkZm@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTAkZQlMFNaNbNcNfQpZSQCqQCp__TQCoTQCiZQCw@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTSQBy5range__T10roundRobinTSQCy9algorithm9iteration__T9MapResultSQEj10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQGnQGm21DecompressedIntervalsZQDtTSQHwQEyQEr__TQEkSQImQEd__TQDuVQDoa4_615b315dVQEda1_61ZQEwTQDpZQGhZQHzFQHqQCvZ6ResultZQJnMFNaNcNfQJqZSQLsQLr__TQLqTQLkZQLy@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6appendZQiMFNaNbNfAkXv@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T7opIndexZQjMxFNaNbNiNfmZk@Base 15 + _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T8opEqualsZQkMxFNaNbNiNfKxSQCpQCo__TQCnTQChZQCvZb@Base 15 + _D3std3uni__T8spaceForVmi11ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi12ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi13ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi14ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi15ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi16ZQpFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi1ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi7ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T8spaceForVmi8ZQoFNaNbNiNfmZm@Base 15 + _D3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 + _D3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 + _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 + _D3std3uri10URI_EncodeFNaNfAywkZAya@Base 15 + _D3std3uri11__moduleRefZ@Base 15 + _D3std3uri12URIException6__initZ@Base 15 + _D3std3uri12URIException6__vtblZ@Base 15 + _D3std3uri12URIException7__ClassZ@Base 15 + _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 + _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 + _D3std3uri12__ModuleInfoZ@Base 15 + _D3std3uri9ascii2hexFNaNbNiNfwZk@Base 15 + _D3std3uri9hex2asciiyG16a@Base 15 + _D3std3uri9uri_flagsyG128h@Base 15 + _D3std3uri9urlEncodeFNaNfMHAyaQdZQg@Base 15 + _D3std3uri__T15encodeComponentTaZQuFNaNfMAxaZAya@Base 15 + _D3std3utf10strideImplFNaNeamZk@Base 15 + _D3std3utf11__moduleRefZ@Base 15 + _D3std3utf12UTFException11setSequenceMFNaNbNiNlNjNfAkXCQCbQCaQBz@Base 15 + _D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk@Base 15 + _D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 + _D3std3utf12UTFException6__initZ@Base 15 + _D3std3utf12UTFException6__vtblZ@Base 15 + _D3std3utf12UTFException7__ClassZ@Base 15 + _D3std3utf12UTFException8toStringMxFZAya@Base 15 + _D3std3utf12__ModuleInfoZ@Base 15 + _D3std3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFNaNbNiNfQoZSQBqQBp__TQBoTQBfZQBwFQBnZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCqQCp__TQCoTQCfZQCwFQCnZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCqQCp__TQCoTQCfZQCwFQCnZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNga@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCtQCs__TQCrTQCiZQCzFQCqZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCpQCo__TQCnTQCeZQCvFQCmZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxa@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxu@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAxwZQrFNaNbNiNfQpZQs@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZya@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZyu@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 + _D3std3utf__T10byCodeUnitTAywZQrFNaNbNiNfQpZQs@Base 15 + _D3std3utf__T10byCodeUnitTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCxQCw__TQCvTAyaZQDdFQiZ14ByCodeUnitImplTSQEnQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQFfFNkMQEtZQtZQGrFNaNbNiNfQGqZQGu@Base 15 + _D3std3utf__T10byCodeUnitTSQz5range__T5chainTSQBsQBr__TQBqTAxaZQByFQiZ14ByCodeUnitImplTSQDiQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQEyFNaNbNiNfQExZQFb@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAaZQBbFQhZ14ByCodeUnitImplZQBzFNaNbNiNfQByZQCc@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAxaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 + _D3std3utf__T10byCodeUnitTSQzQx__TQvTAyaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 + _D3std3utf__T10codeLengthTaZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTuZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTwZQpFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTxaZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTyaZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTyuZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10codeLengthTywZQqFNaNbNiNfwZh@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiJmZw@Base 15 + _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ__T9exceptionTQBcZQpFNaNbNfQBpQDsZCQFvQFu12UTFException@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaKQlKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaQkKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiQoKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDrFNaNbNiKQpKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 + _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFmFNaNbNiNfKQCmKmZw@Base 15 + _D3std3utf__T10strideBackTANgaZQsFNaNfKQnmZk@Base 15 + _D3std3utf__T10strideBackTAxaZQrFNaNfKQmmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 + _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 + _D3std3utf__T10toUTFzImplTPaTAxaZQuFNaNbNfNkMQqZQw@Base 15 + _D3std3utf__T10toUTFzImplTPaTAyaZQuFNaNbNfNkMQqZQw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNeMKQnJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNfKQmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNeMKQoJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNfKQnZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNeMKQoJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNfKQnZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNeMKQsJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNfKQrZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmJmZw@Base 15 + _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmZw@Base 15 + _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw@Base 15 + _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDmFNaNbNiNfQCmwZw@Base 15 + _D3std3utf__T20canSearchInCodeUnitsTaZQzFNaNbNiNfwZb@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAaZQDoFNaNbNiNfQpZSQEpQEo__T10byCodeUnitTQBpZQrFQBwZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__T10byCodeUnitTQBqZQrFQBxZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__T10byCodeUnitTQDyZQrFQEfZ14ByCodeUnitImpl@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx4path__T16asNormalizedPathTSQFc5range__T5chainTSQFwQFv__T10byCodeUnitTQFdZQrFQFkZ14ByCodeUnitImplTSQHvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQJzFNaNbNiNfQHaZQHe@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx5range__T5chainTSQErQEq__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQGpQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6ResultZQIfFNaNbNiNfQFgZQFk@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQFiFNaNbNiNfQCjZQCn@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZQCo@Base 15 + _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZQCp@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxwZQDpFNaNbNiNfQqZQt@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAyuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAywZQDpFNaNbNiNfQqZQt@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__TQEpTwVQEmi1Z__TQFeTSQFuQFt__T10byCodeUnitTQFbZQrFQFiZ14ByCodeUnitImplZQHhFNcQCfZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNdNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZSQGmQGl__TQGkTwVQGhi1Z__TQGzTQDsZQHhFNcQEcZ6Result@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result11__xopEqualsMxFKxSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCqZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4backMFNaNdNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4saveMFNaNbNdNiNfZSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCq@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCy@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQCz@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkkZSQHpQHo__TQHnTwVQHki1Z__TQIcTQEvZQIkFNcQFfZQDa@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result7popBackMFNaNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result9__xtoHashFNbNeKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCpZm@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDgFNaNeMKQnKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDhFNaNeMKQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TQCaZQDhFNaNeMKQCoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAaZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAuZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAwZQDhFNaNeMKxQoKmZw@Base 15 + _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TQCaZQDhFNaNbNiNeMKQCsKmZw@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG2uwZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfMKAawZv@Base 15 + _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDdFNaNbNiNfJG4awZm@Base 15 + _D3std3utf__T6strideTAaZQlFNaNfQkZk@Base 15 + _D3std3utf__T6strideTAyaZQmFNaNfKQmmZk@Base 15 + _D3std3utf__T6toUTFzTPaZ__TQoTAyaZQvFNaNbNfQnZQz@Base 15 + _D3std3utf__T7toUTF32TAxaZQnFNaNbNfMQoZAyw@Base 15 + _D3std3utf__T9toUTFImplTAywTAxaZQtFNaNbNfMQoZQv@Base 15 + _D3std3zip10ZipArchive12deleteMemberMFNfCQBnQBm13ArchiveMemberZv@Base 15 + _D3std3zip10ZipArchive12totalEntriesMxFNaNbNdNiNfZk@Base 15 + _D3std3zip10ZipArchive13removeSegmentMFNaNfkkZv@Base 15 + _D3std3zip10ZipArchive19zip64ExtractVersionxt@Base 15 + _D3std3zip10ZipArchive24endOfCentralDirSignatureyAh@Base 15 + _D3std3zip10ZipArchive24localFileHeaderSignatureyAh@Base 15 + _D3std3zip10ZipArchive25archiveExtraDataSignatureyAh@Base 15 + _D3std3zip10ZipArchive25digitalSignatureSignatureyAh@Base 15 + _D3std3zip10ZipArchive25findEndOfCentralDirRecordMFZk@Base 15 + _D3std3zip10ZipArchive26centralFileHeaderSignatureyAh@Base 15 + _D3std3zip10ZipArchive29zip64EndOfCentralDirSignatureyAh@Base 15 + _D3std3zip10ZipArchive36zip64EndOfCentralDirLocatorSignatureyAh@Base 15 + _D3std3zip10ZipArchive4dataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip10ZipArchive5buildMFNaNfZAv@Base 15 + _D3std3zip10ZipArchive6__ctorMFAvZCQBhQBgQBf@Base 15 + _D3std3zip10ZipArchive6__ctorMFNaNbNiNfZCQBnQBmQBl@Base 15 + _D3std3zip10ZipArchive6__initZ@Base 15 + _D3std3zip10ZipArchive6__vtblZ@Base 15 + _D3std3zip10ZipArchive6expandMFCQBeQBd13ArchiveMemberZAh@Base 15 + _D3std3zip10ZipArchive7Segment6__initZ@Base 15 + _D3std3zip10ZipArchive7__ClassZ@Base 15 + _D3std3zip10ZipArchive7getUintMFNaNbNiNfkZk@Base 15 + _D3std3zip10ZipArchive7isZip64MFNaNbNdNiNfbZv@Base 15 + _D3std3zip10ZipArchive7isZip64MxFNaNbNdNiNfZb@Base 15 + _D3std3zip10ZipArchive7putUintMFNaNbNiNfkkZv@Base 15 + _D3std3zip10ZipArchive8getUlongMFNaNbNiNfkZm@Base 15 + _D3std3zip10ZipArchive8putUlongMFNaNbNiNfkmZv@Base 15 + _D3std3zip10ZipArchive9addMemberMFNfCQBjQBi13ArchiveMemberZv@Base 15 + _D3std3zip10ZipArchive9directoryMFNaNbNdNiNfZHAyaCQBwQBv13ArchiveMember@Base 15 + _D3std3zip10ZipArchive9getUshortMFNaNbNiNfkZt@Base 15 + _D3std3zip10ZipArchive9putUshortMFNaNbNiNfktZv@Base 15 + _D3std3zip11__moduleRefZ@Base 15 + _D3std3zip12ZipException6__initZ@Base 15 + _D3std3zip12ZipException6__vtblZ@Base 15 + _D3std3zip12ZipException7__ClassZ@Base 15 + _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 + _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 + _D3std3zip12__ModuleInfoZ@Base 15 + _D3std3zip13ArchiveMember12expandedDataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip13ArchiveMember12expandedDataMFNdNfAhZv@Base 15 + _D3std3zip13ArchiveMember12expandedSizeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember14compressedDataMFNaNbNdNiNfZAh@Base 15 + _D3std3zip13ArchiveMember14compressedSizeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember14extractVersionMxFNaNbNdNiNfZt@Base 15 + _D3std3zip13ArchiveMember14fileAttributesMFNdNfkZv@Base 15 + _D3std3zip13ArchiveMember14fileAttributesMxFNbNdNiZk@Base 15 + _D3std3zip13ArchiveMember17compressionMethodMFNaNdNfEQBzQBy17CompressionMethodZv@Base 15 + _D3std3zip13ArchiveMember17compressionMethodMxFNaNbNdNiNfZEQCfQCe17CompressionMethod@Base 15 + _D3std3zip13ArchiveMember4timeMFNaNbNdNiNfkZv@Base 15 + _D3std3zip13ArchiveMember4timeMFNdSQBh8datetime7systime7SysTimeZv@Base 15 + _D3std3zip13ArchiveMember4timeMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember5crc32MxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember5indexMFNaNbNdNiNfkZk@Base 15 + _D3std3zip13ArchiveMember5indexMxFNaNbNdNiNfZk@Base 15 + _D3std3zip13ArchiveMember6__initZ@Base 15 + _D3std3zip13ArchiveMember6__vtblZ@Base 15 + _D3std3zip13ArchiveMember7__ClassZ@Base 15 + _D3std4conv10parseErrorFNaNfLAyaQdmZCQBjQBi13ConvException@Base 15 + _D3std4conv11__moduleRefZ@Base 15 + _D3std4conv11hexToStringFNaNbNfAyaZQe@Base 15 + _D3std4conv11hexToStringFNaNbNfAyuZQe@Base 15 + _D3std4conv11hexToStringFNaNbNfAywZQe@Base 15 + _D3std4conv12__ModuleInfoZ@Base 15 + _D3std4conv13ConvException6__initZ@Base 15 + _D3std4conv13ConvException6__vtblZ@Base 15 + _D3std4conv13ConvException7__ClassZ@Base 15 + _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCyQCxQCv@Base 15 + _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCyQCxQCv@Base 15 + _D3std4conv14isOctalLiteralFNaNbNiNfxAyaZb@Base 15 + _D3std4conv20strippedOctalLiteralFAyaZQe@Base 15 + _D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa@Base 15 + _D3std4conv21ConvOverflowException6__initZ@Base 15 + _D3std4conv21ConvOverflowException6__vtblZ@Base 15 + _D3std4conv21ConvOverflowException7__ClassZ@Base 15 + _D3std4conv__T13hexStrLiteralTAyaZQuFNaNbNeMQoZAa@Base 15 + _D3std4conv__T13hexStrLiteralTAyuZQuFNaNbNeMQoZAu@Base 15 + _D3std4conv__T13hexStrLiteralTAywZQuFNaNbNeMQoZAw@Base 15 + _D3std4conv__T14convertToOctalTiZQtFNaNbNiNfiZi@Base 15 + _D3std4conv__T2toTAyaZ__TQlTAaZQrFNaNbNfQmZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTAxaZQsFNaNbNfQnZQBa@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb5regex8internal2ir2IRZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb6logger4core8LogLevelZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTEQBb6socket12SocketOptionZQBoFNaNfQBiZQBw@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPSQBc11parallelism12AbstractTaskZQBvFNaNfQBpZQCd@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPaZQrFNaNbQkZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTPxaZQsFNaNbQlZQy@Base 15 + _D3std4conv__T2toTAyaZ__TQlTQkZQrFNaNbNiNfQyZQBb@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb11concurrency3TidZQBkFNaNfQBeZQBs@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb4path__T16asNormalizedPathTSQCg5range__T5chainTSQDa3utf__T10byCodeUnitTQDhZQrFQDoZ14ByCodeUnitImplTSQFaQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHdFNaNfQGxZQHl@Base 15 + _D3std4conv__T2toTAyaZ__TQlTSQBb5range__T5chainTSQBv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDuQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFjFNaNfQFdZQFr@Base 15 + _D3std4conv__T2toTAyaZ__TQlTiZQqFNaNbNfiZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTkZQqFNaNbNfkZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTmZQqFNaNbNfmZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTtZQqFNaNbNftZQx@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxkZQrFNaNbNfxkZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxlZQrFNaNbNfxlZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTxmZQrFNaNbNfxmZQz@Base 15 + _D3std4conv__T2toTAyaZ__TQlTykZQrFNaNbNfykZQz@Base 15 + _D3std4conv__T2toThZ__TQjTxkZQpFNaNfxkZh@Base 15 + _D3std4conv__T2toTiZ__TQjTEQz3net7isemail15EmailStatusCodeZQBtFNaNbNiNfQBtZi@Base 15 + _D3std4conv__T2toTiZ__TQjTEQz8datetime4date5MonthZQBkFNaNbNiNfQBkZi@Base 15 + _D3std4conv__T2toTiZ__TQjThZQoFNaNbNiNfhZi@Base 15 + _D3std4conv__T2toTiZ__TQjTiZQoFNaNbNiNfiZi@Base 15 + _D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi@Base 15 + _D3std4conv__T2toTiZ__TQjTmZQoFNaNfmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTsZQoFNaNbNiNfsZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxEQBa8datetime4date5MonthZQBmFNaNbNiNfxQBmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxhZQpFNaNbNiNfxhZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxkZQpFNaNfxkZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxlZQpFNaNfxlZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxmZQpFNaNfxmZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxsZQpFNaNbNiNfxsZi@Base 15 + _D3std4conv__T2toTiZ__TQjTxtZQpFNaNbNiNfxtZi@Base 15 + _D3std4conv__T2toTiZ__TQjTykZQpFNaNfykZi@Base 15 + _D3std4conv__T2toTiZ__TQjTymZQpFNaNfymZi@Base 15 + _D3std4conv__T2toTkZ__TQjTkZQoFNaNbNiNfkZk@Base 15 + _D3std4conv__T2toTkZ__TQjTmZQoFNaNfmZk@Base 15 + _D3std4conv__T2toTlZ__TQjTlZQoFNaNbNiNflZl@Base 15 + _D3std4conv__T2toTlZ__TQjTmZQoFNaNfmZl@Base 15 + _D3std4conv__T2toTmZ__TQjTkZQoFNaNbNiNfkZm@Base 15 + _D3std4conv__T2toTmZ__TQjTmZQoFNaNbNiNfmZm@Base 15 + _D3std4conv__T2toTsZ__TQjTiZQoFNaNfiZs@Base 15 + _D3std4conv__T2toTtZ__TQjTAxaZQqFNaNfQlZt@Base 15 + _D3std4conv__T4textTAxaTAyaTQiZQrFNaNbNfQuQsQyZQx@Base 15 + _D3std4conv__T4textTAyaTAxaTQiZQrFNaNbNfQuQsQyZQBb@Base 15 + _D3std4conv__T4textTAyaTAxaZQoFNaNbNfQrQpZQw@Base 15 + _D3std4conv__T4textTAyaTQeTQhTAxaTQoZQxFNaNbNfQBaQBdQBgQzQBlZQBp@Base 15 + _D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl@Base 15 + _D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa@Base 15 + _D3std4conv__T4textTAyaTQeTiTQjTiTQoZQxFNaNbNfQBaQBdiQBhiQBlZQBp@Base 15 + _D3std4conv__T4textTAyaTQeZQnFNaNbNfQqQsZQv@Base 15 + _D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt@Base 15 + _D3std4conv__T4textTAyaTiTQgZQpFNaNbNfQsiQvZQy@Base 15 + _D3std4conv__T4textTAyaTiZQmFNaNbNfQpiZQt@Base 15 + _D3std4conv__T4textTAyaTkTQgTkZQrFNaNbNfQukQxkZQBb@Base 15 + _D3std4conv__T4textTAyaTkTQgTmTQlZQuFNaNbNfQxkQBamQBeZQBi@Base 15 + _D3std4conv__T4textTAyaTtTQgTtTaTaTQpTmZQBaFNaNbNfQBetQBitaaQBomZQBt@Base 15.2 + _D3std4conv__T4textTAyaTtTaTaTQkTmZQvFNaNbNfQytaaQBdmZQBi@Base 15.2 + _D3std4conv__T4textTAyaTwTQgZQpFNaNfQqwQtZQw@Base 15 + _D3std4conv__T4textTAyaTxaZQnFNaNbNfQqxaZQv@Base 15 + _D3std4conv__T4textTAyaZQkFNaNbNiNfQpZQs@Base 15 + _D3std4conv__T4textTPSQu11parallelism12AbstractTaskTaTQBiZQBsFNaNfQBuaQByZAya@Base 15 + _D3std4conv__T5parseTiTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZi@Base 15 + _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZk@Base 15 + _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi1ZQCkFNaNfMKQClZSQDlQCl__T5TupleTkVQCia4_64617461TmVQCza5_636f756e74ZQBr@Base 15 + _D3std4conv__T5parseTtTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZt@Base 15 + _D3std4conv__T5toStrTAyaTPSQz11parallelism12AbstractTaskZQBrFNaNfQBoZQBw@Base 15 + _D3std4conv__T5toStrTAyaTSQy11concurrency3TidZQBgFNaNfQBdZQBl@Base 15 + _D3std4conv__T5toStrTAyaTSQy4path__T16asNormalizedPathTSQCc5range__T5chainTSQCw3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQEwQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGzFNaNfQGwZQHe@Base 15 + _D3std4conv__T5toStrTAyaTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNfQFcZQFk@Base 15 + _D3std4conv__T5toStrTyAaTEQy5regex8internal2ir2IRZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T5toStrTyAaTEQy6logger4core8LogLevelZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T5toStrTyAaTEQy6socket12SocketOptionZQBkFNaNfQBhZyQBp@Base 15 + _D3std4conv__T6toImplTAyaTAaZQpFNaNbNfQmZQt@Base 15 + _D3std4conv__T6toImplTAyaTAxaZQqFNaNbNfQnZQu@Base 15 + _D3std4conv__T6toImplTAyaTEQz5regex8internal2ir2IRZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTEQz6logger4core8LogLevelZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTEQz6socket12SocketOptionZQBlFNaNfQBhZQBp@Base 15 + _D3std4conv__T6toImplTAyaTPSQBa11parallelism12AbstractTaskZQBtFNaNfQBpZQBx@Base 15 + _D3std4conv__T6toImplTAyaTPaZQpFNaNbQkZQr@Base 15 + _D3std4conv__T6toImplTAyaTPxaZQqFNaNbQlZQs@Base 15 + _D3std4conv__T6toImplTAyaTQeZQpFNaNbNiNfQsZQv@Base 15 + _D3std4conv__T6toImplTAyaTSQz11concurrency3TidZQBhFNaNfQBdZQBl@Base 15 + _D3std4conv__T6toImplTAyaTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQExQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHaFNaNfQGwZQHe@Base 15 + _D3std4conv__T6toImplTAyaTSQz5range__T5chainTSQBs3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDrQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNfQFcZQFk@Base 15 + _D3std4conv__T6toImplTAyaTiZQoFNaNbNfiZQr@Base 15 + _D3std4conv__T6toImplTAyaTkZQoFNaNbNfkZQr@Base 15 + _D3std4conv__T6toImplTAyaTmZQoFNaNbNfmZQr@Base 15 + _D3std4conv__T6toImplTAyaTtZQoFNaNbNftZQr@Base 15 + _D3std4conv__T6toImplTAyaTxkZQpFNaNbNfxkZQt@Base 15 + _D3std4conv__T6toImplTAyaTxlZQpFNaNbNfxlZQt@Base 15 + _D3std4conv__T6toImplTAyaTxmZQpFNaNbNfxmZQt@Base 15 + _D3std4conv__T6toImplTAyaTykZQpFNaNbNfykZQt@Base 15 + _D3std4conv__T6toImplThTxkZQnFNaNfxkZh@Base 15 + _D3std4conv__T6toImplTiTEQx3net7isemail15EmailStatusCodeZQBrFNaNbNiNfQBtZi@Base 15 + _D3std4conv__T6toImplTiTEQx8datetime4date5MonthZQBiFNaNbNiNfQBkZi@Base 15 + _D3std4conv__T6toImplTiThZQmFNaNbNiNfhZi@Base 15 + _D3std4conv__T6toImplTiTiZQmFNaNbNiNfiZi@Base 15 + _D3std4conv__T6toImplTiTkZQmFNaNfkZi@Base 15 + _D3std4conv__T6toImplTiTmZQmFNaNfmZi@Base 15 + _D3std4conv__T6toImplTiTsZQmFNaNbNiNfsZi@Base 15 + _D3std4conv__T6toImplTiTxEQy8datetime4date5MonthZQBjFNaNbNiNfxQBlZi@Base 15 + _D3std4conv__T6toImplTiTxhZQnFNaNbNiNfxhZi@Base 15 + _D3std4conv__T6toImplTiTxkZQnFNaNfxkZi@Base 15 + _D3std4conv__T6toImplTiTxlZQnFNaNfxlZi@Base 15 + _D3std4conv__T6toImplTiTxmZQnFNaNfxmZi@Base 15 + _D3std4conv__T6toImplTiTxsZQnFNaNbNiNfxsZi@Base 15 + _D3std4conv__T6toImplTiTxtZQnFNaNbNiNfxtZi@Base 15 + _D3std4conv__T6toImplTiTykZQnFNaNfykZi@Base 15 + _D3std4conv__T6toImplTiTymZQnFNaNfymZi@Base 15 + _D3std4conv__T6toImplTkTkZQmFNaNbNiNfkZk@Base 15 + _D3std4conv__T6toImplTkTmZQmFNaNfmZk@Base 15 + _D3std4conv__T6toImplTlTlZQmFNaNbNiNflZl@Base 15 + _D3std4conv__T6toImplTlTmZQmFNaNfmZl@Base 15 + _D3std4conv__T6toImplTmTkZQmFNaNbNiNfkZm@Base 15 + _D3std4conv__T6toImplTmTmZQmFNaNbNiNfmZm@Base 15 + _D3std4conv__T6toImplTsTiZQmFNaNfiZs@Base 15 + _D3std4conv__T6toImplTtTAxaZQoFNaNfQlZt@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai128ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai129ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai130ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai132ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai133ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai134ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai136ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai137ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai138ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai140ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai141ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai142ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai144ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai145ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai146ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai148ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai149ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai150ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai152ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai153ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai154ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai156ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai157ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai158ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai160ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai161ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai162ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai164ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai165ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai166ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai168ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai172ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai176ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai180ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai184ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai188ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai192ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai196ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai128ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai160ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai192ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai1ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai255ZQBvyQBp@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai32ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai64ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai96ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai10ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai13ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai15ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai16ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai17ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai18ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai19ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai1ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai20ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai21ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai26ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai2ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai30ZQBuyQBo@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai3ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai4ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai5ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai6ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai7ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai8ZQBtyQBn@Base 15 + _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai9ZQBtyQBn@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result10initializeMFNaNbNiNfiZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4backMFNaNbNdNiNfZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4saveMFNaNbNdNiNfZSQDrQDq__TQDoVhi10TaVQDji1TiZQEhFNaNbNiNfiZQCq@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5frontMFNaNbNdNiNfZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opIndexMFNaNbNiNfmZa@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opSliceMFNaNbNiNfmmZSQDuQDt__TQDrVhi10TaVQDmi1TiZQEkFNaNbNiNfiZQCt@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZSQCsQCr__TQCpVhi10TaVQCki1TiZQDiFNaNbNiNfiZ6Result@Base 15 + _D3std4conv__T8textImplTAyaTAxaTQiTQhZQyFNaNbNfQtQzQxZQBe@Base 15 + _D3std4conv__T8textImplTAyaTPSQBc11parallelism12AbstractTaskTaTQBjZQCbFNaNfQBvaQBzZQCh@Base 15 + _D3std4conv__T8textImplTAyaTQeTAxaTQlZQyFNaNbNfQxQsQBbZQBf@Base 15 + _D3std4conv__T8textImplTAyaTQeTAxaZQvFNaNbNfQuQpZQz@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkTAxaTQrZQBeFNaNbNfQBeQBhQBkQBaQBqZQBu@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkTQnTkZQBcFNaNbNfQBcQBfQBiQBlkZQBq@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTQkZQxFNaNbNfQwQyQBaZQBe@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhTiTQmTiTQrZQBeFNaNbNfQBeQBhiQBliQBpZQBt@Base 15 + _D3std4conv__T8textImplTAyaTQeTQhZQuFNaNbNfQtQvZQy@Base 15 + _D3std4conv__T8textImplTAyaTQeTaZQtFNaNbNfQsaZQw@Base 15 + _D3std4conv__T8textImplTAyaTQeTiTQjZQwFNaNbNfQviQyZQBb@Base 15 + _D3std4conv__T8textImplTAyaTQeTiZQtFNaNbNfQsiZQw@Base 15 + _D3std4conv__T8textImplTAyaTQeTkTQjTkZQyFNaNbNfQxkQBakZQBf@Base 15 + _D3std4conv__T8textImplTAyaTQeTkTQjTmTQoZQBbFNaNbNfQBbkQBfmQBjZQBn@Base 15 + _D3std4conv__T8textImplTAyaTQeTtTQjTtTaTaTQsTmZQBhFNaNbNfQBhtQBltaaQBrmZQBw@Base 15.2 + _D3std4conv__T8textImplTAyaTQeTtTaTaTQnTmZQBcFNaNbNfQBctaaQBimZQBn@Base 15.2 + _D3std4conv__T8textImplTAyaTQeTwTQjZQwFNaNfQtwQwZQz@Base 15 + _D3std4conv__T8textImplTAyaTQeTxaZQuFNaNbNfQtxaZQy@Base 15 + _D3std4conv__T8textImplTAyaTQeZQrFNaNbNiNfQsZQv@Base 15 + _D3std4conv__T8textImplTAyaTiZQqFNaNbNfiZQr@Base 15 + _D3std4conv__T8textImplTAyaTkZQqFNaNbNfkZQr@Base 15 + _D3std4conv__T8textImplTAyaTmZQqFNaNbNfmZQr@Base 15 + _D3std4conv__T8unsignedTiZQmFNaNbNiNfiZk@Base 15 + _D3std4conv__T8unsignedTmZQmFNaNbNiNfmZm@Base 15 + _D3std4conv__T9convErrorTAxaTiZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4conv__T9convErrorTAxaTkZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4conv__T9convErrorTAxaTtZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 + _D3std4file10attrIsFileFNaNbNiNfkZb@Base 15 + _D3std4file10existsImplFNbNiNeMPxaZb@Base 15 + _D3std4file10removeImplFNeMAxaMPxaZv@Base 15 + _D3std4file10renameImplFNeMAxaMQeMPxaMQeZv@Base 15 + _D3std4file11__moduleRefZ@Base 15 + _D3std4file11thisExePathFNeZAya@Base 15 + _D3std4file12__ModuleInfoZ@Base 15 + _D3std4file12mkdirRecurseFNfMAxaZv@Base 15 + _D3std4file12rmdirRecurseFNfMAxaZv@Base 15 + _D3std4file12rmdirRecurseFNfMKSQBdQBc8DirEntryZv@Base 15 + _D3std4file12rmdirRecurseFNfMSQBcQBb8DirEntryZv@Base 15 + _D3std4file12setTimesImplFNeMAxaMPxaSQBj8datetime7systime7SysTimeQBdZv@Base 15 + _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamZCQByQBxQBv@Base 15 + _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamkZCQBzQByQBw@Base 15 + _D3std4file13FileException6__ctorMFNeMAxakAyamZCQBuQBtQBr@Base 15 + _D3std4file13FileException6__initZ@Base 15 + _D3std4file13FileException6__vtblZ@Base 15 + _D3std4file13FileException7__ClassZ@Base 15 + _D3std4file13attrIsSymlinkFNaNbNiNfkZb@Base 15 + _D3std4file15DirIteratorImpl11__xopEqualsMxFKxSQBtQBsQBqZb@Base 15 + _D3std4file15DirIteratorImpl11popDirStackMFNeZv@Base 15 + _D3std4file15DirIteratorImpl15releaseDirStackMFNeZv@Base 15 + _D3std4file15DirIteratorImpl4nextMFNeZb@Base 15 + _D3std4file15DirIteratorImpl5emptyMFNdNfZb@Base 15 + _D3std4file15DirIteratorImpl5frontMFNdNfZSQBoQBn8DirEntry@Base 15 + _D3std4file15DirIteratorImpl6__dtorMFNfZv@Base 15 + _D3std4file15DirIteratorImpl6__initZ@Base 15 + _D3std4file15DirIteratorImpl6stepInMFNfAyaZ14trustedOpendirFNbNiNeQBbZPS4core3sys5posix6dirent3DIR@Base 15 + _D3std4file15DirIteratorImpl6stepInMFNfAyaZb@Base 15 + _D3std4file15DirIteratorImpl8hasExtraMFNfZb@Base 15 + _D3std4file15DirIteratorImpl8opAssignMFNcNjNeSQBsQBrQBpZQl@Base 15 + _D3std4file15DirIteratorImpl8popExtraMFNfZSQBpQBo8DirEntry@Base 15 + _D3std4file15DirIteratorImpl8popFrontMFNfZv@Base 15 + _D3std4file15DirIteratorImpl9DirHandle11__xopEqualsMxFKxSQCdQCcQCaQBmZb@Base 15 + _D3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D3std4file15DirIteratorImpl9DirHandle9__xtoHashFNbNeKxSQCcQCbQBzQBlZm@Base 15 + _D3std4file15DirIteratorImpl9__xtoHashFNbNeKxSQBsQBrQBpZm@Base 15 + _D3std4file15DirIteratorImpl9mayStepInMFNfZb@Base 15 + _D3std4file15DirIteratorImpl9pushExtraMFNfSQBpQBo8DirEntryZv@Base 15 + _D3std4file15DirIteratorImpl__T6__ctorTAyaZQmMFNcNfQmEQCaQBz8SpanModebZSQCsQCrQCp@Base 15 + _D3std4file21getAvailableDiskSpaceFNfMAxaZm@Base 15 + _D3std4file6getcwdFNeZAya@Base 15 + _D3std4file7tempDirFNeZ12addSeparatorFNaNbNfAyaZQe@Base 15 + _D3std4file7tempDirFNeZ5cacheAya@Base 15 + _D3std4file7tempDirFNeZAya@Base 15 + _D3std4file7tempDirFNeZ__T15findExistingDirTAyaTQeTQhTQkTQnTQqZQBlFNfLQBaLQBeLQBiLQBmLQBqLQBuZQBy@Base 15 + _D3std4file8DirEntry10attributesMFNdNlNfZk@Base 15 + _D3std4file8DirEntry11__xopEqualsMxFKxSQBlQBkQBiZb@Base 15 + _D3std4file8DirEntry14linkAttributesMFNdNlNfZk@Base 15 + _D3std4file8DirEntry15_ensureStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry16_ensureLStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry16timeLastAccessedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry16timeLastModifiedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry17timeStatusChangedMFNdNlNfZSQBv8datetime7systime7SysTime@Base 15 + _D3std4file8DirEntry22_ensureStatOrLStatDoneMFNlNeZv@Base 15 + _D3std4file8DirEntry4nameMxFNaNbNdNjNlNfZAya@Base 15 + _D3std4file8DirEntry4sizeMFNdNlNfZm@Base 15 + _D3std4file8DirEntry5isDirMFNdNlNfZb@Base 15 + _D3std4file8DirEntry6__ctorMFNcNfAyaPS4core3sys5posix6direntQhZSQCkQCjQCh@Base 15 + _D3std4file8DirEntry6__ctorMFNcNfNkMAyaZSQBnQBmQBk@Base 15 + _D3std4file8DirEntry6__initZ@Base 15 + _D3std4file8DirEntry6isFileMFNdNlNfZb@Base 15 + _D3std4file8DirEntry7statBufMFNdNlNfZS4core3sys5posixQk4stat6stat_t@Base 15 + _D3std4file8DirEntry9__xtoHashFNbNeKxSQBkQBjQBhZm@Base 15 + _D3std4file8DirEntry9isSymlinkMFNdNlNfZb@Base 15 + _D3std4file8copyImplFNeMAxaMQeMPxaMQeEQBk8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQByZv@Base 15 + _D3std4file8deletemeFNdNfZ8fileNameAya@Base 15 + _D3std4file8deletemeFNdNfZAya@Base 15 + _D3std4file8readImplFNeMAxaMPxamZAv@Base 15 + _D3std4file9attrIsDirFNaNbNiNfkZb@Base 15 + _D3std4file9writeImplFNeMAxaMPxaMAxvbZv@Base 15 + _D3std4file__T10dirEntriesVbi1ZQrFNfAyaEQBmQBl8SpanModebZSQCeQCd__T12_DirIteratorVbi1ZQt@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt11__fieldDtorMFNeZv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt5emptyMFNdNeZb@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt5frontMFNdNeZSQBvQBu8DirEntry@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt6__ctorMFNcNeAyaEQByQBx8SpanModebZSQCqQCp__TQCnVbi1ZQCv@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt8opAssignMFNcNjNfSQBzQBy__TQBwVbi1ZQCeZQw@Base 15 + _D3std4file__T12_DirIteratorVbi1ZQt8popFrontMFNeZv@Base 15 + _D3std4file__T13getAttributesTAxaZQuFNfQjZk@Base 15 + _D3std4file__T13getAttributesTAyaZQuFNfQjZk@Base 15 + _D3std4file__T15ensureDirExistsZQsFNfMAxaZb@Base 15 + _D3std4file__T17statTimeToStdTimeVai109ZQBaFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDe8datetime7systime7SysTime@Base 15 + _D3std4file__T17statTimeToStdTimeVai97ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 + _D3std4file__T17statTimeToStdTimeVai99ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 + _D3std4file__T5isDirTAxaZQlFNdNfQlZb@Base 15 + _D3std4file__T5isDirTAyaZQlFNdNfQlZb@Base 15 + _D3std4file__T5rmdirTAyaZQlFNfQjZv@Base 15 + _D3std4file__T5rmdirTAyaZQlFQhZ12trustedRmdirFNbNiNeMPxaZb@Base 15 + _D3std4file__T6existsTAxaZQmFNbNiNfQnZb@Base 15 + _D3std4file__T6existsTAyaZQmFNbNiNfQnZb@Base 15 + _D3std4file__T6isFileTAyaZQmFNdNfQlZb@Base 15 + _D3std4file__T6removeTAyaZQmFNfQjZv@Base 15 + _D3std4file__T8cenforceTPS4core3sys5posix6dirent3DIRZQBnFNfQBjMLAxaAyamZQBw@Base 15 + _D3std4file__T8cenforceTPaZQnFNfQiMLAxaAyamZQu@Base 15 + _D3std4file__T8cenforceTbZQmFNebMAxaMPxaAyamZb@Base 15 + _D3std4file__T8cenforceTbZQmFNfbMLAxaAyamZb@Base 15 + _D3std4file__T8readLinkTAyaZQoFNfQjZQm@Base 15 + _D3std4json11__moduleRefZ@Base 15 + _D3std4json12__ModuleInfoZ@Base 15 + _D3std4json13JSONException6__ctorMFNaNbNfAyaQdmZCQBvQBuQBs@Base 15 + _D3std4json13JSONException6__ctorMFNaNbNfAyaiiZCQBuQBtQBr@Base 15 + _D3std4json13JSONException6__initZ@Base 15 + _D3std4json13JSONException6__vtblZ@Base 15 + _D3std4json13JSONException7__ClassZ@Base 15 + _D3std4json16JSONFloatLiteral6__initZ@Base 15 + _D3std4json6toJSONFNfKxSQwQu9JSONValueIbIEQBoQBn11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue10arrayNoRefMNgFNaNdNeZNgASQBuQBtQBr@Base 15 + _D3std4json9JSONValue11objectNoRefMNgFNaNdNeZNgHAyaSQByQBxQBv@Base 15 + _D3std4json9JSONValue13orderedObjectMFNaNbNdNiNeNkMASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBzZQCu@Base 15 + _D3std4json9JSONValue13orderedObjectMNgFNaNcNdNjZNgASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBz@Base 15 + _D3std4json9JSONValue14toPrettyStringMxFNfIEQBqQBp11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue18orderedObjectNoRefMNgFNaNdNeZNgASQCc8typecons__T5TupleTAyaVQea3_6b6579TSQDpQDoQDmVQBba5_76616c7565ZQBz@Base 15 + _D3std4json9JSONValue3strMFNaNbNdNiNjNeNkMAyaZQe@Base 15 + _D3std4json9JSONValue3strMxFNaNdNjNlNeZAya@Base 15 + _D3std4json9JSONValue4typeMxFNaNbNdNiNfZEQBnQBm8JSONType@Base 15 + _D3std4json9JSONValue5Store6Object6__initZ@Base 15 + _D3std4json9JSONValue5Store6__initZ@Base 15 + _D3std4json9JSONValue5arrayMFNaNbNdNiNlNeNkMASQBsQBrQBpZQm@Base 15 + _D3std4json9JSONValue5arrayMNgFNaNcNdNlNjZNgASQBsQBrQBp@Base 15 + _D3std4json9JSONValue6__initZ@Base 15 + _D3std4json9JSONValue6isNullMxFNaNbNdNiNfZb@Base 15 + _D3std4json9JSONValue6objectMFNaNbNdNiNeNkMHAyaSQBuQBtQBrZQp@Base 15 + _D3std4json9JSONValue6objectMNgFNaNcNdNjZNgHAyaSQBuQBtQBr@Base 15 + _D3std4json9JSONValue7booleanMFNaNbNdNiNfbZb@Base 15 + _D3std4json9JSONValue7booleanMxFNaNdNfZb@Base 15 + _D3std4json9JSONValue7integerMFNaNbNdNiNflZl@Base 15 + _D3std4json9JSONValue7integerMxFNaNdNfZl@Base 15 + _D3std4json9JSONValue7opApplyMFMDFAyaKSQBlQBkQBiZiZi@Base 15 + _D3std4json9JSONValue7opApplyMFMDFmKSQBjQBiQBgZiZi@Base 15 + _D3std4json9JSONValue7opIndexMNgFNaNcNfNkMAyaZNgSQBvQBuQBs@Base 15 + _D3std4json9JSONValue7opIndexMNgFNaNcNfmZNgSQBqQBpQBn@Base 15 + _D3std4json9JSONValue8floatingMFNaNbNdNiNfdZd@Base 15 + _D3std4json9JSONValue8floatingMxFNaNdNfZd@Base 15 + _D3std4json9JSONValue8opEqualsMxFNaNbNiNeKxSQBqQBpQBnZb@Base 15 + _D3std4json9JSONValue8opEqualsMxFNaNbNiNfxSQBpQBoQBmZb@Base 15 + _D3std4json9JSONValue8toStringMxFNfIEQBjQBi11JSONOptionsZAya@Base 15 + _D3std4json9JSONValue8uintegerMFNaNbNdNiNfmZm@Base 15 + _D3std4json9JSONValue8uintegerMxFNaNdNfZm@Base 15 + _D3std4json9JSONValue9isOrderedMxFNaNdNeZb@Base 15 + _D3std4json9JSONValue__T6__ctorTASQBgQBfQBdZQuMFNaNbNcNiNfQBaZQBd@Base 15 + _D3std4json9JSONValue__T6__ctorTAyaZQmMFNaNbNcNiNfQsZSQCaQBzQBx@Base 15 + _D3std4json9JSONValue__T6__ctorTHAyaQdZQpMFNaNcNfQrZSQBzQByQBw@Base 15 + _D3std4json9JSONValue__T6assignTASQBg8typecons__T5TupleTAyaVQea3_6b6579TSQCtQCsQCqVQBba5_76616c7565ZQBzZQDcMFNaNbNiNfQDhZv@Base 15 + _D3std4json9JSONValue__T6assignTASQBgQBfQBdZQuMFNaNbNiNfQyZv@Base 15 + _D3std4json9JSONValue__T6assignTAyaZQmMFNaNbNiNfQqZv@Base 15 + _D3std4json9JSONValue__T6assignTHAyaQdZQpMFNaNfQpZv@Base 15 + _D3std4json9JSONValue__T6assignTHAyaSQBjQBiQBgZQxMFNaNbNiNfQBbZv@Base 15 + _D3std4json9JSONValue__T6assignTbZQkMFNaNbNiNfbZv@Base 15 + _D3std4json9JSONValue__T6assignTdZQkMFNaNbNiNfdZv@Base 15 + _D3std4json9JSONValue__T6assignTlZQkMFNaNbNiNflZv@Base 15 + _D3std4json9JSONValue__T6assignTmZQkMFNaNbNiNfmZv@Base 15 + _D3std4json__T6toJSONTSQv5array__T8AppenderTAyaZQoZQBlFNfKQBkKxSQCkQCj9JSONValueIbIEQDeQDd11JSONOptionsZv@Base 15 + _D3std4math10operations11__moduleRefZ@Base 15 + _D3std4math10operations12__ModuleInfoZ@Base 15 + _D3std4math10operations13getNaNPayloadFNaNbNiNeeZm@Base 15 + _D3std4math10operations3NaNFNaNbNiNemZe@Base 15 + _D3std4math10operations3fmaFNaNbNiNfeeeZe@Base 15 + _D3std4math10operations4fdimFNaNbNiNfeeZe@Base 15 + _D3std4math10operations6nextUpFNaNbNiNedZd@Base 15 + _D3std4math10operations6nextUpFNaNbNiNeeZe@Base 15 + _D3std4math10operations6nextUpFNaNbNiNefZf@Base 15 + _D3std4math10operations8nextDownFNaNbNiNfdZd@Base 15 + _D3std4math10operations8nextDownFNaNbNiNfeZe@Base 15 + _D3std4math10operations8nextDownFNaNbNiNffZf@Base 15 + _D3std4math10operations__T17extractBitpatternTdZQwFNaNbNiNexdZSQCjQCiQCg__T23FloatingPointBitpatternTdZQBc@Base 15 + _D3std4math10operations__T17extractBitpatternTeZQwFNaNbNiNexeZSQCjQCiQCg__T23FloatingPointBitpatternTeZQBc@Base 15 + _D3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 + _D3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 + _D3std4math11__moduleRefZ@Base 15 + _D3std4math11exponential11__moduleRefZ@Base 15 + _D3std4math11exponential12__ModuleInfoZ@Base 15 + _D3std4math11exponential3expFNaNbNiNeeZe@Base 15 + _D3std4math11exponential3expFNaNbNiNfdZd@Base 15 + _D3std4math11exponential3expFNaNbNiNffZf@Base 15 + _D3std4math11exponential3logFNaNbNiNfdZd@Base 15 + _D3std4math11exponential3logFNaNbNiNfeZe@Base 15 + _D3std4math11exponential3logFNaNbNiNffZf@Base 15 + _D3std4math11exponential3logFNaNbNiNfiZe@Base 15 + _D3std4math11exponential3logFNaNbNiNfkZe@Base 15 + _D3std4math11exponential3logFNaNbNiNflZe@Base 15 + _D3std4math11exponential3logFNaNbNiNfmZe@Base 15 + _D3std4math11exponential4exp2FNaNbNiNeeZe@Base 15 + _D3std4math11exponential4exp2FNaNbNiNfdZd@Base 15 + _D3std4math11exponential4exp2FNaNbNiNffZf@Base 15 + _D3std4math11exponential4log2FNaNbNiNfdZd@Base 15 + _D3std4math11exponential4log2FNaNbNiNfeZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNffZf@Base 15 + _D3std4math11exponential4log2FNaNbNiNfiZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNfkZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNflZe@Base 15 + _D3std4math11exponential4log2FNaNbNiNfmZe@Base 15 + _D3std4math11exponential4logbFNaNbNiNedZd@Base 15 + _D3std4math11exponential4logbFNaNbNiNeeZe@Base 15 + _D3std4math11exponential4logbFNaNbNiNefZf@Base 15 + _D3std4math11exponential5expm1FNaNbNiNeeZe@Base 15 + _D3std4math11exponential5expm1FNaNbNiNfdZd@Base 15 + _D3std4math11exponential5expm1FNaNbNiNffZf@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNfdiZd@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNfeiZe@Base 15 + _D3std4math11exponential5ldexpFNaNbNiNffiZf@Base 15 + _D3std4math11exponential5log10FNaNbNiNfdZd@Base 15 + _D3std4math11exponential5log10FNaNbNiNfeZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNffZf@Base 15 + _D3std4math11exponential5log10FNaNbNiNfiZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNfkZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNflZe@Base 15 + _D3std4math11exponential5log10FNaNbNiNfmZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfdZd@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfeZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNffZf@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfiZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfkZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNflZe@Base 15 + _D3std4math11exponential5log1pFNaNbNiNfmZe@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNfdiZd@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNfeiZe@Base 15 + _D3std4math11exponential6scalbnFNaNbNiNffiZf@Base 15 + _D3std4math11exponential8_powImplFNaNbNiNfeeZe@Base 15 + _D3std4math11exponential__T3powTdTdZQjFNaNbNiNeddZd@Base 15 + _D3std4math11exponential__T3powTeTeZQjFNaNbNiNeeeZe@Base 15 + _D3std4math11exponential__T3powTeTiZQjFNaNbNiNeeiZe@Base 15 + _D3std4math11exponential__T3powTeTlZQjFNaNbNiNeelZe@Base 15 + _D3std4math11exponential__T3powTiTiZQjFNaNbNiNfiiZi@Base 15 + _D3std4math11exponential__T3powTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std4math11exponential__T5frexpTdZQjFNaNbNiNexdJiZd@Base 15 + _D3std4math11exponential__T5frexpTeZQjFNaNbNiNexeJiZe@Base 15 + _D3std4math11exponential__T5frexpTfZQjFNaNbNiNexfJiZf@Base 15 + _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZi@Base 15 + _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZi@Base 15 + _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZi@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1QyG4d@Base 15 + _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1QyG4e@Base 15 + _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T7logImplTdVbi0ZQpFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7logImplTdVbi1ZQpFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T7logImplTeVbi0ZQpFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7logImplTeVbi1ZQpFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T7logImplTfVbi0ZQpFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T7logImplTfVbi1ZQpFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1QyG3d@Base 15 + _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1QyG4e@Base 15 + _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8log2ImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T8log2ImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T8log2ImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T8logbImplTdZQmFNaNbNiNedZd@Base 15 + _D3std4math11exponential__T8logbImplTeZQmFNaNbNiNeeZe@Base 15 + _D3std4math11exponential__T8logbImplTfZQmFNaNbNiNefZf@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logPyG6d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logQyG6d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logRyG3d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ4logSyG4d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6log10PyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6log10QyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6logp1PyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTdZ6logp1QyG7d@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logPyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logQyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logRyG4e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ4logSyG4e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ5log2PyG7e@Base 15 + _D3std4math11exponential__T9LogCoeffsTeZ5log2QyG8e@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ4logPyG9f@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ6logp1PyG7f@Base 15 + _D3std4math11exponential__T9LogCoeffsTfZ6logp1QyG7f@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1QyG4d@Base 15 + _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1PyG5e@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1QyG6e@Base 15 + _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log10ImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9log10ImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log10ImplTfZQnFNaNbNiNffZf@Base 15 + _D3std4math11exponential__T9log1pImplTdZQnFNaNbNiNfdZd@Base 15 + _D3std4math11exponential__T9log1pImplTeZQnFNaNbNiNfeZe@Base 15 + _D3std4math11exponential__T9log1pImplTfZQnFNaNbNiNffZf@Base 15 + _D3std4math12__ModuleInfoZ@Base 15 + _D3std4math12trigonometry11__moduleRefZ@Base 15 + _D3std4math12trigonometry12__ModuleInfoZ@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3cosFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3sinFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry3tanFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4acosFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4asinFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4atanFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4coshFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4sinhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry4tanhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5acoshFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5asinhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNeeeZe@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNfddZd@Base 15 + _D3std4math12trigonometry5atan2FNaNbNiNfffZf@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry5atanhFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T5_sinhTdZQjFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T5_sinhTeZQjFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T5_sinhTfZQjFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T5_tanhTdZQjFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T5_tanhTeZQjFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T5_tanhTfZQjFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T6_acoshTdZQkFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T6_acoshTeZQkFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T6_acoshTfZQkFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T6_asinhTdZQkFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T6_asinhTeZQkFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T6_asinhTfZQkFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1QyG5d@Base 15 + _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1QyG5e@Base 15 + _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 + _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1PyG5d@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1QyG6d@Base 15 + _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZd@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1PyG5e@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1QyG6e@Base 15 + _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZe@Base 15 + _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZ1PyG4f@Base 15 + _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZf@Base 15 + _D3std4math12trigonometry__T9atan2ImplTdZQnFNaNbNiNfddZd@Base 15 + _D3std4math12trigonometry__T9atan2ImplTeZQnFNaNbNiNfeeZe@Base 15 + _D3std4math12trigonometry__T9atan2ImplTfZQnFNaNbNiNfffZf@Base 15 + _D3std4math6traits11__moduleRefZ@Base 15 + _D3std4math6traits11isIdenticalFNaNbNiNeeeZb@Base 15 + _D3std4math6traits12__ModuleInfoZ@Base 15 + _D3std4math6traits__T10isInfinityTdZQpFNaNbNiNedZb@Base 15 + _D3std4math6traits__T10isInfinityTeZQpFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T10isInfinityTfZQpFNaNbNiNefZb@Base 15 + _D3std4math6traits__T10isInfinityTxdZQqFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T10isPowerOf2TkZQpFNaNbNiNfxkZb@Base 15 + _D3std4math6traits__T10isPowerOf2TmZQpFNaNbNiNfxmZb@Base 15 + _D3std4math6traits__T11isSubnormalTxdZQrFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T11isSubnormalTxeZQrFNaNbNiNexeZb@Base 15 + _D3std4math6traits__T11isSubnormalTxfZQrFNaNbNiNexfZb@Base 15 + _D3std4math6traits__T5isNaNTdZQjFNaNbNiNedZb@Base 15 + _D3std4math6traits__T5isNaNTeZQjFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T5isNaNTfZQjFNaNbNiNefZb@Base 15 + _D3std4math6traits__T5isNaNTxdZQkFNaNbNiNexdZb@Base 15 + _D3std4math6traits__T5isNaNTxeZQkFNaNbNiNexeZb@Base 15 + _D3std4math6traits__T7signbitTdZQlFNaNbNiNedZi@Base 15 + _D3std4math6traits__T7signbitTeZQlFNaNbNiNeeZi@Base 15 + _D3std4math6traits__T7signbitTfZQlFNaNbNiNefZi@Base 15 + _D3std4math6traits__T7signbitTxeZQmFNaNbNiNexeZi@Base 15 + _D3std4math6traits__T7signbitTyeZQmFNaNbNiNeyeZi@Base 15 + _D3std4math6traits__T8copysignTdTdZQoFNaNbNiNeddZd@Base 15 + _D3std4math6traits__T8copysignTdTiZQoFNaNbNiNeidZd@Base 15 + _D3std4math6traits__T8copysignTeTeZQoFNaNbNiNeeeZe@Base 15 + _D3std4math6traits__T8copysignTeTiZQoFNaNbNiNeieZe@Base 15 + _D3std4math6traits__T8copysignTfTfZQoFNaNbNiNeffZf@Base 15 + _D3std4math6traits__T8copysignTfTiZQoFNaNbNiNeifZf@Base 15 + _D3std4math6traits__T8isFiniteTdZQmFNaNbNiNedZb@Base 15 + _D3std4math6traits__T8isFiniteTeZQmFNaNbNiNeeZb@Base 15 + _D3std4math6traits__T8isFiniteTfZQmFNaNbNiNefZb@Base 15 + _D3std4math8hardware11__moduleRefZ@Base 15 + _D3std4math8hardware12__ModuleInfoZ@Base 15 + _D3std4math8hardware14resetIeeeFlagsFNbNiNeZv@Base 15 + _D3std4math8hardware20FloatingPointControl10initializeMFNbNiNfZv@Base 15 + _D3std4math8hardware20FloatingPointControl15clearExceptionsFNbNiNfZv@Base 15 + _D3std4math8hardware20FloatingPointControl15getControlStateFNaNbNiNeZt@Base 15 + _D3std4math8hardware20FloatingPointControl15setControlStateFNbNiNetZv@Base 15 + _D3std4math8hardware20FloatingPointControl16enableExceptionsMFNbNiNekZv@Base 15 + _D3std4math8hardware20FloatingPointControl17disableExceptionsMFNbNiNekZv@Base 15 + _D3std4math8hardware20FloatingPointControl17enabledExceptionsFNaNbNdNiNeZk@Base 15 + _D3std4math8hardware20FloatingPointControl17hasExceptionTrapsFNaNbNdNiNfZb@Base 15 + _D3std4math8hardware20FloatingPointControl6__dtorMFNbNiNeZv@Base 15 + _D3std4math8hardware20FloatingPointControl6__initZ@Base 15 + _D3std4math8hardware20FloatingPointControl8opAssignMFNbNcNiNjNeSQCkQCjQChQCbZQo@Base 15 + _D3std4math8hardware20FloatingPointControl8roundingFNaNbNdNiNeZk@Base 15 + _D3std4math8hardware20FloatingPointControl8roundingMFNbNdNiNekZv@Base 15 + _D3std4math8hardware9IeeeFlags12getIeeeFlagsFNaNbNiNeZk@Base 15 + _D3std4math8hardware9IeeeFlags14resetIeeeFlagsFNbNiNeZv@Base 15 + _D3std4math8hardware9IeeeFlags6__initZ@Base 15 + _D3std4math8hardware9IeeeFlags7inexactMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags7invalidMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags8overflowMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags9divByZeroMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9IeeeFlags9underflowMxFNbNdNiNfZb@Base 15 + _D3std4math8hardware9ieeeFlagsFNaNbNdNiNeZSQBpQBoQBm9IeeeFlags@Base 15 + _D3std4math8rounding11__moduleRefZ@Base 15 + _D3std4math8rounding12__ModuleInfoZ@Base 15 + _D3std4math8rounding4ceilFNaNbNiNedZd@Base 15 + _D3std4math8rounding4ceilFNaNbNiNeeZe@Base 15 + _D3std4math8rounding4ceilFNaNbNiNefZf@Base 15 + _D3std4math8rounding4rintFNaNbNiNfdZd@Base 15 + _D3std4math8rounding4rintFNaNbNiNfeZe@Base 15 + _D3std4math8rounding4rintFNaNbNiNffZf@Base 15 + _D3std4math8rounding5floorFNaNbNiNedZd@Base 15 + _D3std4math8rounding5floorFNaNbNiNeeZe@Base 15 + _D3std4math8rounding5floorFNaNbNiNefZf@Base 15 + _D3std4math8rounding5lrintFNaNbNiNeeZl@Base 15 + _D3std4math8rounding5roundFNaNbNiNeeZe@Base 15 + _D3std4math8rounding5truncFNaNbNiNeeZe@Base 15 + _D3std4math8rounding6lroundFNbNiNeeZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNfdZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNfeZl@Base 15 + _D3std4math8rounding6rndtolFNaNbNiNffZl@Base 15 + _D3std4math8rounding9nearbyintFNaNbNiNfeZe@Base 15 + _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZd@Base 15 + _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZe@Base 15 + _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZf@Base 15 + _D3std4math9algebraic11__moduleRefZ@Base 15 + _D3std4math9algebraic12__ModuleInfoZ@Base 15 + _D3std4math9algebraic4cbrtFNbNiNeeZe@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNfdZd@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNfeZe@Base 15 + _D3std4math9algebraic4fabsFNaNbNiNffZf@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNfdZd@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNfeZe@Base 15 + _D3std4math9algebraic4sqrtFNaNbNiNffZf@Base 15 + _D3std4math9algebraic8polyImplFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T12polyImplBaseTeTeZQtFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T4polyTdTdVii3ZQoFNaNbNiNfdKxG3dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii4ZQoFNaNbNiNfdKxG4dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii5ZQoFNaNbNiNfdKxG5dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii6ZQoFNaNbNiNfdKxG6dZd@Base 15 + _D3std4math9algebraic__T4polyTdTdVii7ZQoFNaNbNiNfdKxG7dZd@Base 15 + _D3std4math9algebraic__T4polyTeTeVii3ZQoFNaNbNiNfeKxG3eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii4ZQoFNaNbNiNfeKxG4eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii5ZQoFNaNbNiNfeKxG5eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii6ZQoFNaNbNiNfeKxG6eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii7ZQoFNaNbNiNfeKxG7eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii8ZQoFNaNbNiNfeKxG8eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeVii9ZQoFNaNbNiNfeKxG9eZe@Base 15 + _D3std4math9algebraic__T4polyTeTeZQkFNaNbNiNeeIAeZe@Base 15 + _D3std4math9algebraic__T4polyTfTfVii6ZQoFNaNbNiNffKxG6fZf@Base 15 + _D3std4math9algebraic__T4polyTfTfVii7ZQoFNaNbNiNffKxG7fZf@Base 15 + _D3std4math9algebraic__T4polyTfTfVii9ZQoFNaNbNiNffKxG9fZf@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii3ZQpFNaNbNiNfxdKxG3dZd@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii4ZQpFNaNbNiNfxdKxG4dZd@Base 15 + _D3std4math9algebraic__T4polyTxdTdVii5ZQpFNaNbNiNfxdKxG5dZd@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii3ZQpFNaNbNiNfxeKxG3eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii4ZQpFNaNbNiNfxeKxG4eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii5ZQpFNaNbNiNfxeKxG5eZe@Base 15 + _D3std4math9algebraic__T4polyTxeTeVii6ZQpFNaNbNiNfxeKxG6eZe@Base 15 + _D3std4math9algebraic__T4polyTxfTfVii4ZQpFNaNbNiNfxfKxG4fZf@Base 15 + _D3std4math9algebraic__T4polyTxfTfVii6ZQpFNaNbNiNfxfKxG6fZf@Base 15 + _D3std4math9algebraic__T4polyTyeTeVii7ZQpFNaNbNiNfyeKxG7eZe@Base 15 + _D3std4math9algebraic__T8nextPow2TmZQmFNaNbNiNfxmZm@Base 15 + _D3std4math9algebraic__T9truncPow2TmZQnFNaNbNiNfxmZm@Base 15 + _D3std4math9constants11__moduleRefZ@Base 15 + _D3std4math9constants12__ModuleInfoZ@Base 15 + _D3std4math9remainder11__moduleRefZ@Base 15 + _D3std4math9remainder12__ModuleInfoZ@Base 15 + _D3std4math9remainder4fmodFNbNiNeeeZe@Base 15 + _D3std4math9remainder4modfFNbNiNeeKeZe@Base 15 + _D3std4math9remainder6remquoFNbNiNeeeJiZe@Base 15 + _D3std4math9remainderQkFNbNiNeeeZe@Base 15 + _D3std4math__T8ieeeMeanTeZQmFNaNbNiNexexeZe@Base 15 + _D3std4meta11__moduleRefZ@Base 15 + _D3std4meta12__ModuleInfoZ@Base 15 + _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 + _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 + _D3std4path11__moduleRefZ@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ18expandFromDatabaseFNbNfAyaZQe@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21combineCPathWithDPathFNaNbNePaAyamZQf@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZ18__lambda_L4041_C25FNbNiNeZPa@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZQe@Base 15 + _D3std4path11expandTildeFNbNfNkMxAyaZAya@Base 15 + _D3std4path12__ModuleInfoZ@Base 15 + _D3std4path12absolutePathFNaNfNkMxAyaLAyaZQe@Base 15 + _D3std4path14isDirSeparatorFNaNbNiNfwZb@Base 15 + _D3std4path16isDriveSeparatorFNaNbNiNfwZb@Base 15 + _D3std4path__T10stripDriveTxaZQqFNaNbNiNfAxaZQe@Base 15 + _D3std4path__T10stripDriveTyaZQqFNaNbNiNfAyaZQe@Base 15 + _D3std4path__T11_stripDriveTAxaZQsFNaNbNiNfQpZQs@Base 15 + _D3std4path__T11_stripDriveTAyaZQsFNaNbNiNfQpZQs@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNaNbNiNfQFhZSQGnQGm__TQGkTQFzZQGsFQGhZ12PathSplitter@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter11__xopEqualsMxFKxSQHlQHk__TQHiTQGxZQHqFQHfZQCgZb@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4backMFNaNbNdNiNfZQGj@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4saveMFNaNbNdNiNfZSQHlQHk__TQHiTQGxZQHqFQHfZQCg@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5frontMFNaNbNdNiNfZQGk@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5ltrimMFNaNbNiNfmmZm@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5rtrimMFNaNbNiNfmmZm@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__ctorMFNaNbNcNiNfQGkZSQHqQHp__TQHnTQHcZQHvFQHkZQCl@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter7popBackMFNaNbNiNfZv@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter8popFrontMFNaNbNiNfZv@Base 15 + _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter9__xtoHashFNbNeKxSQHkQHj__TQHhTQGwZQHpFQHeZQCfZm@Base 15 + _D3std4path__T13lastSeparatorTAxaZQuFNaNbNiNfQpZl@Base 15 + _D3std4path__T13lastSeparatorTAyaZQuFNaNbNiNfQpZl@Base 15 + _D3std4path__T15extSeparatorPosTAyaZQwFNaNbNiNfxAyaZl@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNaNbNiNfNkMQFkZSQGuQGt__TQGrTQGcZQGzFNkMQGnZQCe@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11__xopEqualsMxFKxSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCqZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11getElement0MFNaNbNiNfZa@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt4saveMFNaNbNdNiNfZSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCq@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5emptyMFNaNbNdNiNfZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5frontMFNaNbNdNiNfZa@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5isDotFNaNbNiNfQFxZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__ctorMFNaNbNcNiNfQGbZSQHlQHk__TQHiTQGtZQHqFNkMQHeZQCv@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8isDotDotFNaNbNiNfQGaZb@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8popFrontMFNaNbNiNfZv@Base 15 + _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt9__xtoHashFNbNeKxSQHfQHe__TQHcTQGnZQHkFNkMQGyZQCpZm@Base 15 + _D3std4path__T18rtrimDirSeparatorsTAxaZQzFNaNbNiNfQpZQs@Base 15 + _D3std4path__T18rtrimDirSeparatorsTAyaZQzFNaNbNiNfQpZQs@Base 15 + _D3std4path__T7dirNameTxaZQmFNaNbNiNfNkMAxaZQe@Base 15 + _D3std4path__T8_dirNameTAxaZQoFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T8_dirNameTAxaZQoFNkMQkZ6resultFNaNbNiNfbQBeZQBi@Base 15 + _D3std4path__T8baseNameTxaZQnFNaNbNiNfNkMAxaZQe@Base 15 + _D3std4path__T8baseNameTyaZQnFNaNbNiNfNkMAyaZQe@Base 15 + _D3std4path__T8isRootedTAxaZQoFNaNbNiNfQpZb@Base 15 + _D3std4path__T8isRootedTAyaZQoFNaNbNiNfQpZb@Base 15 + _D3std4path__T8isRootedTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZb@Base 15 + _D3std4path__T8rootNameTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZQFk@Base 15 + _D3std4path__T9_baseNameTAxaZQpFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T9_baseNameTAyaZQpFNaNbNiNfNkMQsZQv@Base 15 + _D3std4path__T9_rootNameTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNbNiNfQFgZQFk@Base 15 + _D3std4path__T9buildPathTAAxaZQqFMQjZ__T11trustedCastTAyaTAaZQvFNaNbNiNeQoZQv@Base 15 + _D3std4path__T9buildPathTAAxaZQqFNaNbNfMQpZAya@Base 15 + _D3std4path__T9buildPathTaZQnFNaNbNfAAxaXAya@Base 15 + _D3std4path__T9chainPathTAaTAxaZQsFNaNbNiNfQsQrZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTSQFrQDc__TQDbTQFeZQDjFQFmZQCtZQEnFQEkQCnQBoZ6Result@Base 15 + _D3std4path__T9chainPathTAxaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 + _D3std4path__T9chainPathTAyaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 + _D3std4path__T9extensionTAyaZQpFNaNbNiNfQpZQs@Base 15 + _D3std4uuid10randomUUIDFNbNiNfZSQBeQBd4UUID@Base 15 + _D3std4uuid11__moduleRefZ@Base 15 + _D3std4uuid12__ModuleInfoZ@Base 15 + _D3std4uuid20UUIDParsingException6__ctorMFNaNeAyamEQBxQBwQBu6ReasonQvC6object9ThrowableQBpmZCQDnQDmQDk@Base 15 + _D3std4uuid20UUIDParsingException6__initZ@Base 15 + _D3std4uuid20UUIDParsingException6__vtblZ@Base 15 + _D3std4uuid20UUIDParsingException7__ClassZ@Base 15 + _D3std4uuid4UUID11uuidVersionMxFNaNbNdNiNfZEQBqQBpQBn7Version@Base 15 + _D3std4uuid4UUID4swapMFNaNbNiNfKSQBfQBeQBcZv@Base 15 + _D3std4uuid4UUID5emptyMxFNaNbNdNiNeZb@Base 15 + _D3std4uuid4UUID5opCmpMxFNaNbNiNfMKxSQBjQBiQBgZi@Base 15 + _D3std4uuid4UUID5opCmpMxFNaNbNiNfxSQBhQBgQBeZi@Base 15 + _D3std4uuid4UUID6__ctorMFNaNbNcNiNfMKxG16hZSQBqQBpQBn@Base 15 + _D3std4uuid4UUID6__ctorMFNaNbNcNiNfxG16hZSQBoQBnQBl@Base 15 + _D3std4uuid4UUID6__initZ@Base 15 + _D3std4uuid4UUID6toHashMxFNaNbNiNfZm@Base 15 + _D3std4uuid4UUID7Version6__initZ@Base 15 + _D3std4uuid4UUID7variantMxFNaNbNdNiNfZEQBlQBkQBi7Variant@Base 15 + _D3std4uuid4UUID8opAssignMFNaNbNiNfMKxSQBlQBkQBiZSQBwQBvQBt@Base 15 + _D3std4uuid4UUID8opAssignMFNaNbNiNfxSQBjQBiQBgZSQBuQBtQBr@Base 15 + _D3std4uuid4UUID8opEqualsMxFNaNbNiNfMKxSQBmQBlQBjZb@Base 15 + _D3std4uuid4UUID8opEqualsMxFNaNbNiNfxSQBkQBjQBhZb@Base 15 + _D3std4uuid4UUID8toStringMxFNaNbNeZAya@Base 15 + _D3std4uuid4UUID__T6__ctorTaZQkMFNaNcNfIAaZSQBqQBpQBn@Base 15 + _D3std4uuid4UUID__T6__ctorTaZQkMFNcIAaZ7skipIndyAi@Base 15 + _D3std4uuid4UUID__T6toCharTaZQkMxFNaNbNiNfmZa@Base 15 + _D3std4uuid4UUID__T8toStringTAaZQnMxFNaNbNiNfMQrZv@Base 15 + _D3std4uuid4UUID__T9asArrayOfTkZQnMFNaNbNcNiNjNeZG4k@Base 15 + _D3std4uuid7md5UUIDFNaNbNiNfxAaxSQBfQBe4UUIDZSQBsQBrQn@Base 15 + _D3std4uuid7md5UUIDFNaNbNiNfxAhxSQBfQBe4UUIDZSQBsQBrQn@Base 15 + _D3std4uuid8sha1UUIDFNaNbNiNfMAxaMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 + _D3std4uuid8sha1UUIDFNaNbNiNfMAxhMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 + _D3std4uuid__T10randomUUIDTSQBa6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGhFNaNbNiNfKQGhZSQHlQHk4UUID@Base 15 + _D3std4zlib10UnCompress10uncompressMFAxvZQe@Base 15 + _D3std4zlib10UnCompress5emptyMxFNdZb@Base 15 + _D3std4zlib10UnCompress5errorMFiZv@Base 15 + _D3std4zlib10UnCompress5flushMFZAv@Base 15 + _D3std4zlib10UnCompress6__ctorMFEQBfQBe12HeaderFormatZCQCbQCaQBy@Base 15 + _D3std4zlib10UnCompress6__ctorMFkZCQBhQBgQBe@Base 15 + _D3std4zlib10UnCompress6__dtorMFNlZv@Base 15 + _D3std4zlib10UnCompress6__initZ@Base 15 + _D3std4zlib10UnCompress6__vtblZ@Base 15 + _D3std4zlib10UnCompress7__ClassZ@Base 15 + _D3std4zlib10uncompressFAxvmiZAv@Base 15 + _D3std4zlib11__moduleRefZ@Base 15 + _D3std4zlib12__ModuleInfoZ@Base 15 + _D3std4zlib13ZlibException6__ctorMFiZCQBkQBjQBh@Base 15 + _D3std4zlib13ZlibException6__initZ@Base 15 + _D3std4zlib13ZlibException6__vtblZ@Base 15 + _D3std4zlib13ZlibException6getmsgFNaNbNiNfiZAya@Base 15 + _D3std4zlib13ZlibException7__ClassZ@Base 15 + _D3std4zlib5crc32FkAxvZk@Base 15 + _D3std4zlib7adler32FkAxvZk@Base 15 + _D3std4zlib8Compress5errorMFiZv@Base 15 + _D3std4zlib8Compress5flushMFiZAv@Base 15 + _D3std4zlib8Compress6__ctorMFEQBcQBb12HeaderFormatZCQByQBxQBv@Base 15 + _D3std4zlib8Compress6__ctorMFiEQBdQBc12HeaderFormatZCQBzQByQBw@Base 15 + _D3std4zlib8Compress6__dtorMFNlZv@Base 15 + _D3std4zlib8Compress6__initZ@Base 15 + _D3std4zlib8Compress6__vtblZ@Base 15 + _D3std4zlib8Compress7__ClassZ@Base 15 + _D3std4zlib8Compress8compressMFAxvZQe@Base 15 + _D3std4zlib8compressFAxvZAh@Base 15 + _D3std4zlib8compressFAxviZAh@Base 15 + _D3std5array11__moduleRefZ@Base 15 + _D3std5array12__ModuleInfoZ@Base 15 + _D3std5array__T11replaceIntoTxaTSQBfQBe__T8AppenderTAxaZQoTAyaTQeZQBzFNaNbNfQBsQBbQxQzKmZv@Base 15 + _D3std5array__T11replaceIntoTyaTSQBfQBe__T8AppenderTAyaZQoTQhTQkZQByFNaNbNfQBrQBaQBdQBgKmZv@Base 15 + _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir10NamedGroupZQBzFNaAQBqQeZv@Base 15 + _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir8BytecodeZQBwFNaAQBnQeZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir10NamedGroupTQBjZQCdFNaNfKAQBxmQCbZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgTQBkZQCeFNaNfKAQBymQCcQCfZv@Base 15 + _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgZQCaFNaNfKAQBumQByZv@Base 15 + _D3std5array__T14arrayAllocImplVbi0TASQBk3uni17CodepointIntervalTmZQCaFNaNbmZQBp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAaTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAfTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAhTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAkTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T14arrayAllocImplVbi0TAmTmZQBaFNaNbmZQp@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx11__xopEqualsMxFKxSQCfQCe__TQCbTQBnZQCjZb@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx12toStringImplFNaNfQzxAAyaZQBh@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx4dataMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6__ctorMFNaNbNcNeQyZSQChQCg__TQCdTQBpZQCl@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx7opSliceMNgFNaNbNiNeZANgAya@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx8toStringMxFNaNfZQx@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx9__xtoHashFNbNeKxSQCeQCd__TQCaTQBmZQCiZm@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx__T12toStringImplTSQCfQCe__TQCbTQBmZQCjZQBlFNaNfQCcxAAyaMKQBoMKxSQDz6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAAyaZQx__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr11__xopEqualsMxFKxSQDaQCz__TQCwTQCiZQDeZb@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr12toStringImplFNaNfAyaxACQDgQBzQByZQq@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr4dataMNgFNaNbNdNiNfZANgCQDfQByQBx@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__ctorMFNaNbNcNeQBtZSQDdQDc__TQCzTQClZQDh@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7opSliceMNgFNaNbNiNeZANgCQDgQBzQBy@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr9__xtoHashFNbNeKxSQCzQCy__TQCvTQChZQDdZm@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T12toStringImplTSQDaQCz__TQCwTAyaZQDeZQBlFNaNfQqxACQEiQDbQDaMKQBuMKxSQFa6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs11__xopEqualsMxFKxSQDbQDa__TQCxTQCjZQDfZb@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs12toStringImplFNfAyaxASQDfQByQBuZQq@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs4dataMNgFNaNbNdNiNfZANgSQDgQBzQBv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs5clearMFNaNbNiNeZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__ctorMFNaNbNcNeQBuZSQDeQDd__TQDaTQCmZQDi@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7opSliceMNgFNaNbNiNeZANgSQDhQCaQBw@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8shrinkToMFNaNemZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8toStringMxFNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs9__xtoHashFNbNeKxSQDaQCz__TQCwTQCiZQDeZm@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T12toStringImplTSQDbQDa__TQCxTAyaZQDfZQBlFNfQoxASQEhQDaQCwMKQBsMKxSQEz6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T3putTQBkZQjMFNaNbNfQByZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw12toStringImplFNaNfAyaxAaZQh@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw4dataMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw7opSliceMNgFNaNbNiNeZANgxa@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAaMKQBlMKxSQDv6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw12toStringImplFNaNfQzxAyaZQBg@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw8toStringMxFNaNfZQx@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T12toStringImplTSQCeQCd__TQCaTQBmZQCiZQBlFNaNfQCcxAyaMKQBnMKxSQDx6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAhZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAuZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAyuZQjMFNaNfQmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAywZQjMFNaNfQmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu4path__T16asNormalizedPathTSQCz5range__T5chainTSQDt3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFtQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCoQu__T4TakeTSQDdQBj__T6RepeatTaZQkZQBdTSQEe4conv__T7toCharsVhi10TaVEQFg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw12toStringImplFNaNfAyaxAyuZQi@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyuMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTAuZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw12toStringImplFNaNfAyaxAywZQi@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAywMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T15InPlaceAppenderTAywZQw__T3putTwZQhMFNaNbNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTyQBmZQCjZb@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw12toStringImplFNaNfAyaxAyaZQi@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw13ensureAddableMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw4dataMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6__ctorMFNaNbNcNiNeyQzZSQCjQCi__TQCfTyQBrZQCo@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw7opSliceMNgFNaNbNiNeZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw8toStringMxFNaNfZAya@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTyQBlZQCiZm@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyaMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTmZQCaFNaNbNemZQBr@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTxmZQCbFNaNbNexmZQBt@Base 15 + _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTyiZQCbFNaNbNeyiZQBt@Base 15 + _D3std5array__T18uninitializedArrayTAaTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAaTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T18uninitializedArrayTAfTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAhTkZQBaFNaNbNekZQr@Base 15 + _D3std5array__T18uninitializedArrayTAhTmZQBaFNaNbNemZQr@Base 15 + _D3std5array__T18uninitializedArrayTAkTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T18uninitializedArrayTAmTxmZQBbFNaNbNexmZQt@Base 15 + _D3std5array__T19appenderNewCapacityVmi16ZQBbFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi1ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi2ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi40ZQBbFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi4ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T19appenderNewCapacityVmi8ZQBaFNaNbNiNfmmZm@Base 15 + _D3std5array__T5splitTAyaTQeZQoFNaNbNfQqQsZAQw@Base 15 + _D3std5array__T5splitTAyaZQlFNaNfQlZAQp@Base 15 + _D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf@Base 15 + _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvKmZQk@Base 15 + _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvZQi@Base 15 + _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuKmZQz@Base 15 + _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuZQx@Base 15 + _D3std5array__T8AppenderTAAyaZQp10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp4dataMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T8AppenderTAAyaZQp5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp6__ctorMFNaNbNcNfQyZSQBzQBy__TQBvTQBpZQCd@Base 15 + _D3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 + _D3std5array__T8AppenderTAAyaZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAAyaZQp7opSliceMNgFNaNbNdNiNfZANgAya@Base 15 + _D3std5array__T8AppenderTAAyaZQp7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAAyaZQp8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTAAyaZQp__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi4dataMNgFNaNbNdNiNfZANgCQCwQByQBx@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__ctorMFNaNbNcNfQBsZSQCuQCt__TQCqTQCkZQCy@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7opSliceMNgFNaNbNdNiNfZANgCQCzQCbQCa@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi__T3putTQBiZQjMFNaNbNfQBwZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj4dataMNgFNaNbNdNiNfZANgSQCxQBzQBv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj5clearMFNaNbNiNfZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__ctorMFNaNbNcNfQBtZSQCvQCu__TQCrTQClZQCz@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7opSliceMNgFNaNbNdNiNfZANgSQDaQCcQBy@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8shrinkToMFNaNfmZv@Base 15 + _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 + _D3std5array__T8AppenderTAxaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAxaZQo4dataMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T8AppenderTAxaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAxaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAxaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAxaZQo7opSliceMNgFNaNbNdNiNfZANgxa@Base 15 + _D3std5array__T8AppenderTAxaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAxaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAxaZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAyaZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAyaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAyaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAyaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyaZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAyaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAyaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAhZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm4path__T16asNormalizedPathTSQCr5range__T5chainTSQDl3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFlQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEfQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCgQu__T4TakeTSQCvQBj__T6RepeatTaZQkZQBdTSQDw4conv__T7toCharsVhi10TaVEQEy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T8AppenderTAyaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T8AppenderTAyuZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAyuZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAyuZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAyuZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAyuZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyuZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAyuZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAyuZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAyuZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAyuZQo__T3putTwZQhMFNaNfwZv@Base 15 + _D3std5array__T8AppenderTAywZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTAywZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 + _D3std5array__T8AppenderTAywZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 + _D3std5array__T8AppenderTAywZQo6__initZ@Base 15 + _D3std5array__T8AppenderTAywZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAywZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 + _D3std5array__T8AppenderTAywZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTAywZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTAywZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 + _D3std5array__T8AppenderTAywZQo__T3putTwZQhMFNaNbNfwZv@Base 15 + _D3std5array__T8AppenderTyAaZQo10ensureInitMFNaNbNfZv@Base 15 + _D3std5array__T8AppenderTyAaZQo4dataMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T8AppenderTyAaZQo6__ctorMFNaNbNcNfyQxZSQBzQBy__TQBvTyQBpZQCe@Base 15 + _D3std5array__T8AppenderTyAaZQo6__initZ@Base 15 + _D3std5array__T8AppenderTyAaZQo6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTyAaZQo7opSliceMNgFNaNbNdNiNfZAya@Base 15 + _D3std5array__T8AppenderTyAaZQo7reserveMFNaNbNfmZv@Base 15 + _D3std5array__T8AppenderTyAaZQo8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 + _D3std5array__T8AppenderTyAaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 + _D3std5array__T8appenderTAAyaZQpFNaNbNfZSQBnQBm__T8AppenderTQBjZQo@Base 15 + _D3std5array__T8appenderTACQz3zip13ArchiveMemberZQBiFNaNbNfZSQChQCg__T8AppenderTQCdZQo@Base 15 + _D3std5array__T8appenderTASQz6socket11AddressInfoZQBjFNaNbNfZSQCiQCh__T8AppenderTQCeZQo@Base 15 + _D3std5array__T8appenderTAxaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAyuZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTAywZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 + _D3std5array__T8appenderTyAaZQoFNaNbNfZSQBmQBl__T8AppenderTyQBiZQp@Base 15 + _D3std5array__TQjTS6object__T7byValueHTHAyaCQBq3zip13ArchiveMemberTQBbTQBcZQBuFNaNbNiNfQBwZ6ResultZQDpFNaNbNfQDnZAQCt@Base 15 + _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDaFNaNbNfQCyZASQDuQDe17CodepointInterval@Base 15 + _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAxkZQpZQDbFNaNbNfQCzZASQDvQDf17CodepointInterval@Base 15 + _D3std5array__TQjTSQr3uni__T8CowArrayTSQBlQv8GcPolicyZQBaZQCaFNaNbNfQByZAk@Base 15 + _D3std5array__TQjTSQr5range__T4iotaTmTmZQkFmmZ6ResultZQBwFNaNbNfQBuZAm@Base 15 + _D3std5array__TQjTSQr5range__T5chainTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDjQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNbNfQFeZAxa@Base 15 + _D3std5array__TQjTSQr9algorithm9iteration__T10UniqResultSQCd10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEv5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGsQBx18SortedRangeOptionsi0ZQCoZQGjZQHzFNaNbNfQHxZQCw@Base 15 + _D3std5array__TQjTSQr9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCu8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6ResultZQGcFNaNbNfQGaZAQEv@Base 15 + _D3std5ascii10isAlphaNumFNaNbNiNfwZb@Base 15 + _D3std5ascii10isHexDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii10whitespaceyAa@Base 15 + _D3std5ascii11__moduleRefZ@Base 15 + _D3std5ascii11isGraphicalFNaNbNiNfwZb@Base 15 + _D3std5ascii11isPrintableFNaNbNiNfwZb@Base 15 + _D3std5ascii11octalDigitsyAa@Base 15 + _D3std5ascii12__ModuleInfoZ@Base 15 + _D3std5ascii12isOctalDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii13fullHexDigitsyAa@Base 15 + _D3std5ascii13isPunctuationFNaNbNiNfwZb@Base 15 + _D3std5ascii14lowerHexDigitsyAa@Base 15 + _D3std5ascii6digitsyAa@Base 15 + _D3std5ascii7isASCIIFNaNbNiNfwZb@Base 15 + _D3std5ascii7isAlphaFNaNbNiNfwZb@Base 15 + _D3std5ascii7isDigitFNaNbNiNfwZb@Base 15 + _D3std5ascii7isLowerFNaNbNiNfwZb@Base 15 + _D3std5ascii7isUpperFNaNbNiNfwZb@Base 15 + _D3std5ascii7isWhiteFNaNbNiNfwZb@Base 15 + _D3std5ascii7lettersyAa@Base 15 + _D3std5ascii7newlineyAa@Base 15 + _D3std5ascii9hexDigitsyAa@Base 15 + _D3std5ascii9isControlFNaNbNiNfwZb@Base 15 + _D3std5ascii9lowercaseyAa@Base 15 + _D3std5ascii9uppercaseyAa@Base 15 + _D3std5ascii__T7toLowerTwZQlFNaNbNiNfwZw@Base 15 + _D3std5ascii__T7toLowerTxaZQmFNaNbNiNfxaZa@Base 15 + _D3std5ascii__T7toLowerTxuZQmFNaNbNiNfxuZu@Base 15 + _D3std5ascii__T7toLowerTxwZQmFNaNbNiNfxwZw@Base 15 + _D3std5ascii__T7toLowerTyaZQmFNaNbNiNfyaZa@Base 15 + _D3std5ascii__T7toLowerTywZQmFNaNbNiNfywZw@Base 15 + _D3std5ascii__T7toUpperTwZQlFNaNbNiNfwZw@Base 15 + _D3std5range10interfaces11__moduleRefZ@Base 15 + _D3std5range10interfaces12__ModuleInfoZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod6__initZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod6__vtblZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod7__ClassZ@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDuQDtQDqQDh@Base 15 + _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDuQDtQDqQDh@Base 15 + _D3std5range10primitives11__moduleRefZ@Base 15 + _D3std5range10primitives12__ModuleInfoZ@Base 15 + _D3std5range10primitives__T10walkLengthTAyaZQrFNaNbNiNfQpZm@Base 15 + _D3std5range10primitives__T10walkLengthTSQBn4path__T16asNormalizedPathTSQCsQCr__T5chainTSQDj3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFiQFh__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNkMQEzZQtZQGyFNaNbNiNfQGxZm@Base 15 + _D3std5range10primitives__T10walkLengthTSQBnQBm__T10roundRobinTSQCk9algorithm9iteration__T9MapResultSQDv10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFz3uni21DecompressedIntervalsZQDuTSQHjQEzQEs__TQElSQHzQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6ResultZQJqFNaNfQJlZm@Base 15 + _D3std5range10primitives__T14popBackExactlyTAAyaZQwFNaNbNiNfKQrmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTAC4core6thread5fiber5FiberZQBsFNaNbNiNfKQBomZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 + _D3std5range10primitives__T15popFrontExactlyTAAyaZQxFNaNbNiNfKQrmZv@Base 15 + _D3std5range10primitives__T15popFrontExactlyTAC4core6thread5fiber5FiberZQBtFNaNbNiNfKQBomZv@Base 15 + _D3std5range10primitives__T3putTAkTkZQkFNaNbNiNfKQrkZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTAaZQrFKQqQjZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTAyaZQsFKQrQkZv@Base 15 + _D3std5range10primitives__T3putTDFMAxaZvTQgZQrFKQqQpZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAaZQwFNaNbNfKQBbQqZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAyaZQxFNaNbNfKQBcQrZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTaZQvFNaNbNfKQBaaZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxaZQwFNaNbNfKQBbxaZv@Base 15 + _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxwZQwFNaNfKQzxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAaZQBuFNaNbNfKQCaQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAuZQBuFNaNfKQByQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAwZQBuFNaNfKQByQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAxaZQBvFNaNbNfKQCbQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAyuZQBvFNaNfKQBzQqZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAywZQBvFNaNfKQBzQqZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTQhZQBuFNaNbNfKQCaQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTaZQBtFNaNbNfKQBzaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxaZQBuFNaNbNfKQCaxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxwZQBuFNaNfKQByxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTyaZQBuFNaNbNfKQCayaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAAyaZQpTQhZQBnFNaNbNfKQBtQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTQhZQBmFNaNbNfKQBsQyZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCj4path__T16asNormalizedPathTSQDoQDn__T5chainTSQEf3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGfQGe__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHvFNaNbNfKQIbQHaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDa3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEzQEy__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGbFNaNbNfKQGhQFgZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDaQCz__T4TakeTSQDqQDp__T6RepeatTaZQkZQBdTSQEr4conv__T7toCharsVhi10TaVEQFt5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHeFNaNbNfKQHkQGjZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTaZQBlFNaNbNfKQBraZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAyaZQBnFNaNbNfKQBtQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTaZQBlFNaNbNfKQBraZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAaZQBrFNfKQBtQnZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAwZQBrFNfKQBtQnZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAxaZQBsFNfKQBuQoZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAyaZQBsFNfKQBuQoZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTaZQBqFNfKQBsaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxaZQBrFNfKQBtxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxwZQBrFNfKQBtxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTyaZQBrFNfKQBtyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCsFNaNbNiNfKQDaQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAaZQBdFNaNbNiNfKQBlQtZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAxaZQBeFNaNbNiNfKQBmQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAyaZQBeFNaNbNiNfKQBmQuZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTaZQBcFNaNbNiNfKQBkaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxaZQBdFNaNbNiNfKQBlxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxwZQBdFNaNbNiNfKQBlxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCgFNaNbNfKQCmQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQCfFNaNbNfKQClQBdZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQCfFNaNbNfKQClQBgZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCeFNaNbNfKQCkaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQCfFNaNbNfKQClxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQCfFNaNfKQCjxwZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCuFNaNbNfKQDaQsZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCtFNaNbNfKQCzQBiZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCtFNaNbNfKQCzQBlZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCsFNaNbNfKQCyaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCtFNaNbNfKQCzxaZv@Base 15 + _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCtFNaNfKQCxxwZv@Base 15 + _D3std5range10primitives__T4backTAyaZQkFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 + _D3std5range10primitives__T4backTCQBg3zip13ArchiveMemberZQBeFNaNbNcNdNiNfNkMANgCQDaQBuQBtZNgQn@Base 15 + _D3std5range10primitives__T4backTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNcNdNiNfNkMANgSQDlQCfQCcQBwQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg6logger11multilogger16MultiLoggerEntryZQBxFNaNbNcNdNiNfNkMANgSQDtQCnQCjQBzZNgQq@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNcNdNiNfNkMANgSQEeQCyQCsQCmQCaZNgQt@Base 15 + _D3std5range10primitives__T4backTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNcNdNiNfNkMANgSQDxQCrQClQByZNgQq@Base 15 + _D3std5range10primitives__T4backTaZQiFNaNdNfMAxaZw@Base 15 + _D3std5range10primitives__T4backTkZQiFNaNbNcNdNiNfNkMANgkZNgk@Base 15 + _D3std5range10primitives__T4backTwZQiFNaNbNcNdNiNfNkMANgwZNgw@Base 15 + _D3std5range10primitives__T4saveTAxaZQkFNaNbNdNiNfNkMANgANgxaZQj@Base 15 + _D3std5range10primitives__T4saveTAyaZQkFNaNbNdNiNfNkMANgAyaZQh@Base 15 + _D3std5range10primitives__T4saveTCQBg3zip13ArchiveMemberZQBeFNaNbNdNiNfNkMANgCQCyQBsQBrZQo@Base 15 + _D3std5range10primitives__T4saveTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNdNiNfNkMANgSQDjQCdQCaQBuQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNdNiNfNkMANgSQEcQCwQCqQCkQByZQu@Base 15 + _D3std5range10primitives__T4saveTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNdNiNfNkMANgSQDvQCpQCjQBwZQr@Base 15 + _D3std5range10primitives__T4saveTaZQiFNaNbNdNiNfNkMANgaZQf@Base 15 + _D3std5range10primitives__T4saveTfZQiFNaNbNdNiNfNkMANgfZQf@Base 15 + _D3std5range10primitives__T4saveThZQiFNaNbNdNiNfNkMANghZQf@Base 15 + _D3std5range10primitives__T4saveTkZQiFNaNbNdNiNfNkMANgkZQf@Base 15 + _D3std5range10primitives__T4saveTuZQiFNaNbNdNiNfNkMANguZQf@Base 15 + _D3std5range10primitives__T4saveTwZQiFNaNbNdNiNfNkMANgwZQf@Base 15 + _D3std5range10primitives__T5doPutTAkTkZQmFNaNbNiNfKQrKkZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTAaZQtFKQqKQkZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTAyaZQuFKQrKQlZv@Base 15 + _D3std5range10primitives__T5doPutTDFMAxaZvTQgZQtFKQqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbKQrZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbQqZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAyaZQzFNaNbNfKQBcKQsZv@Base 15 + _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTQgZQyFNaNbNfKQBbQwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAaZQBwFNaNbNfKQCaKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAuZQBwFNaNfKQByKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAwZQBwFNaNfKQByKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAxaZQBxFNaNbNfKQCbKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAyuZQBxFNaNfKQBzKQrZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAywZQBxFNaNfKQBzKQrZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTQhZQBwFNaNbNfKQCaKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTaZQBvFNaNbNfKQBzKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxaZQBwFNaNbNfKQCaKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxwZQBwFNaNfKQByKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTyaZQBwFNaNbNfKQCaKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAAyaZQpTQhZQBpFNaNbNfKQBtKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTQhZQBoFNaNbNfKQBsKQzZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQCl4path__T16asNormalizedPathTSQDqQDp__T5chainTSQEh3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGhQGg__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHxFNaNbNfKQIbKQHbZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDc3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFbQFa__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGdFNaNbNfKQGhKQFhZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDcQDb__T4TakeTSQDsQDr__T6RepeatTaZQkZQBdTSQEt4conv__T7toCharsVhi10TaVEQFv5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHgFNaNbNfKQHkKQGkZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAyaZQBpFNaNbNfKQBtKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAwZQBtFNfKQBtKQoZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAxaZQBuFNfKQBuKQpZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAyaZQBuFNfKQBuKQpZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTaZQBsFNfKQBsKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxaZQBtFNfKQBtKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxwZQBtFNfKQBtKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTyaZQBtFNfKQBtKyaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCuFNaNbNiNfKQDaKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAaZQBfFNaNbNiNfKQBlKQuZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAxaZQBgFNaNbNiNfKQBmKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAyaZQBgFNaNbNiNfKQBmKQvZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTaZQBeFNaNbNiNfKQBkKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxaZQBfFNaNbNiNfKQBlKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxwZQBfFNaNbNiNfKQBlKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCiFNaNbNfKQCmKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQChFNaNbNfKQClKQBeZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQChFNaNbNfKQClKQBhZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCgFNaNbNfKQCkKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQChFNaNbNfKQClKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQChFNaNfKQCjKxwZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCwFNaNbNfKQDaKQtZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCvFNaNbNfKQCzKQBjZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCvFNaNbNfKQCzKQBmZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCuFNaNbNfKQCyKaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCvFNaNbNfKQCzKxaZv@Base 15 + _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCvFNaNfKQCxKxwZv@Base 15 + _D3std5range10primitives__T5emptyTAAxaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAAyaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTACQBi3zip13ArchiveMemberZQBgFNaNbNdNiNfMKQBpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi5regex8internal2ir10NamedGroupZQBrFNaNbNdNiNfMKQCaZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCgFNaNbNdNiNfMKQCpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10TransitionZQCgFNaNbNdNiNfMKQCpZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCkFNaNbNdNiNfMKQCtZb@Base 15 + _D3std5range10primitives__T5emptyTASQBi8typecons__T5TupleTkTkTkZQnZQBoFNaNbNdNiNfMKQBxZb@Base 15 + _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAbZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAhZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMKQsZb@Base 15 + _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMQrZb@Base 15 + _D3std5range10primitives__T5emptyTAxAaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAxAyaZQnFNaNbNdNiNfMKQvZb@Base 15 + _D3std5range10primitives__T5emptyTAxCQBj3zip13ArchiveMemberZQBhFNaNbNdNiNfMKQBqZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj5regex8internal2ir8BytecodeZQBpFNaNbNdNiNfMKQByZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj6socket11AddressInfoZQBiFNaNbNdNiNfMKQBrZb@Base 15 + _D3std5range10primitives__T5emptyTAxSQBj8typecons__T5TupleTAyaVQea3_6b6579TSQCw4json9JSONValueVQBka5_76616c7565ZQCiZQDlFNaNbNdNiNfMQDtZb@Base 15 + _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAxhZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxuZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAxwZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMKQuZb@Base 15 + _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMQtZb@Base 15 + _D3std5range10primitives__T5emptyTAySQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNdNiNfMKQCnZb@Base 15 + _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMKQtZb@Base 15 + _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMQsZb@Base 15 + _D3std5range10primitives__T5emptyTxASQBj4json9JSONValueZQBdFNaNbNdNiNfMKxQBmZb@Base 15 + _D3std5range10primitives__T5emptyTxAaZQlFNaNbNdNiNfMKxQtZb@Base 15 + _D3std5range10primitives__T5emptyTxAyaZQmFNaNbNdNiNfMKxQuZb@Base 15 + _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNdNiNfMKyQCqZb@Base 15 + _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNdNiNfMKyQCqZb@Base 15 + _D3std5range10primitives__T5frontTAaZQkFNaNbNcNdNiNfNkMANgAaZNgQf@Base 15 + _D3std5range10primitives__T5frontTAyaZQlFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 + _D3std5range10primitives__T5frontTCQBh3zip13ArchiveMemberZQBfFNaNbNcNdNiNfNkMANgCQDbQBuQBtZNgQn@Base 15 + _D3std5range10primitives__T5frontTSQBh5regex8internal2ir10NamedGroupZQBqFNaNbNcNdNiNfNkMANgSQDmQCfQCcQBwQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh6socket11AddressInfoZQBgFNaNbNcNdNiNfNkMANgSQDcQBvQBrZNgQn@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNcNdNiNfNkMANgSQEfQCyQCsQCmQCaZNgQt@Base 15 + _D3std5range10primitives__T5frontTSQBh8internal14unicode_tables15UnicodePropertyZQCcFNaNbNcNdNiNfNkMANgSQDyQCrQClQByZNgQq@Base 15 + _D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw@Base 15 + _D3std5range10primitives__T5frontThZQjFNaNbNcNdNiNfNkMANghZNgh@Base 15 + _D3std5range10primitives__T5frontTkZQjFNaNbNcNdNiNfNkMANgkZNgk@Base 15 + _D3std5range10primitives__T5frontTuZQjFNaNdNfMAxuZw@Base 15 + _D3std5range10primitives__T5frontTwZQjFNaNbNcNdNiNfNkMANgwZNgw@Base 15 + _D3std5range10primitives__T6moveAtTASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfQClmZQCp@Base 15 + _D3std5range10primitives__T6moveAtTAywZQmFNaNbNiNfQpmZyw@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfQDbmZSQEoQDg17CodepointInterval@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCgFNaNbNiNfQCkmZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZxa@Base 15 + _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZya@Base 15 + _D3std5range10primitives__T6moveAtTSQBi4conv__T7toCharsVhi10TaVEQCk5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDhFNaNbNiNfQDlmZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBiQBh__T10OnlyResultTaZQpZQBkFNaNbNiNfQBomZa@Base 15 + _D3std5range10primitives__T6moveAtTSQBiQBh__T6RepeatTaZQkZQBfFNaNbNiNfQBjmZa@Base 15 + _D3std5range10primitives__T7popBackTAyaZQnFNaNbNiNfMKANgAyaZv@Base 15 + _D3std5range10primitives__T7popBackTCQBj3zip13ArchiveMemberZQBhFNaNbNiNfMKANgCQCyQBpQBoZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj4file15DirIteratorImpl9DirHandleZQBuFNaNbNiNfMKANgSQDlQCcQCaQBmZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj4file8DirEntryZQBcFNaNbNiNfMKANgSQCtQBkQBiZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj5regex8internal2ir10NamedGroupZQBsFNaNbNiNfMKANgSQDjQCaQBxQBrQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj6logger11multilogger16MultiLoggerEntryZQCaFNaNbNiNfMKANgSQDrQCiQCeQBuZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfMKANgSQEcQCtQCnQChQBvZv@Base 15 + _D3std5range10primitives__T7popBackTSQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNiNfMKANgSQDvQCmQCgQBtZv@Base 15 + _D3std5range10primitives__T7popBackTaZQlFNaNfMKANgaZv@Base 15 + _D3std5range10primitives__T7popBackTkZQlFNaNbNiNfMKANgkZv@Base 15 + _D3std5range10primitives__T7putCharTDFNaNbNfAxaZvTxwZQBaFNaNfKQBaxwZv@Base 15 + _D3std5range10primitives__T8moveBackTASQBl8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfQClZQCo@Base 15 + _D3std5range10primitives__T8moveBackTAywZQoFNaNbNiNfQpZyw@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCiFNaNbNiNfQCkZa@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZxa@Base 15 + _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZya@Base 15 + _D3std5range10primitives__T8moveBackTSQBk4conv__T7toCharsVhi10TaVEQCm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDjFNaNbNiNfQDlZa@Base 15 + _D3std5range10primitives__T8moveBackTSQBkQBj__T10OnlyResultTaZQpZQBmFNaNbNiNfQBoZa@Base 15 + _D3std5range10primitives__T8popBackNTAywZQoFNaNbNiNfKQqmZm@Base 15 + _D3std5range10primitives__T8popFrontTAaZQnFNaNbNiNfMKANgAaZv@Base 15 + _D3std5range10primitives__T8popFrontTAyaZQoFNaNbNiNfMKANgAyaZv@Base 15 + _D3std5range10primitives__T8popFrontTCQBk3zip13ArchiveMemberZQBiFNaNbNiNfMKANgCQCzQBpQBoZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk5regex8internal2ir10NamedGroupZQBtFNaNbNiNfMKANgSQDkQCaQBxQBrQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk6socket11AddressInfoZQBjFNaNbNiNfMKANgSQDaQBqQBmZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10LeapSecondZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10TransitionZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone14TempTransitionZQCmFNaNbNiNfMKANgSQEdQCtQCnQChQBvZv@Base 15 + _D3std5range10primitives__T8popFrontTSQBk8internal14unicode_tables15UnicodePropertyZQCfFNaNbNiNfMKANgSQDwQCmQCgQBtZv@Base 15 + _D3std5range10primitives__T8popFrontTaZQmFNaNbNeMKANgaZ12charWidthTabyAh@Base 15 + _D3std5range10primitives__T8popFrontTaZQmFNaNbNiNeMKANgaZv@Base 15 + _D3std5range10primitives__T8popFrontThZQmFNaNbNiNfMKANghZv@Base 15 + _D3std5range10primitives__T8popFrontTkZQmFNaNbNiNfMKANgkZv@Base 15 + _D3std5range10primitives__T8popFrontTuZQmFNaNbNiNeMKANguZv@Base 15 + _D3std5range10primitives__T8popFrontTwZQmFNaNbNiNfMKANgwZv@Base 15 + _D3std5range10primitives__T9moveFrontTASQBm8datetime8timezone13PosixTimeZone10TransitionZQCkFNaNbNiNfQClZQCo@Base 15 + _D3std5range10primitives__T9moveFrontTAywZQpFNaNbNiNfQpZyw@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCjFNaNbNiNfQCkZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZxa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZya@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl4conv__T7toCharsVhi10TaVEQCn5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDkFNaNbNiNfQDlZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T12FilterResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQFhQFg__T4iotaTmTxmZQlFmxmZ6ResultZQEfZQFvFNaNbNiQFuZm@Base 15 + _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T6joinerTSQCuQBjQBc__T9MapResultSQDr8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFyQEnQEg__T12FilterResultSQGzQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQIpQIo__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyZQJqFNaNbNiQJpZm@Base 15 + _D3std5range10primitives__T9moveFrontTSQBlQBk__T10OnlyResultTaZQpZQBnFNaNbNiNfQBoZa@Base 15 + _D3std5range10primitives__T9moveFrontTSQBlQBk__T6RepeatTaZQkZQBiFNaNbNiNfQBjZa@Base 15 + _D3std5range10primitives__T9popFrontNTAhZQoFNaNbNiNfKQpmZm@Base 15 + _D3std5range10primitives__T9popFrontNTAxSQBn5regex8internal2ir8BytecodeZQBtFNaNbNiNfKQBvmZm@Base 15 + _D3std5range10primitives__T9popFrontNTAywZQpFNaNbNiNfKQqmZm@Base 15 + _D3std5range11__moduleRefZ@Base 15 + _D3std5range12__ModuleInfoZ@Base 15 + _D3std5range8NullSink6__initZ@Base 15 + _D3std5range8nullSinkFNaNbNcNiNfZSQBgQBf8NullSink@Base 15 + _D3std5range8nullSinkFNcZ4sinkSQBdQBc8NullSink@Base 15 + _D3std5range__T10OnlyResultTaZQp10fetchFrontMFNaNbNiNeZa@Base 15 + _D3std5range__T10OnlyResultTaZQp11assignFrontMFNaNbNiNeaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp13opIndexAssignMFNaNbNiNfamZv@Base 15 + _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp4saveMFNaNbNdNiNfZSQBxQBw__TQBtTaZQBz@Base 15 + _D3std5range__T10OnlyResultTaZQp5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfaZv@Base 15 + _D3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D3std5range__T10OnlyResultTaZQp6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T10OnlyResultTaZQp7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfZSQByQBx__TQBuTaZQCa@Base 15 + _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfmmZSQCaQBz__TQBwTaZQCc@Base 15 + _D3std5range__T10OnlyResultTaZQp7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T10OnlyResultTaZQp8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T10OnlyResultTaZQp__T6__ctorZQiMFNaNbNcNiNfNkMKaZSQCkQCj__TQCgTaZQCm@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFNaNfQHvQCzZSQJdQJc__TQIzTQIqTQDvZQJlFQJcQEgZ6Result@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result11__xopEqualsMxFKxSQJyQJx__TQJuTQJlTQEqZQKgFQJxQFbZQCgZb@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result4saveMFNaNdNfZSQJuQJt__TQJqTQJhTQEmZQKcFQJtQExZQCc@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5emptyMFNaNdNfZb@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5frontMFNaNdNfZk@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result8popFrontMFNaNfZv@Base 15 + _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result9__xtoHashFNbNeKxSQJxQJw__TQJtTQJkTQEpZQKfFQJwQFaZQCfZm@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn11__xopEqualsMxFKxSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQExZb@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4backMFNaNbNcNdNiNfZQCv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4saveMFNaNbNdNiNfZSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQEx@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5frontMFNaNbNcNdNiNfZQCw@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__ctorMFNaNbNcNiNfQCvZSQEbQEa__TQDxTQDnVQDqa5_61203c2062VQDni0ZQFc@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opIndexMFNaNbNcNiNfmZQCx@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opSliceMFNaNbNiNjNlNfmmZSQEdQEc__TQDzTQDpVQDsa5_61203c2062VQDpi0ZQFe@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7releaseMFNaNbNiNjNlNfZQCz@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__xtoHashFNbNeKxSQDvQDu__TQDrTQDhVQDka5_61203c2062VQDhi0ZQEwZm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp11__xopEqualsMxFKxSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHfZb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4backMFNaNbNcNdNiNfZQEx@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4saveMFNaNbNdNiNfZSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHf@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5frontMFNaNbNcNdNiNfZQEy@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__ctorMFNaNbNcNiNfQExZSQGdQGc__TQFzTQFpSQGuQFrQEvQEmMFNaNfZQEjVQDti0ZQHk@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opIndexMFNaNbNcNiNfmZQEz@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opSliceMFNaNbNiNjNlNfmmZSQGfQGe__TQGbTQFrSQGwQFtQExQEoMFNaNfZQElVQDvi0ZQHm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7releaseMFNaNbNiNjNlNfZQFb@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__xtoHashFNbNeKxSQFxQFw__TQFtTQFjSQGoQFlQEpQEgMFNaNfZQEdVQDni0ZQHeZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo11__xopEqualsMxFKxSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHtZb@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4backMFNaNbNcNdNiNfZQEw@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4saveMFNaNbNdNiNfZSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHt@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5frontMFNaNbNcNdNiNfZQEx@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__ctorMFNaNbNcNiNfQEwZSQGcQGb__TQFyTQFoVQEia15_612e6e616d65203c20622e6e616d65VQEii0ZQHy@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opIndexMFNaNbNcNiNfmZQEy@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opSliceMFNaNbNiNjNlNfmmZSQGeQGd__TQGaTQFqVQEka15_612e6e616d65203c20622e6e616d65VQEki0ZQIa@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7releaseMFNaNbNiNjNlNfZQFa@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__xtoHashFNbNeKxSQFwQFv__TQFsTQFiVQEca15_612e6e616d65203c20622e6e616d65VQEci0ZQHsZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T10lowerBoundVEQFvQFu12SearchPolicyi3TQFqZQBpMFNaNbNiNfQGhZSQHoQHn__TQHkTQHaVQFua15_612e6e616d65203c20622e6e616d65VQFui0ZQJk@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T18getTransitionIndexVEQGdQGc12SearchPolicyi3SQHaQGz__TQGwTQGmVQFga15_612e6e616d65203c20622e6e616d65VQFgi0ZQIw3geqTQIpZQEoMFNaNbNiNfQJgZm@Base 15 + _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T3geqTQEkTQEoZQnMFNaNbNiNfQFeQFhZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh11__xopEqualsMxFKxSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIqZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4backMFNaNbNcNdNiNfZQFp@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4saveMFNaNbNdNiNfZSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIq@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5frontMFNaNbNcNdNiNfZQFq@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__ctorMFNaNbNcNiNfQFpZSQGvQGu__TQGrTQGhVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opIndexMFNaNbNcNiNfmZQFr@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opSliceMFNaNbNiNjNlNfmmZSQGxQGw__TQGtTQGjVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQIx@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7releaseMFNaNbNiNjNlNfZQFt@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__xtoHashFNbNeKxSQGpQGo__TQGlTQGbVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQIpZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl11__xopEqualsMxFKxSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIuZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4backMFNaNbNcNdNiNfZQFt@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4saveMFNaNbNdNiNfZSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIu@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5frontMFNaNbNcNdNiNfZQFu@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__ctorMFNaNbNcNiNfQFtZSQGzQGy__TQGvTQGlVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIz@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opIndexMFNaNbNcNiNfmZQFv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opSliceMFNaNbNiNjNlNfmmZSQHbQHa__TQGxTQGnVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQJb@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7releaseMFNaNbNiNjNlNfZQFx@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__xtoHashFNbNeKxSQGtQGs__TQGpTQGfVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQItZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm11__xopEqualsMxFKxSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEwZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4backMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4saveMFNaNbNdNiNfZSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEw@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5frontMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__ctorMFNaNbNcNiNfQCuZSQEaQDz__TQDwTQDmVQDna5_61203c2062VQDni0ZQFb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opIndexMFNaNbNcNiNfmZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opSliceMFNaNbNiNjNlNfmmZSQEcQEb__TQDyTQDoVQDpa5_61203c2062VQDpi0ZQFd@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7releaseMFNaNbNiNjNlNfZQCy@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__xtoHashFNbNeKxSQDuQDt__TQDqTQDgVQDha5_61203c2062VQDhi0ZQEvZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T10lowerBoundVEQDtQDs12SearchPolicyi2TiZQBnMFNaNbNiNfiZSQFiQFh__TQFeTQEuVQEva5_61203c2062VQEvi0ZQGj@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi2SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi3SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T3geqTkTiZQjMFNaNbNiNfkiZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo11__xopEqualsMxFKxSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFaZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4backMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4saveMFNaNbNdNiNfZSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFa@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5frontMFNaNbNcNdNiNfZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__ctorMFNaNbNcNiNfQCwZSQEcQEb__TQDyTQDoVQDpa6_61203c3d2062VQDpi0ZQFf@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opIndexMFNaNbNcNiNfmZk@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opSliceMFNaNbNiNjNlNfmmZSQEeQEd__TQEaTQDqVQDra6_61203c3d2062VQDri0ZQFh@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7releaseMFNaNbNiNjNlNfZQDa@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__xtoHashFNbNeKxSQDwQDv__TQDsTQDiVQDja6_61203c3d2062VQDji0ZQEzZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T10lowerBoundVEQDvQDu12SearchPolicyi3TkZQBnMFNaNbNiNfkZSQFkQFj__TQFgTQEwVQExa6_61203c3d2062VQExi0ZQGn@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T18getTransitionIndexVEQEdQEc12SearchPolicyi3SQFaQEz__TQEwTQEmVQEna6_61203c3d2062VQEni0ZQGd3geqTkZQDtMFNaNbNiNfkZm@Base 15 + _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T3geqTkTkZQjMFNaNbNiNfkkZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk11__xopEqualsMxFKxSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJjZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4backMFNaNbNdNiNfZSQHtQGr17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4saveMFNaNbNdNiNfZSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJj@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5frontMFNaNbNdNiNfZSQHuQGs17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__ctorMFNaNbNcNiNfQGsZSQHyQHx__TQHuTQHkSQIpQHn__TQHmTQHaZQHuQEzMFNfZQEtVQEci0ZQJo@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opIndexMFNaNbNiNfmZSQHvQGt17CodepointInterval@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opSliceMFNaNbNiNjNlNfmmZSQIaQHz__TQHwTQHmSQIrQHp__TQHoTQHcZQHwQFbMFNfZQEvVQEei0ZQJq@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7releaseMFNaNbNiNjNlNfZQGw@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__xtoHashFNbNeKxSQHsQHr__TQHoTQHeSQIjQHh__TQHgTQGuZQHoQEtMFNfZQEnVQDwi0ZQJiZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOuZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOu@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFvQFuTaZQHnFMxQFmZQFnVQEui0ZQOz@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFxQFwTaZQHpFMxQFoZQFpVQEwi0ZQPb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFpQFoTaZQHhFMxQFgZQFhVQEoi0ZQOtZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHcQHbTaZQIuFMxQGtZQGuVQGbi0ZQQg@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGtQGsTaZQIlFMxQGkZQGlVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe11__xopEqualsMxFKxSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOvZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4saveMFNaNbNdNiNfZSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__ctorMFNaNbNcNiNfQLmZSQMsQMr__TQMoTQMeSQNjQGo__TQGnS_DQNyQJbQIvQGaQFvQFuTaZQHoFMxQFmZQFnVQEui0ZQPa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opSliceMFNaNbNiNjNlNfmmZSQMuQMt__TQMqTQMgSQNlQGq__TQGpS_DQOaQJdQIxQGcQFxQFwTaZQHqFMxQFoZQFpVQEwi0ZQPc@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7releaseMFNaNbNiNjNlNfZQLq@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__xtoHashFNbNeKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFpQFoTaZQHiFMxQFgZQFhVQEoi0ZQOuZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T10lowerBoundVEQMlQMk12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNzQNy__TQNvTQNlSQOqQHv__TQHuS_DQPfQKiQKcQHhQHcQHbTaZQIvFMxQGtZQGuVQGbi0ZQQh@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T18getTransitionIndexVEQMtQMs12SearchPolicyi3SQNqQNp__TQNmTQNcSQOhQHm__TQHlS_DQOwQJzQJtQGyQGtQGsTaZQImFMxQGkZQGlVQFsi0ZQPy3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T3geqTQInTAxaZQnMFNaNfQJdQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOuZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOu@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFtQFsTaZQHnFMxQFkZQFlVQEui0ZQOz@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFvQFuTaZQHpFMxQFmZQFnVQEwi0ZQPb@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFnQFmTaZQHhFMxQFeZQFfVQEoi0ZQOtZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHaQGzTaZQIuFMxQGrZQGsVQGbi0ZQQg@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGrQGqTaZQIlFMxQGiZQGjVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 + _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu11__xopEqualsMxFKxSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGeZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4backMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4saveMFNaNbNdNiNfZSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGe@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5frontMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__ctorMFNaNbNcNiNfQEcZSQFiQFh__TQFeTQEuVQDna5_61203c2062VQDni0ZQGj@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opIndexMFNaNbNcNiNfmZyw@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opSliceMFNaNbNiNjNlNfmmZSQFkQFj__TQFgTQEwVQDpa5_61203c2062VQDpi0ZQGl@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7releaseMFNaNbNiNjNlNfZQEg@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__mixin246lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__xtoHashFNbNeKxSQFcQFb__TQEyTQEoVQDha5_61203c2062VQDhi0ZQGdZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T10lowerBoundVEQFbQFa12SearchPolicyi3TwZQBnMFNaNbNiNfwZSQGqQGp__TQGmTQGcVQEva5_61203c2062VQEvi0ZQHr@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T18getTransitionIndexVEQFjQFi12SearchPolicyi3SQGgQGf__TQGcTQFsVQEla5_61203c2062VQEli0ZQHh3geqTwZQDrMFNaNbNiNfwZm@Base 15 + _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T3geqTywTwZQkMFNaNbNiNfywwZb@Base 15 + _D3std5range__T11takeExactlyTSQBcQBb__T6RepeatTaZQkZQBlFNaNbNiNfQBjmZSQCqQCp__T4TakeTQCeZQk@Base 15 + _D3std5range__T12assumeSortedVAyaa15_612e6e616d65203c20622e6e616d65TASQCq5regex8internal2ir10NamedGroupZQDlFNaNbNiNfQBwZSQEpQEo__T11SortedRangeTQCyVQEoa15_612e6e616d65203c20622e6e616d65VEQHdQHc18SortedRangeOptionsi0ZQDi@Base 15 + _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone10LeapSecondZQEeFNaNbNiNfQClZSQFiQFh__T11SortedRangeTQDnVQFha17_612e74696d6554203c20622e74696d6554VEQIaQHz18SortedRangeOptionsi0ZQDm@Base 15 + _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone14TempTransitionZQEiFNaNbNiNfQCpZSQFmQFl__T11SortedRangeTQDrVQFla17_612e74696d6554203c20622e74696d6554VEQIeQId18SortedRangeOptionsi0ZQDm@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TAQsZQBkFNaNbNiNfQqZSQCnQCm__T11SortedRangeTQBrVQCma5_61203c2062VEQEgQEf18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TAkZQBjFNaNbNiNfQpZSQCmQCl__T11SortedRangeTQBqVQCla5_61203c2062VEQEfQEe18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa5_61203c2062TSQBuQBt__T6strideTAywZQmFQhmZ6ResultZQCrFNaNbNiNfQBxZSQDvQDu__T11SortedRangeTQCzVQDua5_61203c2062VEQFoQFn18SortedRangeOptionsi0ZQCn@Base 15 + _D3std5range__T12assumeSortedVAyaa6_61203c3d2062TAkZQBlFNaNbNiNfQpZSQCoQCn__T11SortedRangeTQBqVQCna6_61203c3d2062VEQEjQEi18SortedRangeOptionsi0ZQCp@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4saveMFNaNbNdNiNfZSQCkQCj__TQCgTQCeZQCo@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6moveAtMFNaNbNiNfmZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8moveBackMFNaNbNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9maxLengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9moveFrontMFNaNbNiNfZa@Base 15 + _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb__T7opSliceZQjMFNaNbNiNfmmZSQCtQCs__TQCpTQCnZQCx@Base 15 + _D3std5range__T4iotaTmTmZQkFNaNbNiNfmmZSQBmQBl__TQBiTmTmZQBqFmmZ6Result@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result4saveMFNaNbNdNiNfZSQCdQCc__TQBzTmTmZQChFmmZQBy@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6__ctorMFNaNbNcNiNfmmZSQChQCg__TQCdTmTmZQClFmmZQCc@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfZNgSQCiQCh__TQCeTmTmZQCmFmmZQCd@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCkQCj__TQCgTmTmZQCoFmmZQCf@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result8containsMFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTmZQkFmmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFNaNbNiNfmxmZSQBoQBn__TQBkTmTxmZQBtFmxmZ6Result@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4saveMFNaNbNdNiNfZSQCfQCe__TQCbTmTxmZQCkFmxmZQCa@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__ctorMFNaNbNcNiNfmmZSQCjQCi__TQCfTmTxmZQCoFmxmZQCe@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfZNgSQCkQCj__TQCgTmTxmZQCpFmxmZQCf@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCmQCl__TQCiTmTxmZQCrFmxmZQCh@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8containsMFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T4iotaTmTxmZQlFmxmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 + _D3std5range__T4iotaTmZQiFNaNbNiNfmZSQBjQBi__TQBfTmTmZQBnFmmZ6Result@Base 15 + _D3std5range__T4onlyTaZQiFNaNbNiNfMaZSQBkQBj__T10OnlyResultTaZQp@Base 15 + _D3std5range__T4takeTAhZQjFNaNbNiNfQomZQs@Base 15 + _D3std5range__T4takeTSQuQs__T6RepeatTaZQkZQBbFNaNbNiNfQBhmZSQCgQCf__T4TakeTQCcZQk@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFNaNbNiNfQEoQCuQBvZSQFtQFs__TQFpTQFmTQDtTQCvZQGfFQGcQEiQDjZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result11__xopEqualsMxFKxSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4saveMFNaNbNdNiNfZSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxZSQGvQGu__TQGrTQGoTQEvTQDxZQHhFQHeQFkQElZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxmmZSQGxQGw__TQGtTQGqTQExTQDzZQHjFQHgQFmQEnZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNaNbNiNjNlNfmmZSQGrQGq__TQGnTQGkTQErTQDtZQHdFQHaQFgQEhZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQHpQHo__TQHlTQHiTQFpTQErZQIbFQHyQGeQFfZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQHoQHn__TQHkTQHhTQFoTQEqZQIaFQHxQGdQFeZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9__xtoHashFNbNeKxSQGjQGi__TQGfTQGcTQEjTQDlZQGvFQGsQEyQDzZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 + _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFNaNbNiQNdQEcZSQOfQOe__TQObTQNyTQEyZQOnFQOkQFjZQGo@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb4saveMFNaNbNdNiZSQOsQOr__TQOoTQOlTQFlZQPaFQOxQFwZQHb@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5emptyMFNaNbNdNiZb@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5frontMFNaNbNdNiZm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiNfQOaQEzmZSQPdQPc__TQOzTQOwTQFwZQPlFQPiQGhZQHm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiQNyQExZSQPaQOz__TQOwTQOtTQFtZQPiFQPfQGeZQHj@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6fixRefFNaNbNiNfmZm@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb8popFrontMFNaNbNiZv@Base 15 + _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb9moveFrontMFNaNbNiZm@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFNaNbNiNfQFaQDoZSQGcQGb__TQFyTQFvTQEkZQGkFQGhQEvZQCi@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4backMFNaNbNdNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4saveMFNaNbNdNiNfZSQGoQGn__TQGkTQGhTQEwZQGwFQGtQFhZQCu@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5frontMFNaNbNdNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEiZSQGwQGv__TQGsTQGpTQFeZQHeFQHbQFpZQDc@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEimmZSQGyQGx__TQGuTQGrTQFgZQHgFQHdQFrZQDe@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6fixRefFNaNbNiNfaZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6moveAtMFNaNbNiNfmZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opIndexMFNaNbNiNfmZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNaNbNiNfmmZSQGrQGq__TQGnTQGkTQEzZQGzFQGwQFkZQCx@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8moveBackMFNaNbNiNfZa@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt9moveFrontMFNaNbNiNfZa@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfQCkZSQDjQDi__TQDfTQDcZQDnFQDkZ__T6ResultZQi@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi10retroIndexMFNaNbNiNfmZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi11__xopEqualsMxFKxSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCjZb@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi13opIndexAssignMFNaNbNiNfQDrmZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNcNdNiNfZQDm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNdNiNfQDjZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4saveMFNaNbNdNiNfZSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCj@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNcNdNiNfZQDn@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNdNiNfQDkZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6moveAtMFNaNbNiNfmZQDl@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opIndexMFNaNbNcNiNfmZQDo@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opSliceMFNaNbNiNfmmZSQEjQEi__TQEfTQEcZQEnFQEkZ__TQCiZQCm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8moveBackMFNaNbNiNfZQDm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__mixin176lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__xtoHashFNbNeKxSQEfQEe__TQEbTQDyZQEjFQEgZ__TQCeZQCiZm@Base 15 + _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9moveFrontMFNaNbNiNfZQDn@Base 15 + _D3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 + _D3std5range__T6ChunksTAhZQl11DollarToken9momLengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6ChunksTAhZQl11__xopEqualsMxFKxSQBtQBs__TQBpTQBlZQBxZb@Base 15 + _D3std5range__T6ChunksTAhZQl4backMFNaNbNdNiNfZQx@Base 15 + _D3std5range__T6ChunksTAhZQl4saveMFNaNbNdNiNfZSQBtQBs__TQBpTQBlZQBx@Base 15 + _D3std5range__T6ChunksTAhZQl5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T6ChunksTAhZQl5frontMFNaNbNdNiNfZQy@Base 15 + _D3std5range__T6ChunksTAhZQl6__ctorMFNaNbNcNiNfQymZSQByQBx__TQBuTQBqZQCc@Base 15 + _D3std5range__T6ChunksTAhZQl6__initZ@Base 15 + _D3std5range__T6ChunksTAhZQl6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6ChunksTAhZQl7opIndexMFNaNbNiNfmZQz@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenQBiZSQDfQDe__TQDbTQCxZQDj@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenmZSQDdQDc__TQCzTQCvZQDh@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmSQBuQBt__TQBqTQBmZQBy11DollarTokenZSQDdQDc__TQCzTQCvZQDh@Base 15 + _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmmZSQBwQBv__TQBsTQBoZQCa@Base 15 + _D3std5range__T6ChunksTAhZQl7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6ChunksTAhZQl8opDollarMFNaNbNiNfZSQBvQBu__TQBrTQBnZQBz11DollarToken@Base 15 + _D3std5range__T6ChunksTAhZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6ChunksTAhZQl9__xtoHashFNbNeKxSQBsQBr__TQBoTQBkZQBwZm@Base 15 + _D3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 + _D3std5range__T6RepeatTaZQk4backMNgFNaNbNdNiNfZNga@Base 15 + _D3std5range__T6RepeatTaZQk4saveMNgFNaNbNdNiNfZNgSQBwQBv__TQBsTaZQBy@Base 15 + _D3std5range__T6RepeatTaZQk5frontMNgFNaNbNdNiNfZNga@Base 15 + _D3std5range__T6RepeatTaZQk6__initZ@Base 15 + _D3std5range__T6RepeatTaZQk7opIndexMNgFNaNbNiNfmZNga@Base 15 + _D3std5range__T6RepeatTaZQk7opSliceMFNaNbNiNfmmZSQBvQBu__T4TakeTSQClQCk__TQChTaZQCnZQBa@Base 15 + _D3std5range__T6RepeatTaZQk7opSliceMNgFNaNbNiNfmSQBvQBu__TQBrTaZQBx11DollarTokenZNgSQDeQDd__TQDaTaZQDg@Base 15 + _D3std5range__T6RepeatTaZQk7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6RepeatTaZQk8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6chunksTAhZQlFNaNbNiNfQomZSQBoQBn__T6ChunksTQBkZQm@Base 15 + _D3std5range__T6repeatTaZQkFNaNbNiNfaZSQBlQBk__T6RepeatTaZQk@Base 15 + _D3std5range__T6repeatTaZQkFNaNbNiNfamZSQBmQBl__T4TakeTSQCcQCb__T6RepeatTaZQkZQBd@Base 15 + _D3std5range__T6strideTAywZQmFNaNbNiNfQpmZSQBpQBo__TQBlTQBhZQBtFQBpmZ6Result@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result11__xopEqualsMxFKxSQCgQCf__TQCcTQByZQCkFQCgmZQCaZb@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result22eliminateSlackElementsMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result4backMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result4saveMFNaNbNdNiNfZSQCgQCf__TQCcTQByZQCkFQCgmZQCa@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result5frontMFNaNbNcNdNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6lengthMFNaNbNdNiNfZm@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result6moveAtMFNaNbNiNfmZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7opIndexMFNaNbNcNiNfmZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7opSliceMFNaNbNiNfmmZSQCjQCi__TQCfTQCbZQCnFQCjmZQCd@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result7popBackMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result8moveBackMFNaNbNiNfZyw@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result9__xtoHashFNbNeKxSQCfQCe__TQCbTQBxZQCjFQCfmZQBzZm@Base 15 + _D3std5range__T6strideTAywZQmFQhmZ6Result9moveFrontMFNaNbNiNfZyw@Base 15 + _D3std5range__T7padLeftTSQx4conv__T7toCharsVhi10TaVEQBy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultTaZQDjFNaNbNiNfQDmamZSQEpQEo__T5chainTSQFgQFf__T4TakeTSQFwQFv__T6RepeatTaZQkZQBdTQGaZQCcFQBzQGlZQDz@Base 15 + _D3std5regex11__moduleRefZ@Base 15 + _D3std5regex12__ModuleInfoZ@Base 15 + _D3std5regex8internal12backtracking11__moduleRefZ@Base 15 + _D3std5regex8internal12backtracking12__ModuleInfoZ@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctAtomCodeMFAxSQCiQChQCe2ir8BytecodeiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenBlockMFAxSQCiQChQCe2ir8BytecodeiZSQDgQDfQDcQCwQCl7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenGroupMFKAxSQCjQCiQCf2ir8BytecodeiZSQDhQDgQDdQCxQCm7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext10ctGenRegExMFAxSQCiQChQCe2ir8BytecodeZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext10lookaroundMFkkZSQCjQCiQCfQBzQBo@Base 15 + _D3std5regex8internal12backtracking9CtContext11__xopEqualsMxFKxSQCkQCjQCgQCaQBpZb@Base 15 + _D3std5regex8internal12backtracking9CtContext11ctQuickTestMFAxSQCjQCiQCf2ir8BytecodeiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext11restoreCodeMFZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFAxSQCmQClQCi2ir8BytecodeiiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFKAxSQCnQCmQCj2ir8BytecodeiiZAya@Base 15 + _D3std5regex8internal12backtracking9CtContext16ctGenAlternationMFAxSQCoQCnQCk2ir8BytecodeiZSQDmQDlQDiQDcQCr7CtState@Base 15 + _D3std5regex8internal12backtracking9CtContext6__initZ@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState11__xopEqualsMxFKxSQCsQCrQCoQCiQBxQBqZb@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D3std5regex8internal12backtracking9CtContext7CtState9__xtoHashFNbNeKxSQCrQCqQCnQChQBwQBpZm@Base 15 + _D3std5regex8internal12backtracking9CtContext8saveCodeMFkAyaZQe@Base 15 + _D3std5regex8internal12backtracking9CtContext9__xtoHashFNbNeKxSQCjQCiQCfQBzQBoZm@Base 15 + _D3std5regex8internal12backtracking9CtContext9ctGenAtomMFKAxSQChQCgQCd2ir8BytecodeiZSQDfQDeQDbQCvQCk7CtState@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkTQnZQxFNaNbNeQzQBbQBeQBhQBkQBnZQBr@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkZQuFNaNbNeQwQyQBaQBdQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBiFNaNbNeQBlQBoQBrQBuxkxkiQCcQCfQCiZQCm@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhZQrFNaNbNeQtQvQxQzZQBc@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBtFNaNbNeQBwQBzQCciQCgQCjQCmxkxkiQCuQCxQDaZQDe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTiTQoTiZQBaFNaNbNeQBdQBgQBjiQBniQBriZQBw@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTiTQlZQvFNaNbNeQxQzQBbiiQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiZQqFNaNbNeQsQuQwiZQBa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTxkTxkTiTQpTQsTQvZQBfFNaNbNeQBiQBlQBoxkxkiQBwQBzQCcZQCg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTQeZQoFNaNbNeQqQsQuZQx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTQjTQmTxkTxkTiTQxTQBaTQBeZQBpFNaNbNeQBsQBviQBzQCcQCfxkxkiQCnQCqQCtZQCx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiTQlTiZQxFNaNbNeQzQBbiQBfiQBjiZQBo@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiZQsFNaNbNeQuQwiQziZQBd@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiTiZQuFNaNbNeQwQyiiQBciZQBh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiZQsFNaNbNeQuQwiiQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTiZQnFNaNbNeQpQriZQv@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTxkTxkTiTQmTQpTQsZQBcFNaNbNeQBfQBixkxkiQBqQBtQBwZQCa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaTykTiZQqFNaNbNeQsQuykiZQBa@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTAyaZQlFNaNbNeQnQpZQs@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBkFNaNbNeQBliQBpQBsQBvxkxkiQCdQCgQCjZQCn@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhZQtFNaNbNeQtiQwQyQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBvFNaNbNeQBwiQCaQCdiQChQCkQCnxkxkiQCvQCyQDbZQDf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiZQsFNaNbNeQsiQvQxiZQBb@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiTQgTiZQuFNaNbNeQuiQxiQBaiZQBf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiZQpFNaNbNeQpiQsiZQw@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTAyaZQnFNaNbNeQniQqZQt@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaTiZQrFNaNbNeQpiiQtiZQx@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaZQpFNaNbNeQniiQrZQu@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTiZQlFNaNbNeAyaiiZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiTykTiZQoFNaNbNeAyaiykiZQi@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTiZQjFNaNbNeAyaiZQf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeTQhZQtFNaNbNeQtkQwQyQBaZQBe@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeZQqFNaNbNeQqkQtQvZQy@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTAyaZQnFNaNbNeQnkQqZQt@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkTkZQlFNaNbNeAyakkZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTkZQjFNaNbNeAyakZQf@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTQjTiTQoTiZQBdFNaNbNeQBdxkQBiQBliQBpiQBtiZQBy@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTiTQlZQyFNaNbNeQxxkQBbQBeiiQBjZQBn@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTiTAyaTQeTQhZQwFNaNbNeQtxkiQyQBaQBdZQBh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTxkTiTAyaTQeTQhZQzFNaNbNeQtxkxkiQBaQBdQBgZQBk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTxkTykTiTykTiZQuFNaNbNeAyaxkykiykiZQm@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTAyaTykTiZQtFNaNbNeQsykQwykiZQBc@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiTiTAyaTiZQuFNaNbNeQpykiiQviZQz@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiTykTiZQrFNaNbNeAyaykiykiZQk@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykTiZQmFNaNbNeAyaykiZQh@Base 15 + _D3std5regex8internal12backtracking__T5ctSubTykZQkFNaNbNeAyaykZQg@Base 15 + _D3std5regex8internal12backtracking__T5ctSubZQhFNaNbNiNeAyaZQe@Base 15 + _D3std5regex8internal2ir10NamedGroup11__xopEqualsMxFKxSQCbQCaQBxQBrQBrZb@Base 15 + _D3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D3std5regex8internal2ir10NamedGroup9__xtoHashFNbNeKxSQCaQBzQBwQBqQBqZm@Base 15 + _D3std5regex8internal2ir10getMatcherFNeSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhZSQDiQDhQDeQCy11CharMatcher@Base 15 + _D3std5regex8internal2ir10lengthOfIRFNaNbNiNfEQBsQBrQBoQBi2IRZi@Base 15 + _D3std5regex8internal2ir11CharMatcher11__xopEqualsMxFKxSQCcQCbQByQBsQBsZb@Base 15 + _D3std5regex8internal2ir11CharMatcher6__ctorMFNcSQBv3uni__T13InversionListTSQCwQBb8GcPolicyZQBhZSQDrQDqQDnQDhQDh@Base 15 + _D3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D3std5regex8internal2ir11CharMatcher9__xtoHashFNbNeKxSQCbQCaQBxQBrQBrZm@Base 15 + _D3std5regex8internal2ir11RegexOption6__initZ@Base 15 + _D3std5regex8internal2ir11__moduleRefZ@Base 15 + _D3std5regex8internal2ir12__ModuleInfoZ@Base 15 + _D3std5regex8internal2ir12matcherCacheHSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhSQDhQDgQDdQCx11CharMatcher@Base 15 + _D3std5regex8internal2ir14RegexException6__initZ@Base 15 + _D3std5regex8internal2ir14RegexException6__vtblZ@Base 15 + _D3std5regex8internal2ir14RegexException7__ClassZ@Base 15 + _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDiQDcQDc@Base 15 + _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDiQDcQDc@Base 15 + _D3std5regex8internal2ir16lengthOfPairedIRFNaNbNiNfEQByQBxQBuQBo2IRZi@Base 15 + _D3std5regex8internal2ir17immediateParamsIRFNaNbNiNfEQBzQByQBvQBp2IRZi@Base 15 + _D3std5regex8internal2ir2IR6__initZ@Base 15 + _D3std5regex8internal2ir7isEndIRFNaNbNiNfEQBoQBnQBkQBe2IRZb@Base 15 + _D3std5regex8internal2ir8BitTable6__ctorMFNcSQBr3uni__T13InversionListTSQCsQBb8GcPolicyZQBhZSQDnQDmQDjQDdQDd@Base 15 + _D3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D3std5regex8internal2ir8BitTable__T3addZQfMFNaNbNiNfwZv@Base 15 + _D3std5regex8internal2ir8BitTable__T5indexZQhFNaNbNiNfwZk@Base 15 + _D3std5regex8internal2ir8Bytecode11indexOfPairMxFNaNfkZk@Base 15 + _D3std5regex8internal2ir8Bytecode11setLocalRefMFNaNfZv@Base 15 + _D3std5regex8internal2ir8Bytecode12pairedLengthMxFNaNdNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode13backreferenceMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode14setBackrefenceMFNaNfZv@Base 15 + _D3std5regex8internal2ir8Bytecode4argsMxFNaNdNfZi@Base 15 + _D3std5regex8internal2ir8Bytecode5isEndMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkZSQCnQCmQCjQCdQCd@Base 15 + _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkkZSQCoQCnQCkQCeQCe@Base 15 + _D3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D3std5regex8internal2ir8Bytecode6isAtomMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode6lengthMxFNaNdNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode6pairedMxFNaNdNfZSQBxQBwQBtQBnQBn@Base 15 + _D3std5regex8internal2ir8Bytecode7fromRawFNaNfkZSQBvQBuQBrQBlQBl@Base 15 + _D3std5regex8internal2ir8Bytecode7hotspotMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode7isStartMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode8localRefMxFNaNdNfZb@Base 15 + _D3std5regex8internal2ir8Bytecode__T4codeZQgMxFNaNbNdNiNfZEQCfQCeQCbQBv2IR@Base 15 + _D3std5regex8internal2ir8Bytecode__T4dataZQgMxFNaNbNdNiNfZk@Base 15 + _D3std5regex8internal2ir8Bytecode__T8mnemonicZQkMxFNaNdNeZAya@Base 15 + _D3std5regex8internal2ir8Bytecode__T8sequenceZQkMxFNaNbNdNiNfZk@Base 15 + _D3std5regex8internal2ir8hasMergeFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 + _D3std5regex8internal2ir8isAtomIRFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 + _D3std5regex8internal2ir8pairedIRFNaNbNiNfEQBpQBoQBlQBf2IRZQr@Base 15 + _D3std5regex8internal2ir9RegexInfo6__initZ@Base 15 + _D3std5regex8internal2ir9isStartIRFNaNbNiNfEQBqQBpQBmQBg2IRZb@Base 15 + _D3std5regex8internal5tests11__moduleRefZ@Base 15 + _D3std5regex8internal5tests12__ModuleInfoZ@Base 15 + _D3std5regex8internal6parser11__moduleRefZ@Base 15 + _D3std5regex8internal6parser12__ModuleInfoZ@Base 15 + _D3std5regex8internal6parser7CodeGen10endPatternMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen11__xopEqualsMxFKxSQCbQCaQBxQBrQBnZb@Base 15 + _D3std5regex8internal6parser7CodeGen11charsetToIrMFNeSQCa3uni__T13InversionListTSQDbQBb8GcPolicyZQBhZv@Base 15 + _D3std5regex8internal6parser7CodeGen11fixupLengthMFNdZm@Base 15 + _D3std5regex8internal6parser7CodeGen11isOpenGroupMFkZb@Base 15 + _D3std5regex8internal6parser7CodeGen11markBackrefMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixLookaroundMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkkkbZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genLogicGroupMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genLookaroundMFEQCaQBzQBw2ir2IRZv@Base 15 + _D3std5regex8internal6parser7CodeGen13genNamedGroupMFAyaZv@Base 15 + _D3std5regex8internal6parser7CodeGen14fixAlternationMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen17finishAlternationMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen3putMFSQBpQBoQBl2ir8BytecodeZv@Base 15 + _D3std5regex8internal6parser7CodeGen5startMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen6__initZ@Base 15 + _D3std5regex8internal6parser7CodeGen6lengthMFNdZk@Base 15 + _D3std5regex8internal6parser7CodeGen6putRawMFkZv@Base 15 + _D3std5regex8internal6parser7CodeGen7onCloseMFZSQBu8typecons__T5TupleTbTkZQl@Base 15 + _D3std5regex8internal6parser7CodeGen8genGroupMFZv@Base 15 + _D3std5regex8internal6parser7CodeGen8popFixupMFZk@Base 15 + _D3std5regex8internal6parser7CodeGen8topFixupMFNdZk@Base 15 + _D3std5regex8internal6parser7CodeGen9__xtoHashFNbNeKxSQCaQBzQBwQBqQBmZm@Base 15 + _D3std5regex8internal6parser7CodeGen9pushFixupMFkZv@Base 15 + _D3std5regex8internal6parser__T15reverseBytecodeZQsFNeASQCcQCbQBy2ir8BytecodeZv@Base 15 + _D3std5regex8internal6tests211__moduleRefZ@Base 15 + _D3std5regex8internal6tests212__ModuleInfoZ@Base 15 + _D3std5regex8internal8thompson11__moduleRefZ@Base 15 + _D3std5regex8internal8thompson12__ModuleInfoZ@Base 15 + _D3std5regex8internal9generator11__moduleRefZ@Base 15 + _D3std5regex8internal9generator12__ModuleInfoZ@Base 15 + _D3std5regex8internal9kickstart11__moduleRefZ@Base 15 + _D3std5regex8internal9kickstart12__ModuleInfoZ@Base 15 + _D3std5stdio10ChunksImpl11__fieldDtorMFNeZv@Base 15 + _D3std5stdio10ChunksImpl11__xopEqualsMxFKxSQBpQBoQBlZb@Base 15 + _D3std5stdio10ChunksImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio10ChunksImpl6__ctorMFNcSQBiQBh4FilemZSQBwQBvQBs@Base 15 + _D3std5stdio10ChunksImpl6__initZ@Base 15 + _D3std5stdio10ChunksImpl8opAssignMFNcNjNeSQBoQBnQBkZQl@Base 15 + _D3std5stdio10ChunksImpl9__xtoHashFNbNeKxSQBoQBnQBkZm@Base 15 + _D3std5stdio10LockedFile14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std5stdio10LockedFile5fgetcMFNbNiNeZi@Base 15 + _D3std5stdio10LockedFile6__ctorMFNcNePOS4core4stdcQBs8_IO_FILEZSQCkQCjQCg@Base 15 + _D3std5stdio10LockedFile6__dtorMFNeZv@Base 15 + _D3std5stdio10LockedFile6__initZ@Base 15 + _D3std5stdio10LockedFile6fgetwcMFNbNiNeZw@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ1nm@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ7lineptrPa@Base 15 + _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZm@Base 15 + _D3std5stdio11__moduleRefZ@Base 15 + _D3std5stdio11openNetworkFAyatZSQBeQBd4File@Base 15 + _D3std5stdio12__ModuleInfoZ@Base 15 + _D3std5stdio13StdFileHandle6__initZ@Base 15 + _D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File@Base 15 + _D3std5stdio14ReadlnAppender10initializeMFNfAaZv@Base 15 + _D3std5stdio14ReadlnAppender11__xopEqualsMxFKxSQBtQBsQBpZb@Base 15 + _D3std5stdio14ReadlnAppender24reserveWithoutAllocatingMFmZb@Base 15 + _D3std5stdio14ReadlnAppender4dataMFNdNeZAa@Base 15 + _D3std5stdio14ReadlnAppender6__initZ@Base 15 + _D3std5stdio14ReadlnAppender7putcharMFNeaZv@Base 15 + _D3std5stdio14ReadlnAppender7putonlyMFNexAaZv@Base 15 + _D3std5stdio14ReadlnAppender7reserveMFNemZv@Base 15 + _D3std5stdio14ReadlnAppender8putdcharMFNewZv@Base 15 + _D3std5stdio14ReadlnAppender9__xtoHashFNbNeKxSQBsQBrQBoZm@Base 15 + _D3std5stdio14StdioException6__ctorMFNeAyakZCQBrQBqQBn@Base 15 + _D3std5stdio14StdioException6__initZ@Base 15 + _D3std5stdio14StdioException6__vtblZ@Base 15 + _D3std5stdio14StdioException6opCallFNfAyaZv@Base 15 + _D3std5stdio14StdioException6opCallFNfZv@Base 15 + _D3std5stdio14StdioException7__ClassZ@Base 15 + _D3std5stdio17LockingTextReader10__aggrDtorMFZv@Base 15 + _D3std5stdio17LockingTextReader10__postblitMFZv@Base 15 + _D3std5stdio17LockingTextReader11__fieldDtorMFNeZv@Base 15 + _D3std5stdio17LockingTextReader11__xopEqualsMxFKxSQBwQBvQBsZb@Base 15 + _D3std5stdio17LockingTextReader14__aggrPostblitMFZv@Base 15 + _D3std5stdio17LockingTextReader15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio17LockingTextReader5emptyMFNdZb@Base 15 + _D3std5stdio17LockingTextReader5frontMFNdZa@Base 15 + _D3std5stdio17LockingTextReader6__ctorMFNcSQBpQBo4FileZSQCcQCbQBy@Base 15 + _D3std5stdio17LockingTextReader6__dtorMFZv@Base 15 + _D3std5stdio17LockingTextReader6__initZ@Base 15 + _D3std5stdio17LockingTextReader8opAssignMFSQBpQBoQBlZv@Base 15 + _D3std5stdio17LockingTextReader8popFrontMFZv@Base 15 + _D3std5stdio17LockingTextReader9__xtoHashFNbNeKxSQBvQBuQBrZm@Base 15 + _D3std5stdio4File10__postblitMFNaNbNiNfZv@Base 15 + _D3std5stdio4File11ByChunkImpl11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File11ByChunkImpl11__xopEqualsMxFKxSQBvQBuQBrQBpZb@Base 15 + _D3std5stdio4File11ByChunkImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File11ByChunkImpl5emptyMxFNbNdZb@Base 15 + _D3std5stdio4File11ByChunkImpl5frontMFNbNdZAh@Base 15 + _D3std5stdio4File11ByChunkImpl5primeMFZv@Base 15 + _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkAhZSQCbQCaQBxQBv@Base 15 + _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkmZSQCaQBzQBwQBu@Base 15 + _D3std5stdio4File11ByChunkImpl6__initZ@Base 15 + _D3std5stdio4File11ByChunkImpl8opAssignMFNcNjNeSQBuQBtQBqQBoZQo@Base 15 + _D3std5stdio4File11ByChunkImpl8popFrontMFZv@Base 15 + _D3std5stdio4File11ByChunkImpl9__xtoHashFNbNeKxSQBuQBtQBqQBoZm@Base 15 + _D3std5stdio4File11__xopEqualsMxFKxSQBiQBhQBeZb@Base 15 + _D3std5stdio4File12closeHandlesMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter10__postblitMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter11__xopEqualsMxFKxSQCbQCaQBxQBvZb@Base 15 + _D3std5stdio4File17LockingTextWriter14__aggrPostblitMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv@Base 15 + _D3std5stdio4File17LockingTextWriter6__ctorMFNcNeKSQBxQBwQBtZSQCiQChQCeQCc@Base 15 + _D3std5stdio4File17LockingTextWriter6__dtorMFNeZv@Base 15 + _D3std5stdio4File17LockingTextWriter6__initZ@Base 15 + _D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE@Base 15 + _D3std5stdio4File17LockingTextWriter8opAssignMFNcNjNeSQCaQBzQBwQBuZQo@Base 15 + _D3std5stdio4File17LockingTextWriter9__xtoHashFNbNeKxSQCaQBzQBwQBuZm@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAwZQiMFNfMQkZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfMaZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTwZQhMFNfMwZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTxaZQiMFNfMxaZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTxwZQiMFNfMxwZv@Base 15 + _D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfMyaZv@Base 15 + _D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter@Base 15 + _D3std5stdio4File19lockingBinaryWriterMFZSQBoQBnQBk__T16BinaryWriterImplVbi1ZQx@Base 15 + _D3std5stdio4File3eofMxFNaNdNeZb@Base 15 + _D3std5stdio4File4Impl6__initZ@Base 15 + _D3std5stdio4File4lockMFEQxQv8LockTypemmZv@Base 15 + _D3std5stdio4File4nameMxFNaNbNdNjNfZAya@Base 15 + _D3std5stdio4File4openMFNeAyaMAxaZv@Base 15 + _D3std5stdio4File4seekMFNeliZv@Base 15 + _D3std5stdio4File4sizeMFNdNfZm@Base 15 + _D3std5stdio4File4syncMFNeZv@Base 15 + _D3std5stdio4File4tellMxFNdNeZm@Base 15 + _D3std5stdio4File5closeMFNeZv@Base 15 + _D3std5stdio4File5errorMxFNaNbNdNeZb@Base 15 + _D3std5stdio4File5flushMFNeZv@Base 15 + _D3std5stdio4File5getFPMFNaNfZPOS4core4stdcQBl8_IO_FILE@Base 15 + _D3std5stdio4File5popenMFNfAyaMAxaZv@Base 15 + _D3std5stdio4File6__ctorMFNbNcNiNePOS4core4stdcQBp8_IO_FILEAyakbZSQCmQClQCi@Base 15 + _D3std5stdio4File6__ctorMFNcNfAyaMAxaZSQBlQBkQBh@Base 15 + _D3std5stdio4File6__dtorMFNfZv@Base 15 + _D3std5stdio4File6__initZ@Base 15 + _D3std5stdio4File6detachMFNeZv@Base 15 + _D3std5stdio4File6fdopenMFNeiMAxaAyaZv@Base 15 + _D3std5stdio4File6fdopenMFNfiMAxaZv@Base 15 + _D3std5stdio4File6filenoMxFNdNeZi@Base 15 + _D3std5stdio4File6isOpenMxFNaNbNdNfZb@Base 15 + _D3std5stdio4File6reopenMFNeAyaMAxaZv@Base 15 + _D3std5stdio4File6rewindMFNfZv@Base 15 + _D3std5stdio4File6unlockMFmmZv@Base 15 + _D3std5stdio4File7byChunkMFAhZSQBdQBcQz11ByChunkImpl@Base 15 + _D3std5stdio4File7byChunkMFmZSQBcQBbQy11ByChunkImpl@Base 15 + _D3std5stdio4File7setvbufMFNeAviZv@Base 15 + _D3std5stdio4File7setvbufMFNemiZv@Base 15 + _D3std5stdio4File7tmpfileFNfZSQBcQBbQy@Base 15 + _D3std5stdio4File7tryLockMFEQBaQz8LockTypemmZb@Base 15 + _D3std5stdio4File8clearerrMFNaNbNfZv@Base 15 + _D3std5stdio4File8initImplMFNaNbNiNfPOS4core4stdcQBr8_IO_FILEAyakbZv@Base 15 + _D3std5stdio4File8lockImplMFismmZi@Base 15 + _D3std5stdio4File8opAssignMFNcNjNfSQBhQBgQBdZQl@Base 15 + _D3std5stdio4File8wrapFileFNfPOS4core4stdcQBk8_IO_FILEZSQCcQCbQBy@Base 15 + _D3std5stdio4File9__xtoHashFNbNeKxSQBhQBgQBdZm@Base 15 + _D3std5stdio4File9resetFileMFNeAyaMAxabZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__aggrDtorMFZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__postblitMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__fieldDtorMFNeZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__xopEqualsMxFKxSQCkQCjQCg__TQCeVbi1ZQCmZb@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx14__aggrPostblitMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__ctorMFNcMKSQCfQCeQCbZSQCqQCpQCm__TQCkVbi1ZQCs@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__dtorMFNbNiZv@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx8opAssignMFNcNjSQChQCgQCd__TQCbVbi1ZQCjZQz@Base 15 + _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx9__xtoHashFNbNeKxSQCjQCiQCf__TQCdVbi1ZQClZm@Base 15 + _D3std5stdio4File__T6readlnTAyaZQmMFNfwZQm@Base 15 + _D3std5stdio4File__T6readlnTaZQkMFNfKAawZm@Base 15 + _D3std5stdio4File__T7rawReadTaZQlMFNfAaZQd@Base 15 + _D3std5stdio4File__T7rawReadTbZQlMFNfAbZQd@Base 15 + _D3std5stdio4File__T7rawReadThZQlMFNfAhZQd@Base 15 + _D3std5stdio4File__T7rawReadTiZQlMFNfAiZQd@Base 15 + _D3std5stdio4File__T7rawReadTlZQlMFNfAlZQd@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxlZQBbMFNfIAaQzmQBcQBfxlZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxmZQBbMFNfIAaQzmQBcQBfxmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTmTQgTxmZQyMFNfIAaQvmQyxmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTQkTmZQBbMFNfIAaQzxmQBdQBgmZv@Base 15 + _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTxmZQzMFNfIAaQwxmQBaxmZv@Base 15 + _D3std5stdio5lines11__fieldDtorMFNeZv@Base 15 + _D3std5stdio5lines11__xopEqualsMxFKxSQBjQBiQBfZb@Base 15 + _D3std5stdio5lines15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std5stdio5lines6__ctorMFNcNfSQBeQBd4FilewZSQBsQBrQBo@Base 15 + _D3std5stdio5lines6__initZ@Base 15 + _D3std5stdio5lines8opAssignMFNcNjNeSQBiQBhQBeZQl@Base 15 + _D3std5stdio5lines9__xtoHashFNbNeKxSQBiQBhQBeZm@Base 15 + _D3std5stdio6chunksFSQtQr4FilemZSQBfQBe10ChunksImpl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ4implSQEgQEf4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ6resultSQEiQEh4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 + _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ8spinlockOk@Base 15 + _D3std5stdio__T12trustedFreadTaZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAaZm@Base 15 + _D3std5stdio__T12trustedFreadTbZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAbZm@Base 15 + _D3std5stdio__T12trustedFreadThZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAhZm@Base 15 + _D3std5stdio__T12trustedFreadTiZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAiZm@Base 15 + _D3std5stdio__T12trustedFreadTlZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAlZm@Base 15 + _D3std5stdio__T13trustedFwriteTaZQsFNbNiNePOS4core4stdcQBx8_IO_FILExAaZm@Base 15 + _D3std5stdio__T6_fopenTAyaTAxaZQqFNbNiNfQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 + _D3std5stdio__T6_fopenTAyaTAxaZQqFQlQjZ10_fopenImplFNbNiNeMPxaMQeZPOS4core4stdcQCv8_IO_FILE@Base 15 + _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZ9popenImplFNbNiNePxaQdZPOS4core4stdcQCx8_IO_FILE@Base 15 + _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 + _D3std6base6411__moduleRefZ@Base 15 + _D3std6base6412__ModuleInfoZ@Base 15 + _D3std6base6415Base64Exception6__ctorMFNaNbNfAyaQdmZCQBzQByQBu@Base 15 + _D3std6base6415Base64Exception6__initZ@Base 15 + _D3std6base6415Base64Exception6__vtblZ@Base 15 + _D3std6base6415Base64Exception7__ClassZ@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9EncodeMapyAa@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9EncodeMapyAa@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9DecodeMapyG256i@Base 15 + _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9EncodeMapyAa@Base 15 + _D3std6bigint11__moduleRefZ@Base 15 + _D3std6bigint12__ModuleInfoZ@Base 15 + _D3std6bigint15toDecimalStringFNaNbNfxSQBlQBk6BigIntZAya@Base 15 + _D3std6bigint5toHexFNaNfxSQyQw6BigIntZAya@Base 15 + _D3std6bigint6BigInt10uintLengthMxFNaNbNdNiNfZm@Base 15 + _D3std6bigint6BigInt11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6bigint6BigInt11ulongLengthMxFNaNbNdNiNfZm@Base 15 + _D3std6bigint6BigInt14checkDivByZeroMxFNaNbNlNfZv@Base 15 + _D3std6bigint6BigInt5opCmpMxFNaNbNiNfKxSQBmQBlQBhZi@Base 15 + _D3std6bigint6BigInt5toIntMxFNaNbNiNfZi@Base 15 + _D3std6bigint6BigInt6__initZ@Base 15 + _D3std6bigint6BigInt6isZeroMxFNaNbNiNlNfZb@Base 15 + _D3std6bigint6BigInt6negateMFNaNbNiNlNfZv@Base 15 + _D3std6bigint6BigInt6toHashMxFNaNbNiNfZm@Base 15 + _D3std6bigint6BigInt6toLongMxFNaNbNiNfZl@Base 15 + _D3std6bigint6BigInt8toStringMxFMDFMAxaZvAyaZv@Base 15 + _D3std6bigint6BigInt8toStringMxFMDFMAxaZvMKxSQBr6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa1_25TSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa1_2aTSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 + _D3std6bigint6BigInt__T10opOpAssignVAyaa2_3e3eTiZQBaMFNaNbNjNlNfiZSQCnQCmQCi@Base 15 + _D3std6bigint6BigInt__T5opCmpHTSQBeQBdQzZQsMxFNaNbNiNfxSQCcQCbQBxZi@Base 15 + _D3std6bigint6BigInt__T6__ctorTiZQkMFNaNbNcNfiZSQBuQBtQBp@Base 15 + _D3std6bigint6BigInt__T6opCastHTbZQlMxFNaNbNiNfZb@Base 15 + _D3std6bigint6BigInt__T8opAssignHTSQBhQBgQBcZQwMFNaNbNiNfQxZQBa@Base 15 + _D3std6bigint6BigInt__T8opAssignTiZQmMFNaNbNfiZSQBuQBtQBp@Base 15 + _D3std6bigint6BigInt__T8opBinaryVAyaa1_25TSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 + _D3std6bigint6BigInt__T8opBinaryVAyaa1_2aTSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 + _D3std6bigint6BigInt__T8opEqualsZQkMxFNaNbNiNfKxSQBvQBuQBqZb@Base 15 + _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqAyaZv@Base 15 + _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqMKxSQCb6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqMKxSQDc6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqQwZv@Base 15 + _D3std6bigint6divModFNaNbNfxSQBbQBa6BigIntxQpJSQBtQBsQsJQkZv@Base 15 + _D3std6bigint6powmodFNaNbNfSQBaQz6BigIntQnQpZQs@Base 15 + _D3std6bigint__T9absUnsignTiZQnFNaNbNiNfiZk@Base 15 + _D3std6digest10murmurhash11__moduleRefZ@Base 15 + _D3std6digest10murmurhash12__ModuleInfoZ@Base 15 + _D3std6digest11__moduleRefZ@Base 15 + _D3std6digest12__ModuleInfoZ@Base 15 + _D3std6digest14hexDigitToByteFNaNbNiNfwZ18hexDigitToByteImplFNaNbNiNfwZi@Base 15 + _D3std6digest14hexDigitToByteFNaNbNiNfwZh@Base 15 + _D3std6digest2md11__moduleRefZ@Base 15 + _D3std6digest2md12__ModuleInfoZ@Base 15 + _D3std6digest2md3MD51FFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51GFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51HFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD51IFNaNbNiNfkkkZk@Base 15 + _D3std6digest2md3MD52FFFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52GGFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52HHFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD52IIFNaNbNiNfKkkkkkkkZv@Base 15 + _D3std6digest2md3MD53putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest2md3MD55startMFNaNbNiNfZv@Base 15 + _D3std6digest2md3MD56__initZ@Base 15 + _D3std6digest2md3MD56finishMFNaNbNiNeZG16h@Base 15 + _D3std6digest2md3MD58_paddingyG64h@Base 15 + _D3std6digest2md3MD59transformMFNaNbNiPxG64hZv@Base 15 + _D3std6digest3crc11__moduleRefZ@Base 15 + _D3std6digest3crc12__ModuleInfoZ@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx4peekMxFNaNbNiNfZG4h@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6finishMFNaNbNiNfZG4h@Base 15 + _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6tablesyG8G256k@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg4peekMxFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6finishMFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6tablesyG8G256m@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg4peekMxFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg5startMFNaNbNiNfZv@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6finishMFNaNbNiNfZG8h@Base 15 + _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6tablesyG8G256m@Base 15 + _D3std6digest3crc__T9genTablesTkZQnFNaNbNiNfkZG8G256k@Base 15 + _D3std6digest3crc__T9genTablesTmZQnFNaNbNiNfmZG8G256m@Base 15 + _D3std6digest3sha11__moduleRefZ@Base 15 + _D3std6digest3sha12__ModuleInfoZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs6finishMFNaNbNiNeZG28h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs6finishMFNaNbNiNeZG32h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs6finishMFNaNbNiNeZG48h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs6finishMFNaNbNiNeZG64h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs9constantsyG80m@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 + _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr6finishMFNaNbNiNeZG20h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki160ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr6finishMFNaNbNiNeZG28h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki224ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr3putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr5startMFNaNbNiNfZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr6finishMFNaNbNiNeZG32h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr7paddingyG128h@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr9constantsyG64k@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 + _D3std6digest3sha__T3SHAVki512Vki256ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 + _D3std6digest4hmac11__moduleRefZ@Base 15 + _D3std6digest4hmac12__ModuleInfoZ@Base 15 + _D3std6digest6Digest11__InterfaceZ@Base 15 + _D3std6digest6DigestQoMFNbNeAxAvXAh@Base 15 + _D3std6digest6ripemd11__moduleRefZ@Base 15 + _D3std6digest6ripemd12__ModuleInfoZ@Base 15 + _D3std6digest6ripemd9RIPEMD1601FFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601GFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601HFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601IFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1601JFNaNbNiNfkkkZk@Base 15 + _D3std6digest6ripemd9RIPEMD1602FFFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602GGFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602HHFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602IIFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1602JJFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603FFFFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603GGGFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603HHHFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603IIIFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603JJJFNaNbNiNfKkkKkkkkkZv@Base 15 + _D3std6digest6ripemd9RIPEMD1603putMFNaNbNiNeAxhXv@Base 15 + _D3std6digest6ripemd9RIPEMD1605startMFNaNbNiNfZv@Base 15 + _D3std6digest6ripemd9RIPEMD1606__initZ@Base 15 + _D3std6digest6ripemd9RIPEMD1606finishMFNaNbNiNeZG20h@Base 15 + _D3std6digest6ripemd9RIPEMD1608_paddingyG64h@Base 15 + _D3std6digest6ripemd9RIPEMD1609transformMFNaNbNiPxG64hZv@Base 15 + _D3std6digest__T11toHexStringVEQBdQBc5Orderi1VEQBt5ascii10LetterCasei0ZQCdFNaNbNfIAhZAya@Base 15 + _D3std6digest__T11toHexStringVEQBdQBc5Orderi1Vmi16VEQBy5ascii10LetterCasei0ZQCiFNaNbNiNfxG16hZG32a@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__ctorMFNaNbNiNfZCQCpQCo__TQCkTQByZQCs@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__ctorMFNaNbNiNfZCQDoQDn__TQDjTQCxZQDr@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy7__ClassZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__ctorMFNaNbNiNfZCQCzQCy__TQCuTQCiZQDc@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__initZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__vtblZ@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 + _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp7__ClassZ@Base 15 + _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TAxhTAaZQCoFNaNbNiNfMKxAhKQvZv@Base 15 + _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TG16hTG32aZQCrFNaNbNiNfMKxG16hKQzZv@Base 15 + _D3std6digest__T7asArrayVmi16ThZQqFNaNbNcNiKAhAyaZG16h@Base 15 + _D3std6digest__T7asArrayVmi20ThZQqFNaNbNcNiKAhAyaZG20h@Base 15 + _D3std6digest__T7asArrayVmi28ThZQqFNaNbNcNiKAhAyaZG28h@Base 15 + _D3std6digest__T7asArrayVmi32ThZQqFNaNbNcNiKAhAyaZG32h@Base 15 + _D3std6digest__T7asArrayVmi48ThZQqFNaNbNcNiKAhAyaZG48h@Base 15 + _D3std6digest__T7asArrayVmi4ThZQpFNaNbNcNiKAhAyaZG4h@Base 15 + _D3std6digest__T7asArrayVmi64ThZQqFNaNbNcNiKAhAyaZG64h@Base 15 + _D3std6digest__T7asArrayVmi8ThZQpFNaNbNcNiKAhAyaZG8h@Base 15 + _D3std6format11__moduleRefZ@Base 15 + _D3std6format12__ModuleInfoZ@Base 15 + _D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo@Base 15 + _D3std6format15FormatException6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 + _D3std6format15FormatException6__initZ@Base 15 + _D3std6format15FormatException6__vtblZ@Base 15 + _D3std6format15FormatException7__ClassZ@Base 15 + _D3std6format4read11__moduleRefZ@Base 15 + _D3std6format4read12__ModuleInfoZ@Base 15 + _D3std6format4spec11__moduleRefZ@Base 15 + _D3std6format4spec12__ModuleInfoZ@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11__xopEqualsMxFKxSQCdQCcQBy__TQBwTaZQCcZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp12getCurFmtStrMxFNaNfZAya@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfZi@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfiZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCiQChQCd__TQCbTaZQCh@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6fillUpMFNaNlNfZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flHashMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flHashMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flPlusMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flPlusMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flZeroMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp6flZeroMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flEqualMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flEqualMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMFNaNbNdNiNfbZv@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMxFNaNbNdNiNfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp8toStringMxFNaNfZAya@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp9__xtoHashFNbNeKxSQCcQCbQBx__TQBvTaZQCbZm@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTDFMAxaZvZQBdMFNlKQrZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T15InPlaceAppenderTAyaZQwZQCgMFNaNlNfKQByZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTyAaZQoZQByMFNaNlNfKQBqZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5stdio4File17LockingTextWriterZQCdMFNlNfKQBtZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh8NoOpSinkZQBlMFNaNlNfKQBdZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQChQCd__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeZQCxMFNaNlNfKQCpZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkZQCnMFNaNlNfKQCfZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkZQDbMFNaNlNfKQCtZb@Base 15 + _D3std6format4spec__T10FormatSpecTaZQp__T8toStringTSQBy5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange__T3putTaZQhMFNaNbNiNfMxAaZv@Base 15 + _D3std6format4spec__T10singleSpecTyaZQqFNaNfAyaZSQBvQBuQBq__T10FormatSpecTaZQp@Base 15 + _D3std6format5write11__moduleRefZ@Base 15 + _D3std6format5write12__ModuleInfoZ@Base 15 + _D3std6format5write__T11formatValueTDFNaNbNfAxaZvTxeTaZQBhFNaNfKQBcKxeMKxSQCuQCt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTkTaZQCeFNaNfKQBzKkMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzKwMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzwMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAAyaTaZQCiFNaNfKQCdKxQvMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxACQCx3zip13ArchiveMemberTaZQDcFNaNfKQCxKxQBpMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxASQCx6socket11AddressInfoTaZQDdFNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAaTaZQCgFNaNfKQCbKxQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyaTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyuTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAywTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw3zip13ArchiveMemberTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw6socket7AddressTaZQCxFNfKQCqKxQBiMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket10SocketTypeTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket12ProtocolTypeTaZQDdFNaNfKQCyKxQBqMKxSQEsQEr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket13AddressFamilyTaZQDeFNaNfKQCzKxQBrMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxSQCw6socket11AddressInfoTaZQDcFNfKQCvKxQBnMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxaTaZQCfFNaNfKQCaKxaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxhTaZQCfFNaNfKQCaKxhMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyaTaZQCfFNaNfKQCaKyaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyuTaZQCfFNaNfKQCaKyuMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTywTaZQCfFNaNfKQCaKywMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAaTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCmFNaNfKQChKQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn3net7isemail15EmailStatusCodeTaZQDcFNaNfKQCxKQBxMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn8datetime4date5MonthTaZQCtFNaNfKQCoKQBoMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPSQCo11parallelism12AbstractTaskTaZQDbFNaNfKQCwKQBwMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPvTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPxSQCpQCo4spec__T10FormatSpecTaZQpTaZQDdFNaNfKQCyQBxMKxQCbZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn11concurrency3TidTaZQCqFNaNfKQClKQBlMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn4path__T16asNormalizedPathTSQDs5range__T5chainTSQEm3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGmQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQJxQJw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn5range__T5chainTSQDh3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFgQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQIdQIc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBrKaMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBraMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrKbMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrbMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoThTaZQBwFNaNfKQBrKhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTiTaZQBwFNaNfKQBrKiMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTmTaZQBwFNaNfKQBrKmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxAaTaZQByFNaNfKQBtKxQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxEQCo8datetime4date5MonthTaZQCuFNaNfKQCpKxQBpMKxSQEjQEi4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsKxaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsxaMKxSQDjQDi4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxhTaZQBxFNaNfKQBsKxhMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxiTaZQBxFNaNfKQBsKxiMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxkTaZQBxFNaNfKQBsKxkMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxsTaZQBxFNaNfKQBsKxsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxtTaZQBxFNaNfKQBsKxtMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyAaTaZQByFNaNfKQBtKyQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTymTaZQBxFNaNfKQBsKymMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn5regex8internal2ir2IRTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6logger4core8LogLevelTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6socket12SocketOptionTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTEQCs8datetime4date5MonthTaZQCyFNfKQCrKQBmMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterThTaZQCbFNfKQBuKhMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTiTaZQCbFNfKQBuKiMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTkTaZQCbFNfKQBuKkMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTmTaZQCbFNfKQBuKmMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTsTaZQCbFNfKQBuKsMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuKwMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuwMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxaTaZQCcFNfKQBvKxaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxlTaZQCcFNfKQBvKxlMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxmTaZQCcFNfKQBvKxmMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTyaTaZQCcFNfKQBvKyaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTmTaZQBjFNaNfKQBeKmMKxSQCvQCu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxdTaZQBkFNaNfKQBfKxdMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxhTaZQBkFNaNfKQBfKxhMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTymTaZQBkFNaNfKQBfKymMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxdTaZQCmFNaNfKQChKxdMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQCzFNaNfKQCuKkMKxSQElQEk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTykTaZQDaFNaNfKQCvKykMKxSQEnQEm4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTAxhZQCjFNaNfKQCbMxAaQuZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTkZQChFNaNfKQBzMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAaTPvZQCdFNaNfKQBvMxAaQwQvZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxaTQeZQCeFNaNfKQBwMxAaQxQzZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxhZQCbFNaNfKQBtMxAaQuZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAyAaZQCcFNaNfKQBuMxAaQvZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTC14TypeInfo_ClassTkTkZQCtFNaNfKQClMxAaQBmkkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTEQCs8datetime4date5MonthZQCwFNaNfKQCoMxAaQBpZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTPvZQCaFNaNfKQBsMxAaQtZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmTmZQCfFNaNfKQBxMxAaQBhQBkmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmZQCdFNaNfKQBvMxAaQBfQBiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTQpZQCgFNaNfKQByMxAaQBixkQBnZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTkZQCfFNaNfKQBxMxAaQBhxkkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkZQCdFNaNfKQBvMxAaQBfxkZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjZQCaFNaNfKQBsMxAaQBcZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTbTQlTQoTEQDa3net7isemail15EmailStatusCodeZQDnFNaNfKQDfMxAabQCqQCtQCfZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTEQCu8datetime4date5MonthTiZQDaFNaNfKQCsMxAaiQBsiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTiZQCbFNaNfKQBtMxAaiiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiZQBzFNaNfKQBrMxAaiZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmTymZQCeFNaNfKQBwMxAammymZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmZQCbFNaNfKQBtMxAammZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmZQBzFNaNfKQBrMxAamZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhTxhZQCjFNaNfKQCbMxAaxhxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhZQCgFNaNfKQByMxAaxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTQmTxhZQCgFNaNfKQByMxAaxsQBkxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTxEQCw8datetime4date5MonthTxhZQDdFNaNfKQCvMxAaxsxQBvxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsZQCaFNaNfKQBsMxAaxsZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxtTQmTxtTxtZQCjFNaNfKQCbMxAaxtQBnxtxtZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTyAaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAxaZQCgFNfQBvMxAaQrZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTQeTiTQjZQCoFNfKQCeMxAaQBaQBdiQBhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxlZQCrFNfKQChMxAaQBdmQBhQBkxlZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxmZQCrFNfKQChMxAaQBdmQBhQBkxmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTxmZQCoFNfKQCeMxAaQBamQBexmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTQkTmZQCrFNfKQChMxAaQBdxmQBiQBlmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTxmZQCpFNfKQCfMxAaQBbxmQBgxmZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaZQCgFNfKQBwMxAaQsZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTkZQCeFNfKQBuMxAakZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTmTAyaTmTQgTmTQlTQoZQCvFNfKQClMxAamQBgmQBkmQBoQBrZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTsTEQCz8datetime4date5MonthThThThThTxlZQDoFNfKQDeMxAasQBzhhhhxlZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmTymZQBrFNaNfQBiMxAammymZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmZQBoFNaNfQBfMxAammZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmZQBmFNaNfQBdMxAamZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxdZQBnFNaNfQBeMxAaxdZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxhTxhTxhZQBtFNaNfQBkMxAaxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaTxdZQCpFNaNfKQChMxAaxdZk@Base 15 + _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaTykTykTkTkTkZQDmFNaNfKQDeMxAaykykkkkZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa13_54253032642530326425303264TSQCu5array__T8AppenderTQCfZQoTxhTxhTxhZQDmFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa15_20253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format5write__T14formattedWriteVAyaa15_54253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 + _D3std6format8NoOpSink6__initZ@Base 15 + _D3std6format8NoOpSink__T3putTAaZQiMFNaNbNiNfMxAaZv@Base 15 + _D3std6format8NoOpSink__T3putTAxaZQjMFNaNbNiNfMxAaZv@Base 15 + _D3std6format8NoOpSink__T3putTAyaZQjMFNaNbNiNfMxAyaZv@Base 15 + _D3std6format8NoOpSink__T3putTaZQhMFNaNbNiNfMxaZv@Base 15 + _D3std6format8NoOpSink__T3putTwZQhMFNaNbNiNfMxwZv@Base 15 + _D3std6format8internal4read11__moduleRefZ@Base 15 + _D3std6format8internal4read12__ModuleInfoZ@Base 15 + _D3std6format8internal5write10baseOfSpecFNaNfIaZk@Base 15 + _D3std6format8internal5write11__moduleRefZ@Base 15 + _D3std6format8internal5write12__ModuleInfoZ@Base 15 + _D3std6format8internal5write12hasPreviewInyb@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T15InPlaceAppenderTAyaZQwZQBzFNaNfKQBvIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTAyaZQoZQBrFNaNfKQBnIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTyAaZQoZQBrFNaNfKQBnIwIaZv@Base 15 + _D3std6format8internal5write__T10formatCharTSQBr5stdio4File17LockingTextWriterZQBwFNfKQBqIwIaZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCiFNaNfKQCdKQvMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxCQDg3zip13ArchiveMemberTaZQDcFNaNfKQCxKQBpMKxSQEzQEy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxSQDg6socket11AddressInfoTaZQDdFNfKQCwKQBoMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAywTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw4path__T16asNormalizedPathTSQEb5range__T5chainTSQEv3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGvQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQKgQKf4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw5range__T5chainTSQDq3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQImQIl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTyAaZQoTAyaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T15InPlaceAppenderTAyaZQwTxCQDg6socket7AddressTaZQCyFNfKQCqKxQBiMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCnFNaNbNfKQCjKQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTSQCx11concurrency3TidTaZQCrFNaNfKQClKQBlMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTAyaTQeTQhTaZQBsFNaNfKQBmQBbQBbQBeQBhMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTQdTQgTQjTaZQBrFNaNfKQBlQBaQBdQBgQBjMKxSQDwQDv4spec__T10FormatSpecTaZQpEQFcQFbQExQEr13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQgTaZQBsFNaNfKQBmQBbQBaQBdQBgMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQkTaZQBsFNaNfKQBmQBbQBaQBdQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTQkTaZQBsFNaNfKQBmQBbQBeQBhQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTaZQBpFNaNfKQBjQyQBaQBdMKxSQDqQDp4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQgTQjTaZQCpFNaNfKQCjQBaQBdQBgQBjMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTQqTaZQCpFNaNfKQCjQBaQBdQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTaZQCmFNaNfKQCgQxQzQBiMKxSQEmQEl4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAuTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAwTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAxaTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAyuTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAywTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAaTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAuTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAwTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAxaTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAyuTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAywTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAaTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAuTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAwTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAxaTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAyuTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAywTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTQqTaZQCpFNaNfKQCjQBhQBkQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTaZQCmFNaNfKQCgQBeQBhQBkMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTaZQCgFNaNfKQCaQyMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTQqTaZQChFNaNfKQCbQBaQBdQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTaZQCeFNaNfKQByQxQzQBiMKxSQEeQEd4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAxaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAaTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAwTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAxaTaZQCfFNaNfKQBzQBfQBiQyMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAaTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAwTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAxaTaZQCiFNaNfKQCcQBiQBlQBoQBbMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTQqTaZQChFNaNfKQCbQBhQBkQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTaZQCeFNaNfKQByQBeQBhQBkMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTaZQByFNaNfKQBsQyMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTQeTaZQCiFNaNfKQCcQBbQBeQBbQBeMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTaZQCfFNaNfKQBzQyQBaQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAaTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAwTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAaTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAwTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTQkTaZQCiFNaNfKQCcQBbQBeQBhQBkMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTaZQCfFNaNfKQBzQyQBaQBdMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTQeTaZQCnFNfKQCfQzQBbQyQBaMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTaZQCkFNfKQCcQwQyQuMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTQgTQjTaZQCmFNfKQCeQyQBaQBdQBgMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAxaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAaTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAwTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAxaTaZQClFNfKQCdQxQzQuMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAaTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAwTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAxaTaZQCoFNfKQCgQBaQBdQBgQzMKxSQEqQEp4spec__T10FormatSpecTaZQpEQFwQFvQFrQFl13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTQkTaZQCnFNfKQCfQzQBbQBeQBhMKxSQEpQEo4spec__T10FormatSpecTaZQpEQFvQFuQFqQFk13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTaZQCkFNfKQCcQwQyQBaMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTAyaTQeTQhTaZQBvFNaNfKQBpQBbQBbQBeQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTQeTaZQBvFNaNfKQBpQBbQBeQBbQBeMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTaZQBsFNaNfKQBmQyQBaQxMKxSQDsQDr4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTQgTQjTaZQBuFNaNfKQBoQBaQBdQBgQBjMKxSQDzQDy4spec__T10FormatSpecTaZQpEQFfQFeQFaQEu13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQgTaZQBvFNaNfKQBpQBbQBaQBdQBgMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQkTaZQBvFNaNfKQBpQBbQBaQBdQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTQkTaZQBvFNaNfKQBpQBbQBeQBhQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTaZQBsFNaNfKQBmQyQBaQBdMKxSQDtQDs4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTQkTaZQCxFNaNfKQCrQBbQBeQBhQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTaZQCuFNaNfKQCoQyQBaQBdMKxSQEvQEu4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQkTaZQCxFNaNfKQCrQBbQBtQBwQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQzTaZQCxFNaNfKQCrQBbQBtQBwQBzMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTAyaTQeTQhTaZQCxFNaNfKQCrQBqQBbQBeQBhMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTQsTQvTQyTaZQCwFNaNfKQCqQBpQBsQBvQByMKxSQFbQFa4spec__T10FormatSpecTaZQpEQGhQGgQGcQFw13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTQeTaZQDlFNaNfKQDfQBvQByQBbQBeMKxSQFqQFp4spec__T10FormatSpecTaZQpEQGwQGvQGrQGl13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTaZQDiFNaNfKQDcQBsQBvQyMKxSQFjQFi4spec__T10FormatSpecTaZQpbZv@Base 15 + _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTQBaTQBeTaZQDmFNaNfKQDgQBwQBzQCcQCfMKxSQFrQFq4spec__T10FormatSpecTaZQpEQGxQGwQGsQGm13PrecisionTypeZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTQhTaZQChFNaNfKQCaQyMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTwTaZQCgFNaNfKQBzwMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh3zip13ArchiveMemberTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh6socket7AddressTaZQCzFNfKQCqKxQBiMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket10SocketTypeTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket12ProtocolTypeTaZQDfFNaNfKQCyKxQBqMKxSQFdQFc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket13AddressFamilyTaZQDgFNaNfKQCzKxQBrMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxSQDh6socket11AddressInfoTaZQDeFNfKQCvKxQBnMKxSQFaQEz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxhTaZQChFNaNfKQCaKxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTywTaZQChFNaNfKQCaywMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTQhTaZQBzFNaNfKQBsQyMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTaTaZQByFNaNfKQBraMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxaTaZQBzFNaNfKQBsxaMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxhTaZQBzFNaNfKQBsKxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTyAaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T13formatElementTSQBu5stdio4File17LockingTextWriterTwTaZQCdFNfKQBuwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeMKxSQDfQDe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCmFNaNfKQCdQuMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxCQDk3zip13ArchiveMemberTaZQDgFNaNfKQCxQBoMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxSQDk6socket11AddressInfoTaZQDhFNfKQCwQBnMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCkFNaNfKQCbMxAaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCkFNaNfKQCbQsMKxSQEfQEe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCkFNaNfKQCbMxAyuMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAywTaZQCkFNaNfKQCbMxAywMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTQhTaZQCjFNaNfKQCaMxAyaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTaTaZQCiFNaNfKQBzxaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwThTaZQCiFNaNfKQBzxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTiTaZQCiFNaNfKQBzxiMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTkTaZQCiFNaNfKQBzxkMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTtTaZQCiFNaNfKQBzxtMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTuTaZQCiFNaNfKQBzxuMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTwTaZQCiFNaNfKQBzxwMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj3zip13ArchiveMemberTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj6socket7AddressTaZQDbFNfKQCqxQBhMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket10SocketTypeTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket12ProtocolTypeTaZQDhFNaNfKQCyxQBpMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket13AddressFamilyTaZQDiFNaNfKQCzxQBqMKxSQFfQFe4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxSQDj6socket11AddressInfoTaZQDgFNfKQCvKxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAaTaZQCbFNaNfKQBsMxAaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxaTaZQCcFNaNfKQBtMxAaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxhTaZQCcFNaNfKQBtQsMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAyAaTaZQCdFNaNfKQBuQtMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCqFNaNfKQChQBgMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa3net7isemail15EmailStatusCodeTaZQDgFNaNfKQCxQBwMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa8datetime4date5MonthTaZQCxFNaNfKQCoQBnMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPSQDb11parallelism12AbstractTaskTaZQDfFNaNfKQCwMxPSQEyQBxQBnMKxSQFlQFk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPvTaZQCbFNaNfKQBsMxPvMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPxSQDcQDb4spec__T10FormatSpecTaZQpTaZQDhFNaNfKQCyMxPQByMKxQCeZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTQhTaZQCbFNaNfKQBsMxAyaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa11concurrency3TidTaZQCuFNaNfKQClKQBlMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa4path__T16asNormalizedPathTSQEf5range__T5chainTSQEz3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGzQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQInFNaNfKQIeKQHeMKxSQKkQKj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa5range__T5chainTSQDu3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFtQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGtFNaNfKQGkKQFkMKxSQIqQIp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTbTaZQCaFNaNfKQBrxbMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTgTaZQCaFNaNfKQBrxgMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTmTaZQCaFNaNfKQBrxmMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTsTaZQCaFNaNfKQBrxsMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTtTaZQCaFNaNfKQBrxtMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTxEQDb8datetime4date5MonthTaZQCyFNaNfKQCpxQBoMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTAyaTaZQCcFNaNfKQBtMxAyaMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa5regexQCy2ir2IRTaZQCsFNaNfKQCjQBiMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6logger4core8LogLevelTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6socket12SocketOptionTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAxaTaZQChFNfKQBwMxAaMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAyaTaZQChFNfKQBwMxAyaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTEQDf8datetime4date5MonthTaZQDcFNfKQCrQBlMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTaTaZQCfFNfKQBuxaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterThTaZQCfFNfKQBuxhMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTiTaZQCfFNfKQBuxiMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTkTaZQCfFNfKQBuxkMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTlTaZQCfFNfKQBuxlMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTmTaZQCfFNfKQBuxmMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTsTaZQCfFNfKQBuxsMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTwTaZQCfFNfKQBuxwMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTdTaZQBnFNaNfKQBexdMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkThTaZQBnFNaNfKQBexhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTmTaZQBnFNaNfKQBexmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQDdFNaNfKQCuxkMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCqQCp4spec__T10FormatSpecTaZQpZb@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T15InPlaceAppenderTAyaZQwTaZQClFNaNfKQBxmIbMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTAyaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTyAaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCb5stdio4File17LockingTextWriterTaZQCiFNfKQBsmIbMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa8NoOpSinkTaZQBqFNaNfKQBcmIbMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQDgFNaNfKQCsmIbMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTC14TypeInfo_ClassTaZQBtFNaNfMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd11concurrency3TidTaZQBxFNaNfMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd4path__T16asNormalizedPathTSQDi5range__T5chainTSQEc3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQGbQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtTaZQHpFNaNbNiNfMKxSQJiQJh4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEwQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQFwFNaNbNiNfMKxSQHpQHo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe3zip13ArchiveMemberTaZQCaFNaNfMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe6socket7AddressTaZQBwFNaNfMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T22enforceValidFormatSpecTxSQCe6socket11AddressInfoTaZQCbFNaNfMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal5write__T5roundTG1077aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG1078aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG15aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG16448aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG16449aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG18aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T5roundTG64aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAaTPvZQCvFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaTQeZQCwFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaZQCtFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxhZQCtFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAyAaZQCuFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDlFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTEQDt8datetime4date5MonthZQDoFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTPvZQCsFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTiTQCrZQDdFNaNfkQDeQDhiQDlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTmZQCzFNaNfkQDaQDdmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClZQCxFNaNfkQCyQDbZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxlZQDgFNaNfkQDhmQDlQDoxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxmZQDgFNaNfkQDhmQDlQDoxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTxmZQDcFNaNfkQDdmQDhxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTQCoZQDaFNaNfkQDbxkQDgZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTkZQCyFNaNfkQCzxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkZQCwFNaNfkQCxxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTQCsTmZQDgFNaNfkQDhxmQDmQDpmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTxmZQDdFNaNfkQDexmQDjxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChZQCtFNaNfkQCuZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTbTQCjTQCnTEQEd3net7isemail15EmailStatusCodeZQEhFNaNfkbQEjQEmQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTEQDv8datetime4date5MonthTiZQDsFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTiZQCtFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiZQCrFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTkZQCrFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTQCjTmTQCpTmTQCvTQCzZQDlFNaNfkmQDnmQDrmQDvQDyZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmTymZQCwFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmZQCtFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmZQCrFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTsTEQDv8datetime4date5MonthThThThThTxlZQEbFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxdZQCsFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhTxhZQDbFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhZQCyFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTQCkTxhZQCzFNaNfkxsQDcxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTxEQDx8datetime4date5MonthTxhZQDvFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsZQCsFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxtTQCkTxtTxtZQDcFNaNfkxtQDfxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTykTykTkTkTkZQDbFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAaTPvZQDdFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaTQeZQDeFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaZQDbFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxhZQDbFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAyAaZQDcFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDtFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTEQEb8datetime4date5MonthZQDwFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTPvZQDaFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTiTQCzZQDlFNaNfkQDmQDpiQDtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTmZQDhFNaNfkQDiQDlmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtZQDfFNaNfkQDgQDjZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxlZQDoFNaNfkQDpmQDtQDwxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxmZQDoFNaNfkQDpmQDtQDwxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTxmZQDkFNaNfkQDlmQDpxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTQCwZQDiFNaNfkQDjxkQDoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTkZQDgFNaNfkQDhxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkZQDeFNaNfkQDfxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTQDaTmZQDoFNaNfkQDpxmQDuQDxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTxmZQDlFNaNfkQDmxmQDrxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpZQDbFNaNfkQDcZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTbTQCrTQCvTEQEl3net7isemail15EmailStatusCodeZQEpFNaNfkbQErQEuQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTEQEd8datetime4date5MonthTiZQEaFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTiZQDbFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiZQCzFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTkZQCzFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTQCrTmTQCxTmTQDdTQDhZQDtFNaNfkmQDvmQDzmQEdQEgZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmTymZQDeFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmZQDbFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmZQCzFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTsTEQEd8datetime4date5MonthThThThThTxlZQEjFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxdZQDaFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhTxhZQDjFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhZQDgFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTQCsTxhZQDhFNaNfkxsQDkxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTxEQEf8datetime4date5MonthTxhZQEdFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsZQDaFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxtTQCsTxtTxtZQDkFNaNfkxtQDnxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTykTykTkTkTkZQDjFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAaTPvZQDhFNaNfkQpQoZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaTQeZQDiFNaNfkQqQsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaZQDfFNaNfkQnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxhZQDfFNaNfkQnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAyAaZQDgFNaNfkQoZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTC14TypeInfo_ClassTkTkZQDxFNaNfkQBfkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTEQEf8datetime4date5MonthZQEaFNaNfkQBiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTPvZQDeFNaNfkQmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTiTQDdZQDpFNaNfkQDqQDtiQDxZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTmZQDlFNaNfkQDmQDpmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxZQDjFNaNfkQDkQDnZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxlZQDsFNaNfkQDtmQDxQEaxlZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxmZQDsFNaNfkQDtmQDxQEaxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTxmZQDoFNaNfkQDpmQDtxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTQDaZQDmFNaNfkQDnxkQDsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTkZQDkFNaNfkQDlxkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkZQDiFNaNfkQDjxkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTQDeTmZQDsFNaNfkQDtxmQDyQEbmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTxmZQDpFNaNfkQDqxmQDvxmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtZQDfFNaNfkQDgZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTbTQCvTQCzTEQEp3net7isemail15EmailStatusCodeZQEtFNaNfkbQEvQEyQByZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTEQEh8datetime4date5MonthTiZQEeFNaNfkiQBliZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTiZQDfFNaNfkiiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiZQDdFNaNfkiZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTkZQDdFNaNfkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTQCvTmTQDbTmTQDhTQDlZQDxFNaNfkmQDzmQEdmQEhQEkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmTymZQDiFNaNfkmmymZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmZQDfFNaNfkmmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmZQDdFNaNfkmZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTsTEQEh8datetime4date5MonthThThThThTxlZQEnFNaNfksQBuhhhhxlZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxdZQDeFNaNfkxdZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhTxhZQDnFNaNfkxhxhxhxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhZQDkFNaNfkxhxhxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTQCwTxhZQDlFNaNfkxsQDoxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTxEQEj8datetime4date5MonthTxhZQEhFNaNfkxsxQBoxhZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsZQDeFNaNfkxsZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxtTQCwTxtTxtZQDoFNaNfkxtQDrxtxtZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTykTykTkTkTkZQDnFNaNfkykykkkkZw@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAaTPvZQDlFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaTQeZQDmFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaZQDjFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxhZQDjFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAyAaZQDkFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQEbFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTEQEj8datetime4date5MonthZQEeFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTPvZQDiFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTiTQDhZQDtFNaNfkQDuQDxiQEbZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTmZQDpFNaNfkQDqQDtmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbZQDnFNaNfkQDoQDrZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxlZQDwFNaNfkQDxmQEbQEexlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxmZQDwFNaNfkQDxmQEbQEexmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTxmZQDsFNaNfkQDtmQDxxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTQDeZQDqFNaNfkQDrxkQDwZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTkZQDoFNaNfkQDpxkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkZQDmFNaNfkQDnxkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTQDiTmZQDwFNaNfkQDxxmQEcQEfmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTxmZQDtFNaNfkQDuxmQDzxmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxZQDjFNaNfkQDkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTbTQCzTQDdTEQEt3net7isemail15EmailStatusCodeZQExFNaNfkbQEzQFcQByZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTEQEl8datetime4date5MonthTiZQEiFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTiZQDjFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiZQDhFNaNfkiZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTkZQDhFNaNfkkZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTQCzTmTQDfTmTQDlTQDpZQEbFNaNfkmQEdmQEhmQElQEoZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmTymZQDmFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmZQDjFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmZQDhFNaNfkmZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTsTEQEl8datetime4date5MonthThThThThTxlZQErFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxdZQDiFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhTxhZQDrFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhZQDoFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTQDaTxhZQDpFNaNfkxsQDsxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTxEQEn8datetime4date5MonthTxhZQElFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsZQDiFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxtTQDaTxtTxtZQDsFNaNfkxtQDvxtxtZi@Base 15 + _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTykTykTkTkTkZQDrFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl@Base 15 + _D3std6format8internal5write__T8getWidthTAuZQnFNaNfQkZl@Base 15 + _D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl@Base 15 + _D3std6format8internal5write__T8getWidthTAxaZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAyuZQoFNaNfQlZl@Base 15 + _D3std6format8internal5write__T8getWidthTAywZQoFNaNbNiNfQpZl@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAaTPvZQBzFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaTQeZQCaFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaZQBxFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxhZQBxFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAyAaZQByFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TC14TypeInfo_ClassTkTkZQCpFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TEQCx8datetime4date5MonthZQCsFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TPvZQBwFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTiTQBsZQChFNaNfkQCfQCiiQCmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTmZQCdFNaNfkQCbQCemZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmZQCbFNaNfkQBzQCcZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxlZQCkFNaNfkQCimQCmQCpxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxmZQCkFNaNfkQCimQCmQCpxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTxmZQCgFNaNfkQCemQCixmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTQBpZQCeFNaNfkQCcxkQChZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTkZQCcFNaNfkQCaxkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkZQCaFNaNfkQByxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTQBtTmZQCkFNaNfkQCixmQCnQCqmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTxmZQChFNaNfkQCfxmQCkxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiZQBxFNaNfkQBvZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TbTQBkTQBoTEQDh3net7isemail15EmailStatusCodeZQDlFNaNfkbQDkQDnQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTEQCz8datetime4date5MonthTiZQCwFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTiZQBxFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiZQBvFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TkZQBvFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTQBkTmTQBqTmTQBwTQCaZQCpFNaNfkmQComQCsmQCwQCzZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmTymZQCaFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmZQBxFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmZQBvFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TsTEQCz8datetime4date5MonthThThThThTxlZQDfFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxdZQBwFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhTxhZQCfFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhZQCcFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTQBlTxhZQCdFNaNfkxsQCdxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTxEQDb8datetime4date5MonthTxhZQCzFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsZQBwFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxtTQBlTxtTxtZQCgFNaNfkxtQCgxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TykTykTkTkTkZQCfFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAaTPvZQChFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaTQeZQCiFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaZQCfFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxhZQCfFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAyAaZQCgFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTC14TypeInfo_ClassTkTkZQCxFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTEQDf8datetime4date5MonthZQDaFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTPvZQCeFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTiTQCaZQCpFNaNfkQCnQCqiQCuZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTmZQClFNaNfkQCjQCmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuZQCjFNaNfkQChQCkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxlZQCsFNaNfkQCqmQCuQCxxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxmZQCsFNaNfkQCqmQCuQCxxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTxmZQCoFNaNfkQCmmQCqxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTQBxZQCmFNaNfkQCkxkQCpZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTkZQCkFNaNfkQCixkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkZQCiFNaNfkQCgxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTQCbTmZQCsFNaNfkQCqxmQCvQCymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTxmZQCpFNaNfkQCnxmQCsxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqZQCfFNaNfkQCdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTbTQBsTQBwTEQDp3net7isemail15EmailStatusCodeZQDtFNaNfkbQDsQDvQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTEQDh8datetime4date5MonthTiZQDeFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTiZQCfFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiZQCdFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTkZQCdFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTQBsTmTQByTmTQCeTQCiZQCxFNaNfkmQCwmQDamQDeQDhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmTymZQCiFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmZQCfFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmZQCdFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTsTEQDh8datetime4date5MonthThThThThTxlZQDnFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxdZQCeFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhTxhZQCnFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhZQCkFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTQBtTxhZQClFNaNfkxsQClxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTxEQDj8datetime4date5MonthTxhZQDhFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsZQCeFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxtTQBtTxtTxtZQCoFNaNfkxtQCoxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTykTykTkTkTkZQCnFNaNfkykykkkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAaTPvZQCpFNaNfkQpQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaTQeZQCqFNaNfkQqQsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaZQCnFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxhZQCnFNaNfkQnZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAyAaZQCoFNaNfkQoZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TC14TypeInfo_ClassTkTkZQDfFNaNfkQBfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TEQDn8datetime4date5MonthZQDiFNaNfkQBiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TPvZQCmFNaNfkQmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTiTQCiZQCxFNaNfkQCvQCyiQDcZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTmZQCtFNaNfkQCrQCumZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcZQCrFNaNfkQCpQCsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxlZQDaFNaNfkQCymQDcQDfxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxmZQDaFNaNfkQCymQDcQDfxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTxmZQCwFNaNfkQCumQCyxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTQCfZQCuFNaNfkQCsxkQCxZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTkZQCsFNaNfkQCqxkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkZQCqFNaNfkQCoxkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTQCjTmZQDaFNaNfkQCyxmQDdQDgmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTxmZQCxFNaNfkQCvxmQDaxmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByZQCnFNaNfkQClZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TbTQCaTQCeTEQDx3net7isemail15EmailStatusCodeZQEbFNaNfkbQEaQEdQByZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTEQDp8datetime4date5MonthTiZQDmFNaNfkiQBliZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTiZQCnFNaNfkiiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiZQClFNaNfkiZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TkZQClFNaNfkkZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTQCaTmTQCgTmTQCmTQCqZQDfFNaNfkmQDemQDimQDmQDpZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmTymZQCqFNaNfkmmymZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmZQCnFNaNfkmmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmZQClFNaNfkmZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TsTEQDp8datetime4date5MonthThThThThTxlZQDvFNaNfksQBuhhhhxlZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxdZQCmFNaNfkxdZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhTxhZQCvFNaNfkxhxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhZQCsFNaNfkxhxhxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTQCbTxhZQCtFNaNfkxsQCtxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTxEQDr8datetime4date5MonthTxhZQDpFNaNfkxsxQBoxhZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsZQCmFNaNfkxsZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxtTQCbTxtTxtZQCwFNaNfkxtQCwxtxtZi@Base 15 + _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TykTykTkTkTkZQCvFNaNfkykykkkkZi@Base 15 + _D3std6format8internal6floats11__moduleRefZ@Base 15 + _D3std6format8internal6floats11isFloatSpecFNaNbNiNfaZb@Base 15 + _D3std6format8internal6floats12__ModuleInfoZ@Base 15 + _D3std6format8internal6floats__T10printFloatTDFNaNbNfAxaZvTeTaZQBfFNaNfKQBbxeSQCyQCx4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T10printFloatTSQBsQBr8NoOpSinkTdTaZQBiFNaNfKQBexdSQDbQDa4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T10printFloatTSQBsQBr__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCkFNaNfKQCgxdSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std6format8internal6floats__T11printFloatATDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatATSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatATSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format8internal6floats__T11printFloatGTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 + _D3std6format__T11guessLengthTaTAyaZQuFNaNfQlZm@Base 15 + _D3std6format__T7sformatTaTxdZQoFNaNfNkMAaMAxaxdZQj@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink11__xopEqualsMxFKxSQCpQCo__TQCkTaTxdZQCtFNkMQCgMQChxdZQChZb@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfMQyZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfaZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxuZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxwZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfwZv@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 + _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink9__xtoHashFNbNeKxSQCoQCn__TQCjTaTxdZQCsFNkMQCfMQCgxdZQCgZm@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNaNfNkMAaMAxaykykkkkZQo@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink11__xopEqualsMxFKxSQDdQDc__TQCyTaTykTykTkTkTkZQDqFNkMQCuMQCvykykkkkZQCvZb@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfMQBdZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfaZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxuZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxwZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfwZv@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 + _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink9__xtoHashFNbNeKxSQDcQDb__TQCxTaTykTykTkTkTkZQDpFNkMQCtMQCuykykkkkZQCuZm@Base 15 + _D3std6format__T7sformatVAyaa5_252e313867TxdZQBdFNaNfAaxdZQf@Base 15 + _D3std6format__TQkTaTAaTPvZQvFNaNfIAaQqQpZAya@Base 15 + _D3std6format__TQkTaTAxaTQeZQwFNaNfIAaQrQtZAya@Base 15 + _D3std6format__TQkTaTAyAaZQuFNaNfIAaQpZAya@Base 15 + _D3std6format__TQkTaTAyaTQeTmZQyFNaNfIAaQtQvmZQz@Base 15 + _D3std6format__TQkTaTAyaTQeZQwFNaNfIAaQrQtZQw@Base 15 + _D3std6format__TQkTaTAyaTxkTQhZQzFNaNfIAaQuxkQyZQBb@Base 15 + _D3std6format__TQkTaTAyaTxkTkZQyFNaNfIAaQtxkkZQz@Base 15 + _D3std6format__TQkTaTAyaTxkZQwFNaNfIAaQrxkZQw@Base 15 + _D3std6format__TQkTaTAyaZQtFNaNfIAaQoZQr@Base 15 + _D3std6format__TQkTaTC14TypeInfo_ClassTkTkZQBlFNaNfIAaQBhkkZAya@Base 15 + _D3std6format__TQkTaTEQu8datetime4date5MonthZQBnFNaNfIAaQBjZAya@Base 15 + _D3std6format__TQkTaTbTAyaTQeTEQBd3net7isemail15EmailStatusCodeZQCgFNaNfIAabQCbQCeQCaZQCl@Base 15 + _D3std6format__TQkTaTiTEQw8datetime4date5MonthTiZQBrFNaNfIAaiQBmiZAya@Base 15 + _D3std6format__TQkTaTiZQrFNaNfIAaiZAya@Base 15 + _D3std6format__TQkTaTxhTxhTxhTxhZQBbFNaNfIAaxhxhxhxhZAya@Base 15 + _D3std6format__TQkTaTxhTxhTxhZQyFNaNfIAaxhxhxhZAya@Base 15 + _D3std6format__TQkTaTxsTxEQy8datetime4date5MonthTxhZQBuFNaNfIAaxsxQBpxhZAya@Base 15 + _D3std6format__TQkTaTxsZQsFNaNfIAaxsZAya@Base 15 + _D3std6format__TQkTaTxtTAyaTxtTxtZQBcFNaNfIAaxtQxxtxtZQBe@Base 15 + _D3std6format__TQkVAyaa35_737461636b2e6c656e677468202d206174202573206d7573742062652032206f722033TmZQDpFNaNfmZQDm@Base 15 + _D3std6format__TQkVAyaa39_7372632e6c656e677468202573206d75737420657175616c20646573742e6c656e677468202573TmTmZQDzFNaNfmmZQDx@Base 15 + _D3std6format__TQkVAyaa42_74656d702e6c656e677468202573203e3d2072616e67652e6c656e677468202573202d206d6964202573TmTmTymZQEiFNaNfmmymZQEi@Base 15 + _D3std6getopt10assignCharw@Base 15 + _D3std6getopt10optionCharw@Base 15 + _D3std6getopt11__moduleRefZ@Base 15 + _D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option@Base 15 + _D3std6getopt12GetoptResult11__xopEqualsMxFKxSQBsQBrQBnZb@Base 15 + _D3std6getopt12GetoptResult6__initZ@Base 15 + _D3std6getopt12GetoptResult9__xtoHashFNbNeKxSQBrQBqQBmZm@Base 15 + _D3std6getopt12__ModuleInfoZ@Base 15 + _D3std6getopt12endOfOptionsAya@Base 15 + _D3std6getopt13configuration11passThroughMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration11passThroughMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration13caseSensitiveMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration13caseSensitiveMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration16keepEndOfOptionsMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration16keepEndOfOptionsMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration20stopOnFirstNonOptionMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration6__initZ@Base 15 + _D3std6getopt13configuration8bundlingMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv@Base 15 + _D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb@Base 15 + _D3std6getopt15GetOptException6__initZ@Base 15 + _D3std6getopt15GetOptException6__vtblZ@Base 15 + _D3std6getopt15GetOptException7__ClassZ@Base 15 + _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZ18__lambda_L1704_C15FNeZSQDc5stdio4File17LockingTextWriter@Base 15.2 + _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZv@Base 15 + _D3std6getopt6Option11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6getopt6Option6__initZ@Base 15 + _D3std6getopt6Option9__xtoHashFNbNeKxSQBkQBjQBfZm@Base 15 + _D3std6getopt8arraySepAya@Base 15 + _D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb@Base 15 + _D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv@Base 15 + _D3std6getopt__T22defaultGetoptFormatterTSQBo5stdio4File17LockingTextWriterZQCiFNfQBpAyaASQDkQDj6OptionQsZv@Base 15 + _D3std6int12811__moduleRefZ@Base 15 + _D3std6int12812__ModuleInfoZ@Base 15 + _D3std6int1286Int12811__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 + _D3std6int1286Int1285opCmpMxFNaNbNiNfSQBkQBjQBfZi@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfS4coreQBn4CentZSQCbQCaQBw@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNflZSQBoQBnQBj@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfllZSQBpQBoQBk@Base 15 + _D3std6int1286Int1286__ctorMFNaNbNcNiNfmZSQBoQBnQBj@Base 15 + _D3std6int1286Int1286__initZ@Base 15 + _D3std6int1286Int1286toHashMxFNaNbNiNfZm@Base 15 + _D3std6int1286Int1288__xopCmpMxFKxSQBhQBgQBcZi@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNfSQBnQBmQBiZb@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNflZb@Base 15 + _D3std6int1286Int1288opEqualsMxFNaNbNiNfmZb@Base 15 + _D3std6logger10filelogger10FileLogger10logMsgPartMFNfMAxaZv@Base 15 + _D3std6logger10filelogger10FileLogger11__fieldDtorMFNlNeZv@Base 15 + _D3std6logger10filelogger10FileLogger11beginLogMsgMFNfAyaiQeQgQiEQClQCk4core8LogLevelSQDg11concurrency3TidSQEb8datetime7systime7SysTimeCQFeQFdQCt6LoggerZv@Base 15 + _D3std6logger10filelogger10FileLogger11getFilenameMFZAya@Base 15 + _D3std6logger10filelogger10FileLogger11writeLogMsgMFNfKSQCcQCb4core6Logger8LogEntryZv@Base 15 + _D3std6logger10filelogger10FileLogger12finishLogMsgMFNfZv@Base 15 + _D3std6logger10filelogger10FileLogger4fileMFNdNfZSQBw5stdio4File@Base 15 + _D3std6logger10filelogger10FileLogger6__ctorMFNfSQBv5stdio4FilexEQClQCk4core8LogLevelZCQDhQDgQDcQCt@Base 15 + _D3std6logger10filelogger10FileLogger6__initZ@Base 15 + _D3std6logger10filelogger10FileLogger6__vtblZ@Base 15 + _D3std6logger10filelogger10FileLogger7__ClassZ@Base 15 + _D3std6logger10filelogger11__moduleRefZ@Base 15 + _D3std6logger10filelogger12__ModuleInfoZ@Base 15 + _D3std6logger10nulllogger10NullLogger11writeLogMsgMFNiNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 + _D3std6logger10nulllogger10NullLogger6__ctorMFNfxEQBwQBv4core8LogLevelZCQCsQCrQCnQCe@Base 15 + _D3std6logger10nulllogger10NullLogger6__initZ@Base 15 + _D3std6logger10nulllogger10NullLogger6__vtblZ@Base 15 + _D3std6logger10nulllogger10NullLogger7__ClassZ@Base 15 + _D3std6logger10nulllogger11__moduleRefZ@Base 15 + _D3std6logger10nulllogger12__ModuleInfoZ@Base 15 + _D3std6logger11__moduleRefZ@Base 15 + _D3std6logger11multilogger11MultiLogger11writeLogMsgMFNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 + _D3std6logger11multilogger11MultiLogger12insertLoggerMFNfAyaCQChQCg4core6LoggerZv@Base 15 + _D3std6logger11multilogger11MultiLogger12removeLoggerMFNfIAaZCQCiQCh4core6Logger@Base 15 + _D3std6logger11multilogger11MultiLogger6__ctorMFNfxEQByQBx4core8LogLevelZCQCuQCtQCpQCf@Base 15 + _D3std6logger11multilogger11MultiLogger6__initZ@Base 15 + _D3std6logger11multilogger11MultiLogger6__vtblZ@Base 15 + _D3std6logger11multilogger11MultiLogger7__ClassZ@Base 15 + _D3std6logger11multilogger11__moduleRefZ@Base 15 + _D3std6logger11multilogger12__ModuleInfoZ@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry11__xopEqualsMxFKxSQCjQCiQCeQBuZb@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D3std6logger11multilogger16MultiLoggerEntry9__xtoHashFNbNeKxSQCiQChQCdQBtZm@Base 15 + _D3std6logger12__ModuleInfoZ@Base 15 + _D3std6logger4core10TestLogger11writeLogMsgMFNfKSQBvQBuQBq6Logger8LogEntryZv@Base 15 + _D3std6logger4core10TestLogger6__ctorMFNfxEQBpQBoQBk8LogLevelZCQCjQCiQCeQCc@Base 15 + _D3std6logger4core10TestLogger6__initZ@Base 15 + _D3std6logger4core10TestLogger6__vtblZ@Base 15 + _D3std6logger4core10TestLogger7__ClassZ@Base 15 + _D3std6logger4core11__moduleRefZ@Base 15 + _D3std6logger4core12__ModuleInfoZ@Base 15 + _D3std6logger4core14globalLogLevelFNdNfEQBmQBlQBh8LogLevelZv@Base 15 + _D3std6logger4core14globalLogLevelFNdNiNfZEQBpQBoQBk8LogLevel@Base 15 + _D3std6logger4core15stdSharedLoggerOCQBjQBiQBe6Logger@Base 15 + _D3std6logger4core16StdForwardLogger11writeLogMsgMFNeKSQCbQCaQBw6Logger8LogEntryZv@Base 15 + _D3std6logger4core16StdForwardLogger6__ctorMFNfxEQBvQBuQBq8LogLevelZCQCpQCoQCkQCi@Base 15 + _D3std6logger4core16StdForwardLogger6__initZ@Base 15 + _D3std6logger4core16StdForwardLogger6__vtblZ@Base 15 + _D3std6logger4core16StdForwardLogger7__ClassZ@Base 15 + _D3std6logger4core17stdThreadLocalLogFNdNfCQBpQBoQBk6LoggerZv@Base 15 + _D3std6logger4core17stdThreadLocalLogFNdNfZCQBqQBpQBl6Logger@Base 15 + _D3std6logger4core21stdLoggerThreadLoggerCQBoQBnQBj6Logger@Base 15 + _D3std6logger4core21stdThreadLocalLogImplFNdNeZ6bufferG184v@Base 15 + _D3std6logger4core21stdThreadLocalLogImplFNdNeZCQBuQBtQBp6Logger@Base 15 + _D3std6logger4core22stdSharedDefaultLoggerOCQBqQBpQBl6Logger@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZ18__lambda_L1423_C37FZOCQCtQCs10filelogger10FileLogger@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZ7_bufferG224v@Base 15 + _D3std6logger4core23defaultSharedLoggerImplFNdNeZOCQBxQBwQBs6Logger@Base 15 + _D3std6logger4core23stdLoggerGlobalLogLevelOEQBrQBqQBm8LogLevel@Base 15 + _D3std6logger4core28stdLoggerDefaultThreadLoggerCQBvQBuQBq6Logger@Base 15 + _D3std6logger4core6Logger10forwardMsgMFNeKSQBpQBoQBkQBi8LogEntryZv@Base 15 + _D3std6logger4core6Logger10logMsgPartMFNfMAxaZv@Base 15 + _D3std6logger4core6Logger11beginLogMsgMFNfAyaiQeQgQiEQBzQByQBu8LogLevelSQCs11concurrency3TidSQDn8datetime7systime7SysTimeCQEqQEpQElQEjZv@Base 15 + _D3std6logger4core6Logger12fatalHandlerMFNdNiNfDFNfZvZv@Base 15 + _D3std6logger4core6Logger12fatalHandlerMFNdNiNfZDFZv@Base 15 + _D3std6logger4core6Logger12finishLogMsgMFNfZv@Base 15 + _D3std6logger4core6Logger6__initZ@Base 15 + _D3std6logger4core6Logger6__vtblZ@Base 15 + _D3std6logger4core6Logger7__ClassZ@Base 15 + _D3std6logger4core6Logger8LogEntry11__xopEqualsMxFKxSQBzQByQBuQBsQBoZb@Base 15 + _D3std6logger4core6Logger8LogEntry6__initZ@Base 15 + _D3std6logger4core6Logger8LogEntry8opAssignMFNaNbNcNiNjNfSQCeQCdQBzQBxQBtZQr@Base 15 + _D3std6logger4core6Logger8LogEntry9__xtoHashFNbNeKxSQByQBxQBtQBrQBnZm@Base 15 + _D3std6logger4core6Logger8logLevelMFNdNiNfxEQBqQBpQBl8LogLevelZv@Base 15 + _D3std6logger4core6Logger8logLevelMxFNaNdNiNfZEQBtQBsQBo8LogLevel@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi10filelogger10FileLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi10nulllogger10NullLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBi11multilogger11MultiLoggerZQBqMFNbNfEQDaQCzQCv8LogLevelZCQDuQDtQDpQDn@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe10TestLoggerZQBfMFNbNfEQCpQCoQCk8LogLevelZCQDjQDiQDeQDc@Base 15 + _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe16StdForwardLoggerZQBlMFNbNfEQCvQCuQCq8LogLevelZCQDpQDoQDkQDi@Base 15 + _D3std6logger4core8LogLevel6__initZ@Base 15 + _D3std6logger4core8MsgRange11__xopEqualsMxFKxSQBsQBrQBnQBlZb@Base 15 + _D3std6logger4core8MsgRange3putMFNfwZv@Base 15 + _D3std6logger4core8MsgRange6__ctorMFNcNfCQBnQBmQBi6LoggerZSQCfQCeQCaQBy@Base 15 + _D3std6logger4core8MsgRange6__initZ@Base 15 + _D3std6logger4core8MsgRange9__xtoHashFNbNeKxSQBrQBqQBmQBkZm@Base 15 + _D3std6logger4core9sharedLogFNdNfOCQBhQBgQBc6LoggerZv@Base 15 + _D3std6logger4core9sharedLogFNdNfZOCQBiQBhQBd6Logger@Base 15 + _D3std6logger4core__T11trustedLoadTEQBiQBhQBd8LogLevelZQBiFNaNbNiNeKOEQCqQCpQClQBiZQBw@Base 15 + _D3std6logger4core__T11trustedLoadTxEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOxEQCsQCrQCnQBjZEQDgQDfQDbQBx@Base 15 + _D3std6logger4core__T12trustedStoreTEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOEQCrQCqQCmQBiKQBwZv@Base 15 + _D3std6logger4core__T16isLoggingEnabledZQtFNaNfEQBuQBtQBp8LogLevelQtQvLbZb@Base 15 + _D3std6logger4core__T18systimeToISOStringTSQBp5stdio4File17LockingTextWriterZQCeFNfQBpKxSQDj8datetime7systime7SysTimeZv@Base 15 + _D3std6mmfile11__moduleRefZ@Base 15 + _D3std6mmfile12__ModuleInfoZ@Base 15 + _D3std6mmfile6MmFile10__aggrDtorMFNlZv@Base 15 + _D3std6mmfile6MmFile11__fieldDtorMFNlNeZv@Base 15 + _D3std6mmfile6MmFile12ensureMappedMFmZv@Base 15 + _D3std6mmfile6MmFile12ensureMappedMFmmZv@Base 15 + _D3std6mmfile6MmFile13opIndexAssignMFhmZh@Base 15 + _D3std6mmfile6MmFile3mapMFmmZv@Base 15 + _D3std6mmfile6MmFile4modeMFZEQBbQBaQw4Mode@Base 15 + _D3std6mmfile6MmFile5flushMFZv@Base 15 + _D3std6mmfile6MmFile5unmapMFZv@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlAyaEQBhQBgQBc4ModemPvmZCQCbQCaQBw@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlAyaZCQBiQBhQBd@Base 15 + _D3std6mmfile6MmFile6__ctorMFNlSQBe5stdio4FileEQBtQBsQBo4ModemPvmZCQCnQCmQCi@Base 15 + _D3std6mmfile6MmFile6__ctorMFNliEQBfQBeQBa4ModemPvmZCQBzQByQBu@Base 15 + _D3std6mmfile6MmFile6__dtorMFNlZv@Base 15 + _D3std6mmfile6MmFile6__initZ@Base 15 + _D3std6mmfile6MmFile6__vtblZ@Base 15 + _D3std6mmfile6MmFile6lengthMxFNdZm@Base 15 + _D3std6mmfile6MmFile6mappedMFmZi@Base 15 + _D3std6mmfile6MmFile7__ClassZ@Base 15 + _D3std6mmfile6MmFile7opIndexMFmZh@Base 15 + _D3std6mmfile6MmFile7opSliceMFZAv@Base 15 + _D3std6mmfile6MmFile7opSliceMFmmZAv@Base 15 + _D3std6random11__moduleRefZ@Base 15 + _D3std6random12__ModuleInfoZ@Base 15 + _D3std6random12fallbackSeedFNbNiZ11initializedOb@Base 15 + _D3std6random12fallbackSeedFNbNiZ4seedOm@Base 15 + _D3std6random12fallbackSeedFNbNiZ6fmix64FNaNbNiNfmZm@Base 15 + _D3std6random12fallbackSeedFNbNiZm@Base 15 + _D3std6random13bootstrapSeedFNbNiZm@Base 15 + _D3std6random17unpredictableSeedFNbNdNiNeZk@Base 15 + _D3std6random18RandomCoverChoices10__postblitMFNaNbNiNeZv@Base 15 + _D3std6random18RandomCoverChoices13opIndexAssignMFNaNbNiNebmZv@Base 15 + _D3std6random18RandomCoverChoices6__ctorMFNaNbNcNiNemZSQCbQCaQBw@Base 15 + _D3std6random18RandomCoverChoices6__dtorMFNaNbNiNeZv@Base 15 + _D3std6random18RandomCoverChoices6__initZ@Base 15 + _D3std6random18RandomCoverChoices6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std6random18RandomCoverChoices7opIndexMxFNaNbNiNemZb@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZ11initializedb@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZ6resultSQBmQBl__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 + _D3std6random6rndGenFNbNcNdNiNfZSQBfQBe__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 + _D3std6random__T12initMTEngineTSQBeQBd__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGfFNbNiNfMKQGcZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki128Vii11ViN8ViN19ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki160Vii2ViN1ViN4ZQDp@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki192ViN2Vii1Vii4ZQDp@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki32Vii13ViN17Vii15ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki64Vii10ViN13ViN10ZQDt@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm4saveMxFNaNbNdNiNfZSQCxQCw__TQCsTkVki96Vii10ViN5ViN26ZQDr@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 + _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T17unpredictableSeedTmZQwFNbNdNiNeZm@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12defaultStateFNaNbNiNfZSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5State@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12popFrontImplFNaNbNiNfKSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc4saveMxFNaNbNdNiNfZSQGnQGm__TQGiTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKq@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__ctorMFNaNbNcNiNfkZSQGpQGo__TQGkTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKs@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8seedImplFNaNbNiNfkKSQGoQGn__TQGjTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKr5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc__T4seedZQgMFNaNbNiNfkZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12defaultStateFNaNbNiNfZSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5State@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12popFrontImplFNaNbNiNfKSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt4saveMxFNaNbNdNiNfZSQIeQId__TQHzTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNy@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5frontMxFNaNbNdNiNfZm@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__ctorMFNaNbNcNiNfmZSQIgQIf__TQIbTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOa@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8seedImplFNaNbNiNfmKSQIfQIe__TQIaTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNz5StateZv@Base 15 + _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt__T4seedZQgMFNaNbNiNfmZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki16807Vki0Vki2147483647ZQEn@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki16807Vki0Vki2147483647ZQEp@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki48271Vki0Vki2147483647ZQEn@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki48271Vki0Vki2147483647ZQEp@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 + _D3std6socket10SocketType6__initZ@Base 15 + _D3std6socket10getAddressFNfMAxaMQeZACQBkQBj7Address@Base 15 + _D3std6socket10getAddressFNfMAxatZACQBiQBh7Address@Base 15 + _D3std6socket10socketPairFNeZG2CQBeQBd6Socket@Base 15 + _D3std6socket11AddressInfo11__xopEqualsMxFKxSQBrQBqQBmZb@Base 15 + _D3std6socket11AddressInfo6__initZ@Base 15 + _D3std6socket11AddressInfo9__xtoHashFNbNeKxSQBqQBpQBlZm@Base 15 + _D3std6socket11UnixAddress10setNameLenMFNekZv@Base 15 + _D3std6socket11UnixAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCj8sockaddr@Base 15 + _D3std6socket11UnixAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCl8sockaddr@Base 15 + _D3std6socket11UnixAddress4pathMxFNaNdNeZAya@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNbNiNfS4core3sys5posixQk2un11sockaddr_unZCQCzQCyQCu@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNbNiNfZCQBrQBqQBm@Base 15 + _D3std6socket11UnixAddress6__ctorMFNaNeMAxaZCQBrQBqQBm@Base 15 + _D3std6socket11UnixAddress6__initZ@Base 15 + _D3std6socket11UnixAddress6__vtblZ@Base 15 + _D3std6socket11UnixAddress7__ClassZ@Base 15 + _D3std6socket11UnixAddress7nameLenMxFNaNbNdNiNeZk@Base 15 + _D3std6socket11UnixAddress8toStringMxFNaNfZAya@Base 15 + _D3std6socket11__moduleRefZ@Base 15 + _D3std6socket12InternetHost12validHostentMFNfIPS4core3sys5posix5netdb7hostentZv@Base 15 + _D3std6socket12InternetHost13getHostByAddrMFNeMAxaZb@Base 15 + _D3std6socket12InternetHost13getHostByAddrMFNekZb@Base 15 + _D3std6socket12InternetHost13getHostByNameMFNeMAxaZb@Base 15 + _D3std6socket12InternetHost6__initZ@Base 15 + _D3std6socket12InternetHost6__vtblZ@Base 15 + _D3std6socket12InternetHost7__ClassZ@Base 15 + _D3std6socket12InternetHost8populateMFNaNbPS4core3sys5posix5netdb7hostentZv@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQKdMFkZb@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTzMFQjZb@Base 15 + _D3std6socket12InternetHost__T13getHostNoSyncVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGwMFQjZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQJwMFkZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTsMFQjZb@Base 15 + _D3std6socket12InternetHost__T7getHostVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGpMFQjZb@Base 15 + _D3std6socket12SocketOption6__initZ@Base 15 + _D3std6socket12__ModuleInfoZ@Base 15 + _D3std6socket12parseAddressFNfMAxaMQeZCQBlQBk7Address@Base 15 + _D3std6socket12parseAddressFNfMAxatZCQBjQBi7Address@Base 15 + _D3std6socket13HostException6__initZ@Base 15 + _D3std6socket13HostException6__vtblZ@Base 15 + _D3std6socket13HostException7__ClassZ@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCvQCuQCq@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCvQCuQCq@Base 15 + _D3std6socket13HostException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCvQCuQCq@Base 15 + _D3std6socket13_SOCKET_ERRORxi@Base 15 + _D3std6socket13serviceToPortFNfMAxaZt@Base 15 + _D3std6socket14UnknownAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCm8sockaddr@Base 15 + _D3std6socket14UnknownAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCo8sockaddr@Base 15 + _D3std6socket14UnknownAddress6__initZ@Base 15 + _D3std6socket14UnknownAddress6__vtblZ@Base 15 + _D3std6socket14UnknownAddress7__ClassZ@Base 15 + _D3std6socket14UnknownAddress7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket14formatGaiErrorFNeiZ12__critsec231OPv@Base 15 + _D3std6socket14formatGaiErrorFNeiZAya@Base 15 + _D3std6socket15InternetAddress12addrToStringFNbNekZAya@Base 15 + _D3std6socket15InternetAddress12toAddrStringMxFNeZAya@Base 15 + _D3std6socket15InternetAddress12toPortStringMxFNfZAya@Base 15 + _D3std6socket15InternetAddress16toHostNameStringMxFNfZAya@Base 15 + _D3std6socket15InternetAddress4addrMxFNaNbNdNiNfZk@Base 15 + _D3std6socket15InternetAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCn8sockaddr@Base 15 + _D3std6socket15InternetAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCp8sockaddr@Base 15 + _D3std6socket15InternetAddress4portMxFNaNbNdNiNfZt@Base 15 + _D3std6socket15InternetAddress5parseFNbNeMAxaZk@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_11sockaddr_inZCQDkQDjQDf@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNfktZCQBxQBwQBs@Base 15 + _D3std6socket15InternetAddress6__ctorMFNaNbNiNftZCQBwQBvQBr@Base 15 + _D3std6socket15InternetAddress6__ctorMFNfMAxatZCQBuQBtQBp@Base 15 + _D3std6socket15InternetAddress6__initZ@Base 15 + _D3std6socket15InternetAddress6__vtblZ@Base 15 + _D3std6socket15InternetAddress7__ClassZ@Base 15 + _D3std6socket15InternetAddress7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket15InternetAddress8opEqualsMxFNfC6ObjectZb@Base 15 + _D3std6socket15SocketException6__initZ@Base 15 + _D3std6socket15SocketException6__vtblZ@Base 15 + _D3std6socket15SocketException7__ClassZ@Base 15 + _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6socket15lastSocketErrorFNdNfZAya@Base 15 + _D3std6socket16AddressException6__initZ@Base 15 + _D3std6socket16AddressException6__vtblZ@Base 15 + _D3std6socket16AddressException7__ClassZ@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCyQCxQCt@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCyQCxQCt@Base 15 + _D3std6socket16AddressException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCyQCxQCt@Base 15 + _D3std6socket16AddressInfoFlags6__initZ@Base 15 + _D3std6socket16Internet6Address4addrMxFNaNbNdNiNfZG16h@Base 15 + _D3std6socket16Internet6Address4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCo8sockaddr@Base 15 + _D3std6socket16Internet6Address4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCq8sockaddr@Base 15 + _D3std6socket16Internet6Address4portMxFNaNbNdNiNfZt@Base 15 + _D3std6socket16Internet6Address5parseFNeMAxaZG16h@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfG16htZCQCbQCaQBw@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_12sockaddr_in6ZCQDmQDlQDh@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNfZCQBwQBvQBr@Base 15 + _D3std6socket16Internet6Address6__ctorMFNaNbNiNftZCQBxQBwQBs@Base 15 + _D3std6socket16Internet6Address6__ctorMFNeMAxaMQeZCQBxQBwQBs@Base 15 + _D3std6socket16Internet6Address6__ctorMFNfMAxatZCQBvQBuQBq@Base 15 + _D3std6socket16Internet6Address6__initZ@Base 15 + _D3std6socket16Internet6Address6__vtblZ@Base 15 + _D3std6socket16Internet6Address7__ClassZ@Base 15 + _D3std6socket16Internet6Address7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket16Internet6Address8ADDR_ANYFNaNbNcNdNiNfZxG16h@Base 15 + _D3std6socket16wouldHaveBlockedFNbNiNfZb@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaC6object9ThrowableQvmiPFNeiZQBfZCQCzQCyQCu@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaQdmC6object9ThrowableiPFNeiZQBfZCQCzQCyQCu@Base 15 + _D3std6socket17SocketOSException6__ctorMFNfAyaiPFNeiZQkQmmC6object9ThrowableZCQCyQCxQCt@Base 15 + _D3std6socket17SocketOSException6__initZ@Base 15 + _D3std6socket17SocketOSException6__vtblZ@Base 15 + _D3std6socket17SocketOSException7__ClassZ@Base 15 + _D3std6socket17SocketOptionLevel6__initZ@Base 15 + _D3std6socket17formatSocketErrorFNeiZAya@Base 15 + _D3std6socket18getAddressInfoImplFMAxaMQePS4core3sys5posix5netdb8addrinfoZASQCwQCv11AddressInfo@Base 15 + _D3std6socket18getaddrinfoPointeryPUNbNiPxaQdPxS4core3sys5posix5netdb8addrinfoPPSQBhQBfQBeQBbQyZi@Base 15 + _D3std6socket18getnameinfoPointeryPUNbNiPxS4core3sys5posixQkQCc8sockaddrkPakQdkiZi@Base 15 + _D3std6socket19freeaddrinfoPointeryPUNbNiPS4core3sys5posix5netdb8addrinfoZv@Base 15 + _D3std6socket21SocketAcceptException6__initZ@Base 15 + _D3std6socket21SocketAcceptException6__vtblZ@Base 15 + _D3std6socket21SocketAcceptException7__ClassZ@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQDdQDcQCy@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQDdQDcQCy@Base 15 + _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQDdQDcQCy@Base 15 + _D3std6socket22SocketFeatureException6__initZ@Base 15 + _D3std6socket22SocketFeatureException6__vtblZ@Base 15 + _D3std6socket22SocketFeatureException7__ClassZ@Base 15 + _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDjQDiQDe@Base 15 + _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDjQDiQDe@Base 15 + _D3std6socket23UnknownAddressReference4nameMFNaNbNdNiNfZPS4core3sys5posixQkQCr8sockaddr@Base 15 + _D3std6socket23UnknownAddressReference4nameMxFNaNbNdNiNfZPxS4core3sys5posixQkQCt8sockaddr@Base 15 + _D3std6socket23UnknownAddressReference6__ctorMFNaNbNiNfPS4core3sys5posixQkQCq8sockaddrkZCQDjQDiQDe@Base 15 + _D3std6socket23UnknownAddressReference6__ctorMFNaNbPxS4core3sys5posixQkQCn8sockaddrkZCQDgQDfQDb@Base 15 + _D3std6socket23UnknownAddressReference6__initZ@Base 15 + _D3std6socket23UnknownAddressReference6__vtblZ@Base 15 + _D3std6socket23UnknownAddressReference7__ClassZ@Base 15 + _D3std6socket23UnknownAddressReference7nameLenMxFNaNbNdNiNfZk@Base 15 + _D3std6socket24SocketParameterException6__initZ@Base 15 + _D3std6socket24SocketParameterException6__vtblZ@Base 15 + _D3std6socket24SocketParameterException7__ClassZ@Base 15 + _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDlQDkQDg@Base 15 + _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDlQDkQDg@Base 15 + _D3std6socket25_sharedStaticCtor_L291_C1FZv@Base 15 + _D3std6socket25_sharedStaticDtor_L326_C1FNbNiZv@Base 15 + _D3std6socket6Linger2onMNgFNaNbNcNdNiNjNfZNgi@Base 15 + _D3std6socket6Linger4timeMNgFNaNbNcNdNiNjNfZNgi@Base 15 + _D3std6socket6Linger6__initZ@Base 15 + _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsKCQCiQCh7AddressZl@Base 15 + _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsZl@Base 15 + _D3std6socket6Socket11receiveFromMFNfMAvKCQBoQBn7AddressZl@Base 15 + _D3std6socket6Socket11receiveFromMFNfMAvZl@Base 15 + _D3std6socket6Socket12getErrorTextMFNfZAya@Base 15 + _D3std6socket6Socket12localAddressMFNdNeZCQBoQBn7Address@Base 15 + _D3std6socket6Socket12setKeepAliveMFNeiiZv@Base 15 + _D3std6socket6Socket13addressFamilyMFNdNfZEQBpQBo13AddressFamily@Base 15 + _D3std6socket6Socket13createAddressMFNaNbNfZCQBrQBq7Address@Base 15 + _D3std6socket6Socket13remoteAddressMFNdNeZCQBpQBo7Address@Base 15 + _D3std6socket6Socket4bindMFNeCQBcQBb7AddressZv@Base 15 + _D3std6socket6Socket4sendMFNeMAxvEQBgQBf11SocketFlagsZl@Base 15 + _D3std6socket6Socket4sendMFNfMAxvZl@Base 15 + _D3std6socket6Socket5closeMFNbNiNlNeZv@Base 15 + _D3std6socket6Socket6__ctorMFNaNbNiNfEQBkQBj8socket_tEQCaQBz13AddressFamilyZCQCxQCwQCs@Base 15 + _D3std6socket6Socket6__ctorMFNaNbNiNfZCQBlQBkQBg@Base 15 + _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeEQCtQCs12ProtocolTypeZCQDpQDoQDk@Base 15 + _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeMAxaZCQCyQCxQCt@Base 15 + _D3std6socket6Socket6__ctorMFNfEQBeQBd13AddressFamilyEQCaQBz10SocketTypeZCQCuQCtQCp@Base 15 + _D3std6socket6Socket6__ctorMFNfMxSQBgQBf11AddressInfoZCQCbQCaQBw@Base 15 + _D3std6socket6Socket6__dtorMFNbNiNlNfZv@Base 15 + _D3std6socket6Socket6__initZ@Base 15 + _D3std6socket6Socket6__vtblZ@Base 15 + _D3std6socket6Socket6_closeFNbNiEQBfQBe8socket_tZv@Base 15 + _D3std6socket6Socket6acceptMFNeZCQBfQBeQBa@Base 15 + _D3std6socket6Socket6handleMxFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 + _D3std6socket6Socket6listenMFNeiZv@Base 15 + _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtPSQBzQBy7TimeValZi@Base 15 + _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtS4core4time8DurationZi@Base 15 + _D3std6socket6Socket6selectFNfCQBdQBc9SocketSetQrQtZi@Base 15 + _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsCQCcQCb7AddressZl@Base 15 + _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsZl@Base 15 + _D3std6socket6Socket6sendToMFNfMAxvCQBiQBh7AddressZl@Base 15 + _D3std6socket6Socket6sendToMFNfMAxvZl@Base 15 + _D3std6socket6Socket7__ClassZ@Base 15 + _D3std6socket6Socket7connectMFNeCQBfQBe7AddressZv@Base 15 + _D3std6socket6Socket7isAliveMxFNdNeZb@Base 15 + _D3std6socket6Socket7receiveMFNeMAvEQBiQBh11SocketFlagsZl@Base 15 + _D3std6socket6Socket7receiveMFNfMAvZl@Base 15 + _D3std6socket6Socket7releaseMFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 + _D3std6socket6Socket7setSockMFNfEQBfQBe8socket_tZv@Base 15 + _D3std6socket6Socket8blockingMFNdNebZv@Base 15 + _D3std6socket6Socket8blockingMxFNbNdNiNeZb@Base 15 + _D3std6socket6Socket8capToIntFNbNiNfmZi@Base 15 + _D3std6socket6Socket8hostNameFNdNeZAya@Base 15 + _D3std6socket6Socket8shutdownMFNbNiNeEQBkQBj14SocketShutdownZv@Base 15 + _D3std6socket6Socket9acceptingMFNaNbNfZCQBmQBlQBh@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJS4core4time8DurationZv@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJSQDdQDc6LingerZi@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJiZi@Base 15 + _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZi@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionS4core4time8DurationZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionSQDcQDb6LingerZv@Base 15 + _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptioniZv@Base 15 + _D3std6socket7Address10setNameLenMFNfkZv@Base 15 + _D3std6socket7Address12toAddrStringMxFNfZAya@Base 15 + _D3std6socket7Address12toHostStringMxFNebZAya@Base 15 + _D3std6socket7Address12toPortStringMxFNfZAya@Base 15 + _D3std6socket7Address13addressFamilyMxFNaNbNdNiNfZEQBxQBw13AddressFamily@Base 15 + _D3std6socket7Address15toServiceStringMxFNebZAya@Base 15 + _D3std6socket7Address16toHostNameStringMxFNfZAya@Base 15 + _D3std6socket7Address19toServiceNameStringMxFNfZAya@Base 15 + _D3std6socket7Address6__initZ@Base 15 + _D3std6socket7Address6__vtblZ@Base 15 + _D3std6socket7Address7__ClassZ@Base 15 + _D3std6socket7Address8toStringMxFNfZAya@Base 15 + _D3std6socket7Service16getServiceByNameMFNbNeMAxaMQeZb@Base 15 + _D3std6socket7Service16getServiceByPortMFNbNetMAxaZb@Base 15 + _D3std6socket7Service6__initZ@Base 15 + _D3std6socket7Service6__vtblZ@Base 15 + _D3std6socket7Service7__ClassZ@Base 15 + _D3std6socket7Service8populateMFNaNbPS4core3sys5posix5netdb7serventZv@Base 15 + _D3std6socket7TimeVal12microsecondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 + _D3std6socket7TimeVal6__initZ@Base 15 + _D3std6socket7TimeVal7secondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 + _D3std6socket8Protocol17getProtocolByNameMFNbNeMAxaZb@Base 15 + _D3std6socket8Protocol17getProtocolByTypeMFNbNeEQBuQBt12ProtocolTypeZb@Base 15 + _D3std6socket8Protocol6__initZ@Base 15 + _D3std6socket8Protocol6__vtblZ@Base 15 + _D3std6socket8Protocol7__ClassZ@Base 15 + _D3std6socket8Protocol8populateMFNaNbPS4core3sys5posix5netdb8protoentZv@Base 15 + _D3std6socket8_lasterrFNbNiNfZi@Base 15 + _D3std6socket8socket_t6__initZ@Base 15 + _D3std6socket9SocketSet14setMinCapacityMFNaNbNfmZv@Base 15 + _D3std6socket9SocketSet3addMFNaNbNeEQBiQBh8socket_tZv@Base 15 + _D3std6socket9SocketSet3addMFNaNbNfCQBiQBh6SocketZv@Base 15 + _D3std6socket9SocketSet3maxMxFNaNbNdNiNfZk@Base 15 + _D3std6socket9SocketSet4maskFNaNbNiNfkZl@Base 15 + _D3std6socket9SocketSet5isSetMxFNaNbNiNfCQBnQBm6SocketZi@Base 15 + _D3std6socket9SocketSet5isSetMxFNaNbNiNfEQBnQBm8socket_tZi@Base 15 + _D3std6socket9SocketSet5resetMFNaNbNiNfZv@Base 15 + _D3std6socket9SocketSet6__ctorMFNaNbNfmZCQBnQBmQBi@Base 15 + _D3std6socket9SocketSet6__initZ@Base 15 + _D3std6socket9SocketSet6__vtblZ@Base 15 + _D3std6socket9SocketSet6removeMFNaNbNfCQBlQBk6SocketZv@Base 15 + _D3std6socket9SocketSet6removeMFNaNbNfEQBlQBk8socket_tZv@Base 15 + _D3std6socket9SocketSet6resizeMFNaNbNfmZv@Base 15 + _D3std6socket9SocketSet7__ClassZ@Base 15 + _D3std6socket9SocketSet7selectnMxFNaNbNiNfZi@Base 15 + _D3std6socket9SocketSet8capacityMxFNaNbNdNiNfZm@Base 15 + _D3std6socket9SocketSet8toFd_setMFNaNbNiNeZPS4core3sys5posixQk6select6fd_set@Base 15 + _D3std6socket9SocketSet9lengthForFNaNbNiNfmZm@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfCQBhQBg7AddressZCQBxQBwQBs@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 + _D3std6socket9TcpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 + _D3std6socket9TcpSocket6__initZ@Base 15 + _D3std6socket9TcpSocket6__vtblZ@Base 15 + _D3std6socket9TcpSocket7__ClassZ@Base 15 + _D3std6socket9UdpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 + _D3std6socket9UdpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 + _D3std6socket9UdpSocket6__initZ@Base 15 + _D3std6socket9UdpSocket6__vtblZ@Base 15 + _D3std6socket9UdpSocket7__ClassZ@Base 15 + _D3std6socket__T14getAddressInfoTAxaTEQBkQBj13AddressFamilyZQBsFNfMQBiMQBmMQBmZASQDbQDa11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTAxaTEQBkQBj16AddressInfoFlagsZQBvFNfMQBlMQBpMQBpZASQDeQDd11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTAxaZQvFNfMQkMQnZASQBxQBw11AddressInfo@Base 15 + _D3std6socket__T14getAddressInfoTEQBgQBf16AddressInfoFlagsZQBrFNfMAxaMQBlZASQCwQCv11AddressInfo@Base 15 + _D3std6stdint11__moduleRefZ@Base 15 + _D3std6stdint12__ModuleInfoZ@Base 15 + _D3std6string11__moduleRefZ@Base 15 + _D3std6string12__ModuleInfoZ@Base 15 + _D3std6string14makeTransTableFNaNbNiNfMAxaMQeZG256a@Base 15 + _D3std6string15StringException6__initZ@Base 15 + _D3std6string15StringException6__vtblZ@Base 15 + _D3std6string15StringException7__ClassZ@Base 15 + _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 + _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 + _D3std6string6abbrevFNaNfAAyaZHQfQh@Base 15 + _D3std6string7soundexFNaNbNfMAxaNkMAaZQd@Base 15 + _D3std6string9makeTransFNaNbNeMAxaMQeZAya@Base 15 + _D3std6string9toStringzFNaNbNeMAxaZPya@Base 15 + _D3std6string__T10stripRightTAyaZQrFNaNbNiNfQpZQs@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi0Z__TQDbTAxaTaZQDlFNaNfQoQqZl@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTAxaTaZQDlFNaNbNiNfQsQuZl@Base 15 + _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTQBvTaZQDlFNaNbNiNfQCnAxaZl@Base 15 + _D3std6string__T11lastIndexOfTaZQqFNaNiNfAxaIwIEQBu8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf11__xopEqualsMxFKxSQEpQEo__TQEkVQDzi0TQDjZQEyZb@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf4saveMFNaNbNdNiNfZSQEpQEo__TQEkVQDzi0TQDjZQEy@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5emptyMFNaNbNdNiNfZb@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5frontMFNaNbNdNiNfZQCq@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__ctorMFNaNbNcNiNfQCqZSQEuQEt__TQEpVQEei0TQDoZQFd@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf8popFrontMFNaNbNiNfZv@Base 15 + _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf9__xtoHashFNbNeKxSQEoQEn__TQEjVQDyi0TQDiZQExZm@Base 15 + _D3std6string__T12lineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TyaZQDeFNaNbNiNfQCfZSQEjQEi__T12LineSplitterVQEei0TQDoZQz@Base 15 + _D3std6string__T14representationTxaZQuFNaNbNiNfAxaZAxh@Base 15 + _D3std6string__T14representationTyaZQuFNaNbNiNfAyaZAyh@Base 15 + _D3std6string__T5chompTAxaZQlFNaNbNiNfQpZQs@Base 15 + _D3std6string__T5stripTAyaZQlFNaNbNiNfQpZQs@Base 15 + _D3std6string__T7indexOfTAxaTaZQpFNaNbNiNfQrQtZl@Base 15 + _D3std6string__T7indexOfTAxaTaZQpFNaNfQnQpIEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T7indexOfTAyaTaZQpFNaNbNiNfQrAxaZl@Base 15 + _D3std6string__T7indexOfTaZQlFNaNbNiNfMAxawEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T8_indexOfTAxaZQoFNaNbNiNfQpwEQBr8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 + _D3std6string__T8_indexOfTAxaZQoFQhwEQBj8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZ13trustedmemchrFNaNbNiNeQDqaZl@Base 15 + _D3std6string__T9isNumericTAxaZQpFNaNbNiNfQpbZb@Base 15 + _D3std6string__T9isNumericTAxaZQpFQhbZ__T8asciiCmpTSQBy3utf__T10byCodeUnitTQBwZQrFQCdZ14ByCodeUnitImplZQCkFNaNbNiNfQCmAyaZb@Base 15 + _D3std6string__T9soundexerTAxaZQpFNaNbNiNfQpZG4a@Base 15 + _D3std6string__T9soundexerTAxaZQpFQhZ3dexyAa@Base 15 + _D3std6string__T9stripLeftTAyaZQpFNaNbNiNfQpZQs@Base 15 + _D3std6system11__moduleRefZ@Base 15 + _D3std6system12__ModuleInfoZ@Base 15 + _D3std6system26instructionSetArchitectureyEQBpQBo3ISA@Base 15 + _D3std6system2OS6__initZ@Base 15 + _D3std6system2osyEQqQo2OS@Base 15 + _D3std6system6endianyEQuQs6Endian@Base 15 + _D3std6traits11__moduleRefZ@Base 15 + _D3std6traits11dip1000TestFNaNbNiNfiZi@Base 15 + _D3std6traits12__ModuleInfoZ@Base 15 + _D3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D3std6traits__T18extractAttribFlagsVAyaa7_6e6f7468726f77VQva5_406e6f6763VQBla5_4073616665ZQCxFNaNbNiNfZEQDzQDy17FunctionAttribute@Base 15 + _D3std7complex11__moduleRefZ@Base 15 + _D3std7complex12__ModuleInfoZ@Base 15 + _D3std7complex4expiFNaNbNiNeeZSQBdQBc__T7ComplexTeZQl@Base 15 + _D3std7complex9coshisinhFNaNbNiNfeZSQBiQBh__T7ComplexTeZQl@Base 15 + _D3std7complex__T7ComplexTeZQl11__xopEqualsMxFKxSQBvQBu__TQBpTeZQBvZb@Base 15 + _D3std7complex__T7ComplexTeZQl6__initZ@Base 15 + _D3std7complex__T7ComplexTeZQl8toNativeMFNaNbNiNfZE4core4stdc6config16__c_complex_real@Base 15 + _D3std7complex__T7ComplexTeZQl8toStringMxFNaNfZAya@Base 15 + _D3std7complex__T7ComplexTeZQl8toStringMxFNfZ__T19trustedAssumeUniqueTAaZQzFNaNbNiNeQoZAya@Base 15 + _D3std7complex__T7ComplexTeZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTeZQBuZm@Base 15 + _D3std7complex__T7ComplexTeZQl__T6__ctorHTeHTeZQoMFNaNbNcNiNfxexeZSQCnQCm__TQChTeZQCn@Base 15 + _D3std7complex__T7ComplexTeZQl__T8opEqualsHTeZQnMxFNaNbNiNfSQCgQCf__TQCaTeZQCgZb@Base 15 + _D3std7complex__T7ComplexTeZQl__T8toStringTDFNaNbNfAxaZvTaZQBaMxFNaNfMQBbMKxSQCx6format4spec__T10FormatSpecTaZQpZv@Base 15 + _D3std7numeric11__moduleRefZ@Base 15 + _D3std7numeric12__ModuleInfoZ@Base 15 + _D3std7numeric16CustomFloatFlags6__initZ@Base 15 + _D3std7numeric18decimalToFactorialFNaNbNiNfmKG21hZm@Base 15 + _D3std7numeric20isCorrectCustomFloatFNaNbNiNfkkEQBuQBt16CustomFloatFlagsZb@Base 15 + _D3std7numeric3Fft4sizeMxFNdZm@Base 15 + _D3std7numeric3Fft6__ctorMFAfZCQBdQBcQx@Base 15 + _D3std7numeric3Fft6__ctorMFmZCQBcQBbQw@Base 15 + _D3std7numeric3Fft6__initZ@Base 15 + _D3std7numeric3Fft6__vtblZ@Base 15 + _D3std7numeric3Fft7__ClassZ@Base 15 + _D3std7numeric__T13oppositeSignsTyeTeZQvFNaNbNiNfyeeZb@Base 15 + _D3std7numeric__T6StrideTAfZQl11__xopEqualsMxFKxSQBvQBu__TQBpTQBlZQBxZb@Base 15 + _D3std7numeric__T6StrideTAfZQl11doubleStepsMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl4saveMFNaNbNdNiNfZSQBvQBu__TQBpTQBlZQBx@Base 15 + _D3std7numeric__T6StrideTAfZQl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std7numeric__T6StrideTAfZQl5frontMFNaNbNdNiNfZf@Base 15 + _D3std7numeric__T6StrideTAfZQl6__ctorMFNaNbNcNiNfQymZSQCaQBz__TQBuTQBqZQCc@Base 15 + _D3std7numeric__T6StrideTAfZQl6__initZ@Base 15 + _D3std7numeric__T6StrideTAfZQl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std7numeric__T6StrideTAfZQl6nStepsMFNaNbNdNiNfmZm@Base 15 + _D3std7numeric__T6StrideTAfZQl6nStepsMxFNaNbNdNiNfZm@Base 15 + _D3std7numeric__T6StrideTAfZQl7opIndexMFNaNbNiNfmZf@Base 15 + _D3std7numeric__T6StrideTAfZQl7popHalfMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std7numeric__T6StrideTAfZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTQBkZQBwZm@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBpFNaNbNiNfMQBqxexeMQBkZe@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFMQtxexeZ18__lambda_L1165_C30FNaNbNiNfeeZb@Base 15 + _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFNaNbNiNfMQBbxexeZe@Base 15 + _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFMQBixexexexeMQBgZ18secant_interpolateFNaNbNiNfeeeeZe@Base 15 + _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFNaNbNiNfMQBqxexexexeMQBoZSQDk8typecons__T5TupleTeTeTeTeZQp@Base 15 + _D3std7process10setCLOEXECFNbNiibZv@Base 15 + _D3std7process10spawnShellFNeMAxaMxHAyaAyaSQBpQBo6ConfigMQBbMQzZCQClQCk3Pid@Base 15 + _D3std7process10spawnShellFNeMAxaSQBg5stdio4FileQpQrMxHAyaAyaSQCiQCh6ConfigMQBuMQzZCQDeQDd3Pid@Base 15 + _D3std7process10toAStringzFIAAyaZPPxa@Base 15 + _D3std7process11__moduleRefZ@Base 15 + _D3std7process11environment13opIndexAssignFNeNkMNgAaMAxaZANga@Base 15 + _D3std7process11environment3getFNfMAxaAyaZQe@Base 15 + _D3std7process11environment4toAAFNeZHAyaQd@Base 15 + _D3std7process11environment6__initZ@Base 15 + _D3std7process11environment6__vtblZ@Base 15 + _D3std7process11environment6removeFNbNiNeMAxaZv@Base 15 + _D3std7process11environment7__ClassZ@Base 15 + _D3std7process11environment7getImplFNeMAxaMDFNfQiZvZv@Base 15 + _D3std7process11environment7opIndexFNfMAxaZAya@Base 15 + _D3std7process11environment__T14cachedToStringTaZQtFNbNfMAxaZAya@Base 15 + _D3std7process11environment__T14cachedToStringTaZQtFNfMAxaZ10lastResultAya@Base 15 + _D3std7process11nativeShellFNaNbNdNiNfZAya@Base 15 + _D3std7process11pipeProcessFNfMAxAaEQBiQBh8RedirectxHAyaAyaSQCgQCf6ConfigMAxaZSQCzQCy12ProcessPipes@Base 15 + _D3std7process11pipeProcessFNfMAxaEQBhQBg8RedirectxHAyaAyaSQCfQCe6ConfigMQBqZSQCyQCx12ProcessPipes@Base 15 + _D3std7process11shellSwitchyAa@Base 15 + _D3std7process12ProcessPipes11__fieldDtorMFNeZv@Base 15 + _D3std7process12ProcessPipes11__xopEqualsMxFKxSQBtQBsQBnZb@Base 15 + _D3std7process12ProcessPipes15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std7process12ProcessPipes3pidMFNbNdNfZCQBoQBn3Pid@Base 15 + _D3std7process12ProcessPipes5stdinMFNbNdNfZSQBq5stdio4File@Base 15 + _D3std7process12ProcessPipes6__initZ@Base 15 + _D3std7process12ProcessPipes6stderrMFNbNdNfZSQBr5stdio4File@Base 15 + _D3std7process12ProcessPipes6stdoutMFNbNdNfZSQBr5stdio4File@Base 15 + _D3std7process12ProcessPipes8opAssignMFNcNjNeSQBsQBrQBmZQl@Base 15 + _D3std7process12ProcessPipes9__xtoHashFNbNeKxSQBsQBrQBmZm@Base 15 + _D3std7process12__ModuleInfoZ@Base 15 + _D3std7process12executeShellFNfMAxaxHAyaAyaSQBqQBp6ConfigmMQBbQzZSQCm8typecons__T5TupleTiVQCba6_737461747573TQCuVQCya6_6f7574707574ZQBz@Base 15 + _D3std7process12spawnProcessFNeMAxAaxHAyaAyaSQBrQBq6ConfigMAxaZCQCkQCj3Pid@Base 15 + _D3std7process12spawnProcessFNeMAxaSQBi5stdio4FileQpQrxHAyaAyaSQCjQCi6ConfigMQBtZCQDcQDb3Pid@Base 15 + _D3std7process12spawnProcessFNeMAxaxHAyaAyaSQBqQBp6ConfigMQBaZCQCjQCi3Pid@Base 15 + _D3std7process12spawnProcessFNfMAxAaSQBj5stdio4FileQpQrxHAyaAyaSQCkQCj6ConfigMxQBtZCQDeQDd3Pid@Base 15 + _D3std7process12thisThreadIDFNbNdNiNeZm@Base 15 + _D3std7process13charAllocatorFNaNbNfmZAa@Base 15 + _D3std7process13searchPathForFNfMAxaZAya@Base 15 + _D3std7process13thisProcessIDFNbNdNiNeZi@Base 15 + _D3std7process14uniqueTempPathFNfZAya@Base 15 + _D3std7process16ProcessException12newFromErrnoFAyaQdmZCQCbQCaQBv@Base 15 + _D3std7process16ProcessException12newFromErrnoFiAyaQdmZCQCcQCbQBw@Base 15 + _D3std7process16ProcessException6__initZ@Base 15 + _D3std7process16ProcessException6__vtblZ@Base 15 + _D3std7process16ProcessException7__ClassZ@Base 15 + _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDeQDdQCy@Base 15 + _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDeQDdQCy@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ12abortOnErrorFNbNiiEQEdQEc13InternalErroriZv@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ5getFDFNfKQCfZi@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ9forkChildMFNbNiZ11execProcessMFZ9closefromMFiZ17tryGlibcClosefromFNbNiiZb@Base 15 + _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZCQDjQDi3Pid@Base 15 + _D3std7process18escapeShellCommandFNaNfAxAaXAya@Base 15 + _D3std7process19escapePosixArgumentFNaNbNeMAxaZAya@Base 15 + _D3std7process19escapeShellFileNameFNaNbNeMAxaZAya@Base 15 + _D3std7process20escapeShellArgumentsFNaNbNeAxAaX9allocatorMFNaNbNfmZAa@Base 15 + _D3std7process20escapeShellArgumentsFNaNbNeAxAaXAya@Base 15 + _D3std7process21escapeWindowsArgumentFNaNbNeMAxaZAya@Base 15 + _D3std7process24escapeShellCommandStringFNaNfNkMAyaZQe@Base 15 + _D3std7process25escapeWindowsShellCommandFNaNfMAxaZAya@Base 15 + _D3std7process3Pid11performWaitMFNebZi@Base 15 + _D3std7process3Pid6__ctorMFNaNbNfibZCQBjQBiQBd@Base 15 + _D3std7process3Pid6__initZ@Base 15 + _D3std7process3Pid6__vtblZ@Base 15 + _D3std7process3Pid7__ClassZ@Base 15 + _D3std7process3Pid8osHandleMFNaNbNdNiNfZi@Base 15 + _D3std7process3Pid9processIDMxFNaNbNdNfZi@Base 15 + _D3std7process4Pipe11__fieldDtorMFNeZv@Base 15 + _D3std7process4Pipe11__xopEqualsMxFKxSQBkQBjQBeZb@Base 15 + _D3std7process4Pipe15__fieldPostblitMFNaNbNiNlNeZv@Base 15 + _D3std7process4Pipe5closeMFNfZv@Base 15 + _D3std7process4Pipe6__initZ@Base 15 + _D3std7process4Pipe7readEndMFNbNdNfZSQBj5stdio4File@Base 15 + _D3std7process4Pipe8opAssignMFNcNjNeSQBjQBiQBdZQl@Base 15 + _D3std7process4Pipe8writeEndMFNbNdNfZSQBk5stdio4File@Base 15 + _D3std7process4Pipe9__xtoHashFNbNeKxSQBjQBiQBdZm@Base 15 + _D3std7process4killFCQtQr3PidZv@Base 15 + _D3std7process4killFCQtQr3PidiZv@Base 15 + _D3std7process4pipeFNeZSQwQu4Pipe@Base 15 + _D3std7process4waitFNfCQvQt3PidZi@Base 15 + _D3std7process5execvFIAyaIAQfZi@Base 15 + _D3std7process6Config6__initZ@Base 15 + _D3std7process6browseFNbNiNfMAxaZ18__lambda_L4546_C33FNbNiNeZPa@Base 15 + _D3std7process6browseFNbNiNfMAxaZv@Base 15 + _D3std7process6execv_FIAyaIAQfZi@Base 15 + _D3std7process6execveFIAyaIAQfIQeZi@Base 15 + _D3std7process6execvpFIAyaIAQfZi@Base 15 + _D3std7process7executeFNfMAxAaxHAyaAyaSQBlQBk6ConfigmMAxaZSQCf8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process7executeFNfMAxaxHAyaAyaSQBkQBj6ConfigmMQBbZSQCe8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process7execve_FIAyaIAQfIQeZi@Base 15 + _D3std7process7execvp_FIAyaIAQfZi@Base 15 + _D3std7process7execvpeFIAyaIAQfIQeZi@Base 15 + _D3std7process7tryWaitFNfCQyQw3PidZSQBi8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg@Base 15 + _D3std7process8Redirect6__initZ@Base 15 + _D3std7process8execvpe_FIAyaIAQfIQeZi@Base 15 + _D3std7process9createEnvFxHAyaAyabZPxPa@Base 15 + _D3std7process9pipeShellFNfMAxaEQBeQBd8RedirectxHAyaAyaSQCcQCb6ConfigMQBqQyZSQCxQCw12ProcessPipes@Base 15 + _D3std7process9userShellFNdNfZAya@Base 15 + _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxAaZQBnFNeQlxHAyaAyaSQCtQCs6ConfigmMAxaZSQDn8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxaZQBmFNeQkxHAyaAyaSQCsQCr6ConfigmMQBkZSQDm8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 + _D3std7process__T11executeImplS_DQBfQBe9pipeShellFNfMAxaEQCdQCc8RedirectxHAyaAyaSQDbQDa6ConfigMQBqQyZSQDwQDv12ProcessPipesTQCsTQCbZQEkFNeQDgxQCqQCmmMQDsQDaZSQFz8typecons__T5TupleTiVQEda6_737461747573TQEwVQFaa6_6f7574707574ZQBz@Base 15 + _D3std7process__T12isExecutableTSQBf5range__T5chainTSQBz3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDyQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNbNiNeQFfZb@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg10spawnShellTAxaTAyaZQBtFNeMQpEQCsQCr8RedirectxHQBfAyaSQDqQDp6ConfigMQCeQCdZSQEmQEl12ProcessPipes@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxAaZQBsFNeMQmEQCrQCq8RedirectxHAyaAyaSQDpQDo6ConfigMAxaZSQEiQEh12ProcessPipes@Base 15 + _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxaZQBrFNeMQlEQCqQCp8RedirectxHAyaAyaSQDoQDn6ConfigMQCaZSQEhQEg12ProcessPipes@Base 15 + _D3std7process__T23escapePosixArgumentImplS_DQBrQBq13charAllocatorFNaNbNfmZAaZQCjFNaNbNfMAxaZQs@Base 15 + _D3std7process__T25escapeWindowsArgumentImplS_DQBtQBs13charAllocatorFNaNbNfmZAaZQClFNaNbNfMAxaZQs@Base 15 + _D3std7signals11__moduleRefZ@Base 15 + _D3std7signals12__ModuleInfoZ@Base 15 + _D3std7signals6linkinFZv@Base 15 + _D3std7sumtype11__moduleRefZ@Base 15 + _D3std7sumtype12__ModuleInfoZ@Base 15 + _D3std7sumtype14MatchException6__ctorMFNaNbNiNfAyaQdmZCQCbQCaQBv@Base 15 + _D3std7sumtype14MatchException6__initZ@Base 15 + _D3std7sumtype14MatchException6__vtblZ@Base 15 + _D3std7sumtype14MatchException7__ClassZ@Base 15 + _D3std7sumtype4This6__initZ@Base 15 + _D3std7variant11__moduleRefZ@Base 15 + _D3std7variant12__ModuleInfoZ@Base 15 + _D3std7variant15FakeComplexReal11__xopEqualsMxFKxSQBwQBvQBqZb@Base 15 + _D3std7variant15FakeComplexReal6__initZ@Base 15 + _D3std7variant15FakeComplexReal9__xtoHashFNbNeKxSQBvQBuQBpZm@Base 15 + _D3std7variant16VariantException6__ctorMFAyaZCQBsQBrQBm@Base 15 + _D3std7variant16VariantException6__ctorMFC8TypeInfoQkZCQCbQCaQBv@Base 15 + _D3std7variant16VariantException6__initZ@Base 15 + _D3std7variant16VariantException6__vtblZ@Base 15 + _D3std7variant16VariantException7__ClassZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp10__postblitMFZv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp11__xopEqualsMxFKxSQBzQBy__TQBtVmi32ZQCcZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp4typeMxFNbNdNeZC8TypeInfo@Base 15 + _D3std7variant__T8VariantNVmi32ZQp5opCmpMxFKxSQBsQBr__TQBmVmi32ZQBvZi@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6__dtorMFNfZv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6lengthMFNdZm@Base 15 + _D3std7variant__T8VariantNVmi32ZQp6toHashMxFNbNfZm@Base 15 + _D3std7variant__T8VariantNVmi32ZQp8hasValueMxFNaNbNdNiNfZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp8toStringMFZAya@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T10convertsToTSQBx11concurrency3TidZQBjMxFNdZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T3getTSQBp11concurrency3TidZQBbMNgFNdZNgSQCxQBiQy@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T4peekTvZQiMNgFNbNdNfZPNgv@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T5opCmpTSQBrQBq__TQBlVmi32ZQBuZQBeMFQBcZi@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T6__ctorTSQBs11concurrency3TidZQBeMFNcQBdZSQCzQCy__TQCtVmi32ZQDc@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerHTvZQmFEQBzQBy__TQBtVmi32ZQCc4OpIDPG32hPvZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ10tryPuttingFPQCxC8TypeInfoQBeZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ6getPtrFNaNbNiQrZPQDb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ7compareFPQCtQeQByZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZl@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opAssignTSQBu11concurrency3TidZQBgMFQBbZSQCzQCy__TQCtVmi32ZQDc@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTSQBuQBt__TQBoVmi32ZQBxZQBhMxFKQBeZb@Base 15 + _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTxSQBvQBu__TQBpVmi32ZQByZQBiMxFKxQBfZb@Base 15 + _D3std7windows7charset11__moduleRefZ@Base 15 + _D3std7windows7charset12__ModuleInfoZ@Base 15 + _D3std7windows8registry11__moduleRefZ@Base 15 + _D3std7windows8registry12__ModuleInfoZ@Base 15 + _D3std7windows8syserror11__moduleRefZ@Base 15 + _D3std7windows8syserror12__ModuleInfoZ@Base 15 + _D3std8bitmanip10myToStringFNaNfmZAya@Base 15 + _D3std8bitmanip11__moduleRefZ@Base 15 + _D3std8bitmanip12__ModuleInfoZ@Base 15 + _D3std8bitmanip15getBitsForAlignFmZm@Base 15 + _D3std8bitmanip8BitArray13opIndexAssignMFNaNbNibmZb@Base 15 + _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibZv@Base 15 + _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibmmZv@Base 15 + _D3std8bitmanip8BitArray3dimMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip8BitArray3dupMxFNaNbNdZSQBlQBkQBe@Base 15 + _D3std8bitmanip8BitArray4flipMFNaNbNiZv@Base 15 + _D3std8bitmanip8BitArray4flipMFNaNbNimZv@Base 15 + _D3std8bitmanip8BitArray4sortMFNaNbNdNiNjZSQBpQBoQBi@Base 15 + _D3std8bitmanip8BitArray5countMxFNaNbNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray5opCmpMxFNaNbNiSQBmQBlQBfZi@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcIAbZSQBqQBpQBj@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcNiAvmZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray6__ctorMFNaNbNcNimPmZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray6__initZ@Base 15 + _D3std8bitmanip8BitArray6lengthMFNaNbNdmZm@Base 15 + _D3std8bitmanip8BitArray6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip8BitArray6toHashMxFNaNbNiZm@Base 15 + _D3std8bitmanip8BitArray7bitsSetMxFNaNbNdZSQBp5range__T5chainTSQCj9algorithm9iteration__T6joinerTSQDsQBjQBc__T9MapResultSQEpQEoQEiQEcMxFNbNdZ18__lambda_L2658_C23TSQGfQDwQDp__T12FilterResultSQHgQHfQGzQGtMxFNbNdZ18__lambda_L2657_C26TSQIwQHh__T4iotaTmTmZQkFmmZ6ResultZQDmZQGdZQHcFQGyZQyTSQKxQIoQIh__TQEsSQLnQLmQLgQLaMxFNbNdZ18__lambda_L2661_C26TSQNdQLo__TQEhTmTxmZQEqFmxmZQEiZQHqZQMkFQMhQDwZQFb@Base 15 + _D3std8bitmanip8BitArray7endBitsMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray7endMaskMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip8BitArray7opApplyMFMDFKbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMFMDFmKbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMxFMDFbZiZi@Base 15 + _D3std8bitmanip8BitArray7opApplyMxFMDFmbZiZi@Base 15 + _D3std8bitmanip8BitArray7opIndexMxFNaNbNimZb@Base 15 + _D3std8bitmanip8BitArray7reverseMFNaNbNdNiNjZSQBsQBrQBl@Base 15 + _D3std8bitmanip8BitArray8lenToDimFNaNbNiNfmZm@Base 15 + _D3std8bitmanip8BitArray8opEqualsMxFNaNbNiKxSQBrQBqQBkZb@Base 15 + _D3std8bitmanip8BitArray9fullWordsMxFNaNbNdNiNlNfZm@Base 15 + _D3std8bitmanip__T12countBitsSetTmZQrFNaNbNiNfxmZk@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTaVmi1ZQBaFNaNbNiNeG1hZa@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTbVmi1ZQBaFNaNbNiNeG1hZb@Base 15 + _D3std8bitmanip__T17bigEndianToNativeThVmi1ZQBaFNaNbNiNeG1hZh@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTiVmi4ZQBaFNaNbNiNeG4hZi@Base 15 + _D3std8bitmanip__T17bigEndianToNativeTlVmi8ZQBaFNaNbNiNeG8hZl@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTkVmi4ZQBdFNaNbNiNeG4hZk@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTmVmi8ZQBdFNaNbNiNeG8hZm@Base 15 + _D3std8bitmanip__T20littleEndianToNativeTtVmi2ZQBdFNaNbNiNeG2hZt@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTkZQzFNaNbNiNexkZG4h@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTmZQzFNaNbNiNexmZG8h@Base 15 + _D3std8bitmanip__T20nativeToLittleEndianTtZQzFNaNbNiNextZG2h@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMFNaNbNdNiNfbZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMFNaNbNdNiNftZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMxFNaNbNdNiNfZt@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMFNaNbNdNiNfmZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMFNaNbNdNiNfbZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMFNaNbNdNiNfhZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMxFNaNbNdNiNfZh@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMFNaNbNdNiNfkZv@Base 15 + _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMxFNaNbNdNiNfZk@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl4saveMxFNaNbNdNiNfZSQBxQBw__TQBqTmZQBw@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl5frontMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmZQBz@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8bitmanip__T7BitsSetTmZQl8popFrontMFNaNbNiNfZv@Base 15 + _D3std8compiler11__moduleRefZ@Base 15 + _D3std8compiler12__ModuleInfoZ@Base 15 + _D3std8compiler13version_majoryk@Base 15 + _D3std8compiler13version_minoryk@Base 15 + _D3std8compiler4nameyAa@Base 15 + _D3std8compiler6vendoryEQwQu6Vendor@Base 15 + _D3std8compiler7D_majoryk@Base 15 + _D3std8compiler7D_minoryk@Base 15 + _D3std8datetime11__moduleRefZ@Base 15 + _D3std8datetime12__ModuleInfoZ@Base 15 + _D3std8datetime4date10castToYearFNaNfiAyamZs@Base 15 + _D3std8datetime4date11__moduleRefZ@Base 15 + _D3std8datetime4date11_monthNamesyG12Aa@Base 15 + _D3std8datetime4date11lastDayLeapyG13i@Base 15 + _D3std8datetime4date11timeStringsyAAa@Base 15 + _D3std8datetime4date12__ModuleInfoZ@Base 15 + _D3std8datetime4date12cmpTimeUnitsFNaNfAyaQdZi@Base 15 + _D3std8datetime4date12getDayOfWeekFNaNbNiNfiZEQBsQBrQBl9DayOfWeek@Base 15 + _D3std8datetime4date13monthToStringFNaNfEQBnQBmQBg5MonthZAya@Base 15 + _D3std8datetime4date13monthsToMonthFNaNfiiZi@Base 15 + _D3std8datetime4date14lastDayNonLeapyG13i@Base 15 + _D3std8datetime4date14validTimeUnitsFNaNbNiNfAAyaXb@Base 15 + _D3std8datetime4date14yearIsLeapYearFNaNbNiNfiZb@Base 15 + _D3std8datetime4date15daysToDayOfWeekFNaNbNiNfEQBtQBsQBm9DayOfWeekQuZi@Base 15 + _D3std8datetime4date16cmpTimeUnitsCTFEFNaNbNiNfAyaQdZi@Base 15 + _D3std8datetime4date4Date10diffMonthsMxFNaNbNiNfSQBvQBuQBoQBmZi@Base 15 + _D3std8datetime4date4Date10endOfMonthMxFNaNbNdNfZSQBwQBvQBpQBn@Base 15 + _D3std8datetime4date4Date10isLeapYearMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date4Date11__invariantMxFNaNfZv@Base 15 + _D3std8datetime4date4Date11daysInMonthMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date4Date11fromISOWeekFNaNbNiNfshEQBwQBvQBp9DayOfWeekZSQCrQCqQCkQCi@Base 15 + _D3std8datetime4date4Date11isoWeekYearMxFNaNbNdNfZs@Base 15 + _D3std8datetime4date4Date11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date12__invariant0MxFNaNfZv@Base 15 + _D3std8datetime4date4Date12modJulianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 + _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZSQCaQBzQBtQBrQBpMxFNaNbNdNfZ14ISOWeekAndYear@Base 15 + _D3std8datetime4date4Date14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date14toSimpleStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 + _D3std8datetime4date4Date17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 + _D3std8datetime4date4Date3dayMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date3dayMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date4Date3maxFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 + _D3std8datetime4date4Date3minFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 + _D3std8datetime4date4Date4isADMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date4Date4yearMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date4yearMxFNaNbNdNiNfZs@Base 15 + _D3std8datetime4date4Date5monthMFNaNdNfEQBmQBlQBf5MonthZv@Base 15 + _D3std8datetime4date4Date5monthMxFNaNbNdNiNfZEQBsQBrQBl5Month@Base 15 + _D3std8datetime4date4Date5opCmpMxFNaNbNiNfSQBpQBoQBiQBgZi@Base 15 + _D3std8datetime4date4Date6__ctorMFNaNbNcNiNfiZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date4Date6__ctorMFNaNcNfiiiZSQBrQBqQBkQBi@Base 15 + _D3std8datetime4date4Date6__initZ@Base 15 + _D3std8datetime4date4Date6_validFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date4Date6yearBCMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date6yearBCMxFNaNdNfZt@Base 15 + _D3std8datetime4date4Date7isoWeekMxFNaNbNdNfZh@Base 15 + _D3std8datetime4date4Date8__xopCmpMxFKxSQBmQBlQBfQBdZi@Base 15 + _D3std8datetime4date4Date8_addDaysMFNaNbNcNiNjNflZSQBxQBwQBqQBo@Base 15 + _D3std8datetime4date4Date8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date4Date9dayOfWeekMxFNaNbNdNiNfZEQBwQBvQBp9DayOfWeek@Base 15 + _D3std8datetime4date4Date9dayOfYearMFNaNdNfiZv@Base 15 + _D3std8datetime4date4Date9dayOfYearMxFNaNbNdNiNfZt@Base 15 + _D3std8datetime4date4Date9julianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date4Date__T11toISOStringTSQBp5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T12setDayOfYearVbi0ZQtMFNaNbNiNfiZv@Base 15 + _D3std8datetime4date4Date__T12setDayOfYearVbi1ZQtMFNaNfiZv@Base 15 + _D3std8datetime4date4Date__T14toISOExtStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T14toSimpleStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date4Date__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQChQCgQCaQByZS4core4time8Duration@Base 15 + _D3std8datetime4date5Month6__initZ@Base 15 + _D3std8datetime4date6maxDayFNaNbNiNfiiZh@Base 15 + _D3std8datetime4date8DateTime10diffMonthsMxFNaNbNiNfSQBzQByQBsQBqZi@Base 15 + _D3std8datetime4date8DateTime10endOfMonthMxFNaNbNdNfZSQCaQBzQBtQBr@Base 15 + _D3std8datetime4date8DateTime10isLeapYearMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date8DateTime11_addSecondsMFNaNbNcNiNjNflZSQCfQCeQByQBw@Base 15 + _D3std8datetime4date8DateTime11daysInMonthMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime11isoWeekYearMxFNaNbNdNfZs@Base 15 + _D3std8datetime4date8DateTime11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime12modJulianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date8DateTime14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime14toSimpleStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 + _D3std8datetime4date8DateTime17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 + _D3std8datetime4date8DateTime3dayMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime3dayMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime3maxFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 + _D3std8datetime4date8DateTime3minFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 + _D3std8datetime4date8DateTime4hourMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime4hourMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime4isADMxFNaNbNdNiNfZb@Base 15 + _D3std8datetime4date8DateTime4yearMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime4yearMxFNaNbNdNiNfZs@Base 15 + _D3std8datetime4date8DateTime5monthMFNaNdNfEQBqQBpQBj5MonthZv@Base 15 + _D3std8datetime4date8DateTime5monthMxFNaNbNdNiNfZEQBwQBvQBp5Month@Base 15 + _D3std8datetime4date8DateTime5opCmpMxFNaNbNiNfSQBtQBsQBmQBkZi@Base 15 + _D3std8datetime4date8DateTime6__ctorMFNaNbNcNiNfSQBvQBuQBo4DateSQCkQCjQCd9TimeOfDayZSQDfQDeQCyQCw@Base 15 + _D3std8datetime4date8DateTime6__ctorMFNaNcNfiiiiiiZSQByQBxQBrQBp@Base 15 + _D3std8datetime4date8DateTime6__initZ@Base 15 + _D3std8datetime4date8DateTime6minuteMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6minuteMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime6secondMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6secondMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date8DateTime6yearBCMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime6yearBCMxFNaNdNfZs@Base 15 + _D3std8datetime4date8DateTime7isoWeekMxFNaNbNdNfZh@Base 15 + _D3std8datetime4date8DateTime8__xopCmpMxFKxSQBqQBpQBjQBhZi@Base 15 + _D3std8datetime4date8DateTime8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date8DateTime9dayOfWeekMxFNaNbNdNiNfZEQCaQBzQBt9DayOfWeek@Base 15 + _D3std8datetime4date8DateTime9dayOfYearMFNaNdNfiZv@Base 15 + _D3std8datetime4date8DateTime9dayOfYearMxFNaNbNdNiNfZt@Base 15 + _D3std8datetime4date8DateTime9julianDayMxFNaNbNdNiNfZl@Base 15 + _D3std8datetime4date8DateTime9timeOfDayMFNaNbNdNiNfSQByQBxQBr9TimeOfDayZv@Base 15 + _D3std8datetime4date8DateTime9timeOfDayMxFNaNbNdNiNfZSQCaQBzQBt9TimeOfDay@Base 15 + _D3std8datetime4date8DateTimeQoMFNaNbNdNiNfSQBqQBpQBj4DateZv@Base 15 + _D3std8datetime4date8DateTimeQoMxFNaNbNdNiNfZSQBsQBrQBl4Date@Base 15 + _D3std8datetime4date8DateTime__T11toISOStringTSQBt5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date8DateTime__T14toISOExtStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date8DateTime__T14toSimpleStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay11__invariantMxFNaNfZv@Base 15 + _D3std8datetime4date9TimeOfDay11_addSecondsMFNaNbNcNiNjNflZSQCgQCfQBzQBx@Base 15 + _D3std8datetime4date9TimeOfDay11toISOStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay12__invariant0MxFNaNfZv@Base 15 + _D3std8datetime4date9TimeOfDay14toISOExtStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay3maxFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date9TimeOfDay3minFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 + _D3std8datetime4date9TimeOfDay4hourMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay4hourMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay5opCmpMxFNaNbNiNfSQBuQBtQBnQBlZi@Base 15 + _D3std8datetime4date9TimeOfDay6__ctorMFNaNcNfiiiZSQBwQBvQBpQBn@Base 15 + _D3std8datetime4date9TimeOfDay6__initZ@Base 15 + _D3std8datetime4date9TimeOfDay6_validFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date9TimeOfDay6minuteMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay6minuteMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay6secondMFNaNdNfiZv@Base 15 + _D3std8datetime4date9TimeOfDay6secondMxFNaNbNdNiNfZh@Base 15 + _D3std8datetime4date9TimeOfDay8__xopCmpMxFKxSQBrQBqQBkQBiZi@Base 15 + _D3std8datetime4date9TimeOfDay8toStringMxFNaNbNfZAya@Base 15 + _D3std8datetime4date9TimeOfDay__T11toISOStringTSQBu5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay__T14toISOExtStringTSQBx5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 + _D3std8datetime4date9TimeOfDay__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQCmQClQCfQCdZS4core4time8Duration@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa4_64617973ZQBeFNaNfiEQCjQCiQCc5MonthiQBpmZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa5_686f757273ZQBgFNaNfiQBamZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa6_6d6f6e746873ZQBiFNaNfiQBcmZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa7_6d696e75746573ZQBkFNaNfiQBemZv@Base 15 + _D3std8datetime4date__T12enforceValidVAyaa7_7365636f6e6473ZQBkFNaNfiQBemZv@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D3std8datetime4date__T5validVAyaa4_64617973ZQwFNaNbNiNfiiiZb@Base 15 + _D3std8datetime4date__T5validVAyaa5_686f757273ZQyFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa6_6d6f6e746873ZQBaFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa7_6d696e75746573ZQBcFNaNbNiNfiZb@Base 15 + _D3std8datetime4date__T5validVAyaa7_7365636f6e6473ZQBcFNaNbNiNfiZb@Base 15 + _D3std8datetime7systime11__moduleRefZ@Base 15 + _D3std8datetime7systime12__ModuleInfoZ@Base 15 + _D3std8datetime7systime17unixTimeToStdTimeFNaNbNiNflZl@Base 15 + _D3std8datetime7systime19fracSecsToISOStringFNaNbNfiiZAya@Base 15 + _D3std8datetime7systime20DosFileTimeToSysTimeFNfkyCQBxQBw8timezone8TimeZoneZSQCxQCwQCq7SysTime@Base 15 + _D3std8datetime7systime20SysTimeToDosFileTimeFNfMSQBwQBvQBp7SysTimeZk@Base 15 + _D3std8datetime7systime5Clock6__initZ@Base 15 + _D3std8datetime7systime5Clock6__vtblZ@Base 15 + _D3std8datetime7systime5Clock7__ClassZ@Base 15 + _D3std8datetime7systime5Clock__T11currStdTimeVE4core4time9ClockTypei0ZQBmFNbNdNiNeZl@Base 15 + _D3std8datetime7systime5Clock__T8currTimeVE4core4time9ClockTypei0ZQBiFNbNfyCQCwQCv8timezone8TimeZoneZSQDwQDvQDp7SysTime@Base 15 + _D3std8datetime7systime7SysTime10diffMonthsMxFNbNlNfMSQCaQBzQBtQBoZi@Base 15 + _D3std8datetime7systime7SysTime10endOfMonthMxFNbNdNjNlNfZSQCeQCdQBxQBs@Base 15 + _D3std8datetime7systime7SysTime10isLeapYearMxFNbNdNlNfZb@Base 15 + _D3std8datetime7systime7SysTime10toTimeSpecMxFNaNbNlNfZS4core3sys5posix4time8timespec@Base 15 + _D3std8datetime7systime7SysTime11__xopEqualsMxFKxSQBwQBvQBpQBkZb@Base 15 + _D3std8datetime7systime7SysTime11daysInMonthMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime11dstInEffectMxFNbNdNjNlNfZb@Base 15 + _D3std8datetime7systime7SysTime11toISOStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime11toLocalTimeMxFNaNbNlNfZSQCdQCcQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone11dstInEffectMxFNbNiNlNflZb@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone11utcOffsetAtMxFNbNiNlNflZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone13_initTimeZoneyCQCiQChQCbQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__ctorMyFNaNfZyCQCiQChQCbQBwQBr@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__initZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6__vtblZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6hasDSTMxFNbNdNiNfZb@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone6opCallFNaNbNiNfZyCQCkQCjQCdQByQBt@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7__ClassZ@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7tzToUTCMxFNbNiNlNflZl@Base 15 + _D3std8datetime7systime7SysTime12InitTimeZone7utcToTZMxFNbNiNlNflZl@Base 15 + _D3std8datetime7systime7SysTime12fromUnixTimeFNaNbNflyCQCbQCa8timezone8TimeZoneZSQDbQDaQCuQCp@Base 15 + _D3std8datetime7systime7SysTime12modJulianDayMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime14toISOExtStringMxFNbNlNfiZAya@Base 15 + _D3std8datetime7systime7SysTime14toSimpleStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime17dayOfGregorianCalMFNbNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime17dayOfGregorianCalMxFNbNdNlNfZi@Base 15 + _D3std8datetime7systime7SysTime3dayMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime3dayMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime3maxFNaNbNdNfZSQBsQBrQBlQBg@Base 15 + _D3std8datetime7systime7SysTime3minFNaNbNdNfZSQBsQBrQBlQBg@Base 15 + _D3std8datetime7systime7SysTime4hourMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime4hourMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime4isADMxFNbNdNlNfZb@Base 15 + _D3std8datetime7systime7SysTime4toTMMxFNbNlNfZS4core3sys5posix4stdc4time2tm@Base 15 + _D3std8datetime7systime7SysTime4yearMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime4yearMxFNbNdNlNfZs@Base 15 + _D3std8datetime7systime7SysTime5monthMFNdNlNfEQBsQBr4date5MonthZv@Base 15 + _D3std8datetime7systime7SysTime5monthMxFNbNdNlNfZEQBwQBv4date5Month@Base 15 + _D3std8datetime7systime7SysTime5toUTCMxFNaNbNlNfZSQBwQBvQBpQBk@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNaNbNcNjNlNflNkMyCQCeQCd8timezone8TimeZoneZSQDeQDdQCxQCs@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date4DateNkMyCQCsQCr8timezone8TimeZoneZSQDsQDrQDlQDg@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date8DateTimeNkMyCQCwQCv8timezone8TimeZoneZSQDwQDvQDpQDk@Base 15 + _D3std8datetime7systime7SysTime6__ctorMFNcNjNlNfSQBvQBu4date8DateTimeS4core4time8DurationNkMyCQDoQDn8timezone8TimeZoneZSQEoQEnQEhQEc@Base 15 + _D3std8datetime7systime7SysTime6__initZ@Base 15 + _D3std8datetime7systime7SysTime6minuteMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6minuteMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime6secondMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6secondMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime6toHashMxFNaNbNiNlNfZm@Base 15 + _D3std8datetime7systime7SysTime6yearBCMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime6yearBCMxFNdNlNfZt@Base 15 + _D3std8datetime7systime7SysTime7adjTimeMFNbNdNlNflZv@Base 15 + _D3std8datetime7systime7SysTime7adjTimeMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime7isoWeekMxFNbNdNlNfZh@Base 15 + _D3std8datetime7systime7SysTime7stdTimeMFNaNbNdNlNflZv@Base 15 + _D3std8datetime7systime7SysTime7stdTimeMxFNaNbNdNiNlNfZl@Base 15 + _D3std8datetime7systime7SysTime8__xopCmpMxFKxSQBsQBrQBlQBgZi@Base 15 + _D3std8datetime7systime7SysTime8fracSecsMFNdNlNfS4core4time8DurationZv@Base 15 + _D3std8datetime7systime7SysTime8fracSecsMxFNbNdNlNfZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime8timezoneMFNaNbNdNlNfyCQCaQBzQBd8TimeZoneZv@Base 15 + _D3std8datetime7systime7SysTime8timezoneMxFNaNbNdNjNlNfZyCQCeQCdQBh8TimeZone@Base 15 + _D3std8datetime7systime7SysTime8toStringMxFNbNlNfZAya@Base 15 + _D3std8datetime7systime7SysTime9_timezoneMFNaNbNdNiNlNfNkMyCQCgQCf8timezone8TimeZoneZv@Base 15 + _D3std8datetime7systime7SysTime9_timezoneMxFNaNbNdNiNfZyCQCdQCc8timezone8TimeZone@Base 15 + _D3std8datetime7systime7SysTime9dayOfWeekMxFNbNdNlNfZEQCaQBz4date9DayOfWeek@Base 15 + _D3std8datetime7systime7SysTime9dayOfYearMFNdNlNfiZv@Base 15 + _D3std8datetime7systime7SysTime9dayOfYearMxFNbNdNlNfZt@Base 15 + _D3std8datetime7systime7SysTime9julianDayMxFNbNdNlNfZl@Base 15 + _D3std8datetime7systime7SysTime9toOtherTZMxFNaNbNlNfyCQCaQBz8timezone8TimeZoneZSQDaQCzQCtQCo@Base 15 + _D3std8datetime7systime7SysTime9toTimeValMxFNaNbNlNfZS4core3sys5posixQk4time7timeval@Base 15 + _D3std8datetime7systime7SysTime9utcOffsetMxFNbNdNjNlNfZS4core4time8Duration@Base 15 + _D3std8datetime7systime7SysTime__T10toUnixTimeTlZQpMxFNaNbNiNlNfZl@Base 15 + _D3std8datetime7systime7SysTime__T11toISOStringTSQBv5array__T8AppenderTAyaZQoZQBsMxFNlNfKQBpZv@Base 15 + _D3std8datetime7systime7SysTime__T14toISOExtStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpiZv@Base 15 + _D3std8datetime7systime7SysTime__T14toSimpleStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpZv@Base 15 + _D3std8datetime7systime7SysTime__T5opCmpZQhMxFNaNbNiNlNfKxSQCfQCeQByQBtZi@Base 15 + _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date4DateZQBaMxFNbNlNfZQBf@Base 15 + _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date8DateTimeZQBeMxFNbNlNfZQBj@Base 15 + _D3std8datetime7systime7SysTime__T8opAssignZQkMFNaNbNcNiNlNjNfKxSQClQCkQCeQBzZSQCzQCyQCsQCn@Base 15 + _D3std8datetime7systime7SysTime__T8opEqualsZQkMxFNaNbNiNlNfKxSQCiQChQCbQBwZb@Base 15 + _D3std8datetime7systime__T17stdTimeToUnixTimeTlZQwFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa4_64617973ZQBkFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa5_686f757273ZQBmFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_6d696e75746573ZQBqFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBqFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T19fracSecsToISOStringTSQBv5array__T8AppenderTAyaZQoZQCaFNaNbNfKQBpiiZv@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa4_64617973ZQBnFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa5_686f757273ZQBpFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_6d696e75746573ZQBtFNaNbNiNflZl@Base 15 + _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBtFNaNbNiNflZl@Base 15 + _D3std8datetime8interval11__moduleRefZ@Base 15 + _D3std8datetime8interval12__ModuleInfoZ@Base 15 + _D3std8datetime8timezone11__moduleRefZ@Base 15 + _D3std8datetime8timezone11setTZEnvVarFNbNeAyaZv@Base 15 + _D3std8datetime8timezone12__ModuleInfoZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__ctorMFNaNcNfliZSQCqQCpQCjQCdQBr@Base 15 + _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__ctorMFNaNcNfibhZSQCrQCqQCkQCeQBs@Base 15 + _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone10Transition6__ctorMFNaNcNflPySQCqQCpQCjQCd6TTInfoZSQDlQDkQDeQCyQCm@Base 15 + _D3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone11getTimeZoneFNeAyaQdZyCQCjQCiQCcQBw@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TempTransition6__ctorMFNaNcNflPySQCuQCtQCnQCh6TTInfoPSQDpQDoQDiQDc14TransitionTypeZSQEtQEsQEmQEgQDu@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TransitionType6__ctorMFNaNcNfbbZSQCuQCtQCnQChQBv@Base 15 + _D3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone19_enforceValidTZFileFNaNfbmZv@Base 15 + _D3std8datetime8timezone13PosixTimeZone19getInstalledTZNamesFNfAyaQdZAQh@Base 15 + _D3std8datetime8timezone13PosixTimeZone20calculateLeapSecondsMxFNaNbNlNflZi@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo11__xopEqualsMxFKxSQClQCkQCeQByQBmZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo6__ctorMyFNaNcNfMxSQClQCkQCeQBy10TempTTInfoAyaZySQDpQDoQDiQDcQCq@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6TTInfo9__xtoHashFNbNeKxSQCkQCjQCdQBxQBlZm@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__ctorMyFNaNfyASQCcQCbQBvQBp10TransitionyASQDdQDcQCwQCq10LeapSecondAyaQdQfbZyCQEmQElQEfQDz@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone13PosixTimeZone7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone13PosixTimeZone7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTAaZQmFNeKSQCh5stdio4FilemZQBa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTAhZQmFNeKSQCh5stdio4FilemZQBa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTSQByQBxQBrQBl10TempTTInfoZQBjFNfKSQDf5stdio4FileZQBx@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTaZQlFNeKSQCg5stdio4FileZa@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTbZQlFNeKSQCg5stdio4FileZb@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValThZQlFNeKSQCg5stdio4FileZh@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTiZQlFNeKSQCg5stdio4FileZi@Base 15 + _D3std8datetime8timezone13PosixTimeZone__T7readValTlZQlFNeKSQCg5stdio4FileZl@Base 15 + _D3std8datetime8timezone13TZConversions11__xopEqualsMxFKxSQCeQCdQBxQBrZb@Base 15 + _D3std8datetime8timezone13TZConversions6__initZ@Base 15 + _D3std8datetime8timezone13TZConversions9__xtoHashFNbNeKxSQCdQCcQBwQBqZm@Base 15 + _D3std8datetime8timezone13clearTZEnvVarFNbNeZv@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11toISOStringFNaNfS4core4time8DurationZAya@Base 15 + _D3std8datetime8timezone14SimpleTimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone14SimpleTimeZone14toISOExtStringFNaNfS4core4time8DurationZAya@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__ctorMyFNaNfS4core4time8DurationAyaZyCQDaQCzQCtQCn@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__initZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone14SimpleTimeZone7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone14SimpleTimeZone9utcOffsetMxFNaNbNdNfZS4core4time8Duration@Base 15 + _D3std8datetime8timezone14SimpleTimeZone__T11toISOStringTSQCe5array__T8AppenderTAyaZQoZQBsFNaNfKQBnS4core4time8DurationZv@Base 15 + _D3std8datetime8timezone14SimpleTimeZone__T14toISOExtStringTSQCh5array__T8AppenderTAyaZQoZQBvFNaNfKQBnS4core4time8DurationZv@Base 15 + _D3std8datetime8timezone18parseTZConversionsFNaNfAyaZSQCaQBzQBt13TZConversions@Base 15 + _D3std8datetime8timezone3UTC11dstInEffectMxFNbNlNflZb@Base 15 + _D3std8datetime8timezone3UTC11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone3UTC4_utcyCQBhQBgQBaQu@Base 15 + _D3std8datetime8timezone3UTC6__ctorMyFNaNfZyCQBrQBqQBkQBe@Base 15 + _D3std8datetime8timezone3UTC6__initZ@Base 15 + _D3std8datetime8timezone3UTC6__vtblZ@Base 15 + _D3std8datetime8timezone3UTC6hasDSTMxFNbNdNfZb@Base 15 + _D3std8datetime8timezone3UTC6opCallFNaNbNfZyCQBrQBqQBkQBe@Base 15 + _D3std8datetime8timezone3UTC7__ClassZ@Base 15 + _D3std8datetime8timezone3UTC7tzToUTCMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone3UTC7utcToTZMxFNbNlNflZl@Base 15 + _D3std8datetime8timezone8TimeZone11_getOldNameFNaNbNfAyaZQe@Base 15 + _D3std8datetime8timezone8TimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 + _D3std8datetime8timezone8TimeZone4nameMxFNbNdNfZAya@Base 15 + _D3std8datetime8timezone8TimeZone6__ctorMyFNaNfAyaQdQfZyCQCdQCcQBwQBq@Base 15 + _D3std8datetime8timezone8TimeZone6__initZ@Base 15 + _D3std8datetime8timezone8TimeZone6__vtblZ@Base 15 + _D3std8datetime8timezone8TimeZone7__ClassZ@Base 15 + _D3std8datetime8timezone8TimeZone7dstNameMxFNbNdNlNfZAya@Base 15 + _D3std8datetime8timezone8TimeZone7stdNameMxFNbNdNlNfZAya@Base 15 + _D3std8datetime8timezone9LocalTime11dstInEffectMxFNbNlNelZb@Base 15 + _D3std8datetime8timezone9LocalTime6__ctorMyFNaNfZyCQBxQBwQBqQBk@Base 15 + _D3std8datetime8timezone9LocalTime6__initZ@Base 15 + _D3std8datetime8timezone9LocalTime6__vtblZ@Base 15 + _D3std8datetime8timezone9LocalTime6hasDSTMxFNbNdNeZb@Base 15 + _D3std8datetime8timezone9LocalTime6opCallFNaNbNeZyCQBxQBwQBqQBk@Base 15 + _D3std8datetime8timezone9LocalTime7__ClassZ@Base 15 + _D3std8datetime8timezone9LocalTime7dstNameMxFNbNdNlNeZAya@Base 15 + _D3std8datetime8timezone9LocalTime7stdNameMxFNbNdNlNeZAya@Base 15 + _D3std8datetime8timezone9LocalTime7tzToUTCMxFNbNlNelZl@Base 15 + _D3std8datetime8timezone9LocalTime7utcToTZMxFNbNlNelZl@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ18__lambda_L1107_C24FNbNiNfZb@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ5guardOb@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZ8instanceyCQCfQCeQByQBs@Base 15 + _D3std8datetime8timezone9LocalTime9singletonFNeZyCQBwQBvQBpQBj@Base 15 + _D3std8datetime9stopwatch11__moduleRefZ@Base 15 + _D3std8datetime9stopwatch12__ModuleInfoZ@Base 15 + _D3std8datetime9stopwatch9StopWatch14setTimeElapsedMFNbNiNfS4core4time8DurationZv@Base 15 + _D3std8datetime9stopwatch9StopWatch4peekMxFNbNiNfZS4core4time8Duration@Base 15 + _D3std8datetime9stopwatch9StopWatch4stopMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch5resetMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch5startMFNbNiNfZv@Base 15 + _D3std8datetime9stopwatch9StopWatch6__ctorMFNbNcNiNfEQBz8typecons__T4FlagVAyaa9_6175746f5374617274ZQBfZSQDyQDxQDrQDk@Base 15 + _D3std8datetime9stopwatch9StopWatch6__initZ@Base 15 + _D3std8datetime9stopwatch9StopWatch7runningMxFNaNbNdNiNfZb@Base 15 + _D3std8demangle11__moduleRefZ@Base 15 + _D3std8demangle12__ModuleInfoZ@Base 15 + _D3std8demangleQjFNaNbNfAyaZQe@Base 15 + _D3std8encoding11__moduleRefZ@Base 15 + _D3std8encoding12__ModuleInfoZ@Base 15 + _D3std8encoding14EncodingScheme18supportedFactoriesHAyaQd@Base 15 + _D3std8encoding14EncodingScheme6__initZ@Base 15 + _D3std8encoding14EncodingScheme6__vtblZ@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZ11initializedOb@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZ24registerDefaultEncodingsFZb@Base 15 + _D3std8encoding14EncodingScheme6createFAyaZCQBqQBpQBj@Base 15 + _D3std8encoding14EncodingScheme7__ClassZ@Base 15 + _D3std8encoding14EncodingScheme7isValidMFAxhZb@Base 15 + _D3std8encoding14EncodingScheme8registerFAyaZv@Base 15 + _D3std8encoding14EncodingScheme9supportedHAyaPFZCQBvQBuQBo@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZ18__lambda_L2592_C48FNaNbNfZCQEbQEaQDu@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZ18__lambda_L2592_C48FNaNbNfZCQEcQEbQDv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZv@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 + _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZv@Base 15 + _D3std8encoding16isValidCodePointFNaNbNiNfwZb@Base 15 + _D3std8encoding17EncodingException6__ctorMFNaNfAyaZCQByQBxQBr@Base 15 + _D3std8encoding17EncodingException6__initZ@Base 15 + _D3std8encoding17EncodingException6__vtblZ@Base 15 + _D3std8encoding17EncodingException7__ClassZ@Base 15 + _D3std8encoding18EncodingSchemeUtf810safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding18EncodingSchemeUtf813encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding18EncodingSchemeUtf819replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding18EncodingSchemeUtf85namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding18EncodingSchemeUtf86__initZ@Base 15 + _D3std8encoding18EncodingSchemeUtf86__vtblZ@Base 15 + _D3std8encoding18EncodingSchemeUtf86decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding18EncodingSchemeUtf86encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding18EncodingSchemeUtf87__ClassZ@Base 15 + _D3std8encoding18EncodingSchemeUtf88toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding18EncodingSchemeUtf89canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding19EncodingSchemeASCII10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding19EncodingSchemeASCII13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding19EncodingSchemeASCII19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding19EncodingSchemeASCII5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding19EncodingSchemeASCII6__initZ@Base 15 + _D3std8encoding19EncodingSchemeASCII6__vtblZ@Base 15 + _D3std8encoding19EncodingSchemeASCII6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding19EncodingSchemeASCII6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding19EncodingSchemeASCII7__ClassZ@Base 15 + _D3std8encoding19EncodingSchemeASCII8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding19EncodingSchemeASCII9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding20EncodingSchemeLatin110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin113encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding20EncodingSchemeLatin119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding20EncodingSchemeLatin15namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding20EncodingSchemeLatin16__initZ@Base 15 + _D3std8encoding20EncodingSchemeLatin16__vtblZ@Base 15 + _D3std8encoding20EncodingSchemeLatin16decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin16encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding20EncodingSchemeLatin17__ClassZ@Base 15 + _D3std8encoding20EncodingSchemeLatin18toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding20EncodingSchemeLatin19canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding20EncodingSchemeLatin210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin213encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding20EncodingSchemeLatin219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding20EncodingSchemeLatin25namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding20EncodingSchemeLatin26__initZ@Base 15 + _D3std8encoding20EncodingSchemeLatin26__vtblZ@Base 15 + _D3std8encoding20EncodingSchemeLatin26decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding20EncodingSchemeLatin26encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding20EncodingSchemeLatin27__ClassZ@Base 15 + _D3std8encoding20EncodingSchemeLatin28toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding20EncodingSchemeLatin29canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6__initZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native7__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeUtf16Native9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native13encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native5namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6__initZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native6encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native7__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native8toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeUtf32Native9canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125010safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125013encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125019replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12505namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12506__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12506__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12506decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12506encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12507__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12508toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12509canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125113encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12515namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12516__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12516__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12516decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12516encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12517__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12518toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12519canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding25EncodingSchemeWindows125210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows125213encodedLengthMxFNaNbNiNfwZm@Base 15 + _D3std8encoding25EncodingSchemeWindows125219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 + _D3std8encoding25EncodingSchemeWindows12525namesMxFNaNbNfZAAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12526__initZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12526__vtblZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12526decodeMxFNaNbNiNfKAxhZw@Base 15 + _D3std8encoding25EncodingSchemeWindows12526encodeMxFNaNbNiNfwAhZm@Base 15 + _D3std8encoding25EncodingSchemeWindows12527__ClassZ@Base 15 + _D3std8encoding25EncodingSchemeWindows12528toStringMxFNaNbNiNfZAya@Base 15 + _D3std8encoding25EncodingSchemeWindows12529canEncodeMxFNaNbNiNfwZb@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__ctorMFNaNfAyaZCQCkQCjQCd@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__initZ@Base 15 + _D3std8encoding29UnrecognizedEncodingException6__vtblZ@Base 15 + _D3std8encoding29UnrecognizedEncodingException7__ClassZ@Base 15 + _D3std8encoding8bomTableyASQz8typecons__T5TupleTEQBvQBu3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCl@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin1CharZQBjFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin2CharZQBjFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1250CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1251CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1252CharZQBoFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T10safeDecodeTAxEQBgQBf9AsciiCharZQBhFNaNbNiNfKQBhZw@Base 15 + _D3std8encoding__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg10Latin1CharZQBkFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg10Latin2CharZQBkFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1250CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1251CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1252CharZQBpFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTEQBhQBg9AsciiCharZQBiFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTaZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTuZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T13encodedLengthTwZQsFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ15isValidCodeUnitFNaNbNiNfQBuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDnQDmQCd@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxEQDpQDoQCfZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin134skipFNaNbNiNfKAxEQDfQDeQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNfwZAQBv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFwDFQBpZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ6bstMapyASQCn8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCeZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDxQDwQCn@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDrQDqQChZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDhQDgQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAQBx@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQBzZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFwDFQBrZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ15isValidCodeUnitFNaNbNiNfQBsZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDlQDkQCb@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxEQDnQDmQCdZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin144skipFNaNbNiNfKAxEQDdQDcQBtZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNfwZAQBt@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFwDFQBnZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ5tailsFNaNbNiNfaZi@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNfwZAa@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFwDFaZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTaZ9tailTableyG128h@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNfwZAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFwDFuZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTuZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNfwZAw@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFwDFwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTwZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ15isValidCodeUnitFNaNbNiNfEQDfQDeQBuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDoQDnQCd@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxQCfZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin134skipFNaNbNiNfKAxQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNfwZAEQDgQDfQBv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAEQDiQDhQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFwDFEQDaQCzQBpZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T10safeDecodeTAxQBwZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T6decodeTAxQBrZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ6bstMapyASQCo8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDpQDoQCeZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDyQDxQCn@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQChZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxQBxZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDiQDhQBx@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDkQDjQBzZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFwDFEQDcQDbQBrZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T10safeDecodeTAxQByZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T6decodeTAxQBtZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12m_charMapEndyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ14m_charMapStartyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ7charMapyAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ15isValidCodeUnitFNaNbNiNfEQDdQDcQBsZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDmQDlQCb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxQCdZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin144skipFNaNbNiNfKAxQBtZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNfwZAEQDeQDdQBt@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAEQDgQDfQBvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFwDFEQCyQCxQBnZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T10safeDecodeTAxQBuZQtFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T6decodeTAxQBpZQoFNaNbNiNfKQsZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ5tailsFNaNbNiNfaZi@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNfwZAa@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFwDFaZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxaZ9tailTableyG128h@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNfwZAu@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFwDFuZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxuZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ12encodingNameFNaNbNdNiNfZAya@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ13encodedLengthFNaNbNiNfwZm@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNfwZAw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFwDFwZvZv@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T15EncoderInstanceHTxwZ9canEncodeFNaNbNiNfwZb@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa10Latin1CharZQBeFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa10Latin2CharZQBeFNaNbNiNfKQBjZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1250CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1251CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa15Windows1252CharZQBjFNaNbNiNfKQBoZw@Base 15 + _D3std8encoding__T6decodeTAxEQBbQBa9AsciiCharZQBcFNaNbNiNfKQBhZw@Base 15 + _D3std8encoding__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 + _D3std8encoding__T6encodeTEQzQx10Latin1CharZQBaFNaNbNiNfwAQBgZm@Base 15 + _D3std8encoding__T6encodeTEQzQx10Latin2CharZQBaFNaNbNiNfwAQBgZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1250CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1251CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx15Windows1252CharZQBfFNaNbNiNfwAQBlZm@Base 15 + _D3std8encoding__T6encodeTEQzQx9AsciiCharZQyFNaNbNiNfwAQBdZm@Base 15 + _D3std8encoding__T6encodeTaZQkFNaNbNiNfwAaZm@Base 15 + _D3std8encoding__T6encodeTuZQkFNaNbNiNfwAuZm@Base 15 + _D3std8encoding__T6encodeTwZQkFNaNbNiNfwAwZm@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb10Latin1CharZQBfFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb10Latin2CharZQBfFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1250CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1251CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb15Windows1252CharZQBkFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTEQBcQBb9AsciiCharZQBdFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTaZQnFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTuZQnFNaNbNiNfwZb@Base 15 + _D3std8encoding__T9canEncodeTwZQnFNaNbNiNfwZb@Base 15 + _D3std8internal10attributes11__moduleRefZ@Base 15 + _D3std8internal10attributes12__ModuleInfoZ@Base 15 + _D3std8internal11scopebuffer11__moduleRefZ@Base 15 + _D3std8internal11scopebuffer12__ModuleInfoZ@Base 15 + _D3std8internal12unicode_comp11__moduleRefZ@Base 15 + _D3std8internal12unicode_comp12__ModuleInfoZ@Base 15 + _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZ1tyG1922w@Base 15 + _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZAyw@Base 15 + _D3std8internal12unicode_norm11__moduleRefZ@Base 15 + _D3std8internal12unicode_norm12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_decomp11__moduleRefZ@Base 15 + _D3std8internal14unicode_decomp12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZ1tyG5276w@Base 15 + _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZAyw@Base 15 + _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZ1tyG10489w@Base 15 + _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZAyw@Base 15 + _D3std8internal14unicode_tables10isSpaceGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables10isWhiteGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables11__moduleRefZ@Base 15 + _D3std8internal14unicode_tables11isFormatGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables12__ModuleInfoZ@Base 15 + _D3std8internal14unicode_tables12isControlGenFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZ1tyAk@Base 15 + _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZAyk@Base 15 + _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZ1tyAm@Base 15 + _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZSQCgQCfQBz3FCE@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty11__xopEqualsMxFKxSQCnQCmQCgQBtZb@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D3std8internal14unicode_tables15UnicodeProperty9__xtoHashFNbNeKxSQCmQClQCfQBsZm@Base 15 + _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZ1tyAk@Base 15 + _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZSQCgQCfQBz3SCE@Base 15 + _D3std8internal14unicode_tables3FCE1nMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3FCE3seqMxFNaNbNiNfZG3w@Base 15 + _D3std8internal14unicode_tables3FCE4sizeMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfG3whhhZSQCiQChQCbQBo@Base 15 + _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfmZSQCdQCcQBwQBj@Base 15 + _D3std8internal14unicode_tables3FCE6__initZ@Base 15 + _D3std8internal14unicode_tables3FCE9entry_lenMxFNaNbNiNfZh@Base 15 + _D3std8internal14unicode_tables3SCE1nMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE2chMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE4sizeMxFNaNbNiNfZi@Base 15 + _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkZSQCdQCcQBwQBj@Base 15 + _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkhhZSQCfQCeQByQBl@Base 15 + _D3std8internal14unicode_tables3SCE6__initZ@Base 15 + _D3std8internal14unicode_tables6blocks10ChorasmianyAh@Base 15 + _D3std8internal14unicode_tables6blocks10DevanagariyAh@Base 15 + _D3std8internal14unicode_tables6blocks10GlagoliticyAh@Base 15 + _D3std8internal14unicode_tables6blocks10KharoshthiyAh@Base 15 + _D3std8internal14unicode_tables6blocks10ManichaeanyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_ItalicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_PermicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_TurkicyAh@Base 15 + _D3std8internal14unicode_tables6blocks10Old_UyghuryAh@Base 15 + _D3std8internal14unicode_tables6blocks10PhoenicianyAh@Base 15 + _D3std8internal14unicode_tables6blocks10SaurashtrayAh@Base 15 + _D3std8internal14unicode_tables6blocks11Basic_LatinyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Box_DrawingyAh@Base 15 + _D3std8internal14unicode_tables6blocks11CJK_StrokesyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Dives_AkuruyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Hangul_JamoyAh@Base 15 + _D3std8internal14unicode_tables6blocks11MedefaidrinyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Nag_MundariyAh@Base 15 + _D3std8internal14unicode_tables6blocks11NandinagariyAh@Base 15 + _D3std8internal14unicode_tables6blocks11New_Tai_LueyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Old_PersianyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Old_SogdianyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Pau_Cin_HauyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Warang_CitiyAh@Base 15 + _D3std8internal14unicode_tables6blocks11Yi_RadicalsyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Cypro_MinoanyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Domino_TilesyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Gurung_KhemayAh@Base 15 + _D3std8internal14unicode_tables6blocks12Meetei_MayekyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Number_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Pahawh_HmongyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Sora_SompengyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Syloti_NagriyAh@Base 15 + _D3std8internal14unicode_tables6blocks12Yi_SyllablesyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Chess_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Gunjala_GondiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Khmer_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Mahjong_TilesyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Masaram_GondiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Mende_KikakuiyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Old_HungarianyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Phaistos_DiscyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Playing_CardsyAh@Base 15 + _D3std8internal14unicode_tables6blocks13Tulu_TigalariyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Aegean_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Block_ElementsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Greek_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks14IPA_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Low_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Mayan_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks14Vertical_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Ancient_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Hanifi_RohingyayAh@Base 15 + _D3std8internal14unicode_tables6blocks15High_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kana_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Kangxi_RadicalsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Lisu_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Musical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks15Psalter_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Bamum_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Braille_PatternsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Control_PicturesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Currency_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Geometric_ShapesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Greek_and_CopticyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Hangul_SyllablesyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Imperial_AramaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_EyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_FyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Latin_Extended_GyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Meroitic_CursiveyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Private_Use_AreayAh@Base 15 + _D3std8internal14unicode_tables6blocks16Tamil_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Vedic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks16Zanabazar_SquareyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Arabic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Bopomofo_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17CJK_CompatibilityyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Cypriot_SyllabaryyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Ethiopic_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Georgian_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Kaktovik_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Old_North_ArabianyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Old_South_ArabianyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Syriac_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Tangut_ComponentsyAh@Base 15 + _D3std8internal14unicode_tables6blocks17Tangut_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Alchemical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Caucasian_AlbanianyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Latin_1_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Letterlike_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Linear_B_IdeogramsyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Linear_B_SyllabaryyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks18Myanmar_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks18Sutton_SignWritingyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cherokee_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Cyrillic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Devanagari_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ethiopic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19General_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Georgian_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Indic_Siyaq_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Khitan_Small_ScriptyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Ornamental_DingbatsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Phonetic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Small_Form_VariantsyAh@Base 15 + _D3std8internal14unicode_tables6blocks19Variation_SelectorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Combining_Half_MarksyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Coptic_Epact_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Egyptian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Meroitic_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Mongolian_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Rumi_Numeral_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Small_Kana_ExtensionyAh@Base 15 + _D3std8internal14unicode_tables6blocks20Sundanese_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Anatolian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Ancient_Greek_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Counting_Rod_NumeralsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Devanagari_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Glagolitic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Inscriptional_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Miscellaneous_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Modifier_Tone_LettersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Ottoman_Siyaq_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks21Tai_Xuan_Jing_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22CJK_Unified_IdeographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Enclosed_AlphanumericsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks22Inscriptional_ParthianyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Mathematical_OperatorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks22Nyiakeng_Puachue_HmongyAh@Base 15 + _D3std8internal14unicode_tables6blocks23CJK_Compatibility_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks23CJK_Radicals_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Meetei_Mayek_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Miscellaneous_TechnicalyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Sinhala_Archaic_NumbersyAh@Base 15 + _D3std8internal14unicode_tables6blocks23Yijing_Hexagram_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Early_Dynastic_CuneiformyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Spacing_Modifier_LettersyAh@Base 15 + _D3std8internal14unicode_tables6blocks24Supplemental_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Byzantine_Musical_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Common_Indic_Number_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Geometric_Shapes_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Hangul_Compatibility_JamoyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Latin_Extended_AdditionalyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Shorthand_Format_ControlsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Transport_and_Map_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks25Znamenny_Musical_NotationyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks27CJK_Symbols_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Combining_Diacritical_MarksyAh@Base 15 + _D3std8internal14unicode_tables6blocks27High_Private_Use_SurrogatesyAh@Base 15 + _D3std8internal14unicode_tables6blocks27Superscripts_and_SubscriptsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28CJK_Compatibility_IdeographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28Katakana_Phonetic_ExtensionsyAh@Base 15 + _D3std8internal14unicode_tables6blocks28Symbols_for_Legacy_ComputingyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Alphabetic_Presentation_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Halfwidth_and_Fullwidth_FormsyAh@Base 15 + _D3std8internal14unicode_tables6blocks29Optical_Character_RecognitionyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Ancient_Greek_Musical_NotationyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Phonetic_Extensions_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks30Variation_Selectors_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Egyptian_Hieroglyphs_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Enclosed_CJK_Letters_and_MonthsyAh@Base 15 + _D3std8internal14unicode_tables6blocks31Enclosed_Ideographic_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Enclosed_Alphanumeric_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Miscellaneous_Symbols_and_ArrowsyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks33Cuneiform_Numbers_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks33Mathematical_Alphanumeric_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_CyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_DyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_EyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_FyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_GyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_HyAh@Base 15 + _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_IyAh@Base 15 + _D3std8internal14unicode_tables6blocks34Ideographic_Description_CharactersyAh@Base 15 + _D3std8internal14unicode_tables6blocks34Symbols_and_Pictographs_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Egyptian_Hieroglyph_Format_ControlsyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Ideographic_Symbols_and_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables6blocks35Supplemental_Mathematical_OperatorsyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Combining_Diacritical_Marks_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_ByAh@Base 15 + _D3std8internal14unicode_tables6blocks36Supplemental_Symbols_and_PictographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks37Miscellaneous_Symbols_and_PictographsyAh@Base 15 + _D3std8internal14unicode_tables6blocks37Unified_Canadian_Aboriginal_SyllabicsyAh@Base 15 + _D3std8internal14unicode_tables6blocks38Arabic_Mathematical_Alphabetic_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks38Combining_Diacritical_Marks_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks39CJK_Compatibility_Ideographs_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks39Combining_Diacritical_Marks_for_SymbolsyAh@Base 15 + _D3std8internal14unicode_tables6blocks39Symbols_for_Legacy_Computing_SupplementyAh@Base 15 + _D3std8internal14unicode_tables6blocks3LaoyAh@Base 15 + _D3std8internal14unicode_tables6blocks3MroyAh@Base 15 + _D3std8internal14unicode_tables6blocks3NKoyAh@Base 15 + _D3std8internal14unicode_tables6blocks3VaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6blocks46Unified_Canadian_Aboriginal_Syllabics_ExtendedyAh@Base 15 + _D3std8internal14unicode_tables6blocks48Unified_Canadian_Aboriginal_Syllabics_Extended_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks4AhomyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ChamyAh@Base 15 + _D3std8internal14unicode_tables6blocks4KawiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4LisuyAh@Base 15 + _D3std8internal14unicode_tables6blocks4MiaoyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ModiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4NewayAh@Base 15 + _D3std8internal14unicode_tables6blocks4TagsyAh@Base 15 + _D3std8internal14unicode_tables6blocks4ThaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks4TotoyAh@Base 15 + _D3std8internal14unicode_tables6blocks4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6blocks5AdlamyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BamumyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BatakyAh@Base 15 + _D3std8internal14unicode_tables6blocks5BuhidyAh@Base 15 + _D3std8internal14unicode_tables6blocks5DograyAh@Base 15 + _D3std8internal14unicode_tables6blocks5GarayyAh@Base 15 + _D3std8internal14unicode_tables6blocks5KhmeryAh@Base 15 + _D3std8internal14unicode_tables6blocks5LimbuyAh@Base 15 + _D3std8internal14unicode_tables6blocks5NushuyAh@Base 15 + _D3std8internal14unicode_tables6blocks5OghamyAh@Base 15 + _D3std8internal14unicode_tables6blocks5OriyayAh@Base 15 + _D3std8internal14unicode_tables6blocks5OsageyAh@Base 15 + _D3std8internal14unicode_tables6blocks5RunicyAh@Base 15 + _D3std8internal14unicode_tables6blocks5TakriyAh@Base 15 + _D3std8internal14unicode_tables6blocks5TamilyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ArabicyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ArrowsyAh@Base 15 + _D3std8internal14unicode_tables6blocks6BrahmiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6CarianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ChakmayAh@Base 15 + _D3std8internal14unicode_tables6blocks6CopticyAh@Base 15 + _D3std8internal14unicode_tables6blocks6GothicyAh@Base 15 + _D3std8internal14unicode_tables6blocks6HatranyAh@Base 15 + _D3std8internal14unicode_tables6blocks6HebrewyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KaithiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KanbunyAh@Base 15 + _D3std8internal14unicode_tables6blocks6KhojkiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6LepchayAh@Base 15 + _D3std8internal14unicode_tables6blocks6LycianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6LydianyAh@Base 15 + _D3std8internal14unicode_tables6blocks6RejangyAh@Base 15 + _D3std8internal14unicode_tables6blocks6SyriacyAh@Base 15 + _D3std8internal14unicode_tables6blocks6Tai_LeyAh@Base 15 + _D3std8internal14unicode_tables6blocks6TangsayAh@Base 15 + _D3std8internal14unicode_tables6blocks6TangutyAh@Base 15 + _D3std8internal14unicode_tables6blocks6TeluguyAh@Base 15 + _D3std8internal14unicode_tables6blocks6ThaanayAh@Base 15 + _D3std8internal14unicode_tables6blocks6TodhriyAh@Base 15 + _D3std8internal14unicode_tables6blocks6WanchoyAh@Base 15 + _D3std8internal14unicode_tables6blocks6YezidiyAh@Base 15 + _D3std8internal14unicode_tables6blocks6__initZ@Base 15 + _D3std8internal14unicode_tables6blocks7AvestanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7BengaliyAh@Base 15 + _D3std8internal14unicode_tables6blocks7DeseretyAh@Base 15 + _D3std8internal14unicode_tables6blocks7ElbasanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7ElymaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks7GranthayAh@Base 15 + _D3std8internal14unicode_tables6blocks7HanunooyAh@Base 15 + _D3std8internal14unicode_tables6blocks7KannadayAh@Base 15 + _D3std8internal14unicode_tables6blocks7MakasaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7MandaicyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MarchenyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MultaniyAh@Base 15 + _D3std8internal14unicode_tables6blocks7MyanmaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7Ol_OnalyAh@Base 15 + _D3std8internal14unicode_tables6blocks7OsmanyayAh@Base 15 + _D3std8internal14unicode_tables6blocks7SharadayAh@Base 15 + _D3std8internal14unicode_tables6blocks7ShavianyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SiddhamyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SinhalayAh@Base 15 + _D3std8internal14unicode_tables6blocks7SogdianyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SoyomboyAh@Base 15 + _D3std8internal14unicode_tables6blocks7SunuwaryAh@Base 15 + _D3std8internal14unicode_tables6blocks7TagalogyAh@Base 15 + _D3std8internal14unicode_tables6blocks7TibetanyAh@Base 15 + _D3std8internal14unicode_tables6blocks7TirhutayAh@Base 15 + _D3std8internal14unicode_tables6blocks8ArmenianyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BalineseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BopomofoyAh@Base 15 + _D3std8internal14unicode_tables6blocks8BugineseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8CherokeeyAh@Base 15 + _D3std8internal14unicode_tables6blocks8CyrillicyAh@Base 15 + _D3std8internal14unicode_tables6blocks8DingbatsyAh@Base 15 + _D3std8internal14unicode_tables6blocks8DuployanyAh@Base 15 + _D3std8internal14unicode_tables6blocks8EthiopicyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GeorgianyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GujaratiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8GurmukhiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8HiraganayAh@Base 15 + _D3std8internal14unicode_tables6blocks8JavaneseyAh@Base 15 + _D3std8internal14unicode_tables6blocks8KatakanayAh@Base 15 + _D3std8internal14unicode_tables6blocks8Kayah_LiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Linear_AyAh@Base 15 + _D3std8internal14unicode_tables6blocks8MahajaniyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Ol_ChikiyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Phags_payAh@Base 15 + _D3std8internal14unicode_tables6blocks8SpecialsyAh@Base 15 + _D3std8internal14unicode_tables6blocks8TagbanwayAh@Base 15 + _D3std8internal14unicode_tables6blocks8Tai_ThamyAh@Base 15 + _D3std8internal14unicode_tables6blocks8Tai_VietyAh@Base 15 + _D3std8internal14unicode_tables6blocks8TifinaghyAh@Base 15 + _D3std8internal14unicode_tables6blocks8UgariticyAh@Base 15 + _D3std8internal14unicode_tables6blocks8VithkuqiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9Bassa_VahyAh@Base 15 + _D3std8internal14unicode_tables6blocks9BhaiksukiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9CuneiformyAh@Base 15 + _D3std8internal14unicode_tables6blocks9EmoticonsyAh@Base 15 + _D3std8internal14unicode_tables6blocks9KhudawadiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9Kirat_RaiyAh@Base 15 + _D3std8internal14unicode_tables6blocks9MalayalamyAh@Base 15 + _D3std8internal14unicode_tables6blocks9MongolianyAh@Base 15 + _D3std8internal14unicode_tables6blocks9NabataeanyAh@Base 15 + _D3std8internal14unicode_tables6blocks9PalmyreneyAh@Base 15 + _D3std8internal14unicode_tables6blocks9SamaritanyAh@Base 15 + _D3std8internal14unicode_tables6blocks9SundaneseyAh@Base 15 + _D3std8internal14unicode_tables6hangul1LyAh@Base 15 + _D3std8internal14unicode_tables6hangul1TyAh@Base 15 + _D3std8internal14unicode_tables6hangul1VyAh@Base 15 + _D3std8internal14unicode_tables6hangul2LVyAh@Base 15 + _D3std8internal14unicode_tables6hangul3LVTyAh@Base 15 + _D3std8internal14unicode_tables6hangul3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6hangul4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables6hangul6__initZ@Base 15 + _D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb@Base 15 + _D3std8internal14unicode_tables7scripts10ChorasmianyAh@Base 15 + _D3std8internal14unicode_tables7scripts10DevanagariyAh@Base 15 + _D3std8internal14unicode_tables7scripts10GlagoliticyAh@Base 15 + _D3std8internal14unicode_tables7scripts10KharoshthiyAh@Base 15 + _D3std8internal14unicode_tables7scripts10ManichaeanyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_ItalicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_PermicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_TurkicyAh@Base 15 + _D3std8internal14unicode_tables7scripts10Old_UyghuryAh@Base 15 + _D3std8internal14unicode_tables7scripts10PhoenicianyAh@Base 15 + _D3std8internal14unicode_tables7scripts10SaurashtrayAh@Base 15 + _D3std8internal14unicode_tables7scripts11Dives_AkuruyAh@Base 15 + _D3std8internal14unicode_tables7scripts11MedefaidrinyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Nag_MundariyAh@Base 15 + _D3std8internal14unicode_tables7scripts11NandinagariyAh@Base 15 + _D3std8internal14unicode_tables7scripts11New_Tai_LueyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Old_PersianyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Old_SogdianyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Pau_Cin_HauyAh@Base 15 + _D3std8internal14unicode_tables7scripts11SignWritingyAh@Base 15 + _D3std8internal14unicode_tables7scripts11Warang_CitiyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Cypro_MinoanyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Gurung_KhemayAh@Base 15 + _D3std8internal14unicode_tables7scripts12Meetei_MayekyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Pahawh_HmongyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Sora_SompengyAh@Base 15 + _D3std8internal14unicode_tables7scripts12Syloti_NagriyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Gunjala_GondiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Masaram_GondiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Mende_KikakuiyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Old_HungarianyAh@Base 15 + _D3std8internal14unicode_tables7scripts13Tulu_TigalariyAh@Base 15 + _D3std8internal14unicode_tables7scripts15Hanifi_RohingyayAh@Base 15 + _D3std8internal14unicode_tables7scripts15Psalter_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Imperial_AramaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Meroitic_CursiveyAh@Base 15 + _D3std8internal14unicode_tables7scripts16Zanabazar_SquareyAh@Base 15 + _D3std8internal14unicode_tables7scripts17Old_North_ArabianyAh@Base 15 + _D3std8internal14unicode_tables7scripts17Old_South_ArabianyAh@Base 15 + _D3std8internal14unicode_tables7scripts18Caucasian_AlbanianyAh@Base 15 + _D3std8internal14unicode_tables7scripts19Canadian_AboriginalyAh@Base 15 + _D3std8internal14unicode_tables7scripts19Khitan_Small_ScriptyAh@Base 15 + _D3std8internal14unicode_tables7scripts20Egyptian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts20Meroitic_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts21Anatolian_HieroglyphsyAh@Base 15 + _D3std8internal14unicode_tables7scripts21Inscriptional_PahlaviyAh@Base 15 + _D3std8internal14unicode_tables7scripts22Inscriptional_ParthianyAh@Base 15 + _D3std8internal14unicode_tables7scripts22Nyiakeng_Puachue_HmongyAh@Base 15 + _D3std8internal14unicode_tables7scripts2YiyAh@Base 15 + _D3std8internal14unicode_tables7scripts3HanyAh@Base 15 + _D3std8internal14unicode_tables7scripts3LaoyAh@Base 15 + _D3std8internal14unicode_tables7scripts3MroyAh@Base 15 + _D3std8internal14unicode_tables7scripts3NkoyAh@Base 15 + _D3std8internal14unicode_tables7scripts3VaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts3tabFNaNdNfZAySQCaQBzQBt15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables7scripts4AhomyAh@Base 15 + _D3std8internal14unicode_tables7scripts4ChamyAh@Base 15 + _D3std8internal14unicode_tables7scripts4KawiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4LisuyAh@Base 15 + _D3std8internal14unicode_tables7scripts4MiaoyAh@Base 15 + _D3std8internal14unicode_tables7scripts4ModiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4NewayAh@Base 15 + _D3std8internal14unicode_tables7scripts4ThaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts4TotoyAh@Base 15 + _D3std8internal14unicode_tables7scripts4_tabyASQBtQBsQBm15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables7scripts5AdlamyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BamumyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BatakyAh@Base 15 + _D3std8internal14unicode_tables7scripts5BuhidyAh@Base 15 + _D3std8internal14unicode_tables7scripts5DograyAh@Base 15 + _D3std8internal14unicode_tables7scripts5GarayyAh@Base 15 + _D3std8internal14unicode_tables7scripts5GreekyAh@Base 15 + _D3std8internal14unicode_tables7scripts5KhmeryAh@Base 15 + _D3std8internal14unicode_tables7scripts5LatinyAh@Base 15 + _D3std8internal14unicode_tables7scripts5LimbuyAh@Base 15 + _D3std8internal14unicode_tables7scripts5NushuyAh@Base 15 + _D3std8internal14unicode_tables7scripts5OghamyAh@Base 15 + _D3std8internal14unicode_tables7scripts5OriyayAh@Base 15 + _D3std8internal14unicode_tables7scripts5OsageyAh@Base 15 + _D3std8internal14unicode_tables7scripts5RunicyAh@Base 15 + _D3std8internal14unicode_tables7scripts5TakriyAh@Base 15 + _D3std8internal14unicode_tables7scripts5TamilyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ArabicyAh@Base 15 + _D3std8internal14unicode_tables7scripts6BrahmiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6CarianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ChakmayAh@Base 15 + _D3std8internal14unicode_tables7scripts6CommonyAh@Base 15 + _D3std8internal14unicode_tables7scripts6CopticyAh@Base 15 + _D3std8internal14unicode_tables7scripts6GothicyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HangulyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HatranyAh@Base 15 + _D3std8internal14unicode_tables7scripts6HebrewyAh@Base 15 + _D3std8internal14unicode_tables7scripts6KaithiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6KhojkiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6LepchayAh@Base 15 + _D3std8internal14unicode_tables7scripts6LycianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6LydianyAh@Base 15 + _D3std8internal14unicode_tables7scripts6RejangyAh@Base 15 + _D3std8internal14unicode_tables7scripts6SyriacyAh@Base 15 + _D3std8internal14unicode_tables7scripts6Tai_LeyAh@Base 15 + _D3std8internal14unicode_tables7scripts6TangsayAh@Base 15 + _D3std8internal14unicode_tables7scripts6TangutyAh@Base 15 + _D3std8internal14unicode_tables7scripts6TeluguyAh@Base 15 + _D3std8internal14unicode_tables7scripts6ThaanayAh@Base 15 + _D3std8internal14unicode_tables7scripts6TodhriyAh@Base 15 + _D3std8internal14unicode_tables7scripts6WanchoyAh@Base 15 + _D3std8internal14unicode_tables7scripts6YezidiyAh@Base 15 + _D3std8internal14unicode_tables7scripts6__initZ@Base 15 + _D3std8internal14unicode_tables7scripts7AvestanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7BengaliyAh@Base 15 + _D3std8internal14unicode_tables7scripts7BrailleyAh@Base 15 + _D3std8internal14unicode_tables7scripts7CypriotyAh@Base 15 + _D3std8internal14unicode_tables7scripts7DeseretyAh@Base 15 + _D3std8internal14unicode_tables7scripts7ElbasanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7ElymaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts7GranthayAh@Base 15 + _D3std8internal14unicode_tables7scripts7HanunooyAh@Base 15 + _D3std8internal14unicode_tables7scripts7KannadayAh@Base 15 + _D3std8internal14unicode_tables7scripts7MakasaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7MandaicyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MarchenyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MultaniyAh@Base 15 + _D3std8internal14unicode_tables7scripts7MyanmaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7Ol_OnalyAh@Base 15 + _D3std8internal14unicode_tables7scripts7OsmanyayAh@Base 15 + _D3std8internal14unicode_tables7scripts7SharadayAh@Base 15 + _D3std8internal14unicode_tables7scripts7ShavianyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SiddhamyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SinhalayAh@Base 15 + _D3std8internal14unicode_tables7scripts7SogdianyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SoyomboyAh@Base 15 + _D3std8internal14unicode_tables7scripts7SunuwaryAh@Base 15 + _D3std8internal14unicode_tables7scripts7TagalogyAh@Base 15 + _D3std8internal14unicode_tables7scripts7TibetanyAh@Base 15 + _D3std8internal14unicode_tables7scripts7TirhutayAh@Base 15 + _D3std8internal14unicode_tables7scripts8ArmenianyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BalineseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BopomofoyAh@Base 15 + _D3std8internal14unicode_tables7scripts8BugineseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8CherokeeyAh@Base 15 + _D3std8internal14unicode_tables7scripts8CyrillicyAh@Base 15 + _D3std8internal14unicode_tables7scripts8DuployanyAh@Base 15 + _D3std8internal14unicode_tables7scripts8EthiopicyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GeorgianyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GujaratiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8GurmukhiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8HiraganayAh@Base 15 + _D3std8internal14unicode_tables7scripts8JavaneseyAh@Base 15 + _D3std8internal14unicode_tables7scripts8KatakanayAh@Base 15 + _D3std8internal14unicode_tables7scripts8Kayah_LiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Linear_AyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Linear_ByAh@Base 15 + _D3std8internal14unicode_tables7scripts8MahajaniyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Ol_ChikiyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Phags_PayAh@Base 15 + _D3std8internal14unicode_tables7scripts8TagbanwayAh@Base 15 + _D3std8internal14unicode_tables7scripts8Tai_ThamyAh@Base 15 + _D3std8internal14unicode_tables7scripts8Tai_VietyAh@Base 15 + _D3std8internal14unicode_tables7scripts8TifinaghyAh@Base 15 + _D3std8internal14unicode_tables7scripts8UgariticyAh@Base 15 + _D3std8internal14unicode_tables7scripts8VithkuqiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9Bassa_VahyAh@Base 15 + _D3std8internal14unicode_tables7scripts9BhaiksukiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9CuneiformyAh@Base 15 + _D3std8internal14unicode_tables7scripts9InheritedyAh@Base 15 + _D3std8internal14unicode_tables7scripts9KhudawadiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9Kirat_RaiyAh@Base 15 + _D3std8internal14unicode_tables7scripts9MalayalamyAh@Base 15 + _D3std8internal14unicode_tables7scripts9MongolianyAh@Base 15 + _D3std8internal14unicode_tables7scripts9NabataeanyAh@Base 15 + _D3std8internal14unicode_tables7scripts9PalmyreneyAh@Base 15 + _D3std8internal14unicode_tables7scripts9SamaritanyAh@Base 15 + _D3std8internal14unicode_tables7scripts9SundaneseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10AlphabeticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10DeprecatedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps10Other_MathyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11ID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11IdeographicyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11Soft_DottedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps11White_SpaceyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12Bidi_ControlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12Join_ControlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps12XID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps13Grapheme_BaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps13Grapheme_LinkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Case_IgnorableyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Other_ID_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Pattern_SyntaxyAh@Base 15 + _D3std8internal14unicode_tables8uniProps14Quotation_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15ASCII_Hex_DigityAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Grapheme_ExtendyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Other_LowercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps15Other_UppercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps16Other_AlphabeticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Other_ID_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Sentence_TerminalyAh@Base 15 + _D3std8internal14unicode_tables8uniProps17Unified_IdeographyAh@Base 15 + _D3std8internal14unicode_tables8uniProps18IDS_Unary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps18Regional_IndicatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps18Variation_SelectoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps19IDS_Binary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps19Pattern_White_SpaceyAh@Base 15 + _D3std8internal14unicode_tables8uniProps20IDS_Trinary_OperatoryAh@Base 15 + _D3std8internal14unicode_tables8uniProps20ID_Compat_Math_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps20Terminal_PunctuationyAh@Base 15 + _D3std8internal14unicode_tables8uniProps21Other_Grapheme_ExtendyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23ID_Compat_Math_ContinueyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Logical_Order_ExceptionyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Modifier_Combining_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps23Noncharacter_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps28Default_Ignorable_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps28Prepended_Concatenation_MarkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CcyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CfyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CnyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2CsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LmyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LtyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2LuyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2McyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2MeyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2MnyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NdyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2NoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PcyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PdyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PeyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PfyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PiyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2PsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ScyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SkyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SmyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2SoyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZlyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZpyAh@Base 15 + _D3std8internal14unicode_tables8uniProps2ZsyAh@Base 15 + _D3std8internal14unicode_tables8uniProps34Other_Default_Ignorable_Code_PointyAh@Base 15 + _D3std8internal14unicode_tables8uniProps3tabFNaNdNfZAySQCbQCaQBu15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables8uniProps4DashyAh@Base 15 + _D3std8internal14unicode_tables8uniProps4MathyAh@Base 15 + _D3std8internal14unicode_tables8uniProps4_tabyASQBuQBtQBn15UnicodeProperty@Base 15 + _D3std8internal14unicode_tables8uniProps5CasedyAh@Base 15 + _D3std8internal14unicode_tables8uniProps6HyphenyAh@Base 15 + _D3std8internal14unicode_tables8uniProps6__initZ@Base 15 + _D3std8internal14unicode_tables8uniProps7RadicalyAh@Base 15 + _D3std8internal14unicode_tables8uniProps8ExtenderyAh@Base 15 + _D3std8internal14unicode_tables8uniProps8ID_StartyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9DiacriticyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9Hex_DigityAh@Base 15 + _D3std8internal14unicode_tables8uniProps9LowercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9UppercaseyAh@Base 15 + _D3std8internal14unicode_tables8uniProps9XID_StartyAh@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd11__xopEqualsMxFKxSQDfQDeQCy__TQClTbVii7Vii4Vii4Vii6ZQDhZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd9__xtoHashFNbNeKxSQDeQDdQCx__TQCkTbVii7Vii4Vii4Vii6ZQDgZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii5Vii8ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii5Vii8ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii6Vii7ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii6Vii7ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgThVii8Vii8Vii5ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfThVii8Vii8Vii5ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw11__xopEqualsMxFKxSQCxQCwQCq__TQCdTtVii12Vii9ZQCsZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw9__xtoHashFNbNeKxSQCwQCvQCp__TQCcTtVii12Vii9ZQCrZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii7Vii6ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii7Vii6ZQCxZm@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii8Vii5ZQCyZb@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 + _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii8Vii5ZQCxZm@Base 15 + _D3std8internal16unicode_grapheme11__moduleRefZ@Base 15 + _D3std8internal16unicode_grapheme12__ModuleInfoZ@Base 15 + _D3std8internal4math11biguintcore10inplaceSubFNaNbNfAkAxkQdZb@Base 15 + _D3std8internal4math11biguintcore11__moduleRefZ@Base 15 + _D3std8internal4math11biguintcore11blockDivModFNaNbNfAkQcIAkZv@Base 15 + _D3std8internal4math11biguintcore11includeSignFNaNbNfMAxkmbZAk@Base 15 + _D3std8internal4math11biguintcore11mulInternalFNaNbNfAkAxkQdZv@Base 15 + _D3std8internal4math11biguintcore12__ModuleInfoZ@Base 15 + _D3std8internal4math11biguintcore12biguintToHexFNaNbNfNkMAaMxAkaEQCl5ascii10LetterCaseZQBe@Base 15 + _D3std8internal4math11biguintcore12mulKaratsubaFNaNbNfAkAxkQdQhZv@Base 15 + _D3std8internal4math11biguintcore12squareSimpleFNaNbNfAkAxkZv@Base 15 + _D3std8internal4math11biguintcore13getCacheLimitFNaNbNiNfZm@Base 15 + _D3std8internal4math11biguintcore14biguintToOctalFNaNbNiNfAaAxkZm@Base 15 + _D3std8internal4math11biguintcore14divModInternalFNaNbNfAkQcxAkxQdZv@Base 15 + _D3std8internal4math11biguintcore14itoaZeroPaddedFNaNbNiNfAakZv@Base 15 + _D3std8internal4math11biguintcore14squareInternalFNaNbNfAkxAkZv@Base 15 + _D3std8internal4math11biguintcore14twosComplementFNaNbNfAxkAkZv@Base 15 + _D3std8internal4math11biguintcore15addAssignSimpleFNaNbNfAkAxkZk@Base 15 + _D3std8internal4math11biguintcore15adjustRemainderFNaNbNfAkQcAxklQibZv@Base 15 + _D3std8internal4math11biguintcore15recursiveDivModFNaNbNfAkQcAxkQhbZv@Base 15 + _D3std8internal4math11biguintcore15squareKaratsubaFNaNbNfAkxAkQfZv@Base 15 + _D3std8internal4math11biguintcore15subAssignSimpleFNaNbNfAkAxkZk@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14lowerHexDigitsyAa@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14upperHexDigitsyAa@Base 15 + _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZv@Base 15 + _D3std8internal4math11biguintcore16biguintToDecimalFNaNbNfAaAkZm@Base 15 + _D3std8internal4math11biguintcore16schoolbookDivModFNaNbNfAkQcIAkZv@Base 15 + _D3std8internal4math11biguintcore17firstNonZeroDigitFNaNbNiNfxAkZi@Base 15 + _D3std8internal4math11biguintcore18removeLeadingZerosFNaNbNfNkMANgkZQf@Base 15 + _D3std8internal4math11biguintcore20addOrSubAssignSimpleFNaNbNfAkAxkbZk@Base 15 + _D3std8internal4math11biguintcore21highestDifferentDigitFNaNbNiNfxAkxQdZm@Base 15 + _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZ6maxpwryG22h@Base 15 + _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZi@Base 15 + _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZ6maxpwryG39h@Base 15 + _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZi@Base 15 + _D3std8internal4math11biguintcore25karatsubaRequiredBuffSizeFNaNbNfmZm@Base 15 + _D3std8internal4math11biguintcore3ONEyAk@Base 15 + _D3std8internal4math11biguintcore3TENyAk@Base 15 + _D3std8internal4math11biguintcore3TWOyAk@Base 15 + _D3std8internal4math11biguintcore3addFNaNbNfMxAkMxQeZAk@Base 15 + _D3std8internal4math11biguintcore3subFNaNbNfMxAkMxQePbZAk@Base 15 + _D3std8internal4math11biguintcore4ZEROyAk@Base 15 + _D3std8internal4math11biguintcore4lessFNaNbNfAxkQdZb@Base 15 + _D3std8internal4math11biguintcore6addIntFNaNbNfxAkmZAk@Base 15 + _D3std8internal4math11biguintcore6subIntFNaNbNfxAkmZAk@Base 15 + _D3std8internal4math11biguintcore7BigUint10uintLengthMxFNaNbNdNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint11__invariantMxFNaZv@Base 15 + _D3std8internal4math11biguintcore7BigUint11__xopEqualsMxFKxSQCgQCfQBzQBxQBnZb@Base 15 + _D3std8internal4math11biguintcore7BigUint11toHexStringMxFNaNbNlNfiaiaEQCq5ascii10LetterCaseZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint11ulongLengthMxFNaNbNdNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint12__invariant0MxFNaZv@Base 15 + _D3std8internal4math11biguintcore7BigUint13toOctalStringMxFNaNbNlNfZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint15toDecimalStringMxFNaNbNlNfiZAa@Base 15 + _D3std8internal4math11biguintcore7BigUint22__funcliteral_L259_C32FNaNbNiNeAkZAyk@Base 15 + _D3std8internal4math11biguintcore7BigUint3divFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3modFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3mulFNaNbNfMSQCaQBzQBtQBrQBhMQrZQu@Base 15 + _D3std8internal4math11biguintcore7BigUint3powFNaNbNfNkMSQCcQCbQBvQBtQBjmZQs@Base 15 + _D3std8internal4math11biguintcore7BigUint6__ctorMFNaNbNcNiNfNkMAykZSQCoQCnQChQCfQBv@Base 15 + _D3std8internal4math11biguintcore7BigUint6__initZ@Base 15 + _D3std8internal4math11biguintcore7BigUint6divModFNaNbNfSQCcQCbQBvQBtQBjMQrJQuJQxZv@Base 15 + _D3std8internal4math11biguintcore7BigUint6isZeroMxFNaNbNiNlNfZb@Base 15 + _D3std8internal4math11biguintcore7BigUint6toHashMxFNaNbNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint8__xopCmpMxFKxSQCcQCbQBvQBtQBjZi@Base 15 + _D3std8internal4math11biguintcore7BigUint8addOrSubFNaNbNfMSQCfQCeQByQBwQBmMQrbKbZQx@Base 15 + _D3std8internal4math11biguintcore7BigUint8numBytesMxFNaNbNiNlNfZm@Base 15 + _D3std8internal4math11biguintcore7BigUint8peekUintMxFNaNbNiNlNfmZk@Base 15 + _D3std8internal4math11biguintcore7BigUint9peekUlongMxFNaNbNiNlNfmZm@Base 15 + _D3std8internal4math11biguintcore7BigUint__T5opCmpTvZQjMxFNaNbNiNlNfxSQCqQCpQCjQChQBxZi@Base 15 + _D3std8internal4math11biguintcore7BigUint__T6divIntTykZQlFNaNbNfNkMSQCoQCnQChQCfQBvykZQt@Base 15 + _D3std8internal4math11biguintcore7BigUint__T6modIntTykZQlFNaNbNfMSQCmQClQCfQCdQBtykZk@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opAssignTmZQmMFNaNbNlNfmZv@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opAssignTvZQmMFNaNbNiNlNfSQCrQCqQCkQCiQByZv@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3c3cTmZQxMxFNaNbNlNfmZSQDdQDcQCwQCuQCk@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3e3eTmZQxMxFNaNbNjNlNfmZSQDfQDeQCyQCwQCm@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfKxSQCuQCtQCnQClQCbZb@Base 15 + _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfmZb@Base 15 + _D3std8internal4math11biguintcore9addSimpleFNaNbNfAkxAkxQdZk@Base 15 + _D3std8internal4math11biguintcore9mulSimpleFNaNbNfAkAxkQdZv@Base 15 + _D3std8internal4math11biguintcore__T6intpowTkZQkFNaNbNiNfkmZk@Base 15 + _D3std8internal4math12biguintnoasm11__moduleRefZ@Base 15 + _D3std8internal4math12biguintnoasm12__ModuleInfoZ@Base 15 + _D3std8internal4math12biguintnoasm12multibyteMulFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm12multibyteShlFNaNbNiNfAkAxkkZk@Base 15 + _D3std8internal4math12biguintnoasm12multibyteShrFNaNbNiNfAkAxkkZv@Base 15 + _D3std8internal4math12biguintnoasm15multibyteSquareFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm18multibyteDivAssignFNaNbNiNfAkkkZk@Base 15 + _D3std8internal4math12biguintnoasm27multibyteAddDiagonalSquaresFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm27multibyteMultiplyAccumulateFNaNbNiNfAkAxkQdZv@Base 15 + _D3std8internal4math12biguintnoasm27multibyteTriangleAccumulateFNaNbNiNfAkAxkZv@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai43ZQxFNaNbNiNfAkAxkQdkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai45ZQxFNaNbNiNfAkAxkQdkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai43ZQxFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai45ZQxFNaNbNiNfAkAxkkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai43ZQBgFNaNbNiNfAkkZk@Base 15 + _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai45ZQBgFNaNbNiNfAkkZk@Base 15 + _D3std8internal4math13errorfunction11__moduleRefZ@Base 15 + _D3std8internal4math13errorfunction12__ModuleInfoZ@Base 15 + _D3std8internal4math13errorfunction1PyG10e@Base 15 + _D3std8internal4math13errorfunction1QyG11e@Base 15 + _D3std8internal4math13errorfunction1RyG5e@Base 15 + _D3std8internal4math13errorfunction1SyG6e@Base 15 + _D3std8internal4math13errorfunction1TyG7e@Base 15 + _D3std8internal4math13errorfunction1UyG7e@Base 15 + _D3std8internal4math13errorfunction22normalDistributionImplFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P0yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P1yG10e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P2yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P3yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q0yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q1yG10e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q2yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q3yG8e@Base 15 + _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction3erfFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction4erfcFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction5EXP_2ye@Base 15 + _D3std8internal4math13errorfunction5erfceFNaNbNiNfeZe@Base 15 + _D3std8internal4math13errorfunction5expx2FNaNbNiNfeiZe@Base 15 + _D3std8internal4math13errorfunction__T12rationalPolyTeZQrFNaNbNiNfeAxeQdZe@Base 15 + _D3std8internal4math13gammafunction10EULERGAMMAye@Base 15 + _D3std8internal4math13gammafunction11__moduleRefZ@Base 15 + _D3std8internal4math13gammafunction11logmdigammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction12__ModuleInfoZ@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19LargeStirlingCoeffsyG7e@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19SmallStirlingCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction14betaIncompleteFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction15gammaIncompleteFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction16GammaSmallCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZ4coefyG13Ae@Base 15 + _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction17betaIncompleteInvFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction17logGammaNumeratoryG7e@Base 15 + _D3std8internal4math13gammafunction18betaDistExpansion1FNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction18betaDistExpansion2FNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction18logmdigammaInverseFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction19GammaSmallNegCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction19betaDistPowerSeriesFNaNbNiNfeeeZe@Base 15 + _D3std8internal4math13gammafunction19logGammaDenominatoryG8e@Base 15 + _D3std8internal4math13gammafunction20GammaNumeratorCoeffsyG8e@Base 15 + _D3std8internal4math13gammafunction20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction22GammaDenominatorCoeffsyG9e@Base 15 + _D3std8internal4math13gammafunction22logGammaStirlingCoeffsyG7e@Base 15 + _D3std8internal4math13gammafunction23gammaIncompleteComplInvFNaNbNiNfeeZe@Base 15 + _D3std8internal4math13gammafunction4Bn_nyG7e@Base 15 + _D3std8internal4math13gammafunction5gammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction7digammaFNaNbNiNfeZe@Base 15 + _D3std8internal4math13gammafunction8logGammaFNaNbNiNfeZe@Base 15 + _D3std8internal4test10dummyrange11__moduleRefZ@Base 15 + _D3std8internal4test10dummyrange12__ModuleInfoZ@Base 15 + _D3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 + _D3std8internal4test10dummyrange7TestFoo8opEqualsMxFKxSQCbQCaQBuQBsQBjZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMNgFNaNbNcNiNfmZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi0VQDwi0VQDfi3TQClZQFy@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri0VQDyi0VQDhi3TQCnZQGa@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi3TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei0TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi0TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm13opIndexAssignMFNaNbNiNfkmZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMxFNaNbNiNfmZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi1VQDwi0VQDfi3TQClZQFy@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri1VQDyi0VQDhi3TQCnZQGa@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi3TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei0TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi0TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi1TQCjZQFwZm@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFxZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFx@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 + _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi2TQCjZQFwZm@Base 15 + _D3std8internal4test25sumtype_example_overloads11__moduleRefZ@Base 15 + _D3std8internal4test25sumtype_example_overloads12__ModuleInfoZ@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfAyaZQe@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfdZAya@Base 15 + _D3std8internal4test25sumtype_example_overloads6handleFNfiZAya@Base 15 + _D3std8internal4test3uda11__moduleRefZ@Base 15 + _D3std8internal4test3uda12__ModuleInfoZ@Base 15 + _D3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 + _D3std8internal4test5range11__moduleRefZ@Base 15 + _D3std8internal4test5range12__ModuleInfoZ@Base 15 + _D3std8internal6memory11__moduleRefZ@Base 15 + _D3std8internal6memory12__ModuleInfoZ@Base 15 + _D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv@Base 15 + _D3std8internal6memory__T13enforceMallocZQqFNaNbNiNfmZPv@Base 15 + _D3std8internal6memory__T14enforceReallocZQrFNaNbNiNkMPvmZQe@Base 15 + _D3std8internal7cstring11__moduleRefZ@Base 15 + _D3std8internal7cstring12__ModuleInfoZ@Base 15 + _D3std8internal7cstring__T11tempCStringTaTANgaZQvFNaNbNiNfMQrZSQCjQCiQCc__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTAxaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTAyaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTSQBp4path__T16asNormalizedPathTSQCu5range__T5chainTSQDo3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQHeFNaNbNiMQGzZSQIsQIrQIl__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T11tempCStringTaTSQBp5range__T5chainTSQCj3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEiQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNaNbNiNfMQFiZSQHbQHaQGu__T17TempCStringBufferTaZQw@Base 15 + _D3std8internal7cstring__T14trustedReallocTaZQtFNaNbNiNeNkMAaZQd@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw15trustedVoidInitFNaNbNiNeZSQCyQCxQCr__TQCmTaZQCs@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw3ptrMxFNaNbNdNiNeZPxa@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw6__dtorMFNaNbNiNeZv@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw7buffPtrMNgFNaNbNdNiNjNeZPNga@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw7opIndexMxFNaNbNiNeZAxa@Base 15 + _D3std8internal7cstring__T17TempCStringBufferTaZQw8opAssignMFNaNbNcNiNjNeSQCuQCtQCn__TQCiTaZQCoZQx@Base 15 + _D3std8internal7cstring__T19trustedReallocStackTaZQyFNaNbNiNeMAamZQe@Base 15 + _D3std8internal7windows6bcrypt11__moduleRefZ@Base 15.2 + _D3std8internal7windows6bcrypt12__ModuleInfoZ@Base 15.2 + _D3std8internal7windows8advapi3211__moduleRefZ@Base 15 + _D3std8internal7windows8advapi3212__ModuleInfoZ@Base 15 + _D3std8typecons10Structural11__InterfaceZ@Base 15 + _D3std8typecons11__moduleRefZ@Base 15 + _D3std8typecons12__ModuleInfoZ@Base 15 + _D3std8typecons19NotImplementedError6__ctorMFNaNbNfAyaZCQCcQCbQBv@Base 15 + _D3std8typecons19NotImplementedError6__initZ@Base 15 + _D3std8typecons19NotImplementedError6__vtblZ@Base 15 + _D3std8typecons19NotImplementedError7__ClassZ@Base 15 + _D3std8typecons2No6__initZ@Base 15 + _D3std8typecons3Yes6__initZ@Base 15 + _D3std8typecons7Ternary4makeFNaNbNiNfhZSQBmQBlQBf@Base 15 + _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfbZSQBrQBqQBk@Base 15 + _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfxSQBqQBpQBjZSQCbQCaQBu@Base 15 + _D3std8typecons7Ternary6__initZ@Base 15 + _D3std8typecons7Ternary8opAssignMFNaNbNiNfbZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl11__xopEqualsMxFKxSQDxQDw__TQDqTQDhZQDyZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__ctorMFNaNbNcNiNeQCuZSQEcQEb__TQDvTQDmZQEd@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl9__xtoHashFNbNeKxSQDwQDv__TQDpTQDgZQDxZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3getTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNdNiNeZQDv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3setTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNiNfQDsZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T5clearTSQDpQDo__TQDiTQCzZQDqZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T8opAssignTSQDsQDr__TQDlTQDcZQDtZQBgMFNaNbNiNeQDxZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__ctorMFNaNbNcNiNeQDvZSQFdQFc__TQEwTQEnZQFe@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3getTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNdNiNeZQEw@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3setTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNiNfQEtZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T5clearTSQEqQEp__TQEjTQEaZQErZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T8opAssignTSQEtQEs__TQEmTQEdZQEuZQBgMFNaNbNiNeQEyZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__ctorMFNaNbNcNiNeQCbZSQDjQDi__TQDcTQCtZQDk@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3getTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNdNiNeZQDc@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3setTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNiNfQCzZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T5clearTSQCwQCv__TQCpTQCgZQCxZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T8opAssignTSQCzQCy__TQCsTQCjZQDaZQBgMFNaNbNiNeQDeZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__ctorMFNaNbNcNiNeQCpZSQDxQDw__TQDqTQDhZQDy@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3getTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNdNiNeZQDq@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3setTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNiNfQDnZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T5clearTSQDkQDj__TQDdTQCuZQDlZQBdMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T8opAssignTSQDnQDm__TQDgTQCxZQDoZQBgMFNaNbNiNeQDsZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu11__xopEqualsMxFKxSQDgQDf__TQCzTyQCqZQDiZb@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin13getMNgFNaNbNdNiNjNlNeZyQCq@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin16__ctorMFNaNbNcNiNfyQCmZSQDvQDu__TQDoTyQDfZQDx@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNeSQDqQDp__TQDjTyQDaZQDsZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNfNkMyQCpZv@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opEqualsMxFxCQDkQCfQBzQBtZb@Base 15 + _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin1__T8opEqualsZQkMxFKxSQDrQDq__TQDkTyQDbZQDtZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore4moveMFNaNbNiKQDpZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__xopEqualsMxFKxSQFaQEz__TQEtTQEkVQDri1ZQFhQCnQEjZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk8opAssignMFNcNjSQExQEw__TQEqTQEhVQDoi1ZQFeQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk9__xtoHashFNbNeKxSQEzQEy__TQEsTQEjVQDqi1ZQFgQCmQEiZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEyQEx__TQErTQEiVQDpi1ZQFf15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMFNaNbNcNdNiNjZQDs@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFcQDyQDxQDvQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__ctorMFNcQCvZSQEdQEc__TQDwTQDnVQCui1ZQEk@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFQCvZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFSQDzQDy__TQDsTQDjVQCqi1ZQEgZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__xopEqualsMxFKxSQFbQFa__TQEuTQElVQDri1ZQFiQCnQEjZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk9__xtoHashFNbNeKxSQFaQEz__TQEtTQEkVQDqi1ZQFhQCmQEiZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 + _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQClFNaNbNiNfQCkZSQDsQDr__T10RebindableTQDlZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDmFNaNbNiNfQDlZSQEtQEs__T10RebindableTQEmZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe5range__T10OnlyResultTaZQpZQBsFNaNbNiNfQBrZSQCzQCy__T10RebindableTQCsZQr@Base 15 + _D3std8typecons__T10rebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCgFNaNbNiNfQCfZSQDnQDm__T10RebindableTQDgZQr@Base 15 + _D3std8typecons__T11Rebindable2TaZQq3getMNgFNaNbNdNiNeZNga@Base 15 + _D3std8typecons__T11Rebindable2TaZQq6__ctorMFNaNbNcNiNeaZSQCeQCd__TQBxTaZQCd@Base 15 + _D3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc10__postblitMFNaNbNiNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13allocateStoreMFNaNbNiNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__fieldDtorMFNeZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__xopEqualsMxFKxSQFkQFj__TQFdTQEqVQDti0ZQFrQCpQCbZb@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl8opAssignMFNcNjNeSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZQBi@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl9__xtoHashFNbNeKxSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZm@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4moveMFNaNbNiNfKQDvZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore__T10initializeTAyaTEQFhQDz8SpanModeTbZQBkMFNfKQBfKQBfKbZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15refCountedStoreMNgFNaNbNcNdNiNfZNgSQFgQFf__TQEzTQEmVQDpi0ZQFn15RefCountedStore@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc17refCountedPayloadMNgFNaNbNcNdNiNjZNgSQFiQEaQDy@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__ctorMFNcNkMQDcZSQEoQEn__TQEhTQDuVQCxi0ZQEv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__dtorMFNfZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFNfSQEjQEi__TQEcTQDpVQCsi0ZQEqZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFQCzZv@Base 15 + _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc__T6__ctorTAyaTEQElQDd8SpanModeTbZQBfMFNcNfKQBhKQBhKbZSQFyQFx__TQFrTQFeVQEhi0ZQGf@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr11__xopEqualsMxFKxSQCcQCb__TQBvTQBsTQBwTQCaZQClZb@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6__ctorMFNaNbNcNiNfQBfQBiQBlZSQCnQCm__TQCgTQCdTQChTQClZQCw@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr8__xopCmpMxFKxSQByQBx__TQBrTQBoTQBsTQBwZQChZi@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T5opCmpTxSQBvQBu__TQBoTQBlTQBpTQBtZQCeZQBmMxFNaNbNiNfxQBtZi@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opAssignTSQBxQBw__TQBqTQBnTQBrTQBvZQCgZQBoMFNaNbNcNiNfKQBuZQBy@Base 15 + _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opEqualsTxSQByQBx__TQBrTQBoTQBsTQBwZQChZQBpMxFNaNbNiNfxQBtZb@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf11__xopEqualsMxFKxSQCrQCq__TQCkTQChTQChZQCwZb@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__ctorMFNaNbNcNiNfQBuQBtZSQCzQCy__TQCsTQCpTQCpZQDe@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf__T8opEqualsTxSQCnQCm__TQCgTQCdTQCdZQCsZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi11__xopEqualsMxFKxSQDuQDt__TQDnTQDkVQDoa3_6b6579TQDlVQEfa5_76616c7565ZQFdZb@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEjQEi__TQEcTQDzTQDnZQEo@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__ctorMFNaNbNcNiNfQCxQCkZSQEcQEb__TQDvTQDsVQDwa3_6b6579TQDtVQEna5_76616c7565ZQFl@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi__T8opEqualsTxSQDqQDp__TQDjTQDgVQDka3_6b6579TQDhVQEba5_76616c7565ZQEzZQCpMxFNaNbNiNfxQCtZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg11__xopEqualsMxFKxSQCsQCr__TQClTQCiTQBtZQCxZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__ctorMFNaNbNcNiNfQBvQBfZSQDaQCz__TQCtTQCqTQCbZQDf@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg__T8opEqualsTxSQCoQCn__TQChTQCeTQBpZQCtZQBlMxFxQBhZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTQCzTQCkZQDoZb@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__ctorMFNaNbNcNiNfQCmQBwZSQDrQDq__TQDkTQDhTQCsZQDw@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx__T8opEqualsTxSQDfQDe__TQCyTQCvTQCgZQDkZQBlMxFxQBhZb@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv11__xopEqualsMxFKxSQCgQCf__TQBzTQBwTQBpZQClZb@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__ctorMFNaNbNcNiNfQBjQBbZSQCoQCn__TQChTQCeTQBxZQCt@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6toHashMxFNbNfZm@Base 15 + _D3std8typecons__T5TupleTC8TypeInfoTPvZQv__T8opEqualsTxSQCcQCb__TQBvTQBsTQBlZQChZQBlMxFNbNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb11__xopEqualsMxFKxSQCnQCm__TQCgTQCdTQBqZQCsZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__ctorMFNaNbNcNiNfQBqQBcZSQCvQCu__TQCoTQClTQByZQDa@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb8__xopCmpMxFKxSQCjQCi__TQCcTQBzTQBmZQCoZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T5opCmpTxSQCgQCf__TQBzTQBwTQBjZQClZQBiMxFNaNbNiNfxQBpZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T8opEqualsTxSQCjQCi__TQCcTQBzTQBmZQCoZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq11__xopEqualsMxFKxSQEcQEb__TQDvTQDsVQDfa6_736368656d61TQDfVQEca8_73657175656e6365ZQFxZb@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQErQEq__TQEkTQEhTQDbZQEw@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__ctorMFNaNbNcNiNfQDfQByZSQEkQEj__TQEdTQEaVQDna6_736368656d61TQDnVQEka8_73657175656e6365ZQGf@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq8__xopCmpMxFKxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T5opCmpTxSQDvQDu__TQDoTQDlVQCya6_736368656d61TQCyVQDva8_73657175656e6365ZQFqZQCyMxFNaNbNiNfxQDfZi@Base 15 + _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T8opEqualsTxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZQDbMxFNaNbNiNfxQDfZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt11__xopEqualsMxFKxSQJfQJe__TQIyTQIvTQEbZQJkZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__ctorMFNaNbNcNiNfQIiQDnZSQJnQJm__TQJgTQJdTQEjZQJs@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt__T8opEqualsTxSQJbQJa__TQIuTQIrTQDxZQJgZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opBinaryVQDba1_7eTSQGvQGu__TQGoTSQHjQGmQGf__TQFySQHzQFr__TQFiVQFca4_615b315dVQFra1_61ZQGkTQFdZQHvZQJgZQDzMFNaNbNiNfQDtZSQKsQKr__TQKlTQKiTQEbZQKx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbTiZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTiZQBxZb@Base 15 + _D3std8typecons__T5TupleTbTiZQl6__ctorMFNaNbNcNiNfbiZSQCaQBz__TQBtTbTiZQCb@Base 15 + _D3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTbTiZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbTiZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTiZQBtZi@Base 15 + _D3std8typecons__T5TupleTbTiZQl__T5opCmpTxSQBpQBo__TQBiTbTiZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTbTiZQl__T8opEqualsTxSQBsQBr__TQBlTbTiZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbTkZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTkZQBxZb@Base 15 + _D3std8typecons__T5TupleTbTkZQl6__ctorMFNaNbNcNiNfbkZSQCaQBz__TQBtTbTkZQCb@Base 15 + _D3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTbTkZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbTkZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTkZQBtZi@Base 15 + _D3std8typecons__T5TupleTbTkZQl__T5opCmpTxSQBpQBo__TQBiTbTkZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTbTkZQl__T8opEqualsTxSQBsQBr__TQBlTbTkZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg11__xopEqualsMxFKxSQDsQDr__TQDlTbVQDia10_7465726d696e61746564TiVQEma6_737461747573ZQFoZb@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEhQEg__TQEaTbTiZQEi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__ctorMFNaNbNcNiNfbiZSQDwQDv__TQDpTbVQDma10_7465726d696e61746564TiVQEqa6_737461747573ZQFs@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg8__xopCmpMxFKxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T5opCmpTxSQDlQDk__TQDeTbVQDba10_7465726d696e61746564TiVQEfa6_737461747573ZQFhZQCzMxFNaNbNiNfxQDgZi@Base 15 + _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T8opEqualsTxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZQDcMxFNaNbNiNfxQDgZb@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp11__xopEqualsMxFKxSQCaQBz__TQBtTeTeTeTeZQCfZb@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6__ctorMFNaNbNcNiNfeeeeZSQCgQCf__TQBzTeTeTeTeZQCl@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp__T5opCmpTxSQBtQBs__TQBmTeTeTeTeZQByZQBiMxFNaNbNiNfxQBpZf@Base 15 + _D3std8typecons__T5TupleTeTeTeTeZQp__T8opEqualsTxSQBwQBv__TQBpTeTeTeTeZQCbZQBlMxFNaNbNiNfxQBpZb@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn11__xopEqualsMxFKxSQByQBx__TQBrTiTQBoZQCbZb@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6__ctorMFNaNbNcNiNfiQBaZSQCeQCd__TQBxTiTQBuZQCh@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn8__xopCmpMxFKxSQBuQBt__TQBnTiTQBkZQBxZi@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn__T5opCmpTxSQBrQBq__TQBkTiTQBhZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 + _D3std8typecons__T5TupleTiTAyaZQn__T8opEqualsTxSQBuQBt__TQBnTiTQBkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTiVQCza6_737461747573TQDsVQDwa6_6f7574707574ZQEyZb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDyQDx__TQDrTiTQDoZQEb@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__ctorMFNaNbNcNiNfiQClZSQDpQDo__TQDiTiVQDfa6_737461747573TQDyVQEca6_6f7574707574ZQFe@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx8__xopCmpMxFKxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZi@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T5opCmpTxSQDcQDb__TQCvTiVQCsa6_737461747573TQDlVQDpa6_6f7574707574ZQErZQCsMxFNaNbNiNfxQCzZi@Base 15 + _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T8opEqualsTxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZQCvMxFNaNbNiNfxQCzZb@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn11__xopEqualsMxFKxSQByQBx__TQBrTkTkTkZQCbZb@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6__ctorMFNaNbNcNiNfkkkZSQCdQCc__TQBwTkTkTkZQCg@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn8__xopCmpMxFKxSQBuQBt__TQBnTkTkTkZQBxZi@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn__T5opCmpTxSQBrQBq__TQBkTkTkTkZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 + _D3std8typecons__T5TupleTkTkTkZQn__T8opEqualsTxSQBuQBt__TQBnTkTkTkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 + _D3std8typecons__T5TupleTkTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTkTmZQBxZb@Base 15 + _D3std8typecons__T5TupleTkTmZQl6__ctorMFNaNbNcNiNfkmZSQCaQBz__TQBtTkTmZQCb@Base 15 + _D3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTkTmZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTkTmZQBtZi@Base 15 + _D3std8typecons__T5TupleTkTmZQl__T5opCmpTxSQBpQBo__TQBiTkTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTkTmZQl__T8opEqualsTxSQBsQBr__TQBlTkTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq11__xopEqualsMxFKxSQDcQDb__TQCvTkVQCsa4_64617461TmVQDja5_636f756e74ZQEjZb@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDrQDq__TQDkTkTmZQDs@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__ctorMFNaNbNcNiNfkmZSQDgQDf__TQCzTkVQCwa4_64617461TmVQDna5_636f756e74ZQEn@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq8__xopCmpMxFKxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZi@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T5opCmpTxSQCvQCu__TQCoTkVQCla4_64617461TmVQDca5_636f756e74ZQEcZQCkMxFNaNbNiNfxQCrZi@Base 15 + _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T8opEqualsTxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZQCnMxFNaNbNiNfxQCrZb@Base 15 + _D3std8typecons__T5TupleTmTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTmTmZQBxZb@Base 15 + _D3std8typecons__T5TupleTmTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmTmZQCb@Base 15 + _D3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTmTmZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTmTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTmTmZQBtZi@Base 15 + _D3std8typecons__T5TupleTmTmZQl__T5opCmpTxSQBpQBo__TQBiTmTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTmTmZQl__T8opEqualsTxSQBsQBr__TQBlTmTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk11__xopEqualsMxFKxSQCwQCv__TQCpTmVQCma3_706f73TmVQDba3_6c656eZQDxZb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDlQDk__TQDeTmTmZQDm@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__ctorMFNaNbNcNiNfmmZSQDaQCz__TQCtTmVQCqa3_706f73TmVQDfa3_6c656eZQEb@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk8__xopCmpMxFKxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZi@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T5opCmpTxSQCpQCo__TQCiTmVQCfa3_706f73TmVQCua3_6c656eZQDqZQCeMxFNaNbNiNfxQClZi@Base 15 + _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T8opEqualsTxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZQChMxFNaNbNiNfxQClZb@Base 15 + _D3std8typecons__T5TupleTuTaZQl11__xopEqualsMxFKxSQBwQBv__TQBpTuTaZQBxZb@Base 15 + _D3std8typecons__T5TupleTuTaZQl6__ctorMFNaNbNcNiNfuaZSQCaQBz__TQBtTuTaZQCb@Base 15 + _D3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 + _D3std8typecons__T5TupleTuTaZQl6toHashMxFNaNbNiNfZm@Base 15 + _D3std8typecons__T5TupleTuTaZQl8__xopCmpMxFKxSQBsQBr__TQBlTuTaZQBtZi@Base 15 + _D3std8typecons__T5TupleTuTaZQl__T5opCmpTxSQBpQBo__TQBiTuTaZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 + _D3std8typecons__T5TupleTuTaZQl__T8opEqualsTxSQBsQBr__TQBlTuTaZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 + _D3std8typecons__T5tupleVAyaa4_64617461VQpa5_636f756e74Z__TQBpTkTmZQBxFNaNbNiNfkmZSQDdQDc__T5TupleTkVQCya4_64617461TmVQDpa5_636f756e74ZQBr@Base 15 + _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPG32hZQBmFNaNbNiNfQBlQvZSQCvQCu__T5TupleTQCiTQBtZQp@Base 15 + _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPSQBy11concurrency3TidZQCdFNaNbNiNfQCcQBmZSQDnQDm__T5TupleTQDaTQClZQp@Base 15 + _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTbTkZQrFNaNbNiNfbkZSQBwQBv__T5TupleTbTkZQl@Base 15 + _D3std8typecons__T5tupleZ__TQkTkTkTkZQtFNaNbNiNfkkkZSQBzQBy__T5TupleTkTkTkZQn@Base 15 + _D3std8typecons__T5tupleZ__TQkTuTaZQrFNaNbNiNfuaZSQBwQBv__T5TupleTuTaZQl@Base 15 + _D3std9algorithm10comparison11__moduleRefZ@Base 15 + _D3std9algorithm10comparison12__ModuleInfoZ@Base 15 + _D3std9algorithm10comparison6EditOp6__initZ@Base 15 + _D3std9algorithm10comparison__T3cmpTAxhTQeZQmFNaNbNiNfQsQuZi@Base 15 + _D3std9algorithm10comparison__T3cmpTSQBjQBi9iteration__T12FilterResultS_DQCt3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQFkQFjQEb__T9MapResultSQGh5ascii7toLowerTQCoZQBhZQFfTQGdZQGmFNaNfQGpQGsZi@Base 15 + _D3std9algorithm10comparison__T3maxTiTiZQjFNaNbNiNfiiZi@Base 15 + _D3std9algorithm10comparison__T3maxTkTkZQjFNaNbNiNfkkZk@Base 15 + _D3std9algorithm10comparison__T3maxTmTiZQjFNaNbNiNfmiZm@Base 15 + _D3std9algorithm10comparison__T3maxTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std9algorithm10comparison__T3minTPvTQdZQlFNaNbNiNfQrQtZQw@Base 15 + _D3std9algorithm10comparison__T3minTlTmZQjFNaNbNiNflmZl@Base 15 + _D3std9algorithm10comparison__T3minTmTiZQjFNaNbNiNfmiZi@Base 15 + _D3std9algorithm10comparison__T3minTmTmZQjFNaNbNiNfmmZm@Base 15 + _D3std9algorithm10comparison__T3minTmTyiZQkFNaNbNiNfmyiZyi@Base 15 + _D3std9algorithm10comparison__T3minTmTymZQkFNaNbNiNfmymZm@Base 15 + _D3std9algorithm10comparison__T3minTyiTmZQkFNaNbNiNfyimZyi@Base 15 + _D3std9algorithm10comparison__T3minTymTmZQkFNaNbNiNfymmZym@Base 15 + _D3std9algorithm10comparison__T3minTymTymZQlFNaNbNiNfymymZym@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TAyaTQeTQhTQkZQBwFNaNbNiNfQzQBbQBeQBhZk@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TEQCn6format8internal5write17HasToStringResultTQBuTQByTQCcZQDpFNaNbNiNfQCsQCvQCyQDbZk@Base 15 + _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TaTaTaTaTaTaTaTaTaTaTaZQCfFNaNbNiNfaaaaaaaaaaaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai105Vai73Z__TQvTyaZQBbFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai108Vai76Vai102Vai70Vai105Vai73Z__TQBrTyaZQByFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai117Vai108Vai85Vai76Z__TQBgTyaZQBnFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5amongVai95Vai44Z__TQuTyaZQBaFNaNbNiNfyaZk@Base 15 + _D3std9algorithm10comparison__T5equalZ__T9equalLoopTSQBzQBy9iteration__T9MapResultSQDd5ascii7toLowerTSQDw3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFzQFyQEa__TQDtSQGpQDmQDjTSQHaQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGtFNaNbNiNfKQGvKQCzZb@Base 15 + _D3std9algorithm10comparison__T5equalZ__TQkTAxaTAyaZQvFNaNbNiNfQtQrZb@Base 15 + _D3std9algorithm10comparison__T5equalZ__TQkTSQBrQBq9iteration__T9MapResultSQCv5ascii7toLowerTSQDo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFrQFqQEa__TQDtSQGhQDmQDjTSQGsQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGvFNaNbNiNfQGuQCxZb@Base 15 + _D3std9algorithm11__moduleRefZ@Base 15 + _D3std9algorithm12__ModuleInfoZ@Base 15 + _D3std9algorithm6setops11__moduleRefZ@Base 15 + _D3std9algorithm6setops12__ModuleInfoZ@Base 15 + _D3std9algorithm7sorting11__moduleRefZ@Base 15 + _D3std9algorithm7sorting12__ModuleInfoZ@Base 15 + _D3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone10LeapSecondZQGeFNaNbNiNfQClmZv@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone14TempTransitionZQGiFNaNbNiNfQCpmZv@Base 15 + _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDjFNaNbNiNfQrmZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTAyaZQzFNaNbNiNeKQqKQtZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTCQBv3zip13ArchiveMemberZQBtFNaNbNiNeKQBlKQBpZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone10LeapSecondZQCtFNaNbNiNeKQClKQCpZv@Base 15 + _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone14TempTransitionZQCxFNaNbNiNeKQCpKQCtZv@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone10LeapSecondZQFcFNaNbNiNfQClZSQGs5range__T11SortedRangeTQDqVQGra17_612e74696d6554203c20622e74696d6554VEQJnQCv18SortedRangeOptionsi0ZQDm@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone14TempTransitionZQFgFNaNbNiNfQCpZSQGw5range__T11SortedRangeTQDuVQGva17_612e74696d6554203c20622e74696d6554VEQJrQCv18SortedRangeOptionsi0ZQDm@Base 15 + _D3std9algorithm7sorting__T4sortVAyaa5_61203c2062VEQBxQBw8mutation12SwapStrategyi0TAQBzZQCjFNaNbNiNfQrZSQDy5range__T11SortedRangeTQBvVQDxa5_61203c2062VEQFuQBw18SortedRangeOptionsi0ZQCn@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone10LeapSecondZQFvFNaNbNiNfQClZv@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone14TempTransitionZQFzFNaNbNiNfQCpZv@Base 15 + _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDaFNaNbNiNfQrZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T6isHeapZQiFNaNbNiNfQCvZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8heapSortZQkFNaNbNiNfQCxZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8siftDownZQkFNaNbNiNfQCxmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9buildHeapZQlFNaNbNiNfQCyZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9percolateZQlFNaNbNiNfQCymymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T6isHeapZQiFNaNbNiNfQCzZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8heapSortZQkFNaNbNiNfQDbZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8siftDownZQkFNaNbNiNfQDbmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9buildHeapZQlFNaNbNiNfQDcZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9percolateZQlFNaNbNiNfQDcmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T6isHeapZQiFNaNbNiNfQBbZb@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8heapSortZQkFNaNbNiNfQBdZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8siftDownZQkFNaNbNiNfQBdmymZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9buildHeapZQlFNaNbNiNfQBeZv@Base 15 + _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9percolateZQlFNaNbNiNfQBemymZv@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZm@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZm@Base 15 + _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZm@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZb@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZb@Base 15 + _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZb@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmTmTmZQIjFNaNbNiNfQCvmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmZQIfFNaNbNiNfQCrmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmTmTmZQInFNaNbNiNfQCzmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmZQIjFNaNbNiNfQCvmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmTmTmZQFoFNaNbNiNfQBbmmmmmZv@Base 15 + _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmZQFkFNaNbNiNfQxmmmZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone10LeapSecondZQFzFNaNbNiNfQClZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone14TempTransitionZQGdFNaNbNiNfQCpZv@Base 15 + _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDeFNaNbNiNfQrZv@Base 15 + _D3std9algorithm8internal11__moduleRefZ@Base 15 + _D3std9algorithm8internal12__ModuleInfoZ@Base 15 + _D3std9algorithm8mutation11__moduleRefZ@Base 15 + _D3std9algorithm8mutation12__ModuleInfoZ@Base 15 + _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi0TAAyaTlZQBvFNaNbNiNfQtlZQx@Base 15 + _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCrFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T11moveAllImplSQBoQBnQBg4moveTAC4core6thread5fiber5FiberTQBbZQCiFNaNbNiNfKQBsKQBwZQCa@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl3FTP4ImplZQBlFNaNbNiKQBiKQBmZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4HTTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4SMTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T11moveEmplaceTSQBp4file15DirIteratorImplZQBpFNaNbNiKQBmKQBqZv@Base 15 + _D3std9algorithm8mutation__T12removeStableTAC4core6thread5fiber5FiberTmZQBsFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T14removeUnstableTAAyaTlZQyFNaNbNiNfQslZQw@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAAyaZQxFNaNbNiNfMKQsNkMKQyZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNfMKQByNkMKQCfZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAkZQvFNaNbNiNfMKQqNkMKQwZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTC4core6thread5fiber5FiberZQBsFNaNbNiNfMKQBoNkMKQBvZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl3FTP4ImplZQBpFNaNbNiNfMKQBlNkMKQBsZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4HTTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4SMTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNfMKQBqNkMKQBxZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNfMKQDdNkMKQDkZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt4file15DirIteratorImplZQBtFNaNbNiNfMKQBpNkMKQBwZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNfMKQCcNkMKQCjZv@Base 15 + _D3std9algorithm8mutation__T15moveEmplaceImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNfMKQGbNkMKQGiZv@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTAAyaZQxFNaNbNiNeNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNeNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTAkZQvFNaNbNiNeNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNeNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNeNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNeNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T15trustedMoveImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNeNkMKQGdZQGh@Base 15 + _D3std9algorithm8mutation__T4copyTASQBi5regex8internal2ir8BytecodeTQBhZQBrFNaNbNiNfQBxQCaZQCe@Base 15 + _D3std9algorithm8mutation__T4copyTAiTAkZQmFNaNbNiNfQrQqZQt@Base 15 + _D3std9algorithm8mutation__T4copyTAkTQdZQmFNaNbNiNfQrQtZQw@Base 15 + _D3std9algorithm8mutation__T4copyTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoTASQDxQCq17CodepointIntervalZQDxFNaNbNiNfQEdQBrZQBv@Base 15 + _D3std9algorithm8mutation__T4copyTSQBh5range__T10roundRobinTSQChQCg9iteration__T9MapResultSQDl10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFp3uni21DecompressedIntervalsZQDuTSQGzQGyQEs__TQElSQHpQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHtFQHkQCvZ6ResultTAkZQJiFNaNfQJkQoZQr@Base 15 + _D3std9algorithm8mutation__T4moveTAAyaZQlFNaNbNiNfNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T4moveTACQBi3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi5regex8internal2ir10NamedGroupZQBqFNaNbNiNfNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T4moveTAkZQjFNaNbNiNfNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T4moveTAyaZQkFNaNbNiNfKQqKQtZv@Base 15 + _D3std9algorithm8mutation__T4moveTC4core6thread5fiber5FiberZQBgFNaNbNiNfKQBnKQBrZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl3FTP4ImplZQBdFKQBcKQBgZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl4HTTP4ImplZQBeFKQBdKQBhZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3net4curl4SMTP4ImplZQBeFKQBdKQBhZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3uni17CodepointIntervalZQBiFNaNbNiNfNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCvFNaNbNiNfNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh4file15DirIteratorImplZQBhFKQBgKQBkZv@Base 15 + _D3std9algorithm8mutation__T4moveTSQBh5range__T6strideTAywZQmFQhmZ6ResultZQBuFNaNbNiNfNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T4moveTSQBhQBg9iteration__T9MapResultSQCl10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEv8internal14unicode_tables15UnicodePropertyZQEpZQFtFNaNbNiNfNkMKQGdZQGh@Base 15 + _D3std9algorithm8mutation__T4swapTAAyaZQlFNaNbNiNeKQrKQuZv@Base 15 + _D3std9algorithm8mutation__T4swapTACQBi3zip13ArchiveMemberZQBfFNaNbNiNeKQBmKQBqZv@Base 15 + _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNeKQCmKQCqZv@Base 15 + _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNeKQCqKQCuZv@Base 15 + _D3std9algorithm8mutation__T4swapTAyaZQkFNaNbNiNeKQqKQtZv@Base 15 + _D3std9algorithm8mutation__T4swapTCQBh3zip13ArchiveMemberZQBeFNaNbNiNeKQBlKQBpZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi5stdio4File4ImplZQBcFNaNbNiNeKQBjKQBnZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl3FTP4ImplVEQDiQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkZQEpFNaNbNiNeKQEwKQFaZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4HTTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4SMTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 + _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T14SafeRefCountedTSQCp4file15DirIteratorImplVEQDqQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplZQEzFNaNbNiNeKQFgKQFkZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh5stdio17LockingTextReaderZQBkFNaNbNiNeKQBrKQBvZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh5stdio4FileZQwFNaNbNiNeKQBcKQBgZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNiNeKQClKQCpZv@Base 15 + _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNiNeKQCpKQCtZv@Base 15 + _D3std9algorithm8mutation__T4swapThZQiFNaNbNiNeKhKhZv@Base 15 + _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi0TAAyaTlZQBqFNaNbNiNfQtlZQx@Base 15 + _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCmFNaNbNiNfQBpmZQBu@Base 15 + _D3std9algorithm8mutation__T6swapAtTAAyaZQnFNaNbNiNfKQrmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTACQBk3zip13ArchiveMemberZQBhFNaNbNiNfKQBmmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfKQCmmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfKQCqmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTAhZQlFNaNbNiNfKQpmmZv@Base 15 + _D3std9algorithm8mutation__T6swapAtTSQBj3uni__T13InversionListTSQCkQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfKQDcmmZv@Base 15 + _D3std9algorithm8mutation__T7moveAllTAC4core6thread5fiber5FiberTQBbZQBoFNaNbNiNfQBrQBuZQBy@Base 15 + _D3std9algorithm8mutation__T7reverseTAhZQmFNaNbNiNfQoZQr@Base 15 + _D3std9algorithm8mutation__T7reverseTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCyFNaNbNiNfQDbZQDf@Base 15 + _D3std9algorithm8mutation__T8moveImplTAAyaZQpFNaNbNiNfNkMKQuZQx@Base 15 + _D3std9algorithm8mutation__T8moveImplTACQBm3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm5regex8internal2ir10NamedGroupZQBuFNaNbNiNfNkMKQCaZQCe@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 + _D3std9algorithm8mutation__T8moveImplTAkZQnFNaNbNiNfNkMKQsZQv@Base 15 + _D3std9algorithm8mutation__T8moveImplTAyaZQoFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTC4core6thread5fiber5FiberZQBkFNaNbNiNfMKQBoNkMKQBvZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl3FTP4ImplZQBhFMKQBdNkMKQBkZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4HTTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4SMTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3uni17CodepointIntervalZQBmFNaNbNiNfNkMKQBsZQBw@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl3uni__T13InversionListTSQCmQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCzFNaNbNiNfNkMKQDfZQDj@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl4file15DirIteratorImplZQBlFMKQBhNkMKQBoZv@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBl5range__T6strideTAywZQmFQhmZ6ResultZQByFNaNbNiNfNkMKQCeZQCi@Base 15 + _D3std9algorithm8mutation__T8moveImplTSQBlQBk9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEz8internal14unicode_tables15UnicodePropertyZQEpZQFxFNaNbNiNfNkMKQGdZQGh@Base 15 + _D3std9algorithm9iteration11__moduleRefZ@Base 15 + _D3std9algorithm9iteration12__ModuleInfoZ@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj11__xopEqualsMxFKxSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKbZb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4backMFNaNbNdNiNfZQFo@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4saveMFNaNbNdNiNfZSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5frontMFNaNbNdNiNfZQFp@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__ctorMFNaNbNcNiNfQEbZSQIlQIkQId__TQHwSQJbQHn__TQHeVQGxa6_61203d3d2062VQHqa1_61VQHza1_62ZQItTQGyZQKg@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7opSliceMFNaNbNiNfZSQIhQIgQHz__TQHsSQIxQHj__TQHaVQGta6_61203d3d2062VQHma1_61VQHva1_62ZQIpTQGuZQKc@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7popBackMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj9__xtoHashFNbNeKxSQIfQIeQHx__TQHqSQIvQHh__TQGyVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQInTQGsZQKaZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg4saveMFNaNbNdNiNfZSQGdQGcQFv__TQFoSQGtQFdQExQErMxFNbNdZQEmTQDvZQGu@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5primeMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChZSQGiQGhQGa__TQFtSQGyQFiQFcQEwMxFNbNdZQErTQEaZQGz@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChbZSQGjQGiQGb__TQFuSQGzQFjQFdQExMxFNbNdZQEsTQEbZQHa@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg7opSliceMFNaNbNiNfZSQGeQGdQFw__TQFpSQGuQFeQEyQEsMxFNbNdZQEnTQDwZQGv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi4saveMFNaNbNdNiNfZSQGfQGeQFx__TQFqSQGvQFfQEzQEtMxFNbNdZQEoTQDxZQGw@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5primeMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjZSQGkQGjQGc__TQFvSQHaQFkQFeQEyMxFNbNdZQEtTQEcZQHb@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjbZSQGlQGkQGd__TQFwSQHbQFlQFfQEzMxFNbNdZQEuTQEdZQHc@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi7opSliceMFNaNbNiNfZSQGgQGfQFy__TQFrSQGwQFgQFaQEuMxFNbNdZQEpTQDyZQGx@Base 15 + _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf11__xopEqualsMxFKxSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIkZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf4saveMFNaNbNdNiNfZSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIk@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5frontMFNaNdNfZw@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5primeMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCuZSQHhQHgQGz__TQGsS_DQHzQGh__TQGgTaTaZQGoFNaNfQFoQFrZQFpQFnTQFeZQIp@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCubZSQHiQHhQHa__TQGtS_DQIaQGi__TQGhTaTaZQGpFNaNfQFpQFsZQFqQFoTQFfZQIq@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf7opSliceMFNaNbNiNfZSQHdQHcQGv__TQGoS_DQHvQGd__TQGcTaTaZQGkFNaNfQFkQFnZQFlQFjTQFaZQIl@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf9__xtoHashFNbNeKxSQHbQHaQGt__TQGmS_DQHtQGb__TQGaTaTaZQGiFNaNfQFiQFlZQFjQFhTQEyZQIjZm@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTAxaZQBiFNaNbNiNfQqZSQCzQCyQCr__T9MapResultSQDwQCqQCnTQCbZQz@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 + _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa4_615b305dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b305dVQFga1_61ZQBiTQEyZQCt@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa4_615b315dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b315dVQFga1_61ZQBiTQEyZQCt@Base 15 + _D3std9algorithm9iteration__T3mapVAyaa6_612e6e616d65Z__TQBbTAySQCj8internal14unicode_tables15UnicodePropertyZQDcFNaNbNiNfQCjZSQEuQEtQEm__T9MapResultSQFr10functional__T8unaryFunVQFna6_612e6e616d65VQGga1_61ZQBmTQFtZQCx@Base 15 + _D3std9algorithm9iteration__T4uniqVAyaa6_61203d3d2062TSQCb5range__T11SortedRangeTAQBvVQBza5_61203c2062VEQDyQBx18SortedRangeOptionsi0ZQCoZQEeFNaNbNiNfQDrZSQFwQFvQFo__T10UniqResultSQGv10functional__T9binaryFunVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQBwTQHnZQDj@Base 15 + _D3std9algorithm9iteration__T6filterS_DQBl3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbZ__TQDdTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCvZQBhZQFfFNaNbNiNfQCkZSQGxQGwQGp__T12FilterResultS_DQIaQGp__TQGoTaTaZQGwFNaNfQFwQFzZQFxQFvTQFfZQCi@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFNaNbNiQHyZSQJmQJlQJe__TQIxTQItZQJfFQJbZQCh@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy14replaceCurrentMFNaNbNiNeSQKiQIb__T7BitsSetTmZQlZv@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy4saveMFNaNbNdNiNfZSQKaQJzQJs__TQJlTQJhZQJtFQJpZQCv@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5frontMFNaNbNdNiZm@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiNfQIrSQKeQHx__T7BitsSetTmZQlZSQLcQLbQKu__TQKnTQKjZQKvFQKrZQDx@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiQIpZSQKdQKcQJv__TQJoTQJkZQJwFQJsZQCy@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 + _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFNaNbNiNfQuQEbZSQFrQFqQFj__TQFcVQEwa6_61203d3d2062VQEwi0TQCqTQFzZQGnFQDcQGkZ6Result@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result11__xopEqualsMxFKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDiZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result4saveMFNaNbNdNiNfZSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDi@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5frontMFNaNbNdNiNfZQBs@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__ctorMFNaNbNcNiNfQBsQFaZSQGqQGpQGi__TQGbVQFva6_61203d3d2062VQFvi0TQDpTQGyZQHmFQEbQHjZQDq@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result9__xtoHashFNbNeKxSQGhQGgQFz__TQFsVQFma6_61203d3d2062VQFmi0TQDgTQGpZQHdFQDsQHaZQDhZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFNaNbNiNfQDzQEcZSQFsQFrQFk__TQFdVQExa6_61203d3d2062VQExi0TQFwTQGaZQGoFQGiQGlZ6Result@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result11__xopEqualsMxFKxSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDiZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result4saveMFNaNbNdNiNfZSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDi@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5frontMFNaNbNdNiNfZQEy@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__ctorMFNaNbNcNiNfQEyQFbZSQGrQGqQGj__TQGcVQFwa6_61203d3d2062VQFwi0TQGvTQGzZQHnFQHhQHkZQDq@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result9__xtoHashFNbNeKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQGmTQGqZQHeFQGyQHbZQDhZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b305dVQEva1_61ZQFoTQEhZQGzZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b305dVQEra1_61ZQFkTQEdZQGv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b305dVQFaa1_61ZQFtTQEmZQHe@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b305dVQEua1_61ZQFnTQEgZQGyZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b315dVQEva1_61ZQFoTQEhZQGzZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b315dVQEra1_61ZQFkTQEdZQGv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b315dVQFaa1_61ZQFtTQEmZQHe@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b315dVQEua1_61ZQFnTQEgZQGyZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp11__xopEqualsMxFKxSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHyZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp4saveMFNaNbNdNiNfZSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHy@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5frontMFNaNbNdNiNfZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__ctorMFNaNbNcNiNfQCtZSQGrQGqQGj__TQGcSQHhQFv__TQFmVQFga6_612e6e616d65VQFza1_61ZQGsTQFhZQId@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opIndexMFNaNbNiNfmZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opSliceMFNaNbNiNfmmZSQGpQGoQGh__TQGaSQHfQFt__TQFkVQFea6_612e6e616d65VQFxa1_61ZQGqTQFfZQIb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__xtoHashFNbNeKxSQGlQGkQGd__TQFwSQHbQFp__TQFgVQFaa6_612e6e616d65VQFta1_61ZQGmTQFbZQHxZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T4backZQgMFNaNbNdNiNfZyAa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T7popBackZQjMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh11__xopEqualsMxFKxSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDhZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh4saveMFNaNbNdNiNfZSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5frontMFNaNdNfZw@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__ctorMFNaNbNcNiNfQBaZSQDjQDiQDb__TQCuSQDzQCnQCkTQCfZQDm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh9__xtoHashFNbNeKxSQDdQDcQCv__TQCoSQDtQChQCeTQBzZQDgZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx4saveMFNaNbNdNiNfZSQIuQItQIm__TQIfSQJkQHyQHsQHmMxFNbNdZQHhTQGqZQJl@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5emptyMFNaNbNdNiZb@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5frontMFNaNbNdNiZSQItQHh__T7BitsSetTmZQl@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__ctorMFNaNbNcNiNfQFcZSQIzQIyQIr__TQIkSQJpQIdQHxQHrMxFNbNdZQHmTQGvZQJq@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 + _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx8popFrontMFNaNbNiZv@Base 15 + _D3std9algorithm9searching11__moduleRefZ@Base 15 + _D3std9algorithm9searching12__ModuleInfoZ@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_615b305d203e2030783830TAxSQCv3uni17CodepointIntervalZQCvFNaNbNiNfQBqZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10LeapSecondTylZQDuFNaNbNiNfQCpylZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTlZQDtFNaNbNiNfQColZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTylZQDuFNaNbNiNfQCpylZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAQuTQxZQBnFNaNbNiNfQtQBoZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TASQCj3uni__T13InversionListTSQDkQBb8GcPolicyZQBhTQBwZQDhFNaNbNiNfQCnQCpZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAaTaZQBlFNaNiNfQpaZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAxhTQeZQBnFNaNbNiNfQtQvZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyAaTQyZQBoFNaNbNiNfQuQBpZl@Base 15 + _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyhTAxhZQBoFNaNbNiNfQuQsZl@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeTQhZQCfFNaNfQwQuQwQyZk@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeZQCcFNaNfQtQrQtZk@Base 15 + _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaZQBzFNaNfQqQoZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTQxZQBnFNaNbNiNfQtQBoZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTaZQBmFNaNbNiNfQsaZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAyhTQxZQBnFNaNfQpQBkZb@Base 15 + _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TQtTQwZQBmFNaNbNiNfQBlQBoZb@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg11__xopEqualsMxFKxSQDdQDcQCv__TQCoVhi1TQCaTQCeTQCiZQDiZb@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__ctorMFNaNbNcNiNfQBgQBjQBmZSQDoQDnQDg__TQCzVhi1TQClTQCpTQCtZQDt@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNcNiNjNfSQDiQDhQDa__TQCtVhi1TQCfTQCjTQCnZQDnZQBl@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNiNfSQDe8typecons__T5TupleTQCdTQChTQClZQtZv@Base 15 + _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg9__xtoHashFNbNeKxSQDcQDbQCu__TQCnVhi1TQBzTQCdTQChZQDhZm@Base 15 + _D3std9algorithm9searching__T3anyS_DQBi4path14isDirSeparatorFNaNbNiNfwZbZ__TQBvTAxaZQCdFNaNfQmZb@Base 15 + _D3std9algorithm9searching__T4findS_DQBj4path14isDirSeparatorFNaNbNiNfwZbTAxaZQBxFNaNfQmZQp@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTAhTQBdZQoFNaNbNiNeNgAaZQx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTQBaTAhZQoFNaNbNiNeNgAhZQBx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFNaNfQnMaZQs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFQjMaZ13trustedMemchrFNaNbNiNeNkMKNgAaMKxaZNgQj@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAhTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxSQCd8typecons__T5TupleTQBsVQBwa3_6b6579TSQDr4json9JSONValueVQDda5_76616c7565ZQCjTxQDeZQEjFNaNbNiNfQDwMxQDzZQEf@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFNaNbNiNfQtMQBpZQBa@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTQBcTAhZQoFNaNbNiNeNgAhZQBz@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxhTQeZQBgFNaNbNiNfQtMQwZQz@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyAaTQyZQBhFNaNbNiNfQuMQBqZQBb@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTAxhZQBhFNaNbNiNfQuMQtZQBa@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTQxZQBgFNaNfQpMQBlZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFNaNbNiNfQBlMQtZQBs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTAhTQBbZQoFNaNbNiNeNgAaZQx@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTQBuTAhZQoFNaNbNiNeNgAhZQCr@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFNaNbNiNfQBlMQBpZQBt@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTQBvTAhZQoFNaNbNiNeNgAhZQCs@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFNaNfQBgMaZQBm@Base 15 + _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFQBcMaZ13trustedMemchrFNaNbNiNeNkMKNgAyaMKxaZNgQk@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAaTaZQuFNaNfQmMaZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAxSQBt8typecons__T5TupleTAyaVQea3_6b6579TSQDg4json9JSONValueVQBka5_76616c7565ZQCiTxQDdZQDyFNaNbNiNfQDvMxQDyZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAyAaTAyaZQyFNaNbNiNfQuMQsZb@Base 15 + _D3std9algorithm9searching__T7canFindZ__TQmTAyhTAyaZQxFNaNfQpMQoZb@Base 15 + _D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TQtTQwZQBjFNaNbNiNfQBlQBoZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTAxwTQeZQxFNaNbNiNfKQtQvZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 + _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 + _D3std9algorithm9searching__T9findSplitVAyaa6_61203d3d2062TAxaTQxZQBlFNaNbNiNfQtQBoZSQDfQDeQCx__T15FindSplitResultVhi1TQCiTQCmTQCqZQBi@Base 15 + _D3std9container10binaryheap11__moduleRefZ@Base 15 + _D3std9container10binaryheap12__ModuleInfoZ@Base 15 + _D3std9container11__moduleRefZ@Base 15 + _D3std9container12__ModuleInfoZ@Base 15 + _D3std9container4util11__moduleRefZ@Base 15 + _D3std9container4util12__ModuleInfoZ@Base 15 + _D3std9container5array11__moduleRefZ@Base 15 + _D3std9container5array12__ModuleInfoZ@Base 15 + _D3std9container5dlist11__moduleRefZ@Base 15 + _D3std9container5dlist12__ModuleInfoZ@Base 15 + _D3std9container5dlist6DRange4backMFNaNbNdNiNjNlNfZPSQBzQByQBr8BaseNode@Base 15 + _D3std9container5dlist6DRange4saveMFNaNbNdNiNjNlNfZSQByQBxQBqQBn@Base 15 + _D3std9container5dlist6DRange5emptyMxFNaNbNdNiNlNfZb@Base 15 + _D3std9container5dlist6DRange5frontMFNaNbNdNiNjNlNfZPSQCaQBzQBs8BaseNode@Base 15 + _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeQuZSQCsQCrQCkQCh@Base 15 + _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeZSQCqQCpQCiQCf@Base 15 + _D3std9container5dlist6DRange6__initZ@Base 15 + _D3std9container5dlist6DRange7popBackMFNaNbNiNlNfZv@Base 15 + _D3std9container5dlist6DRange8popFrontMFNaNbNiNlNfZv@Base 15 + _D3std9container5dlist8BaseNode6__initZ@Base 15 + _D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv@Base 15 + _D3std9container5slist11__moduleRefZ@Base 15 + _D3std9container5slist12__ModuleInfoZ@Base 15 + _D3std9container6rbtree11__moduleRefZ@Base 15 + _D3std9container6rbtree12__ModuleInfoZ@Base 15 + _D3std9exception11__moduleRefZ@Base 15 + _D3std9exception11errnoStringFNbNeiZAya@Base 15 + _D3std9exception12__ModuleInfoZ@Base 15 + _D3std9exception14ErrnoException5errnoMFNaNbNdNiNlNfZk@Base 15 + _D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp@Base 15 + _D3std9exception14ErrnoException6__ctorMFNfAyaiQemZCQByQBxQBq@Base 15 + _D3std9exception14ErrnoException6__initZ@Base 15 + _D3std9exception14ErrnoException6__vtblZ@Base 15 + _D3std9exception14ErrnoException7__ClassZ@Base 15 + _D3std9exception14ErrnoException8errnoMsgMFNaNbNdNiNlNfZAya@Base 15 + _D3std9exception14RangePrimitive6__initZ@Base 15 + _D3std9exception__T11doesPointToTAAyaTQfTvZQyFNaNbNiNeKxAAyaKxQgZb@Base 15 + _D3std9exception__T11doesPointToTACQBh3zip13ArchiveMemberTQzTvZQBsFNaNbNiNeKxACQCzQBsQBrKxQnZb@Base 15 + _D3std9exception__T11doesPointToTASQBh5regex8internal2ir10NamedGroupTQBkTvZQCeFNaNbNiNeKxASQDlQCeQCbQBvQBvKxQtZb@Base 15 + _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone10LeapSecondTQBzTvZQCtFNaNbNiNeKxASQEaQCtQCnQChQBvKxQtZb@Base 15 + _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone14TempTransitionTQCdTvZQCxFNaNbNiNeKxASQEeQCxQCrQClQBzKxQtZb@Base 15 + _D3std9exception__T11doesPointToTAkTQdTvZQwFNaNbNiNeKxAkKxQeZb@Base 15 + _D3std9exception__T11doesPointToTAxSQBi4file15DirIteratorImpl9DirHandleTSQCtQBlQBjTvZQCoFNaNbNiNeKxAQCnKxSQEaQCsQCqZb@Base 15 + _D3std9exception__T11doesPointToTAxSQBi4file8DirEntryTSQCbQt15DirIteratorImplTvZQCjFNaNbNiNeKxAQCiKxSQDvQCnQBvZb@Base 15 + _D3std9exception__T11doesPointToTAxkTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDjFNaNbNiNeKxAkKxSQEtQDj__TQDiTQCwZQDq__TQCjTQCcZQCrZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxAyaKxSQDcQBsQBrQBpQBoZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxAyaKxSQDdQBtQBsQBqQBoZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxAyaKxSQDgQBwQBuZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk5stdio17LockingTextReaderTvZQByFNaNbNiNeKxAyaKxSQDjQBzQBwZb@Base 15 + _D3std9exception__T11doesPointToTAyaTSQBk5stdio4FileTvZQBkFNaNbNiNeKxAyaKxSQCvQBlQBiZb@Base 15 + _D3std9exception__T11doesPointToTCQBg3zip13ArchiveMemberTQyTvZQBrFNaNbNiNeKxCQCxQBrQBqKxQmZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe3FTP4ImplTvZQDkFNaNbNiNeKxDQDkKxSQEwQBrQCuQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4HTTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4SMTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl3FTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4HTTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4SMTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFSQBi3net4curl4HTTP10StatusLineZvTSQCpQBhQBgQBe4ImplTvZQCsFNaNbNiNeKxDQCsKxSQEeQCwQCvQCtQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt3FTP4ImplTvZQDgFNaNbNiNeKxDQDgKxSQEsQBrQDjQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4HTTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4SMTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl3FTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBtQBsQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4SMTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTEQBg3net4curl4HTTP6MethodTSQCgQBaQzQw4ImplTvZQChFNaNbNiNeKxEQDnQChQCgQCeQCcKxSQEfQCzQCyQCwQCbZb@Base 15 + _D3std9exception__T11doesPointToTEQBg4file8SpanModeTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxEQDnQChQCfKxSQDzQCtQCbZb@Base 15 + _D3std9exception__T11doesPointToTG3lTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxG3lKxSQDgQBwQBuZb@Base 15 + _D3std9exception__T11doesPointToTHAyaxAyaTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxHQBxQBwKxSQDmQBxQBwQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh5stdio4File4ImplTQwTvZQBpFNaNbNiNeKxPSQCwQBpQBmQBkKxQqZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl3FTP4ImplVEQDhQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkTQEjTvZQFdFNaNbNiNeKxPSQGkQFd__TQExTQEoVQDvi1ZQFlQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4HTTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4SMTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPSQBh8typecons__T14SafeRefCountedTSQCo4file15DirIteratorImplVEQDpQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplTQEtTvZQFnFNaNbNiNeKxPSQGuQFn__TQFhTQEuVQDxi0ZQFvQCtQCfKxQBkZb@Base 15 + _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa3FTP4ImplTvZQCmFNaNbNiNeKxPQClKxSQDyQBrQCqQBqQBpZb@Base 15 + _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa4HTTP4ImplTvZQCnFNaNbNiNeKxPQCmKxSQDzQBsQCrQBrQBpZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQv17LockingTextReaderTvZQCnFNaNbNiNeKxPQCmKxSQDzQCrQBxZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQvQrTvZQBwFNaNbNiNeKxPQBvKxSQDiQCaQBxZb@Base 15 + _D3std9exception__T11doesPointToTPxSQBi8datetime8timezone13PosixTimeZone14TransitionTypeTSQDkQCcQBwQBq14TempTransitionTvZQDyFNaNbNiNeKxPQDxKxSQFkQEcQDwQDqQCaZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxPvKxSQDbQBrQBqQBoQBnZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 + _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4SMTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 + _D3std9exception__T11doesPointToTPySQBi8datetime8timezone13PosixTimeZone6TTInfoTSQDbQBtQBnQBh14TempTransitionTvZQDpFNaNbNiNeKxPyQDpKxSQFcQDuQDoQDiQCbZb@Base 15 + _D3std9exception__T11doesPointToTS4core3sys5posixQk4stat6stat_tTSQCl4file15DirIteratorImplTvZQCwFNaNbNiNeKxSQCwQCuQCtQDaQCrQCpKxSQExQCmQCkZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl3FTP4ImplTQxTvZQBqFNaNbNiNeKxSQCwQBqQBpQBnQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr3FTP4ImplTvZQCbFNaNbNiNeKxSQDhQCbQCaQByKxSQDwQCqQCpQBzQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4HTTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4SMTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP10StatusLineTSQClQBfQBeQBc4ImplTvZQCoFNaNbNiNeKxSQDuQCoQCnQClQCjKxSQEmQDgQDfQDdQCbZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3net4curl4SMTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 + _D3std9exception__T11doesPointToTSQBg3uni__T13InversionListTSQChQBb8GcPolicyZQBh__T9IntervalsTAkZQoTQCpTvZQDjFNaNbNiNeKxSQEpQDj__TQDiTQCwZQDq__TQCjTQCcZQCrKxQBlZb@Base 15 + _D3std9exception__T11doesPointToTSQBg4file15DirIteratorImplTQBbTvZQBvFNaNbNiNeKxSQDbQBvQBtKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg4file8DirEntryTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxSQDnQChQCfKxSQDzQCtQCbZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio17LockingTextReaderTQBeTvZQByFNaNbNiNeKxSQDeQByQBvKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio4FileTQqTvZQBjFNaNbNiNeKxSQCpQBjQBgKxQmZb@Base 15 + _D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQq17LockingTextReaderTvZQCgFNaNbNiNeKxSQDmQCgQCdKxSQDyQCsQCdZb@Base 15 + _D3std9exception__T11doesPointToTSQBg8datetime8timezone13PosixTimeZone14TempTransitionTQCcTvZQCwFNaNbNiNeKxSQEcQCwQCqQCkQByKxQsZb@Base 15 + _D3std9exception__T11doesPointToTaTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxaKxSQDfQBxQBuZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl3FTP4ImplTvZQBpFNaNbNiNeKxbKxSQCyQBqQBpQBnQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi3net4curl4SMTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxbKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTbTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxbKxSQDfQBxQBuZb@Base 15 + _D3std9exception__T11doesPointToThTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxhKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTkTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxkKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTlTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxlKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTlTSQBi8datetime8timezone13PosixTimeZone14TempTransitionTvZQCuFNaNbNiNeKxlKxSQEdQCvQCpQCjQBxZb@Base 15 + _D3std9exception__T11doesPointToTmTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDhFNaNbNiNeKxmKxSQEqQDi__TQDhTQCvZQDp__TQCiTQCbZQCqZb@Base 15 + _D3std9exception__T11doesPointToTmTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxmKxSQDcQBuQBsZb@Base 15 + _D3std9exception__T11doesPointToTtTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxtKxSQCzQBrQBqQBoQBmZb@Base 15 + _D3std9exception__T12assumeUniqueTaZQrFNaNbNiAaZAya@Base 15 + _D3std9exception__T12assumeUniqueTaZQrFNaNbNiKAaZAya@Base 15 + _D3std9exception__T12assumeUniqueTkZQrFNaNbNiKAkZAyk@Base 15 + _D3std9exception__T12assumeUniqueTxaZQsFNaNbNiKAxaZAya@Base 15 + _D3std9exception__T16collectExceptionHTC9ExceptionTmZQBiFNaNbNfLmZQBb@Base 15 + _D3std9exception__T18isUnionAliasedImplTS4core3sys5posixQk4stat6stat_tZQCaFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl3FTP4ImplZQBsFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4CurlZQBoFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP10StatusLineZQCaFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP4ImplZQBtFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4SMTP4ImplZQBtFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDkFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn4file15DirIteratorImplZQBwFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn4file8DirEntryZQBoFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn5stdio17LockingTextReaderZQBzFNaNbNiNfmZb@Base 15 + _D3std9exception__T18isUnionAliasedImplTSQBn5stdio4FileZQBlFNaNbNiNfmZb@Base 15 + _D3std9exception__T7bailOutHTC4core4time13TimeExceptionZQBlFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc11concurrency19TidMissingExceptionZQBxFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3net4curl13CurlExceptionZQBnFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3net4curl20CurlTimeoutExceptionZQBuFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc3zip12ZipExceptionZQBhFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc4json13JSONExceptionZQBjFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc6format15FormatExceptionZQBnFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBc7process16ProcessExceptionZQBpFNaNfAyamMAxaZNn@Base 15 + _D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn@Base 15 + _D3std9exception__T7enforceHTC4core4time13TimeExceptionZ__TQBoTbZQBuFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc11concurrency19TidMissingExceptionZ__TQCaTbZQCgFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTPvZQBxFNaNfQlLAxaAyamZQw@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3net4curl20CurlTimeoutExceptionZ__TQBxTbZQCdFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc3zip12ZipExceptionZ__TQBkTbZQBqFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTNgbZQBuFNaNfNgbLAxaAyamZNgb@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTPNgSQClQBj9JSONValueZQClFNaNfQBdLAxaAyamZQBp@Base 15 + _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTbZQBsFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTmZQBwFNaNfmLAxaAyamZm@Base 15 + _D3std9exception__T7enforceHTCQBc7process16ProcessExceptionZ__TQBsTbZQByFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTPOS4core4stdc5stdio8_IO_FILEZQCsFNfQBjLAxaAyamZQBv@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTbZQBrFNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTiZQBrFNfiLAxaAyamZi@Base 15 + _D3std9exception__T7enforceTPS4core3sys5posix5netdb7hostentZQBpFNaNfQBoLC6object9ThrowableZQCl@Base 15 + _D3std9exception__T7enforceTbZQlFNaNfbLC6object9ThrowableZb@Base 15 + _D3std9exception__T7enforceZ__TQmTAyaZQtFNaNfQlLAxaQrmZQv@Base 15 + _D3std9exception__T7enforceZ__TQmTPOS4core4stdc5stdio8_IO_FILEZQBsFNaNfQBlLAxaAyamZQBx@Base 15 + _D3std9exception__T7enforceZ__TQmTPSQBi11concurrency__T4ListTSQCiQBa7MessageZQw4NodeZQCoFNaNfQChLAxaAyamZQCt@Base 15 + _D3std9exception__T7enforceZ__TQmTPvZQsFNaNfQkLAxaAyamZQv@Base 15 + _D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb@Base 15 + _D3std9exception__T7enforceZ__TQmTiZQrFNaNfiLAxaAyamZi@Base 15 + _D3std9exception__T7enforceZ__TQmTmZQrFNaNfmLAxaAyamZm@Base 15 + _D3std9outbuffer11__moduleRefZ@Base 15 + _D3std9outbuffer12__ModuleInfoZ@Base 15 + _D3std9outbuffer9OutBuffer11__invariantMxFZv@Base 15 + _D3std9outbuffer9OutBuffer12__invariant0MxFZv@Base 15 + _D3std9outbuffer9OutBuffer4fillMFNaNbNfmhZv@Base 15 + _D3std9outbuffer9OutBuffer5clearMFNaNbNfZv@Base 15 + _D3std9outbuffer9OutBuffer5fill0MFNaNbNfmZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxaZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxuZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxwZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNedZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeeZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNefZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNekZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNemZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNetZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNeuZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfMAxhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfMxCQBpQBoQBhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfaZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfgZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfiZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNflZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfsZv@Base 15 + _D3std9outbuffer9OutBuffer5writeMFNaNbNfwZv@Base 15 + _D3std9outbuffer9OutBuffer6__initZ@Base 15 + _D3std9outbuffer9OutBuffer6__vtblZ@Base 15 + _D3std9outbuffer9OutBuffer6align2MFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer6align4MFNaNbNfhZv@Base 15 + _D3std9outbuffer9OutBuffer6printfMFMAyaYv@Base 15 + _D3std9outbuffer9OutBuffer6spreadMFNaNbNfmmZv@Base 15 + _D3std9outbuffer9OutBuffer7__ClassZ@Base 15 + _D3std9outbuffer9OutBuffer7reserveMFNaNbNemZv@Base 15 + _D3std9outbuffer9OutBuffer7toBytesMNgFNaNbNlNfZANgh@Base 15 + _D3std9outbuffer9OutBuffer7vprintfMFNbMAyaG1S3gcc8builtins13__va_list_tagZv@Base 15 + _D3std9outbuffer9OutBuffer8toStringMxFNaNbNfZAya@Base 15 + _D3std9outbuffer9OutBuffer9alignSizeMFNaNbNfmhZv@Base 15 + _D3std9typetuple11__moduleRefZ@Base 15 + _D3std9typetuple12__ModuleInfoZ@Base 15 + _D40TypeInfo_AxAS3std3uni17CodepointInterval6__initZ@Base 15 + _D40TypeInfo_C3std11concurrency11IsGenerator6__initZ@Base 15 + _D40TypeInfo_E3std3uni20UnicodeDecomposition6__initZ@Base 15 + _D40TypeInfo_E3std5range18SortedRangeOptions6__initZ@Base 15 + _D40TypeInfo_E3std6socket17SocketOptionLevel6__initZ@Base 15 + _D40TypeInfo_E3std6traits17FunctionAttribute6__initZ@Base 15 + _D40TypeInfo_E3std7numeric16CustomFloatFlags6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1250Char6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1251Char6__initZ@Base 15 + _D40TypeInfo_E3std8encoding15Windows1252Char6__initZ@Base 15 + _D40TypeInfo_E3std9exception14RangePrimitive6__initZ@Base 15 + _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 + _D40TypeInfo_S3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 + _D40TypeInfo_S3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 + _D40TypeInfo_S3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 + _D40TypeInfo_S3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 + _D40TypeInfo_S3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 + _D40TypeInfo_S3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D40TypeInfo_xAAS3std3uni17CodepointInterval6__initZ@Base 15 + _D40TypeInfo_xS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D40TypeInfo_xS3std8datetime7systime7SysTime6__initZ@Base 15 + _D40TypeInfo_xS4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1250Char6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1251Char6__initZ@Base 15 + _D41TypeInfo_AE3std8encoding15Windows1252Char6__initZ@Base 15 + _D41TypeInfo_E3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 + _D41TypeInfo_E3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 + _D41TypeInfo_E3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 + _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 + _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 + _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D41TypeInfo_FZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 + _D41TypeInfo_PxS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D41TypeInfo_S3std10checkedint13ProperCompare6__initZ@Base 15 + _D41TypeInfo_S3std11parallelism12AbstractTask6__initZ@Base 15 + _D41TypeInfo_S3std3uni21DecompressedIntervals6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 + _D41TypeInfo_S3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 + _D41TypeInfo_S3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D41TypeInfo_S3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D41TypeInfo_S3std6random18RandomCoverChoices6__initZ@Base 15 + _D41TypeInfo_S3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 + _D41TypeInfo_S3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D41TypeInfo_xPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D41TypeInfo_xS3std3net4curl4HTTP10StatusLine6__initZ@Base 15 + _D41TypeInfo_xS3std5range__T10OnlyResultTaZQp6__initZ@Base 15 + _D42TypeInfo_AS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D42TypeInfo_AS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D42TypeInfo_E3std5regex8internal2ir9RegexInfo6__initZ@Base 15 + _D42TypeInfo_E3std8datetime8interval9Direction6__initZ@Base 15 + _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 + _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 + _D42TypeInfo_PFZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D42TypeInfo_PxPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D42TypeInfo_S3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 + _D42TypeInfo_S3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 + _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 + _D42TypeInfo_S3std4json9JSONValue5Store6Object6__initZ@Base 15 + _D42TypeInfo_S3std6logger4core6Logger8LogEntry6__initZ@Base 15 + _D42TypeInfo_S3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 + _D42TypeInfo_xPPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 + _D42TypeInfo_xS3std11parallelism12AbstractTask6__initZ@Base 15 + _D42TypeInfo_xS3std3uni21DecompressedIntervals6__initZ@Base 15 + _D42TypeInfo_xS3std5regex8internal2ir8BitTable6__initZ@Base 15 + _D42TypeInfo_xS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D42TypeInfo_xS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_AxS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D43TypeInfo_AxS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_E3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 + _D43TypeInfo_E3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D43TypeInfo_E3std9algorithm10comparison6EditOp6__initZ@Base 15 + _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 + _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 + _D43TypeInfo_FS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D43TypeInfo_PxS3std11parallelism12AbstractTask6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D43TypeInfo_S3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 + _D43TypeInfo_S3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 + _D43TypeInfo_S3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 + _D43TypeInfo_S3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 + _D43TypeInfo_S3std8datetime9stopwatch9StopWatch6__initZ@Base 15 + _D43TypeInfo_S3std8internal14unicode_tables3FCE6__initZ@Base 15 + _D43TypeInfo_S3std8internal14unicode_tables3SCE6__initZ@Base 15 + _D43TypeInfo_S3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 + _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D43TypeInfo_xAS3std5regex8internal2ir8Bytecode6__initZ@Base 15 + _D43TypeInfo_xAS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 + _D43TypeInfo_xPFZC3std8encoding14EncodingScheme6__initZ@Base 15.2 + _D43TypeInfo_xPS3std11parallelism12AbstractTask6__initZ@Base 15 + _D43TypeInfo_xS3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 + _D44TypeInfo_DFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 + _D44TypeInfo_E3std6traits21ParameterStorageClass6__initZ@Base 15 + _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 + _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 + _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 + _D44TypeInfo_S3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 + _D44TypeInfo_S3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 + _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 + _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 + _D44TypeInfo_S3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 + _D44TypeInfo_S3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D44TypeInfo_S3std5regex8internal6parser7CodeGen6__initZ@Base 15 + _D44TypeInfo_S3std5stdio4File17LockingTextWriter6__initZ@Base 15 + _D44TypeInfo_S3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 + _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 + _D44TypeInfo_xE3std3net7isemail15EmailStatusCode6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 + _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 + _D45TypeInfo_AS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 + _D45TypeInfo_E3std5regex8internal2ir11RegexOption6__initZ@Base 15 + _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 + _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 + _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 + _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 + _D45TypeInfo_S3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 + _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 + _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 + _D45TypeInfo_S3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 + _D45TypeInfo_S3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D45TypeInfo_S3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 + _D45TypeInfo_xDFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 + _D45TypeInfo_xS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_AxS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 + _D46TypeInfo_E3std11parallelism8TaskPool9PoolState6__initZ@Base 15 + _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 + _D46TypeInfo_HAyaPFZC3std8encoding14EncodingScheme6__initZ@Base 15 + _D46TypeInfo_S3std3uni7unicode18hangulSyllableType6__initZ@Base 15 + _D46TypeInfo_S3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 + _D46TypeInfo_S3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D46TypeInfo_S3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 + _D46TypeInfo_S3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 + _D46TypeInfo_S3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D46TypeInfo_S3std8internal14unicode_tables6blocks6__initZ@Base 15 + _D46TypeInfo_S3std8internal14unicode_tables6hangul6__initZ@Base 15 + _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D46TypeInfo_xAS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 + _D46TypeInfo_xS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D46TypeInfo_xS3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 + _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D47TypeInfo_AS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D47TypeInfo_AxS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D47TypeInfo_E3std7variant__T8VariantNVmi32ZQp4OpID6__initZ@Base 15 + _D47TypeInfo_E3std8internal4test10dummyrange6Length6__initZ@Base 15 + _D47TypeInfo_E3std9algorithm8mutation12SwapStrategy6__initZ@Base 15 + _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 + _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 + _D47TypeInfo_S3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 + _D47TypeInfo_S3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 + _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 + _D47TypeInfo_S3std8datetime8timezone13TZConversions6__initZ@Base 15 + _D47TypeInfo_S3std8internal14unicode_tables7scripts6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D47TypeInfo_xAS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D47TypeInfo_xS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_AxS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_E3std4uuid20UUIDParsingException6Reason6__initZ@Base 15 + _D48TypeInfo_S3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 + _D48TypeInfo_S3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 + _D48TypeInfo_S3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 + _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D48TypeInfo_S3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D48TypeInfo_S3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 + _D48TypeInfo_S3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 + _D48TypeInfo_S3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 + _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 + _D48TypeInfo_S3std8internal14unicode_tables8uniProps6__initZ@Base 15 + _D48TypeInfo_S3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 + _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D48TypeInfo_xAS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 + _D48TypeInfo_yC3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 + _D49TypeInfo_E3std8internal4test10dummyrange8ReturnBy6__initZ@Base 15 + _D49TypeInfo_E3std8typecons24RefCountedAutoInitialize6__initZ@Base 15 + _D49TypeInfo_E3std8typecons__T4FlagVAyaa4_7472795fZQv6__initZ@Base 15 + _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 + _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 + _D49TypeInfo_S3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D49TypeInfo_S3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 + _D49TypeInfo_S3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 + _D49TypeInfo_S3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 + _D49TypeInfo_S3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 + _D49TypeInfo_S3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D49TypeInfo_S3std8internal4math11biguintcore7BigUint6__initZ@Base 15 + _D49TypeInfo_S3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 + _D49TypeInfo_xS3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 + _D4core10checkedint11__moduleRefZ@Base 15 + _D4core10checkedint12__ModuleInfoZ@Base 15 + _D4core13interpolation11__moduleRefZ@Base 15 + _D4core13interpolation12__ModuleInfoZ@Base 15 + _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 + _D4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D4core2gc11gcinterface11__moduleRefZ@Base 15 + _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 + _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 + _D4core2gc11gcinterface4Root6__initZ@Base 15 + _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 + _D4core2gc11gcinterface5Range6__initZ@Base 15 + _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 + _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 + _D4core2gc6config11PrettyBytes6__initZ@Base 15 + _D4core2gc6config11__moduleRefZ@Base 15 + _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 + _D4core2gc6config12__ModuleInfoZ@Base 15 + _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 + _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 + _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 + _D4core2gc6config6Config4helpMFNbNiZv@Base 15 + _D4core2gc6config6Config6__initZ@Base 15 + _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 + _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 + _D4core2gc6configQhSQsQpQo6Config@Base 15 + _D4core2gc8registry11__moduleRefZ@Base 15 + _D4core2gc8registry12__ModuleInfoZ@Base 15 + _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 + _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 + _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 + _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 + _D4core2gc8registry5Entry6__initZ@Base 15 + _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 + _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 + _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Move6__initZ@Base 15 + _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Move6__initZ@Base 15 + _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 + _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 + _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 + _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 + _D4core3sys3elf11Elf_Options6__initZ@Base 15 + _D4core3sys3elf11__moduleRefZ@Base 15 + _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 + _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 + _D4core3sys3elf12__ModuleInfoZ@Base 15 + _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 + _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 + _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 + _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 + _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 + _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 + _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 + _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 + _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 + _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 + _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 + _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 + _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs11__moduleRefZ@Base 15 + _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 + _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 + _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 + _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 + _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 + _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 + _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 + _D4core3sys5linux3elf11__moduleRefZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 + _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 + _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 + _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 + _D4core3sys5linux3err11__moduleRefZ@Base 15 + _D4core3sys5linux3err12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link11__moduleRefZ@Base 15 + _D4core3sys5linux4link12__ModuleInfoZ@Base 15 + _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 + _D4core3sys5linux4link7r_debug6__initZ@Base 15 + _D4core3sys5linux4link8link_map6__initZ@Base 15 + _D4core3sys5linux4time11__moduleRefZ@Base 15 + _D4core3sys5linux4time12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 + _D4core3sys5linux4tipc11__moduleRefZ@Base 15 + _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 + _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 + _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 + _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 + _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 + _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 + _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll11__moduleRefZ@Base 15 + _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 + _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 + _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 + _D4core3sys5linux5errno11__moduleRefZ@Base 15 + _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 + _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 + _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 + _D4core3sys5linux5input10input_mask6__initZ@Base 15 + _D4core3sys5linux5input11__moduleRefZ@Base 15 + _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 + _D4core3sys5linux5input11input_event6__initZ@Base 15 + _D4core3sys5linux5input12__ModuleInfoZ@Base 15 + _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 + _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 + _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D4core3sys5linux5input8input_id6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 + _D4core3sys5linux5input9ff_effect6__initZ@Base 15 + _D4core3sys5linux5input9ff_replay6__initZ@Base 15 + _D4core3sys5linux5sched11__moduleRefZ@Base 15 + _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 + _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 + _D4core3sys5linux5stdio11__moduleRefZ@Base 15 + _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D4core3sys5linux6config11__moduleRefZ@Base 15 + _D4core3sys5linux6config12__ModuleInfoZ@Base 15 + _D4core3sys5linux6string11__moduleRefZ@Base 15 + _D4core3sys5linux6string12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput11__moduleRefZ@Base 15 + _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 + _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 + _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D4core3sys5linux6unistd11__moduleRefZ@Base 15 + _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 + _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 + _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 + _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 + _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 + _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5linux7termios11__moduleRefZ@Base 15 + _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 + _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 + _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 + _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 + _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 + _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 + _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 + _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 + _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 + _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 + _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 + _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 + _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 + _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 + _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 + _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 + _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 + _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 + _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 + _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 + _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 + _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 + _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D4core3sys5posix3aio11__moduleRefZ@Base 15 + _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 + _D4core3sys5posix3aio5aiocb6__initZ@Base 15 + _D4core3sys5posix3aio7aiocb646__initZ@Base 15 + _D4core3sys5posix3grp11__moduleRefZ@Base 15 + _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 + _D4core3sys5posix3grp5group6__initZ@Base 15 + _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 + _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 + _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 + _D4core3sys5posix3pwd11__moduleRefZ@Base 15 + _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 + _D4core3sys5posix3pwd6passwd6__initZ@Base 15 + _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 + _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 + _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 + _D4core3sys5posix4poll11__moduleRefZ@Base 15 + _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 + _D4core3sys5posix4poll6pollfd6__initZ@Base 15 + _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 + _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 + _D4core3sys5posix4time10itimerspec6__initZ@Base 15 + _D4core3sys5posix4time11__moduleRefZ@Base 15 + _D4core3sys5posix4time12__ModuleInfoZ@Base 15 + _D4core3sys5posix4time8timespec6__initZ@Base 15 + _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 + _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 + _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 + _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 + _D4core3sys5posix5fcntl5flock6__initZ@Base 15 + _D4core3sys5posix5iconv11__moduleRefZ@Base 15 + _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb11__moduleRefZ@Base 15 + _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 + _D4core3sys5posix5netdb6netent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6__initZ@Base 15 + _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 + _D4core3sys5posix5netdb7servent6__initZ@Base 15 + _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 + _D4core3sys5posix5netdb8protoent6__initZ@Base 15 + _D4core3sys5posix5sched11__moduleRefZ@Base 15 + _D4core3sys5posix5sched11sched_param6__initZ@Base 15 + _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn11__moduleRefZ@Base 15 + _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 + _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D4core3sys5posix5stdio11__moduleRefZ@Base 15 + _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime11__moduleRefZ@Base 15 + _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 + _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 + _D4core3sys5posix6config11__moduleRefZ@Base 15 + _D4core3sys5posix6config12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent11__moduleRefZ@Base 15 + _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 + _D4core3sys5posix6dirent3DIR6__initZ@Base 15 + _D4core3sys5posix6direntQh6__initZ@Base 15 + _D4core3sys5posix6libgen11__moduleRefZ@Base 15 + _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale11__moduleRefZ@Base 15 + _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 + _D4core3sys5posix6locale5lconv6__initZ@Base 15 + _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 + _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 + _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 + _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 + _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 + _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 + _D4core3sys5posix6signal11__moduleRefZ@Base 15 + _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 + _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 + _D4core3sys5posix6signal6sigval6__initZ@Base 15 + _D4core3sys5posix6signal7stack_t6__initZ@Base 15 + _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 + _D4core3sys5posix6signal8sigevent6__initZ@Base 15 + _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 + _D4core3sys5posix6signal8sigstack6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 + _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 + _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 + _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 + _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 + _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 + _D4core3sys5posix6string11__moduleRefZ@Base 15 + _D4core3sys5posix6string12__ModuleInfoZ@Base 15 + _D4core3sys5posix6syslog11__moduleRefZ@Base 15 + _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 + _D4core3sys5posix6unistd11__moduleRefZ@Base 15 + _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 + _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 + _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 + _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 + _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 + _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread11__moduleRefZ@Base 15 + _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 + _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 + _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D4core3sys5posix7strings11__moduleRefZ@Base 15 + _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termios11__moduleRefZ@Base 15 + _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 + _D4core3sys5posix7termiosQi6__initZ@Base 15 + _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 + _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 + _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 + _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 + _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 + _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 + _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 + _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 + _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 + _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 + _D4core3sys5posixQk2un11__moduleRefZ@Base 15 + _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 + _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 + _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 + _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 + _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 + _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 + _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 + _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 + _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 + _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 + _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 + _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 + _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 + _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 + _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 + _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 + _D4core3sys5posixQk4time11__moduleRefZ@Base 15 + _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4time7timeval6__initZ@Base 15 + _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 + _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 + _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 + _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 + _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 + _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 + _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 + _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 + _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 + _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 + _D4core3sys5posixQk5types11__moduleRefZ@Base 15 + _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 + _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 + _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select11__moduleRefZ@Base 15 + _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 + _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 + _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 + _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 + _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 + _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 + _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 + _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 + _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D4core3sys5posixQk6socket6linger6__initZ@Base 15 + _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 + _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 + _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 + _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 + _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 + _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 + _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 + _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 + _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 + _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 + _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 + _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 + _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 + _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 + _D4core4math11__moduleRefZ@Base 15 + _D4core4math12__ModuleInfoZ@Base 15 + _D4core4simd11__moduleRefZ@Base 15 + _D4core4simd12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv11__moduleRefZ@Base 15 + _D4core4stdc4fenv12__ModuleInfoZ@Base 15 + _D4core4stdc4fenv6fenv_t6__initZ@Base 15 + _D4core4stdc4math11__moduleRefZ@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 + _D4core4stdc4math12__ModuleInfoZ@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 + _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 + _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 + _D4core4stdc4time11__moduleRefZ@Base 15 + _D4core4stdc4time12__ModuleInfoZ@Base 15 + _D4core4stdc5ctype11__moduleRefZ@Base 15 + _D4core4stdc5ctype12__ModuleInfoZ@Base 15 + _D4core4stdc5errno11__moduleRefZ@Base 15 + _D4core4stdc5errno12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio11__moduleRefZ@Base 15 + _D4core4stdc5stdio12__ModuleInfoZ@Base 15 + _D4core4stdc5stdio6fpos_t6__initZ@Base 15 + _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 + _D4core4stdc6config11__moduleRefZ@Base 15 + _D4core4stdc6config12__ModuleInfoZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 + _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 + _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 + _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 + _D4core4stdc6float_11__moduleRefZ@Base 15 + _D4core4stdc6float_12__ModuleInfoZ@Base 15 + _D4core4stdc6limits11__moduleRefZ@Base 15 + _D4core4stdc6limits12__ModuleInfoZ@Base 15 + _D4core4stdc6locale11__moduleRefZ@Base 15 + _D4core4stdc6locale12__ModuleInfoZ@Base 15 + _D4core4stdc6locale5lconv6__initZ@Base 15 + _D4core4stdc6signal11__moduleRefZ@Base 15 + _D4core4stdc6signal12__ModuleInfoZ@Base 15 + _D4core4stdc6stdarg11__moduleRefZ@Base 15 + _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 + _D4core4stdc6stddef11__moduleRefZ@Base 15 + _D4core4stdc6stddef12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint11__moduleRefZ@Base 15 + _D4core4stdc6stdint12__ModuleInfoZ@Base 15 + _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 + _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 + _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 + _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 + _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 + _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 + _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 + _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 + _D4core4stdc6stdlib11__moduleRefZ@Base 15 + _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 + _D4core4stdc6stdlib5div_t6__initZ@Base 15 + _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 + _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 + _D4core4stdc6string11__moduleRefZ@Base 15 + _D4core4stdc6string12__ModuleInfoZ@Base 15 + _D4core4stdc6tgmath11__moduleRefZ@Base 15 + _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_11__moduleRefZ@Base 15 + _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 + _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 + _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 + _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 + _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 + _D4core4stdc6wctype11__moduleRefZ@Base 15 + _D4core4stdc6wctype12__ModuleInfoZ@Base 15 + _D4core4stdc7assert_11__moduleRefZ@Base 15 + _D4core4stdc7assert_12__ModuleInfoZ@Base 15 + _D4core4stdc7complex11__moduleRefZ@Base 15 + _D4core4stdc7complex12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes11__moduleRefZ@Base 15 + _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 + _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 + _D4core4stdc9stdatomic11__moduleRefZ@Base 15 + _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 + _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 + _D4core4sync11__moduleRefZ@Base 15 + _D4core4sync12__ModuleInfoZ@Base 15 + _D4core4sync5event11__moduleRefZ@Base 15 + _D4core4sync5event12__ModuleInfoZ@Base 15 + _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 + _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 + _D4core4sync5event5Event3setMFNbNiZv@Base 15 + _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 + _D4core4sync5event5Event4waitMFNbNiZb@Base 15 + _D4core4sync5event5Event5resetMFNbNiZv@Base 15 + _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 + _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 + _D4core4sync5event5Event6__initZ@Base 15 + _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 + _D4core4sync5mutex11__moduleRefZ@Base 15 + _D4core4sync5mutex12__ModuleInfoZ@Base 15 + _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 + _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 + _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 + _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 + _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 + _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 + _D4core4sync5mutex5Mutex6__initZ@Base 15 + _D4core4sync5mutex5Mutex6__vtblZ@Base 15 + _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 + _D4core4sync5mutex5Mutex7__ClassZ@Base 15 + _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 + _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 + _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 + _D4core4sync6config11__moduleRefZ@Base 15 + _D4core4sync6config12__ModuleInfoZ@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 + _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 + _D4core4sync7barrier11__moduleRefZ@Base 15 + _D4core4sync7barrier12__ModuleInfoZ@Base 15 + _D4core4sync7barrier7Barrier4waitMFZv@Base 15 + _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 + _D4core4sync7barrier7Barrier6__initZ@Base 15 + _D4core4sync7barrier7Barrier6__vtblZ@Base 15 + _D4core4sync7barrier7Barrier7__ClassZ@Base 15 + _D4core4sync7rwmutex11__moduleRefZ@Base 15 + _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 + _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 + _D4core4sync9condition11__moduleRefZ@Base 15 + _D4core4sync9condition12__ModuleInfoZ@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 + _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMFZv@Base 15 + _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 + _D4core4sync9condition9Condition4waitMOFZv@Base 15 + _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 + _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 + _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 + _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 + _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 + _D4core4sync9condition9Condition6__initZ@Base 15 + _D4core4sync9condition9Condition6__vtblZ@Base 15 + _D4core4sync9condition9Condition6notifyMFZv@Base 15 + _D4core4sync9condition9Condition6notifyMOFZv@Base 15 + _D4core4sync9condition9Condition7__ClassZ@Base 15 + _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 + _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 + _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 + _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 + _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 + _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 + _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 + _D4core4sync9exception11__moduleRefZ@Base 15 + _D4core4sync9exception12__ModuleInfoZ@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 + _D4core4sync9exception9SyncError6__initZ@Base 15 + _D4core4sync9exception9SyncError6__vtblZ@Base 15 + _D4core4sync9exception9SyncError7__ClassZ@Base 15 + _D4core4sync9semaphore11__moduleRefZ@Base 15 + _D4core4sync9semaphore12__ModuleInfoZ@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 + _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 + _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 + _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 + _D4core4sync9semaphore9Semaphore6__initZ@Base 15 + _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 + _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 + _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 + _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 + _D4core4time11__moduleRefZ@Base 15 + _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 + _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 + _D4core4time12TickDuration11ticksPerSecyl@Base 15 + _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 + _D4core4time12TickDuration16time_initializerFZv@Base 15 + _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 + _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 + _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 + _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 + _D4core4time12TickDuration6__initZ@Base 15 + _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 + _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 + _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 + _D4core4time12__ModuleInfoZ@Base 15 + _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 + _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 + _D4core4time13TimeException6__initZ@Base 15 + _D4core4time13TimeException6__vtblZ@Base 15 + _D4core4time13TimeException7__ClassZ@Base 15 + _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 + _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 + _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 + _D4core4time15_ticksPerSecondyG8l@Base 15 + _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 + _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 + _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 + _D4core4time4_absFNaNbNiNfdZd@Base 15 + _D4core4time4_absFNaNbNiNflZl@Base 15 + _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 + _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 + _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 + _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 + _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 + _D4core4time8Duration6__initZ@Base 15 + _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 + _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 + _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra5_686f757273VQDia7_6d696e75746573ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTiTiZQCdMxFNaNbNiNfJiJiZv@Base 15 + _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_7573656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 + _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 + _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa6_686e73656373ZQBaMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 + _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfSQDjQDh8DurationZSQEaQDy__TQDwVQDli0ZQEg@Base 15 + _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 + _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 + _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 + _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 + _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 + _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa4_64617973VQpa7_7365636f6e6473ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_686f757273VQra7_7365636f6e6473ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 + _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 + _D4core5bitop11__moduleRefZ@Base 15 + _D4core5bitop12__ModuleInfoZ@Base 15 + _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 + _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 + _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 + _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 + _D4core5bitop7Split646__initZ@Base 15 + _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 + _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 + _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 + _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 + _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 + _D4core5bitop8BitRange6__initZ@Base 15 + _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 + _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 + _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 + _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 + _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 + _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 + _D4core5bitop__T3rolTkZQhFNaNbNiNfxkxkZk@Base 15 + _D4core5bitop__T3rorTkZQhFNaNbNiNfxkxkZk@Base 15 + _D4core5bitop__T3rorTmZQhFNaNbNiNfxmxkZm@Base 15 + _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 + _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 + _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 + _D4core5cpuid10_hasPopcntyb@Base 15 + _D4core5cpuid10_hasRdrandyb@Base 15 + _D4core5cpuid10_hasRdseedyb@Base 15 + _D4core5cpuid10_isItaniumyb@Base 15 + _D4core5cpuid10_processoryAa@Base 15 + _D4core5cpuid10_x87onChipyb@Base 15 + _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 + _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 + _D4core5cpuid11CpuFeatures6__initZ@Base 15 + _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 + _D4core5cpuid11__moduleRefZ@Base 15 + _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 + _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 + _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 + _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 + _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12__ModuleInfoZ@Base 15 + _D4core5cpuid12_amd3dnowExtyb@Base 15 + _D4core5cpuid12_coresPerCPUyk@Base 15 + _D4core5cpuid12_hasLahfSahfyb@Base 15 + _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 + _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13_hasCmpxchg8byb@Base 15 + _D4core5cpuid13_hasPclmulqdqyb@Base 15 + _D4core5cpuid13_preferAthlonyb@Base 15 + _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 + _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 + _D4core5cpuid14_hasCmpxchg16byb@Base 15 + _D4core5cpuid14_hasVpclmulqdqyb@Base 15 + _D4core5cpuid14_threadsPerCPUyk@Base 15 + _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 + _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 + _D4core5cpuid14numCacheLevelsk@Base 15 + _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 + _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 + _D4core5cpuid15_hyperThreadingyb@Base 15 + _D4core5cpuid15_preferPentium1yb@Base 15 + _D4core5cpuid15_preferPentium4yb@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 + _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 + _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 + _D4core5cpuid17_has3dnowPrefetchyb@Base 15 + _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 + _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 + _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 + _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 + _D4core5cpuid18max_extended_cpuidk@Base 15 + _D4core5cpuid19_hasSysEnterSysExityb@Base 15 + _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 + _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 + _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 + _D4core5cpuid4_aesyb@Base 15 + _D4core5cpuid4_avxyb@Base 15 + _D4core5cpuid4_fmayb@Base 15 + _D4core5cpuid4_hleyb@Base 15 + _D4core5cpuid4_mmxyb@Base 15 + _D4core5cpuid4_rtmyb@Base 15 + _D4core5cpuid4_sseyb@Base 15 + _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5_avx2yb@Base 15 + _D4core5cpuid5_sse2yb@Base 15 + _D4core5cpuid5_sse3yb@Base 15 + _D4core5cpuid5_vaesyb@Base 15 + _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5modelk@Base 15 + _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 + _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 + _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 + _D4core5cpuid6_fp16cyb@Base 15 + _D4core5cpuid6_sse41yb@Base 15 + _D4core5cpuid6_sse42yb@Base 15 + _D4core5cpuid6_sse4ayb@Base 15 + _D4core5cpuid6_ssse3yb@Base 15 + _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6familyk@Base 15 + _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 + _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid7_amdMmxyb@Base 15 + _D4core5cpuid7_hasShayb@Base 15 + _D4core5cpuid7_vendoryAa@Base 15 + _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 + _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8_avx512fyb@Base 15 + _D4core5cpuid8_hasCmovyb@Base 15 + _D4core5cpuid8_hasFxsryb@Base 15 + _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 + _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 + _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 + _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 + _D4core5cpuid8steppingk@Base 15 + _D4core5cpuid9CacheInfo6__initZ@Base 15 + _D4core5cpuid9_amd3dnowyb@Base 15 + _D4core5cpuid9_hasLzcntyb@Base 15 + _D4core5cpuid9_hasRdtscyb@Base 15 + _D4core5cpuid9_isX86_64yb@Base 15 + _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 + _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 + _D4core5cpuid9max_cpuidk@Base 15 + _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 + _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 + _D4core6atomic11__moduleRefZ@Base 15 + _D4core6atomic12__ModuleInfoZ@Base 15 + _D4core6atomic5pauseFNaNbNiNfZv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKOxEQBrQBqQDxQBmZQCf@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKxEQBqQBpQDwQBlZQCe@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNeNkMKxCQBuQBtQBjZQCf@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std6loggerQCl6LoggerZQChFNaNbNiNeKOxCQBmQBlQDsQBhZOCQCbQCaQEhQBw@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKOxEQCeQCdQBtQBnZQCs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKxEQCdQCcQBsQBmZQCr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 + _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKOEQBqQBpQDxQBlQCdZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKQBpQBsZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKObbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKbbZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TC3std6loggerQCm6LoggerTQxZQClFNaNbNiNeKOCQBoQBnQDvQBjOQoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKOEQCeQCdQBtQBnQCrZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKQCdQCgZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKOEQCaQBzQEhQBvxQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKQBzxQBdZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKOhhZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKhhZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKOkkZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKkkZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKOmmZv@Base 15 + _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKmmZv@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 + _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTE3std11parallelism8TaskPool9PoolStateZQCpFNaNbNiNfPQBzZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOCQBu4sync5mutex5MutexZQCaFNaNbNiNfPOQBkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOE3std11parallelism8TaskPool9PoolStateZQCqFNaNbNiNfPOQCaZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTObZQBgFNaNbNiNfPObZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTbZQBfFNaNbNiNfPbZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 + _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 + _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 + _D4core6atomic__T3casZ__TQiTCQBb4sync5mutex5MutexTnTQyZQBmFNaNbNiNePOCQCqQBpQBnQBkOnOQqZb@Base 15 + _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePOEQCiQChQBxQBrQCvQCyZb@Base 15 + _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePQChQCkQCnZb@Base 15 + _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePObbbZb@Base 15 + _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePbbbZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 + _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTkZQzFNaNbNiNfKOkkZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 + _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 + _D4core6int12811__moduleRefZ@Base 15 + _D4core6int12812__ModuleInfoZ@Base 15 + _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 + _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 + _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 + _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 + _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 + _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 + _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 + _D4core6int1284Cent6__initZ@Base 15 + _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 + _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 + _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 + _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 + _D4core6memory10initializeFZv@Base 15 + _D4core6memory11__moduleRefZ@Base 15 + _D4core6memory12__ModuleInfoZ@Base 15 + _D4core6memory2GC12ProfileStats6__initZ@Base 15 + _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 + _D4core6memory2GC5Stats6__initZ@Base 15 + _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 + _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 + _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 + _D4core6memory2GC6__initZ@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 + _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 + _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 + _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 + _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 + _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 + _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 + _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 + _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 + _D4core6memory8BlkInfo_6__initZ@Base 15 + _D4core6memory8pageSizeym@Base 15 + _D4core6memory__T10pureMallocZQnFNaNbNiNemZPv@Base 15 + _D4core6memory__T11pureReallocZQoFNaNbNiPvmZQe@Base 15 + _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 + _D4core6stdcpp11string_view11__moduleRefZ@Base 15 + _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 + _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D4core6stdcpp4new_11__moduleRefZ@Base 15 + _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 + _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 + _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 + _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 + _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 + _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 + _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 + _D4core6stdcpp5array11__moduleRefZ@Base 15 + _D4core6stdcpp5array12__ModuleInfoZ@Base 15 + _D4core6stdcpp6memory11__moduleRefZ@Base 15 + _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 + _D4core6stdcpp6string11__moduleRefZ@Base 15 + _D4core6stdcpp6string12__ModuleInfoZ@Base 15 + _D4core6stdcpp6vector11__moduleRefZ@Base 15 + _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 + _D4core6stdcpp7utility11__moduleRefZ@Base 15 + _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 + _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 + _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 + _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 + _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 + _D4core6stdcpp8xutility11__moduleRefZ@Base 15 + _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 + _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 + _D4core6stdcpp9allocator11__moduleRefZ@Base 15 + _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception11__moduleRefZ@Base 15 + _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 + _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 + _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 + _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 + _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 + _D4core6stdcpp9exceptionQk6__initZ@Base 15 + _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 + _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 + _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 + _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 + _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 + _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 + _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 + _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 + _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 + _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 + _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 + _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 + _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 + _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 + _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 + _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 + _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 + _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 + _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 + _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 + _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 + _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 + _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 + _D4core6thread10threadbase11ThreadError6__initZ@Base 15 + _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 + _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 + _D4core6thread10threadbase11__moduleRefZ@Base 15 + _D4core6thread10threadbase11ll_nThreadsm@Base 15 + _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 + _D4core6thread10threadbase12__ModuleInfoZ@Base 15 + _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 + _D4core6thread10threadbase12suspendDepthk@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 + _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 + _D4core6thread10threadbase15ThreadException6__initZ@Base 15 + _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 + _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 + _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 + _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 + _D4core6thread10threadbase17multiThreadedFlagb@Base 15 + _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 + _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 + _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 + _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 + _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 + _D4core6thread10threadbase7ll_lockG72v@Base 15 + _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 + _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 + _D4core6thread11__moduleRefZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 + _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 + _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 + _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 + _D4core6thread11threadgroup11__moduleRefZ@Base 15 + _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 + _D4core6thread12__ModuleInfoZ@Base 15 + _D4core6thread5fiber11__moduleRefZ@Base 15 + _D4core6thread5fiber12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base11__moduleRefZ@Base 15 + _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 + _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 + _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 + _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 + _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 + _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 + _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 + _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 + _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 + _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 + _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 + _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 + _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 + _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 + _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 + _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 + _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 + _D4core6thread5fiber5Fiber6__initZ@Base 15 + _D4core6thread5fiber5Fiber6__vtblZ@Base 15 + _D4core6thread5fiber5Fiber7__ClassZ@Base 15 + _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 + _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 + _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 + _D4core6thread5types11__moduleRefZ@Base 15 + _D4core6thread5types12__ModuleInfoZ@Base 15 + _D4core6thread5types13ll_ThreadData6__initZ@Base 15 + _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 + _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 + _D4core6thread7context11__moduleRefZ@Base 15 + _D4core6thread7context12StackContext6__initZ@Base 15 + _D4core6thread7context12__ModuleInfoZ@Base 15 + _D4core6thread7context8Callable6__initZ@Base 15 + _D4core6thread7context8Callable6opCallMFZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 + _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 + _D4core6thread8osthread11__moduleRefZ@Base 15 + _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 + _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 + _D4core6thread8osthread12__ModuleInfoZ@Base 15 + _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 + _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 + _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 + _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 + _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 + _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 + _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 + _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 + _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 + _D4core6thread8osthread18resumeSignalNumberi@Base 15 + _D4core6thread8osthread19suspendSignalNumberi@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 + _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 + _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 + _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 + _D4core6thread8osthread6Thread3runMFZv@Base 15 + _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 + _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 + _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 + _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 + _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 + _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 + _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 + _D4core6thread8osthread6Thread6__initZ@Base 15 + _D4core6thread8osthread6Thread6__vtblZ@Base 15 + _D4core6thread8osthread6Thread7__ClassZ@Base 15 + _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 + _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 + _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 + _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 + _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 + _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 + _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 + _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 + _D4core6vararg11__moduleRefZ@Base 15 + _D4core6vararg12__ModuleInfoZ@Base 15 + _D4core7factory11__moduleRefZ@Base 15 + _D4core7factory12__ModuleInfoZ@Base 15 + _D4core7runtime11__moduleRefZ@Base 15 + _D4core7runtime12__ModuleInfoZ@Base 15 + _D4core7runtime14UnitTestResult6__initZ@Base 15 + _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 + _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 + _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 + _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 + _D4core7runtime5CArgs6__initZ@Base 15 + _D4core7runtime7Runtime10initializeFZb@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 + _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 + _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 + _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 + _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 + _D4core7runtime7Runtime6__initZ@Base 15 + _D4core7runtime7Runtime9terminateFZb@Base 15 + _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 + _D4core8builtins11__moduleRefZ@Base 15 + _D4core8builtins12__ModuleInfoZ@Base 15 + _D4core8demangle11__moduleRefZ@Base 15 + _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 + _D4core8demangle12__ModuleInfoZ@Base 15 + _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 + _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 + _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 + _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 + _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 + _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 + _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 + _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 + _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 + _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 + _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 + _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 + _D4core8demangle6Buffer6__initZ@Base 15 + _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 + _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 + _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 + _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 + _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 + _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 + _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 + _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 + _D4core8demangle7NoHooks6__initZ@Base 15 + _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 + _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 + _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 + _D4core8demangle8BufSlice6__initZ@Base 15 + _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 + _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 + _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 + _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 + _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 + _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 + _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 + _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 + _D4core8internal10attributes11__moduleRefZ@Base 15 + _D4core8internal10attributes12__ModuleInfoZ@Base 15 + _D4core8internal10entrypoint11__moduleRefZ@Base 15 + _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 + _D4core8internal11destruction11__moduleRefZ@Base 15 + _D4core8internal11destruction12__ModuleInfoZ@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std11concurrency7MessageZQBtFNfKQBiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKaFNaNbNiKQJtZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl3FTP4ImplZQBqFKQBdZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4HTTP4ImplZQBrFKQBeZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4SMTP4ImplZQBrFKQBeZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCrFNaNbNiNfKQCmZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDsFNaNbNiNfKQDnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std4file15DirIteratorImplZQBuFNfKQBjZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5range__T10OnlyResultTaZQpZQByFNaNbNiNfKQBtZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBbZQClFNaNbNiNfKQCgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTS3std5stdio4FileZQBjFNfKQyZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 + _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 + _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 + _D4core8internal12parseoptions11__moduleRefZ@Base 15 + _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 + _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 + _D4core8internal12parseoptions3minFNbNimmZm@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 + _D4core8internal12parseoptions6MemVal6__initZ@Base 15 + _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 + _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 + _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 + _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 + _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 + _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 + _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 + _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 + _D4core8internal2gc2os11__moduleRefZ@Base 15 + _D4core8internal2gc2os12__ModuleInfoZ@Base 15 + _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 + _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 + _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 + _D4core8internal2gc4bits11__moduleRefZ@Base 15 + _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 + _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 + _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 + _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 + _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 + _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 + _D4core8internal2gc4bits6GCBits6__initZ@Base 15 + _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 + _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 + _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 + _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 + _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 + _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 + _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 + _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 + _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 + _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 + _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 + _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 + _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 + _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 + _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 + _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 + _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 + _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 + _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 + _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 + _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 + _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 + _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 + _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 + _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 + _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _D4core8internal2gc5proxy11__moduleRefZ@Base 15 + _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 + _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 + _D4core8internal2gc5proxy14isInstanceInitb@Base 15 + _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 + _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 + _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 + _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 + _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 + _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 + _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 + _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 + _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 + _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 + _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 + _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 + _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 + _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 + _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 + _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 + _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 + _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 + _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 + _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 + _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 + _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 + _D4core8internal3utf10UTF8strideyAi@Base 15 + _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 + _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 + _D4core8internal3utf11__moduleRefZ@Base 15 + _D4core8internal3utf12__ModuleInfoZ@Base 15 + _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 + _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 + _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 + _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 + _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 + _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 + _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 + _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 + _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 + _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 + _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 + _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 + _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 + _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 + _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 + _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 + _D4core8internal4hash11__moduleRefZ@Base 15 + _D4core8internal4hash12__ModuleInfoZ@Base 15 + _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 + _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 + _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 + _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 + _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 + _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 + _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 + _D4core8internal4hash__T6hashOfTAykZQmFNaNbNiNfMxAykmZm@Base 15 + _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 + _D4core8internal4hash__T6hashOfTE3std8encoding3BOMZQBbFNaNbNiNeMxEQBhQBgQBaZm@Base 15 + _D4core8internal4hash__T6hashOfTG2kZQmFNaNbNiNfMKxG2kmZm@Base 15 + _D4core8internal4hash__T6hashOfTG31hZQnFNaNbNiNfMKxG31hmZm@Base 15 + _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 + _D4core8internal4hash__T6hashOfTPxG32hZQpFNaNbNiNeMxPQtZm@Base 15 + _D4core8internal4hash__T6hashOfTPxS3std11concurrency3TidZQBhFNaNbNiNeMxPQBmZm@Base 15 + _D4core8internal4hash__T6hashOfTPxvZQmFNaNbNiNeMxPvZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 + _D4core8internal4hash__T6hashOfTS3std4json9JSONValueZQBdFNaNbNiNfMKxSQBkQBjQBhmZm@Base 15 + _D4core8internal4hash__T6hashOfTaZQkFNaNbNiNeMxaZm@Base 15 + _D4core8internal4hash__T6hashOfTbZQkFNaNbNiNeMxbZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 + _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 + _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 + _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 + _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhmZm@Base 15 + _D4core8internal4hash__T6hashOfTiZQkFNaNbNiNeMxiZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 + _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 + _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 + _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 + _D4core8internal4hash__T6hashOfTuZQkFNaNbNiNeMxuZm@Base 15 + _D4core8internal4hash__T6hashOfTxC15TypeInfo_StructZQBcFNbNfxQBcZm@Base 15 + _D4core8internal4hash__T6hashOfTxC8TypeInfoZQuFNbNfxQtZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 + _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std3uni21DecompressedIntervalsZQBqFNaNbNiNfKxQBvZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 + _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 + _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 + _D4core8internal4util4math11__moduleRefZ@Base 15 + _D4core8internal4util4math12__ModuleInfoZ@Base 15 + _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 + _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 + _D4core8internal4util5array11__moduleRefZ@Base 15 + _D4core8internal4util5array12__ModuleInfoZ@Base 15 + _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 + _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 + _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 + _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 + _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 + _D4core8internal4util5array6_storeG256a@Base 15 + _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 + _D4core8internal5abort11__moduleRefZ@Base 15 + _D4core8internal5abort12__ModuleInfoZ@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 + _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 + _D4core8internal5array10comparison11__moduleRefZ@Base 15 + _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 + _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal5array10comparison__T5__cmpThZQjFNaNbNiNeMxAhMxQeZi@Base 15 + _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array10operations11__moduleRefZ@Base 15 + _D4core8internal5array10operations12__ModuleInfoZ@Base 15 + _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 + _D4core8internal5array10operations8toStringFmZAya@Base 15 + _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 + _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 + _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 + _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 + _D4core8internal5array11duplication11__moduleRefZ@Base 15 + _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 + _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 + _D4core8internal5array11duplication__T4_dupTxaTyaZQmFNaNbNeMAxaZAya@Base 15 + _D4core8internal5array11duplication__T4_dupTxhThZQlFNaNbNeMAxhZAh@Base 15 + _D4core8internal5array11duplication__T4_dupTxhTyhZQmFNaNbNeMAxhZAyh@Base 15 + _D4core8internal5array11duplication__T4_dupTxkTkZQlFNaNbNeMAxkZAk@Base 15 + _D4core8internal5array11duplication__T4_dupTxmTmZQlFNaNbNeMAxmZAm@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxaTyaZQqFNaNbNfMAxaZAya@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxhThZQpFNaNbNfMAxhZAh@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxhTyhZQqFNaNbNfMAxhZAyh@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxkTkZQpFNaNbNfMAxkZAk@Base 15 + _D4core8internal5array11duplication__T8_dupCtfeTxmTmZQpFNaNbNfMAxmZAm@Base 15 + _D4core8internal5array12construction11__moduleRefZ@Base 15 + _D4core8internal5array12construction12__ModuleInfoZ@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTAaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTAfZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTPaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTkZQrFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTlZQrFNaNbNembZAl@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTmZQrFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTuZQrFNaNbNembZAu@Base 15 + _D4core8internal5array12construction__T12_d_newarrayTTwZQrFNaNbNembZAw@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAfZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTPaZQsFNaNbNembZAQq@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTkZQrFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTlZQrFNaNbNembZAl@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTmZQrFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTuZQrFNaNbNembZAu@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTwZQrFNaNbNembZAw@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCpFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10TransitionZQCpFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T12_d_newarrayUTyhZQsFNaNbNembZAyh@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowThZQBcFNaNbNembZAh@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTkZQBcFNaNbNembZAk@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTmZQBcFNaNbNembZAm@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQDaFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10TransitionZQDaFNaNbNembZAyQCo@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 + _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyhZQBdFNaNbNembZAyh@Base 15 + _D4core8internal5array13concatenation11__moduleRefZ@Base 15 + _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAS3std3zip10ZipArchive7SegmentTQBfTQBjZQCeFNaNbNeQBxQCaZQCe@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAhTAxhTQeZQBbFNaNbNeQrQtZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwTQCaZQCvFNaNbNeQCoKQCsQCvKQCzQDcKQDgQDjKQDnQDqKQDuQDxKQEbQEeKQEiQElZQEp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwZQCrFNaNbNeQCkKQCoQCrKQCvQCyKQDcQDfKQDjQDmKQDqQDtKQDxQEaKQEeZQEi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsZQCnFNaNbNeQCgKQCkQCnKQCrQCuKQCyQDbKQDfQDiKQDmQDpKQDtQDwZQEa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoZQCjFNaNbNeQCcKQCgQCjKQCnQCqKQCuQCxKQDbQDeKQDiQDlKQDpZQDt@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkZQCfFNaNbNeQByKQCcQCfKQCjQCmKQCqQCtKQCxQDaKQDeQDhZQDl@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgZQCbFNaNbNeQBuKQByQCbKQCfQCiKQCmQCpKQCtQCwKQDaZQDe@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcZQBxFNaNbNeQBqKQBuQBxKQCbQCeKQCiQClKQCpQCsZQCw@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzZQBtFNaNbNeQBmKQBqQBtKQBxQCaKQCeQChKQClZQCp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwZQBqFNaNbNeQBjKQBnQBqKQBuQBxKQCbQCeZQCi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtZQBnFNaNbNeQBgKQBkQBnKQBrQBuKQByZQCc@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdKQBhQBkKQBoQBrZQBv@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdQBgQBjQBmQBpZQBt@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeKQBiQBlZQBp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeQBhQBkZQBo@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaKQBeQBhKQBlZQBp@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTyaZQBhFNaNbNeKQBbQBeKQBiyaZQBo@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyKQBbQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaKQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvKQyZQBb@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTQmZQBgFNaNbNeQzKxQvQBfZQBj@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTyaZQBgFNaNbNeQzKxQvyaZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaZQBdFNaNbNeQwKxQsZQBd@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaTQlZQBfFNaNbNeQyKyQuQBeZQBi@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaZQBcFNaNbNeQvKyQrZQBc@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeKQvyaZQBa@Base 15 + _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeQuKyaZQBa@Base 15 + _D4core8internal5array5utils11__moduleRefZ@Base 15 + _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 + _D4core8internal5array5utils12__ModuleInfoZ@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 + _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAaZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAfZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTC3std11parallelism17ParallelismThreadZQCbFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTPaZQsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std5regexQBy2ir8BytecodeZQBqFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTkZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTlZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTmZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTuZQrFNaNbNemZAv@Base 15 + _D4core8internal5array5utils__T12__arrayAllocTwZQrFNaNbNemZAv@Base 15 + _D4core8internal5array7casting11__moduleRefZ@Base 15 + _D4core8internal5array7casting12__ModuleInfoZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNbNiNeNkMAhZAu@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNbNiNeNkMAhZAw@Base 15 + _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNbNiNeNkMAvZAQHt@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNbNiNeNkMAxhZAxu@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNbNiNeNkMAxhZAxw@Base 15 + _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D4core8internal5array7casting__T16onArrayCastErrorZQtFNaNbNiNeAyammQfmZv@Base 15 + _D4core8internal5array8capacity11__moduleRefZ@Base 15 + _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAAyaTQeZ18_d_arraysetlengthTFNaNbNeNkMKQBnmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std3zip13ArchiveMemberTQzZ18_d_arraysetlengthTFNaNbNeNkMKQCimZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std6socket7AddressTQvZ18_d_arraysetlengthTFNaNbNeNkMKQCemZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std3zip10ZipArchive7SegmentTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir10NamedGroupTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir8BytecodeTQBbZ18_d_arraysetlengthTFNaNbNeNkMKQClmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std6socket11AddressInfoTQBaZ18_d_arraysetlengthTFNaNbNeNkMKQCkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAhThZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAkTkZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAlTlZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAmTmZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAuTuZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAvTvZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 + _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 + _D4core8internal5array8equality11__moduleRefZ@Base 15 + _D4core8internal5array8equality12__ModuleInfoZ@Base 15 + _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 + _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 + _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTuTuZQnFNaNbNiMxPuMxQemZb@Base 15 + _D4core8internal5array8equality__T7isEqualTwTwZQnFNaNbNiMxPwMxQemZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 + _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTuTuZQoFNaNbNiNeMxAuMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTwTwZQoFNaNbNiNeMxAwMxQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAS3std3uni17CodepointIntervalTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxC3std3zip13ArchiveMemberTxQBaZQBpFMAxQBlMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeTxQHbZQHqFNaNbNiNfMAxQHuMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std3uni17CodepointIntervalTxQBeZQBtFNaNbNiNfMAxQBxMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTxQByZQCnFNaNbNiNfMAxQCrMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4file15DirIteratorImpl9DirHandleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4file8DirEntryTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std4json9JSONValueTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir10NamedGroupTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir11CharMatcherTxQBgZQBvFNaNbNiNfMAxQBzMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir8BytecodeTxQBcZQBrFNaNbNiNfMAxQBvMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std6getopt6OptionTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std6socket11AddressInfoTxQBbZQBqFMAxQBmMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10LeapSecondTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10TransitionTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone14TempTransitionTxQCeZQCtFNaNbNiNfMAxQCxMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxS3std8typecons__T5TupleTkTkTkZQnTxQBiZQBxFNaNbNiNfMAxQCbMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 + _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 + _D4core8internal5array8equality__T8__equalsTyS3stdQBr14unicode_tables15UnicodePropertyTyQBrZQCgFNaNbNiNfMAyQCkMQgZb@Base 15 + _D4core8internal5array9appending11__moduleRefZ@Base 15 + _D4core8internal5array9appending12__ModuleInfoZ@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAAyaTQeZQBbFNaNbNcNeMNkKQyMQBbZQBf@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAS3std5regexQCh2ir8BytecodeTQBbZQBzFNaNbNcNeMNkKQBwMQCaZQCe@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAhThZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 + _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAC3std6socket7AddressTQvZQBuFNaNbNcNeMNkKQBpmZQBu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTACQCe6thread5fiber5FiberTQyZQBxFNaNbNcNeMNkKQBsmZQBx@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin1CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin2CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1250CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1251CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1252CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding9AsciiCharTQzZQByFNaNbNcNeMNkKQBtmZQBy@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTQBxZQCxFNaNbNcNeMNkKQCsmZQCx@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3zip10ZipArchive7SegmentTQBeZQCeFNaNbNcNeMNkKQBzmZQCe@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file15DirIteratorImpl9DirHandleTQBmZQCmFNaNbNcNeMNkKQChmZQCm@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file8DirEntryTQuZQBtFNaNbNcNeMNkKQBomZQBt@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj12backtracking9CtContext7CtStateTQBvZQCvFNaNbNcNeMNkKQCqmZQCv@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj2ir8BytecodeTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std6logger11multilogger16MultiLoggerEntryTQBsZQCsFNaNbNcNeMNkKQCnmZQCs@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8datetime8timezone13PosixTimeZone14TempTransitionTQCdZQDdFNaNbNcNeMNkKQCymZQDd@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCiTQDdZQEdFNaNbNcNeMNkKQDymZQEd@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTkTkTkZQnTQBhZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAhThZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAkTkZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAmTmZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAxS3std5regexQCk2ir11CharMatcherTxQBgZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10LeapSecondTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10TransitionTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyhTyhZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 + _D4core8internal5newaa11__moduleRefZ@Base 15 + _D4core8internal5newaa12__ModuleInfoZ@Base 15 + _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 + _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 + _D4core8internal5newaa4Impl6__initZ@Base 15 + _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 + _D4core8internal5newaa6Bucket6__initZ@Base 15 + _D4core8internal5newaa7AAShell6__initZ@Base 15 + _D4core8internal5qsort11__moduleRefZ@Base 15 + _D4core8internal5qsort12__ModuleInfoZ@Base 15 + _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 + _D4core8internal6atomic11__moduleRefZ@Base 15 + _D4core8internal6atomic12__ModuleInfoZ@Base 15 + _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 + _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TE3std6loggerQCu8LogLevelZQCjFNaNbNiNePNgEQBoQBnQEdQBjZNgQq@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNePNgCQBsQBrQBhZNgQn@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNePNgEQCbQCaQBqQBkZNgQq@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC3std6loggerQCv6LoggerZQCiFNaNbNiNePONgCQBnQBmQEdQBiZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 + _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TbZQBnFNaNbNiNePbbZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TC3std6loggerQCv6LoggerZQCiFNaNbNiNePQBkQBnZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCxFNaNbNiNePQBzQCcZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5ThZQBnFNaNbNiNePhhZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TkZQBnFNaNbNiNePkkZv@Base 15 + _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TmZQBnFNaNbNiNePmmZv@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 + _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TCQDh4sync5mutex5MutexZQDeFNaNbNiNePQBjQeQBoZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TE3std11parallelism8TaskPool9PoolStateZQDuFNaNbNiNePQBzQeQCeZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TbZQCkFNaNbNiNePbQcbZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 + _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TCQDn4sync5mutex5MutexZQDkFNaNbNiNePQBjxCQFaQBnQBlQBiQCaZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TE3std11parallelism8TaskPool9PoolStateZQEaFNaNbNiNePQBzxEQCdQCcQBsQBmQCqZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TbZQCqFNaNbNiNePbxbbZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 + _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 + _D4core8internal6moving11__moduleRefZ@Base 15 + _D4core8internal6moving12__ModuleInfoZ@Base 15 + _D4core8internal6string11__moduleRefZ@Base 15 + _D4core8internal6string12__ModuleInfoZ@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 + _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D4core8internal6string__T18signedToTempStringVii10Vbi0TaZQBgFNaNbNiNflNkMAaZQd@Base 15 + _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 + _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 + _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 + _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 + _D4core8internal6traits11__moduleRefZ@Base 15 + _D4core8internal6traits12__ModuleInfoZ@Base 15 + _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D4core8internal6traits7hasDtorFAAyaZb@Base 15 + _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 + _D4core8internal7convert11__moduleRefZ@Base 15 + _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 + _D4core8internal7convert12__ModuleInfoZ@Base 15 + _D4core8internal7convert5Float6__initZ@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 + _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 + _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 + _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 + _D4core8internal7convert__T7toUbyteTE3std4json8JSONTypeZQBdFNaNbNiNeMKxEQBjQBiQBgZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5Store6ObjectZQBrFNaNbNiNeMNkKxSQBzQByQBwQBpQBmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5StoreZQBkFNaNbNiNeMNkKxSQBsQBrQBpQBiZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTS3std4json9JSONValueZQBeFNaNbNiNeMNkKxSQBmQBlQBjZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTbZQlFNaNbNiNeMKxbZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTdZQlFNaNbNiNeMKxdZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTgZQlFNaNbNiNeMKxgZAxh@Base 15 + _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTlZQlFNaNbNiNeMKxlZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 + _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 + _D4core8internal7dassert11__moduleRefZ@Base 15 + _D4core8internal7dassert12__ModuleInfoZ@Base 15 + _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 + _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 + _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 + _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 + _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 + _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 + _D4core8internal7switch_11__moduleRefZ@Base 15 + _D4core8internal7switch_12__ModuleInfoZ@Base 15 + _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130VxQDoa19_5275737369612054696d65205a6f6e65203131VxQFja21_42656c61727573205374616e646172642054696d65ZQHvFNaNbNiNfMxQHvZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130ZQEbFNaNbNiNfMxQEbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa21_42656c61727573205374616e646172642054696d65ZQCmFNaNbNiNfMxQCmZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZ5casesyG15Aa@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 + _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 + _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 + _D4core8internal8lifetime11__moduleRefZ@Base 15 + _D4core8internal8lifetime12__ModuleInfoZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S11__xopEqualsMxFKxSQDcQDaQCu__TQCoTQCfTQCjTQCnZQDeFKQCwKQDaZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S9__xtoHashFNbNeKxSQDbQCzQCt__TQCnTQCeTQCiTQCmZQDdFKQCvKQCzZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S__T6__ctorZQiMFNaNbNcNiNfKQBwZSQDoQDmQDg__TQDaTQCrTQCvTQCzZQDqFKQDiKQDmZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFNaNbNiNfKQwKQzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S11__xopEqualsMxFKxSQEbQDzQDt__TQDnTQDeTQDiTQDmZQEdFKQDvKQDzZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S9__xtoHashFNbNeKxSQEaQDyQDs__TQDmTQDdTQDhTQDlZQEcFKQDuKQDyZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S__T6__ctorZQiMFNaNbNcNiNfKQCvZSQEnQElQEf__TQDzTQDqTQDuTQDyZQEpFKQEhKQElZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFNaNbNiNfKQBtKQBxZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S11__xopEqualsMxFKxSQDzQDxQDr__TQDlTQDcTQDgTQDkZQEbFKQDtKQDxZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S9__xtoHashFNbNeKxSQDyQDwQDq__TQDkTQDbTQDfTQDjZQEaFKQDsKQDwZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S__T6__ctorZQiMFNaNbNcNiNfKQCtZSQElQEjQEd__TQDxTQDoTQDsTQDwZQEnFKQEfKQEjZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFNaNbNiNfKQBrKQBvZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxZQBnFNaNbNiNfKQBnKQBrZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__fieldDtorMFNeZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__xopEqualsMxFKxSQFcQFaQEu__TQEoTQEfTQEjTQDmZQFeFKQEwKQDzZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S15__fieldPostblitMFNlZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S8opAssignMFNcNjNfSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZQBu@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S9__xtoHashFNbNeKxSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S__T6__ctorZQiMFNcKQCnZSQFgQFeQEy__TQEsTQEjTQEnTQDqZQFiFKQFaKQEdZQCo@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqTQJiZQJzFNaNbNiNfKQJzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl3FTP4ImplTQyZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4HTTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4SMTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S11__xopEqualsMxFKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S__T6__ctorZQiMFNaNbNcNiNfKQDaZSQEsQEqQEk__TQEeTQDvTQDzTQEdZQEuFKQEmKQEqZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFNaNbNiNfKQByKQCcZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__fieldDtorMFNeZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__xopEqualsMxFKxSQFeQFcQEw__TQEqTQEhTQElTQDjTQDjTbZQFmFKQFeKQEcKQEcKbZQCwZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S8opAssignMFNcNjNeSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZQCg@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S9__xtoHashFNbNeKxSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S__T6__ctorZQiMFNcNfKQCmKQCmKbZSQFqQFoQFi__TQFcTQEtTQExTQDvTQDvTbZQFyFKQFqKQEoKQEoKbZQDi@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFNfKQCkKQBiKQBiKbZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S11__xopEqualsMxFKxSQEhQEfQDz__TQDtTQDkTQDoTQDsZQEjFKQEbKQEfZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S9__xtoHashFNbNeKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S__T6__ctorZQiMFNaNbNcNiNfKQDbZSQEtQErQEl__TQEfTQDwTQEaTQEeZQEvFKQEnKQErZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFNaNbNiNfKQBzKQCdZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S__T6__ctorZQiMFNaNbNcNiNfKQCyZSQEqQEoQEi__TQEcTQDtTQDxTQEbZQEsFKQEkKQEoZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFNaNbNiNfKQBwKQCaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S11__xopEqualsMxFKxSQEdQEbQDv__TQDpTQDgTQDkTQDoZQEfFKQDxKQEbZQCkZb@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S9__xtoHashFNbNeKxSQEcQEaQDu__TQDoTQDfTQDjTQDnZQEeFKQDwKQEaZQCjZm@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S__T6__ctorZQiMFNaNbNcNiNfKQCxZSQEpQEnQEh__TQEbTQDsTQDwTQEaZQErFKQEjKQEnZQCw@Base 15 + _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFNaNbNiNfKQBvKQBzZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S__T6__ctorZQiMFNaNbNcNiNfKaZSQDgQDeQCy__TQCsTaTaTaZQDcFKaKaZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFNaNbNiNfKaKaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S__T6__ctorZQiMFNaNbNcNiNfKkZSQDgQDeQCy__TQCsTkTkTkZQDcFKkKkZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFNaNbNiNfKkKkZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S__T6__ctorZQiMFNaNbNcNiNfKmZSQDgQDeQCy__TQCsTmTmTmZQDcFKmKmZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFNaNbNiNfKmKmZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S__T6__ctorZQiMFNaNbNcNiNfKwZSQDgQDeQCy__TQCsTwTwTwZQDcFKwKwZQCk@Base 15 + _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFNaNbNiNfKwKwZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S__T6__ctorZQiMFNaNbNcNiNfKxaZSQDkQDiQDc__TQCwTxaTaTxaZQDiFKaKxaZQCo@Base 15 + _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFNaNbNiNfKaKxaZv@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S__T6__ctorZQiMFNaNbNcNiNfKhZSQDhQDfQCz__TQCtTyaTaThZQDeFKaKhZQCl@Base 15 + _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFNaNbNiNfKaKhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency7MessageZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCuFNaNbNiNeMKQCnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKdFNaNbNiNeMKQJwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl3FTP4ImplZQBtFNaNbNiNeMKQBmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4HTTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4SMTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std3uni17CodepointIntervalZQByFNaNbNiNeMKQBrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std4file15DirIteratorImplZQBxFNaNbNiNeMKQBqZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAAyaZQxZQCjFNaNbNiNeMKQCcZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQDeFNaNbNiNeMKQCxZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQDfFNaNbNiNeMKQCyZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAxaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyuZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAywZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTyAaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std5stdio4FileZQBmFNaNbNiNeMKQBfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCyFNaNbNiNeMKQCrZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCpFNaNbNiNeMKQCiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1SZQCsFNaNbNiNeMKQClZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1SZQDrFNaNbNiNeMKQDkZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1SZQDpFNaNbNiNeMKQDiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1SZQEsFNaNbNiNeMKQElZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1SZQDwFNaNbNiNeMKQDpZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1SZQEuFNaNbNiNeMKQEnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1SZQDxFNaNbNiNeMKQDqZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1SZQDuFNaNbNiNeMKQDnZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1SZQDtFNaNbNiNeMKQDmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTaTaTaZQtFKaKaZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTkTkTkZQtFKkKkZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTmTmTmZQtFKmKmZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTwTwTwZQtFKwKwZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTxaTaTxaZQvFKaKxaZ1SZQCpFNaNbNiNeMKQCiZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTyaTaThZQuFKaKhZ1SZQCnFNaNbNiNeMKQCgZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTaZQxFNaNbNiNeMKaZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTkZQxFNaNbNiNeMKkZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTmZQxFNaNbNiNeMKmZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTuZQxFNaNbNiNeMKuZv@Base 15 + _D4core8internal8lifetime__T18emplaceInitializerTwZQxFNaNbNiNeMKwZv@Base 15 + _D4core8internal8postblit11__moduleRefZ@Base 15 + _D4core8internal8postblit12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock11__moduleRefZ@Base 15 + _D4core8internal8spinlock12__ModuleInfoZ@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 + _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 + _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 + _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 + _D4core8internal8spinlock8SpinLock6__initZ@Base 15 + _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 + _D4core8internal9container5array11__moduleRefZ@Base 15 + _D4core8internal9container5array12__ModuleInfoZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 + _D4core8internal9container5treap11__moduleRefZ@Base 15 + _D4core8internal9container5treap12__ModuleInfoZ@Base 15 + _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 + _D4core8internal9container5treap4Rand6__initZ@Base 15 + _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 + _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 + _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 + _D4core8internal9container6common11__moduleRefZ@Base 15 + _D4core8internal9container6common12__ModuleInfoZ@Base 15 + _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 + _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 + _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 + _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 + _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 + _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 + _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 + _D4core8internal9container7hashtab11__moduleRefZ@Base 15 + _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 + _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 + _D4core8lifetime11__moduleRefZ@Base 15 + _D4core8lifetime12__ModuleInfoZ@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 + _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCnFNaNbNeZPQCl@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAAyaZQxZQCcFNaNbNeZPQCa@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQCxFNaNbNeZPQCv@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQCyFNaNbNeZPQCw@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAxaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyuZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAywZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTyAaZQwZQCbFNaNbNeZPQBz@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCrFNaNbNeZPQCp@Base 15 + _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCiFNaNbNeZPQCg@Base 15 + _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 + _D4core8lifetime__T11copyEmplaceTS3std11concurrency3TidTQxZQBoFNaNbNiKQBlKQBpZv@Base 15 + _D4core8lifetime__T11moveEmplaceTAyaZQsFNaNbNiKQoKQrZv@Base 15 + _D4core8lifetime__T11moveEmplaceTC3std3zip13ArchiveMemberZQBnFNaNbNiKQBkKQBoZv@Base 15 + _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCnFNaNbNiKQCkKQCoZv@Base 15 + _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCrFNaNbNiKQCoKQCsZv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency10MessageBoxZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency11MailboxFullZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler14FiberConditionZQCoFNaNbNeZQCk@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler9InfoFiberZQCiFNaNbNeZQCe@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11concurrency19TidMissingExceptionZQCdFNaNbNeZQBz@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism17ParallelismThreadZQCbFNaNbNeZQBx@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism20ParallelForeachErrorZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std11parallelism8TaskPoolZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3net4curl13CurlExceptionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3net4curl20CurlTimeoutExceptionZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3uri12URIExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3utf12UTFExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3zip12ZipExceptionZQBnFNaNbNeZQBj@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std3zip13ArchiveMemberZQBoFNaNbNeZQBk@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4conv13ConvExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4conv21ConvOverflowExceptionZQBxFNaNbNeZQBt@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4file13FileExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4json13JSONExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4uuid20UUIDParsingExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std4zlib13ZlibExceptionZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std5regex8internal2ir14RegexExceptionZQCdFNaNbNeZQBz@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std5stdio14StdioExceptionZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6format15FormatExceptionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket11UnixAddressZQBpFNaNbNeZQBl@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket12InternetHostZQBqFNaNbNeZQBm@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket13HostExceptionZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket14UnknownAddressZQBsFNaNbNeZQBo@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket15InternetAddressZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket16AddressExceptionZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket16Internet6AddressZQBuFNaNbNeZQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket17SocketOSExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket21SocketAcceptExceptionZQBzFNaNbNeZQBv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket22SocketFeatureExceptionZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket23UnknownAddressReferenceZQCbFNaNbNeZQBx@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket24SocketParameterExceptionZQCcFNaNbNeZQBy@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket6SocketZQBjFNaNbNeZQBf@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std6socket7ServiceZQBkFNaNbNeZQBg@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7process16ProcessExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7process3PidZQBhFNaNbNeZQBd@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std7variant16VariantExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding17EncodingExceptionZQBxFNaNbNeZQBt@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding18EncodingSchemeUtf8ZQByFNaNbNeZQBu@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding19EncodingSchemeASCIIZQBzFNaNbNeZQBv@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin1ZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin2ZQCaFNaNbNeZQBw@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf16NativeZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf32NativeZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1250ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1251ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1252ZQCfFNaNbNeZQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTC3std9exception14ErrnoExceptionZQBvFNaNbNeZQBr@Base 15 + _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 + _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh4time13TimeExceptionZQBoFNaNbNeZQBk@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception10RangeErrorZQBqFNaNbNeZQBm@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16OutOfMemoryErrorZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 + _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 + _D4core8lifetime__T12_d_newclassTTyC3std8datetime8timezone13PosixTimeZoneZQCdFNaNbNeZyQBz@Base 15 + _D4core8lifetime__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8bitmanip__T7BitsSetTmZQlZQBxFNaNbNiNfMKQBtNkMKQCaZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 + _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 + _D4core8lifetime__T15trustedMoveImplTAyaZQwFNaNbNiNeNkMKQtZQw@Base 15 + _D4core8lifetime__T15trustedMoveImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D4core8lifetime__T15trustedMoveImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 + _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 + _D4core8lifetime__T4moveTAyaZQkFNaNbNiNfNkMKQtZQw@Base 15 + _D4core8lifetime__T4moveTC3std3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T4moveTE3std6loggerQBj8LogLevelZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T4moveTS3std8bitmanip__T7BitsSetTmZQlZQBlFNaNbNiNfKQBsKQBwZv@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 + _D4core8lifetime__T7emplaceTAyaTQeZQqFNaNbNiNfPQtKQwZQh@Base 15 + _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiAvKOQBtZQEz@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiNfQEtKOQBwZQFc@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiAvZQGh@Base 15 + _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiNfQGgZQGk@Base 15 + _D4core8lifetime__T7emplaceTC3std3zip13ArchiveMemberTQzZQBlFNaNbNiNfPQBpKQBtZQj@Base 15 + _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFAvKQBrQBeZQDj@Base 15 + _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFNfQDbKQBuQBhZQDm@Base 15 + _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFAvQBaZQCm@Base 15 + _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFNfQCiQBdZQCp@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 + _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 + _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 + _D4core8lifetime__T7emplaceTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQyZQClFPQChKQBkZQj@Base 15 + _D4core8lifetime__T7emplaceTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJrFNaNbNiNfPQJvZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl3FTP4ImplZQBhFNaNbNiNfPQBlZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl4HTTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std3net4curl4SMTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 + _D4core8lifetime__T7emplaceTS3std4file15DirIteratorImplTAyaTEQBgQBf8SpanModeTbZQCiFNfPQCgKQBiKQBiKbZQp@Base 15 + _D4core8lifetime__T7emplaceTS3std6socket11AddressInfoTQBaZQBnFNaNbNiNfPQBrKQBvZQj@Base 15 + _D4core8lifetime__T7emplaceTaTaZQnFNaNbNiNfPaKaZQf@Base 15 + _D4core8lifetime__T7emplaceTwTwZQnFNaNbNiNfPwKwZQf@Base 15 + _D4core8lifetime__T8moveImplTAyaZQoFNaNbNiNfNkMKQtZQw@Base 15 + _D4core8lifetime__T8moveImplTC3std3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T8moveImplTE3std6loggerQBn8LogLevelZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 + _D4core8lifetime__T8moveImplTS3std8bitmanip__T7BitsSetTmZQlZQBpFNaNbNiNfMKQBtNkMKQCaZv@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 + _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 + _D4core8volatile11__moduleRefZ@Base 15 + _D4core8volatile12__ModuleInfoZ@Base 15 + _D4core9attribute11__moduleRefZ@Base 15 + _D4core9attribute12__ModuleInfoZ@Base 15 + _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 + _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 + _D4core9attribute9gnuAbiTag6__initZ@Base 15 + _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 + _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 + _D4core9exception10RangeError6__initZ@Base 15 + _D4core9exception10RangeError6__vtblZ@Base 15 + _D4core9exception10RangeError7__ClassZ@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 + _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 + _D4core9exception11AssertError6__initZ@Base 15 + _D4core9exception11AssertError6__vtblZ@Base 15 + _D4core9exception11AssertError7__ClassZ@Base 15 + _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 + _D4core9exception11SwitchError6__initZ@Base 15 + _D4core9exception11SwitchError6__vtblZ@Base 15 + _D4core9exception11SwitchError7__ClassZ@Base 15 + _D4core9exception11__moduleRefZ@Base 15 + _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 + _D4core9exception12__ModuleInfoZ@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 + _D4core9exception13FinalizeError6__initZ@Base 15 + _D4core9exception13FinalizeError6__vtblZ@Base 15 + _D4core9exception13FinalizeError7__ClassZ@Base 15 + _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 + _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 + _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 + _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 + _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception15ArrayIndexError6__initZ@Base 15 + _D4core9exception15ArrayIndexError6__vtblZ@Base 15 + _D4core9exception15ArrayIndexError7__ClassZ@Base 15 + _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 + _D4core9exception15ArraySliceError6__initZ@Base 15 + _D4core9exception15ArraySliceError6__vtblZ@Base 15 + _D4core9exception15ArraySliceError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 + _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 + _D4core9exception16OutOfMemoryError6__initZ@Base 15 + _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 + _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 + _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 + _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 + _D4core9exception16UnicodeException6__initZ@Base 15 + _D4core9exception16UnicodeException6__vtblZ@Base 15 + _D4core9exception16UnicodeException7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo6__initZ@Base 15 + _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 + _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 + _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 + _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 + _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 + _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 + _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 + _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 + _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 + _D4core9exception6_storeG256v@Base 15 + _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 + _D4core9exception9ForkError6__initZ@Base 15 + _D4core9exception9ForkError6__vtblZ@Base 15 + _D4core9exception9ForkError7__ClassZ@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 + _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 + _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 + _D50TypeInfo_C3std12experimental9allocator10IAllocator6__initZ@Base 15 + _D50TypeInfo_E3std6format8internal5write12RoundingMode6__initZ@Base 15 + _D50TypeInfo_E3std8internal4test10dummyrange9RangeType6__initZ@Base 15 + _D50TypeInfo_E3std9algorithm9iteration14GroupingOpType6__initZ@Base 15 + _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 + _D50TypeInfo_S3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D50TypeInfo_S3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 + _D50TypeInfo_S3std4math8hardware20FloatingPointControl6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 + _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 + _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D50TypeInfo_xS3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 + _D51TypeInfo_E3std6format8internal5write13PrecisionType6__initZ@Base 15 + _D51TypeInfo_E3std6format8internal5write13RoundingClass6__initZ@Base 15 + _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 + _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 + _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 + _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D51TypeInfo_S3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D51TypeInfo_S3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 + _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 + _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 + _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 + _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 + _D51TypeInfo_xC3std12experimental9allocator10IAllocator6__initZ@Base 15 + _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 + _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 + _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 + _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 + _D52TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D52TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 + _D52TypeInfo_S3std12experimental9allocator12RCIAllocator6__initZ@Base 15 + _D52TypeInfo_S3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 + _D52TypeInfo_S3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 + _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 + _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 + _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 + _D53TypeInfo_AS3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 + _D53TypeInfo_E3std8typecons__T4FlagVAyaa6_756e73616665ZQz6__initZ@Base 15 + _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 + _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 + _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 + _D53TypeInfo_S3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 + _D53TypeInfo_S3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 + _D53TypeInfo_S3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 + _D53TypeInfo_S3std5regex8internal12backtracking9CtContext6__initZ@Base 15 + _D53TypeInfo_S3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 + _D53TypeInfo_S3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 + _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 + _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 + _D54TypeInfo_E3std12experimental9allocator5typed9AllocFlag6__initZ@Base 15 + _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 + _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 + _D54TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 + _D54TypeInfo_S3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 + _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 + _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 + _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_E3std6format8internal5write17HasToStringResult6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 + _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 + _D55TypeInfo_PS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_S3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 + _D55TypeInfo_S3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 + _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 + _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 + _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 + _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D55TypeInfo_yS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 + _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D56TypeInfo_C3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D56TypeInfo_E3std8typecons__T4FlagVAyaa7_646f436f756e74ZQBb6__initZ@Base 15 + _D56TypeInfo_S3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 + _D56TypeInfo_S3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D56TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 + _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 + _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 + _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 + _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 + _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 + _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 + _D57TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 + _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 + _D57TypeInfo_xC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D57TypeInfo_yS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D58TypeInfo_AS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D58TypeInfo_AyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_6164617074697665ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_636865636b446e73ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_696e646972656374ZQBd6__initZ@Base 15 + _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_706f704669727374ZQBd6__initZ@Base 15 + _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 + _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_OxC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 + _D58TypeInfo_S3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D58TypeInfo_S3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D58TypeInfo_S3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D58TypeInfo_S3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 + _D58TypeInfo_S3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 + _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 + _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 + _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 + _D58TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_AxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 + _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 + _D59TypeInfo_OS3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 + _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 + _D59TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 + _D59TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D59TypeInfo_S3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 + _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 + _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 + _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 + _D59TypeInfo_xAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 + _D59TypeInfo_xAyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6175746f5374617274ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6c65616e5269676874ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6f70656e5269676874ZQBf6__initZ@Base 15 + _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_706970654f6e506f70ZQBf6__initZ@Base 15 + _D60TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 + _D60TypeInfo_S3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_S3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 + _D60TypeInfo_S3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 + _D60TypeInfo_xS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D60TypeInfo_xS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 + _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 + _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 + _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 + _D61TypeInfo_PxS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D61TypeInfo_S3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 + _D61TypeInfo_S3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 + _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 + _D61TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 + _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 + _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 + _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 + _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 + _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 + _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 + _D61TypeInfo_xPS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 + _D62TypeInfo_AS3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 + _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 + _D62TypeInfo_S3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 + _D62TypeInfo_S3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 + _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 + _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_616c6c6f636174654743ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_65786861757374697665ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_6d756c7469626c6f636bZQBi6__initZ@Base 15 + _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_736f72744f7574707574ZQBi6__initZ@Base 15 + _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 + _D63TypeInfo_S3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D63TypeInfo_S3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 + _D63TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 + _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 + _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 + _D63TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 + _D64TypeInfo_AS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D64TypeInfo_OS3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 + _D64TypeInfo_PS3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 + _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 + _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 + _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 + _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D64TypeInfo_xS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_AxS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_E3std8typecons__T4FlagVAyaa11_776974685061727469616cZQBk6__initZ@Base 15 + _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 + _D65TypeInfo_S3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 + _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 + _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 + _D65TypeInfo_S3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 + _D65TypeInfo_S3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 + _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 + _D65TypeInfo_xAS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 + _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 + _D66TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 + _D66TypeInfo_S4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 + _D66TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 + _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_437265617465466f6c646572ZQBm6__initZ@Base 15 + _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBm6__initZ@Base 15 + _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D67TypeInfo_S3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D67TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 + _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 + _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 + _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 + _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 + _D68TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 + _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 + _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D68TypeInfo_S4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 + _D68TypeInfo_xS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBo6__initZ@Base 15 + _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBo6__initZ@Base 15 + _D69TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_S3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 + _D69TypeInfo_S3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 + _D69TypeInfo_S3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 + _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 + _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D69TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 + _D69TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 + _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D6Object6__initZ@Base 15 + _D6Object6__vtblZ@Base 15 + _D6Object7__ClassZ@Base 15 + _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 + _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 + _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 + _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 + _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 + _D6object10ModuleInfo6__initZ@Base 15 + _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 + _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 + _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 + _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 + _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 + _D6object10_xopEqualsFIPvIQdZb@Base 15 + _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 + _D6object11__moduleRefZ@Base 15 + _D6object12__ModuleInfoZ@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 + _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 + _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 + _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 + _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 + _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 + _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 + _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 + _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 + _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 + _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 + _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 + _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 + _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 + _D6object14OffsetTypeInfo6__initZ@Base 15 + _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 + _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 + _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 + _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 + _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 + _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 + _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 + _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 + _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 + _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 + _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 + _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 + _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 + _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 + _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 + _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 + _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 + _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 + _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 + _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 + _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 + _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 + _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 + _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 + _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 + _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 + _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 + _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 + _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 + _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 + _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 + _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 + _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 + _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 + _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 + _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 + _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 + _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 + _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 + _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 + _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 + _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 + _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 + _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 + _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 + _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 + _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 + _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 + _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 + _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 + _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 + _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 + _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 + _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 + _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 + _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 + _D6object19__cpp_type_info_ptr6__initZ@Base 15 + _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 + _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 + _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 + _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 + _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 + _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 + _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 + _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 + _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 + _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 + _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 + _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 + _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 + _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 + _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 + _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr11__xopEqualsMxFKxSQCxQCt__TQBvTQBsTQBsZQChZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr9__xtoHashFNbNeKxSQCwQCs__TQBuTQBrTQBrZQCgZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk11__xopEqualsMxFKxSQDrQDn__TQCpTQCmTQCmZQDbZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk9__xtoHashFNbNeKxSQDqQDm__TQCoTQClTQClZQDaZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt11__xopEqualsMxFKxSQEaQDw__TQCyTQCvTQCvZQDkZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt9__xtoHashFNbNeKxSQDzQDv__TQCxTQCuTQCuZQDjZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo11__xopEqualsMxFKxSQCuQCq__TQBsTQBpTQBtZQCeZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo9__xtoHashFNbNeKxSQCtQCp__TQBrTQBoTQBsZQCdZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi11__xopEqualsMxFKxSQDpQDl__TQCnTQCkTQCkZQCzZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi9__xtoHashFNbNeKxSQDoQDk__TQCmTQCjTQCjZQCyZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTQCiZQCxZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTQChZQCwZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj11__xopEqualsMxFKxSQDqQDm__TQCoTQClTQBsZQDaZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj9__xtoHashFNbNeKxSQDpQDl__TQCnTQCkTQBrZQCzZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTbZQCvZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTbZQCuZm@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__fieldDtorMFNaNbNiNeZv@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__xopEqualsMxFKxSQFvQFr__TQEtTQEqTQCxZQFfZb@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo15__fieldPostblitMFNaNbNiNlNeZv@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo8opAssignMFNaNbNcNiNjNeSQGaQFw__TQEyTQEvTQDcZQFkZQBa@Base 15.2 + _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo9__xtoHashFNbNeKxSQFuQFq__TQEsTQEpTQCwZQFeZm@Base 15.2 + _D6object2AA6__initZ@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 + _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 + _D6object5Error6__initZ@Base 15 + _D6object5Error6__vtblZ@Base 15 + _D6object5Error7__ClassZ@Base 15 + _D6object6Object5opCmpMFCQqZi@Base 15 + _D6object6Object6toHashMFNbNeZm@Base 15 + _D6object6Object7Monitor11__InterfaceZ@Base 15 + _D6object6Object7factoryFAyaZCQv@Base 15 + _D6object6Object8opEqualsMFCQtZb@Base 15 + _D6object6Object8toStringMFZAya@Base 15 + _D6object7AARange6__initZ@Base 15 + _D6object7_xopCmpFIPvIQdZb@Base 15 + _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 + _D6object8TypeInfo4swapMxFPvQcZv@Base 15 + _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 + _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 + _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 + _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 + _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 + _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 + _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 + _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 + _D6object8TypeInfo7destroyMxFPvZv@Base 15 + _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 + _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 + _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 + _D6object8TypeInfo8postblitMxFPvZv@Base 15 + _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 + _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 + _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 + _D6object9Interface6__initZ@Base 15 + _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 + _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 + _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 + _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 + _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 + _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 + _D6object9Throwable6__initZ@Base 15 + _D6object9Throwable6__vtblZ@Base 15 + _D6object9Throwable7__ClassZ@Base 15 + _D6object9Throwable7messageMxFNbNfZAxa@Base 15 + _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 + _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 + _D6object9Throwable8toStringMFZAya@Base 15 + _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 + _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 + _D6object__T10RTInfoImplVAmA2i104i18ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i2ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i4776ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i680ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i104i7083ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11178ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i1225ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i4776ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i5462ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i8192ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i112i8301ZQBbyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i17064ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i5462ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i680ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i120i7920ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i11304ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12161ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i128i54610ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i43178ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i136i76461ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i137i4900ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i144i62120ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i144i76461ZQBcyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i152i262144ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i156i4900ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i2076ZQBbyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i168i2ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i168i4644ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i169i112492ZQBdyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i6990180ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i192i3331414ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i192i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i23767396ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i24902800ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i200i3331414ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i208i41943044ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i41943044ZQBfyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i224i183150948ZQBgyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i257i2859116900ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i1ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i28i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i3ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i6ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i36i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i11ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i13ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i16ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i23ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i40i8ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i15ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i16ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i20ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i26ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i45ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i18ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i24ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i28ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i42ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i80ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i128ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i34ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i60ZQyyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i171ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i296ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i168ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i241ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i512ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i514ZQzyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i546ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i80i672ZQzyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i80i808ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1028ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1462ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i88i1ZQxyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i88i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1048ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 + _D6object__T10RTInfoImplVAmA2i96i90ZQyyG2m@Base 15.2 + _D6object__T10RTInfoImplVAmA2i97i2728ZQBayG2m@Base 15 + _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 + _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1088i549755827528i0i240ZQBqyG4m@Base 15 + _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 + _D6object__T10_aaToRangeHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBzFNaNbNiNfKQByZSQDb7AARange@Base 15 + _D6object__T16assumeSafeAppendTS3std8typecons__T5TupleTkTkTkZQnZQCaFNbNcKNgASQBtQBs__TQBmTkTkTkZQBwZNgQBb@Base 15 + _D6object__T16assumeSafeAppendTaZQvFNbNgAaZNgQf@Base 15 + _D6object__T16assumeSafeAppendTkZQvFNbNcKNgAkZNgQf@Base 15 + _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 + _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 + _D6object__T3dupThZQhFNaNbNdNfAxhZAh@Base 15 + _D6object__T3dupTkZQhFNaNbNdNfAxkZAk@Base 15 + _D6object__T3dupTmZQhFNaNbNdNfAxmZAm@Base 15 + _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 + _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 + _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 + _D6object__T4idupTxaZQjFNaNbNdNfAxaZAya@Base 15 + _D6object__T4idupTxhZQjFNaNbNdNfAxhZAyh@Base 15 + _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 + _D6object__T4keysHTHS3std11concurrency3TidbTbTQBaZQBmFNaNbNdNfQBrZAQBv@Base 15 + _D6object__T5clearTAyaTQeZQoFNaNbNeHQrQtZv@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result4saveMFNaNbNdNiNfZSQDv__TQDrHTQDmTQDpTQDqZQEiFNaNbNiNfQEkZQCn@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5emptyMFNaNbNdNiNfZb@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5frontMFNaNbNcNdNiNeZQCz@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result8popFrontMFNaNbNiNfZv@Base 15 + _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZSQCw__TQCsHTQCnTQCqTQCrZQDjFNaNbNiNfQDlZ6Result@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQEmFNaNbNiNfKQClZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQEnFNaNbNiNfKQCmZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTQCgZQrFQCnZ14ByCodeUnitImplZQEoFNaNbNiNfKQCnZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf4conv__T7toCharsVhi10TaVEQDh5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQFnFNaNbNiNfKQDmZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T10OnlyResultTaZQpZQDtFNaNbNiNfKQBsZv@Base 15 + _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T4TakeTSQCyQt__T6RepeatTaZQkZQBcZQEhFNaNbNiNfKQCgZv@Base 15 + _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 + _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 + _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS3std11concurrency7MessageZQBoFNfKQBiZv@Base 15 + _D6object__T7destroyVbi1TS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJvFNaNbNiKQJtZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl3FTP4ImplZQBlFKQBdZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl4HTTP4ImplZQBmFKQBeZv@Base 15 + _D6object__T7destroyVbi1TS3std3net4curl4SMTP4ImplZQBmFKQBeZv@Base 15 + _D6object__T7destroyVbi1TS3std4file15DirIteratorImplZQBpFNfKQBjZv@Base 15 + _D6object__T7destroyVbi1TS3std5stdio4FileZQBeFNfKQyZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 + _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 + _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 + _D6object__T7reserveTS3std5regex8internal2ir8BytecodeZQBqFNaNbNeKAQBtmZm@Base 15 + _D6object__T7reserveTaZQlFNaNbNeKAamZm@Base 15 + _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 + _D6object__T8capacityTAyaZQoFNaNbNdNeAQqZm@Base 15 + _D6object__T8capacityTC3std3zip13ArchiveMemberZQBjFNaNbNdNeAQBmZm@Base 15 + _D6object__T8capacityTS3std6socket11AddressInfoZQBkFNaNbNdNeAQBnZm@Base 15 + _D6object__T8capacityTaZQmFNaNbNdNeAaZm@Base 15 + _D6object__T8capacityThZQmFNaNbNdNeAhZm@Base 15 + _D6object__T8capacityTlZQmFNaNbNdNeAlZm@Base 15 + _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 + _D6object__T8opEqualsTC3std11concurrency10MessageBoxTQBfZQBtFQBnQBqZb@Base 15 + _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTC14TypeInfo_ConstZQBnFQBhQzZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTC15TypeInfo_StructZQBoFQBiQBaZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTQlZQyFNbNfQvQxZb@Base 15 + _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 + _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 + _D6object__T8opEqualsTxC15TypeInfo_StructTxQuZQBiFxQBcxQBgZb@Base 15 + _D6object__T8opEqualsTxC3std11concurrency10MessageBoxTxQBgZQBvFxQBpxQBtZb@Base 15 + _D6object__T8opEqualsTxC3std11parallelism8TaskPoolTxQBdZQBsFxQBmxQBqZb@Base 15 + _D6object__T8opEqualsTxC3std3zip13ArchiveMemberTxQBaZQBpFxQBjxQBnZb@Base 15 + _D6object__T8opEqualsTxC3std6logger4core6LoggerTxQBaZQBpFxQBjxQBnZb@Base 15 + _D6object__T8opEqualsTxC3std6socket7AddressTxQwZQBkFxQBexQBiZb@Base 15 + _D6object__T8opEqualsTxC3std7process3PidTxQtZQBhFxQBbxQBfZb@Base 15 + _D6object__T8opEqualsTxC3std8datetime8timezone8TimeZoneTxQBiZQBxFxQBrxQBvZb@Base 15 + _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 + _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 + _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 + _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 + _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_S3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D70TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 + _D70TypeInfo_S3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 + _D70TypeInfo_S3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 + _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 + _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 + _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 + _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b656570536570617261746f7273ZQBq6__initZ@Base 15 + _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ@Base 15 + _D71TypeInfo_S3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 + _D71TypeInfo_S4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 + _D71TypeInfo_xS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D72TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D72TypeInfo_S3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 + _D72TypeInfo_S3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 + _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 + _D72TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 + _D73TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D73TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D74TypeInfo_S3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 + _D74TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 + _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D74TypeInfo_xS3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 + _D74TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 + _D75TypeInfo_E3std8typecons__T4FlagVAyaa16_616c6c6f774461794f766572666c6f77ZQBu6__initZ@Base 15 + _D75TypeInfo_S3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 + _D75TypeInfo_xS3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 + _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 + _D76TypeInfo_S3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D76TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 + _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 + _D77TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 + _D77TypeInfo_S3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D77TypeInfo_xS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D77TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 + _D78TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D78TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 + _D78TypeInfo_S3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 + _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D78TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 + _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 + _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_616c6c4b6e6f776e53616d654c656e677468ZQBy6__initZ@Base 15 + _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQBy6__initZ@Base 15 + _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 + _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D80TypeInfo_E3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 + _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 + _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 + _D81TypeInfo_E3std8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCa6__initZ@Base 15 + _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 + _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 + _D82TypeInfo_S3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 + _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 + _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 + _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 + _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 + _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 + _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 + _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 + _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 + _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 + _D84TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 + _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 + _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D85TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 + _D86TypeInfo_S3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 + _D86TypeInfo_S3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 + _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D86TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 + _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 + _D87TypeInfo_S3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 + _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 + _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D89TypeInfo_S3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 + _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 + _D8TypeInfo6__initZ@Base 15 + _D8TypeInfo6__vtblZ@Base 15 + _D8TypeInfo7__ClassZ@Base 15 + _D90TypeInfo_AS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 + _D90TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D90TypeInfo_S3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 + _D90TypeInfo_S6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 + _D91TypeInfo_S3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 + _D91TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D92TypeInfo_S3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 + _D92TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D92TypeInfo_xS3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 + _D93TypeInfo_HS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhSQBw5regex8internal2ir11CharMatcher6__initZ@Base 15 + _D93TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 + _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 + _D93TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 + _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 + _D94TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 + _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 + _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 + _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 + _D95TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 + _D96TypeInfo_S4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 + _D97TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D98TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 + _D98TypeInfo_yS3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 + _D99TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 + _D9Exception6__initZ@Base 15 + _D9Exception6__vtblZ@Base 15 + _D9Exception7__ClassZ@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 + _DTi16_D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 + _DTi16_D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 + _DTi16_D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 + _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 + _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 + _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 + _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 + _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 + _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 + _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 + _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 + _ZNKSt10bad_typeid4whatEv@Base 15 + _ZNKSt13bad_exception4whatEv@Base 15 + _ZNKSt8bad_cast4whatEv@Base 15 + _ZNKSt9exception4whatEv@Base 15 + _ZNKSt9type_info4nameEv@Base 15 + _ZNKSt9type_info6beforeEPKS_@Base 15 + _ZNSt9exceptionD1Ev@Base 15 + _ZNSt9type_infoD1Ev@Base 15 + __CPUELT@Base 15 + __CPUMASK@Base 15 + __CPU_ALLOC@Base 15 + __CPU_ALLOC_SIZE@Base 15 + __CPU_COUNT_S@Base 15 + __CPU_FREE@Base 15 + __CPU_ISSET_S@Base 15 + __CPU_SET_S@Base 15 + __atomic_add_fetch_16@Base 15 + __atomic_add_fetch_1@Base 15 + __atomic_add_fetch_2@Base 15 + __atomic_add_fetch_4@Base 15 + __atomic_add_fetch_8@Base 15 + __atomic_and_fetch_16@Base 15 + __atomic_and_fetch_1@Base 15 + __atomic_and_fetch_2@Base 15 + __atomic_and_fetch_4@Base 15 + __atomic_and_fetch_8@Base 15 + __atomic_compare_exchange@Base 15 + __atomic_compare_exchange_16@Base 15 + __atomic_compare_exchange_1@Base 15 + __atomic_compare_exchange_2@Base 15 + __atomic_compare_exchange_4@Base 15 + __atomic_compare_exchange_8@Base 15 + __atomic_exchange@Base 15 + __atomic_exchange_16@Base 15 + __atomic_exchange_1@Base 15 + __atomic_exchange_2@Base 15 + __atomic_exchange_4@Base 15 + __atomic_exchange_8@Base 15 + __atomic_feraiseexcept@Base 15 + __atomic_fetch_add_16@Base 15 + __atomic_fetch_add_1@Base 15 + __atomic_fetch_add_2@Base 15 + __atomic_fetch_add_4@Base 15 + __atomic_fetch_add_8@Base 15 + __atomic_fetch_and_16@Base 15 + __atomic_fetch_and_1@Base 15 + __atomic_fetch_and_2@Base 15 + __atomic_fetch_and_4@Base 15 + __atomic_fetch_and_8@Base 15 + __atomic_fetch_nand_16@Base 15 + __atomic_fetch_nand_1@Base 15 + __atomic_fetch_nand_2@Base 15 + __atomic_fetch_nand_4@Base 15 + __atomic_fetch_nand_8@Base 15 + __atomic_fetch_or_16@Base 15 + __atomic_fetch_or_1@Base 15 + __atomic_fetch_or_2@Base 15 + __atomic_fetch_or_4@Base 15 + __atomic_fetch_or_8@Base 15 + __atomic_fetch_sub_16@Base 15 + __atomic_fetch_sub_1@Base 15 + __atomic_fetch_sub_2@Base 15 + __atomic_fetch_sub_4@Base 15 + __atomic_fetch_sub_8@Base 15 + __atomic_fetch_xor_16@Base 15 + __atomic_fetch_xor_1@Base 15 + __atomic_fetch_xor_2@Base 15 + __atomic_fetch_xor_4@Base 15 + __atomic_fetch_xor_8@Base 15 + __atomic_is_lock_free@Base 15 + __atomic_load@Base 15 + __atomic_load_16@Base 15 + __atomic_load_1@Base 15 + __atomic_load_2@Base 15 + __atomic_load_4@Base 15 + __atomic_load_8@Base 15 + __atomic_nand_fetch_16@Base 15 + __atomic_nand_fetch_1@Base 15 + __atomic_nand_fetch_2@Base 15 + __atomic_nand_fetch_4@Base 15 + __atomic_nand_fetch_8@Base 15 + __atomic_or_fetch_16@Base 15 + __atomic_or_fetch_1@Base 15 + __atomic_or_fetch_2@Base 15 + __atomic_or_fetch_4@Base 15 + __atomic_or_fetch_8@Base 15 + __atomic_store@Base 15 + __atomic_store_16@Base 15 + __atomic_store_1@Base 15 + __atomic_store_2@Base 15 + __atomic_store_4@Base 15 + __atomic_store_8@Base 15 + __atomic_sub_fetch_16@Base 15 + __atomic_sub_fetch_1@Base 15 + __atomic_sub_fetch_2@Base 15 + __atomic_sub_fetch_4@Base 15 + __atomic_sub_fetch_8@Base 15 + __atomic_test_and_set_16@Base 15 + __atomic_test_and_set_1@Base 15 + __atomic_test_and_set_2@Base 15 + __atomic_test_and_set_4@Base 15 + __atomic_test_and_set_8@Base 15 + __atomic_xor_fetch_16@Base 15 + __atomic_xor_fetch_1@Base 15 + __atomic_xor_fetch_2@Base 15 + __atomic_xor_fetch_4@Base 15 + __atomic_xor_fetch_8@Base 15 + __gdc_begin_catch@Base 15 + __gdc_personality_v0@Base 15 + _aApplyRcd1@Base 15 + _aApplyRcd2@Base 15 + _aApplyRcw1@Base 15 + _aApplyRcw2@Base 15 + _aApplyRdc1@Base 15 + _aApplyRdc2@Base 15 + _aApplyRdw1@Base 15 + _aApplyRdw2@Base 15 + _aApplyRwc1@Base 15 + _aApplyRwc2@Base 15 + _aApplyRwd1@Base 15 + _aApplyRwd2@Base 15 + _aApplycd1@Base 15 + _aApplycd2@Base 15 + _aApplycw1@Base 15 + _aApplycw2@Base 15 + _aApplydc1@Base 15 + _aApplydc2@Base 15 + _aApplydw1@Base 15 + _aApplydw2@Base 15 + _aApplywc1@Base 15 + _aApplywc2@Base 15 + _aApplywd1@Base 15 + _aApplywd2@Base 15 + _aaApply2@Base 15 + _aaApply@Base 15 + _aaClear@Base 15 + _aaDelX@Base 15 + _aaEqual@Base 15 + _aaGetHash@Base 15 + _aaGetRvalueX@Base 15 + _aaGetX@Base 15 + _aaGetY@Base 15 + _aaInX@Base 15 + _aaKeys@Base 15 + _aaLen@Base 15 + _aaNew@Base 15 + _aaRange@Base 15 + _aaRangeEmpty@Base 15 + _aaRangeFrontKey@Base 15 + _aaRangeFrontValue@Base 15 + _aaRangePopFront@Base 15 + _aaRehash@Base 15 + _aaValues@Base 15 + _aaVersion@Base 15 + _adEq2@Base 15 + _adSort@Base 15 + _d_allocmemory@Base 15 + _d_arrayappendcTX@Base 15 + _d_arrayappendcd@Base 15 + _d_arrayappendwd@Base 15 + _d_arraybounds@Base 15 + _d_arraybounds_index@Base 15 + _d_arraybounds_indexp@Base 15 + _d_arraybounds_slice@Base 15 + _d_arraybounds_slicep@Base 15 + _d_arrayboundsp@Base 15 + _d_arraycopy@Base 15 + _d_arrayliteralTX@Base 15 + _d_arraysetcapacity@Base 15 + _d_arraysetlengthT@Base 15 + _d_arraysetlengthiT@Base 15 + _d_arrayshrinkfit@Base 15 + _d_assert@Base 15 + _d_assert_msg@Base 15 + _d_assertp@Base 15 + _d_assocarrayliteralTX@Base 15 + _d_callfinalizer@Base 15 + _d_callinterfacefinalizer@Base 15 + _d_class_cast@Base 15 + _d_createTrace@Base 15 + _d_critical_init@Base 15 + _d_critical_term@Base 15 + _d_criticalenter2@Base 15 + _d_criticalenter@Base 15 + _d_criticalexit@Base 15 + _d_delThrowable@Base 15 + _d_delclass@Base 15 + _d_delinterface@Base 15 + _d_delmemory@Base 15 + _d_dso_registry@Base 15 + _d_dynamic_cast@Base 15 + _d_eh_swapContext@Base 15 + _d_initMonoTime@Base 15 + _d_interface_cast@Base 15 + _d_isbaseof2@Base 15 + _d_isbaseof@Base 15 + _d_monitor_staticctor@Base 15 + _d_monitor_staticdtor@Base 15 + _d_monitordelete@Base 15 + _d_monitordelete_nogc@Base 15 + _d_monitorenter@Base 15 + _d_monitorexit@Base 15 + _d_newarrayT@Base 15 + _d_newarrayU@Base 15 + _d_newarrayiT@Base 15 + _d_newclass@Base 15 + _d_newitemU@Base 15 + _d_paint_cast@Base 15 + _d_print_throwable@Base 15 + _d_register_conservative_gc@Base 15 + _d_register_manual_gc@Base 15 + _d_register_precise_gc@Base 15 + _d_run_main2@Base 15 + _d_run_main@Base 15 + _d_setSameMutex@Base 15 + _d_throw@Base 15 + _d_toObject@Base 15 + _d_traceContext@Base 15 + _d_unittest@Base 15 + _d_unittest_msg@Base 15 + _d_unittestp@Base 15 + atomic_flag_clear@Base 15 + atomic_flag_clear_explicit@Base 15 + atomic_flag_test_and_set@Base 15 + atomic_flag_test_and_set_explicit@Base 15 + atomic_signal_fence@Base 15 + atomic_thread_fence@Base 15 + backtrace_alloc@Base 15 + backtrace_close@Base 15 + backtrace_create_state@Base 15 + backtrace_dwarf_add@Base 15 + backtrace_free@Base 15 + backtrace_full@Base 15 + backtrace_get_view@Base 15 + backtrace_initialize@Base 15 + backtrace_open@Base 15 + backtrace_pcinfo@Base 15 + backtrace_print@Base 15 + backtrace_qsort@Base 15 + backtrace_release_view@Base 15 + backtrace_simple@Base 15 + backtrace_syminfo@Base 15 + backtrace_syminfo_to_full_callback@Base 15 + backtrace_syminfo_to_full_error_callback@Base 15 + backtrace_uncompress_lzma@Base 15 + backtrace_uncompress_zdebug@Base 15 + backtrace_uncompress_zstd@Base 15 + backtrace_vector_finish@Base 15 + backtrace_vector_grow@Base 15 + backtrace_vector_release@Base 15 + cimag@Base 15 + cimagf@Base 15 + cimagl@Base 15 + creald@Base 15 + crealf@Base 15 + creall@Base 15 + deflateInit2@Base 15 + deflateInit@Base 15 + fakePureErrnoImpl@Base 15 + fakePureReprintReal@Base 15 + fiber_entryPoint@Base 15 + fiber_switchContext@Base 15 + gc_addRange@Base 15 + gc_addRoot@Base 15 + gc_addrOf@Base 15 + gc_allocatedInCurrentThread@Base 15 + gc_calloc@Base 15 + gc_clrAttr@Base 15 + gc_clrProxy@Base 15 + gc_collect@Base 15 + gc_disable@Base 15 + gc_enable@Base 15 + gc_expandArrayUsed@Base 15 + gc_extend@Base 15 + gc_free@Base 15 + gc_getArrayUsed@Base 15 + gc_getAttr@Base 15 + gc_getProxy@Base 15 + gc_inFinalizer@Base 15 + gc_init@Base 15 + gc_init_nothrow@Base 15 + gc_malloc@Base 15 + gc_minimize@Base 15 + gc_profileStats@Base 15 + gc_qalloc@Base 15 + gc_query@Base 15 + gc_realloc@Base 15 + gc_removeRange@Base 15 + gc_removeRoot@Base 15 + gc_reserve@Base 15 + gc_reserveArrayCapacity@Base 15 + gc_runFinalizers@Base 15 + gc_setAttr@Base 15 + gc_setProxy@Base 15 + gc_shrinkArrayUsed@Base 15 + gc_sizeOf@Base 15 + gc_stats@Base 15 + gc_term@Base 15 + getErrno@Base 15 + inflateBackInit@Base 15 + inflateInit2@Base 15 + inflateInit@Base 15 + libat_lock_n@Base 15 + libat_unlock_n@Base 15 + lifetime_init@Base 15 + onArrayIndexError@Base 15 + onArraySliceError@Base 15 + onAssertError@Base 15 + onAssertErrorMsg@Base 15 + onFinalizeError@Base 15 + onForkError@Base 15 + onInvalidMemoryOperationError@Base 15 + onOutOfMemoryError@Base 15 + onOutOfMemoryErrorNoGC@Base 15 + onRangeError@Base 15 + onUnicodeError@Base 15 + onUnittestErrorMsg@Base 15 + pcinfoCallback@Base 15 + pcinfoErrorCallback@Base 15 + perf_event_open@Base 15 + profilegc_setlogfilename@Base 15 + register_default_gcs@Base 15 + rt_args@Base 15 + rt_attachDisposeEvent@Base 15 + rt_cArgs@Base 15 + rt_cmdline_enabled@Base 15 + rt_detachDisposeEvent@Base 15 + rt_envvars_enabled@Base 15 + rt_finalize2@Base 15 + rt_finalize@Base 15 + rt_finalizeFromGC@Base 15 + rt_getCollectHandler@Base 15 + rt_getTraceDeallocator@Base 15 + rt_getTraceHandler@Base 15 + rt_hasFinalizerInSegment@Base 15 + rt_init@Base 15 + rt_loadLibrary@Base 15 + rt_moduleCtor@Base 15 + rt_moduleDtor@Base 15 + rt_moduleTlsCtor@Base 15 + rt_moduleTlsDtor@Base 15 + rt_options@Base 15 + rt_setCollectHandler@Base 15 + rt_setTraceHandler@Base 15 + rt_term@Base 15 + rt_trapExceptions@Base 15 + rt_unloadLibrary@Base 15 + runModuleUnitTests@Base 15 + setErrno@Base 15 + simpleCallback@Base 15 + simpleErrorCallback@Base 15 + syminfoCallback2@Base 15 + syminfoCallback@Base 15 + thread_attachThis@Base 15 + thread_detachByAddr@Base 15 + thread_detachInstance@Base 15 + thread_detachThis@Base 15 + thread_entryPoint@Base 15 + thread_init@Base 15 + thread_isMainThread@Base 15 + thread_joinAll@Base 15 + thread_postRestartTheWorld@Base 15 + thread_postSuspend@Base 15 + thread_preStopTheWorld@Base 15 + thread_preSuspend@Base 15 + thread_resumeAll@Base 15 + thread_resumeHandler@Base 15 + thread_scanAll@Base 15 + thread_scanAllType@Base 15 + thread_setGCSignals@Base 15 + thread_setThis@Base 15 + thread_stackBottom@Base 15 + thread_stackTop@Base 15 + thread_suspendAll@Base 15 + thread_suspendHandler@Base 15 + thread_term@Base 15 + tipc_addr@Base 15 + tipc_cluster@Base 15 + tipc_node@Base 15 + tipc_zone@Base 15 diff --git a/libhwasan0.symbols b/libhwasan0.symbols new file mode 100644 index 0000000..c66ab6c --- /dev/null +++ b/libhwasan0.symbols @@ -0,0 +1,1016 @@ +libhwasan.so.0 #PACKAGE# #MINVER# + _ZdaPv@Base 13 + _ZdaPvRKSt9nothrow_t@Base 13 + _ZdaPvSt11align_val_t@Base 13 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 13 + _ZdaPvm@Base 14 + _ZdaPvmSt11align_val_t@Base 14 + _ZdaPvmSt11align_val_tRKSt9nothrow_t@Base 14 + _ZdlPv@Base 13 + _ZdlPvRKSt9nothrow_t@Base 13 + _ZdlPvSt11align_val_t@Base 13 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 13 + _ZdlPvm@Base 14 + _ZdlPvmSt11align_val_t@Base 14 + _ZdlPvmSt11align_val_tRKSt9nothrow_t@Base 14 + _Znam@Base 13 + _ZnamRKSt9nothrow_t@Base 13 + _ZnamSt11align_val_t@Base 13 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 13 + _Znwm@Base 13 + _ZnwmRKSt9nothrow_t@Base 13 + _ZnwmSt11align_val_t@Base 13 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 13 + ___interceptor___libc_longjmp@Base 14 + ___interceptor___libc_memalign@Base 14 + ___interceptor_aligned_alloc@Base 14 + ___interceptor_bcmp@Base 14 + ___interceptor_calloc@Base 14 + ___interceptor_cfree@Base 14 + ___interceptor_free@Base 14 + ___interceptor_longjmp@Base 14 + ___interceptor_mallinfo@Base 14 + ___interceptor_malloc@Base 14 + ___interceptor_malloc_stats@Base 14 + ___interceptor_malloc_usable_size@Base 14 + ___interceptor_mallopt@Base 14 + ___interceptor_memalign@Base 14 + ___interceptor_memcmp@Base 14 + ___interceptor_memcpy@Base 14 + ___interceptor_memmove@Base 14 + ___interceptor_memset@Base 14 + ___interceptor_mmap@Base 14 + ___interceptor_mprotect@Base 14 + ___interceptor_munmap@Base 14 + ___interceptor_posix_memalign@Base 14 + ___interceptor_preadv2@Base 15 + ___interceptor_pthread_create@Base 14 + ___interceptor_pthread_detach@Base 14 + ___interceptor_pthread_exit@Base 14 + ___interceptor_pthread_join@Base 14 + ___interceptor_pthread_timedjoin_np@Base 14 + ___interceptor_pthread_tryjoin_np@Base 14 + ___interceptor_pvalloc@Base 14 + ___interceptor_pwritev2@Base 15 + ___interceptor_realloc@Base 14 + ___interceptor_reallocarray@Base 14 + ___interceptor_setjmp@Base 14 + ___interceptor_siglongjmp@Base 14 + ___interceptor_sigsetjmp@Base 14 + ___interceptor_valloc@Base 14 + ___interceptor_vfork@Base 14 + __asan_backtrace_alloc@Base 13 + __asan_backtrace_close@Base 13 + __asan_backtrace_create_state@Base 13 + __asan_backtrace_dwarf_add@Base 13 + __asan_backtrace_free@Base 13 + __asan_backtrace_get_view@Base 13 + __asan_backtrace_initialize@Base 13 + __asan_backtrace_open@Base 13 + __asan_backtrace_pcinfo@Base 13 + __asan_backtrace_qsort@Base 13 + __asan_backtrace_release_view@Base 13 + __asan_backtrace_syminfo@Base 13 + __asan_backtrace_syminfo_to_full_callback@Base 13 + __asan_backtrace_syminfo_to_full_error_callback@Base 13 + __asan_backtrace_uncompress_lzma@Base 13 + __asan_backtrace_uncompress_zdebug@Base 13 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 13 + __asan_backtrace_vector_grow@Base 13 + __asan_backtrace_vector_release@Base 13 + __asan_cplus_demangle_builtin_types@Base 13 + __asan_cplus_demangle_fill_ctor@Base 13 + __asan_cplus_demangle_fill_dtor@Base 13 + __asan_cplus_demangle_fill_extended_operator@Base 13 + __asan_cplus_demangle_fill_name@Base 13 + __asan_cplus_demangle_init_info@Base 13 + __asan_cplus_demangle_mangled_name@Base 13 + __asan_cplus_demangle_operators@Base 13 + __asan_cplus_demangle_print@Base 13 + __asan_cplus_demangle_print_callback@Base 13 + __asan_cplus_demangle_type@Base 13 + __asan_cplus_demangle_v3@Base 13 + __asan_cplus_demangle_v3_callback@Base 13 + __asan_internal_memcmp@Base 13 + __asan_internal_memcpy@Base 13 + __asan_internal_memset@Base 13 + __asan_internal_strcmp@Base 13 + __asan_internal_strlen@Base 13 + __asan_internal_strncmp@Base 13 + __asan_internal_strnlen@Base 13 + __asan_is_gnu_v3_mangled_ctor@Base 13 + __asan_is_gnu_v3_mangled_dtor@Base 13 + __asan_java_demangle_v3@Base 13 + __asan_java_demangle_v3_callback@Base 13 + __hwasan_add_frame_record@Base 13 + __hwasan_disable_allocator_tagging@Base 13 + __hwasan_enable_allocator_tagging@Base 13 + __hwasan_generate_tag@Base 13 + __hwasan_get_tag_from_pointer@Base 15 + __hwasan_handle_longjmp@Base 13 + __hwasan_handle_vfork@Base 13 + __hwasan_init@Base 13 + __hwasan_init_frames@Base 13 + __hwasan_init_static@Base 13 + __hwasan_library_loaded@Base 13 + __hwasan_library_unloaded@Base 13 + __hwasan_load16@Base 13 + __hwasan_load16_match_all@Base 14 + __hwasan_load16_match_all_noabort@Base 14 + __hwasan_load16_noabort@Base 13 + __hwasan_load1@Base 13 + __hwasan_load1_match_all@Base 14 + __hwasan_load1_match_all_noabort@Base 14 + __hwasan_load1_noabort@Base 13 + __hwasan_load2@Base 13 + __hwasan_load2_match_all@Base 14 + __hwasan_load2_match_all_noabort@Base 14 + __hwasan_load2_noabort@Base 13 + __hwasan_load4@Base 13 + __hwasan_load4_match_all@Base 14 + __hwasan_load4_match_all_noabort@Base 14 + __hwasan_load4_noabort@Base 13 + __hwasan_load8@Base 13 + __hwasan_load8_match_all@Base 14 + __hwasan_load8_match_all_noabort@Base 14 + __hwasan_load8_noabort@Base 13 + __hwasan_loadN@Base 13 + __hwasan_loadN_match_all@Base 14 + __hwasan_loadN_match_all_noabort@Base 14 + __hwasan_loadN_noabort@Base 13 + __hwasan_memcpy@Base 13 + __hwasan_memcpy_match_all@Base 14 + __hwasan_memmove@Base 13 + __hwasan_memmove_match_all@Base 14 + __hwasan_memset@Base 13 + __hwasan_memset_match_all@Base 14 + __hwasan_personality_wrapper@Base 13 + __hwasan_print_memory_usage@Base 13 + __hwasan_print_shadow@Base 13 + __hwasan_set_error_report_callback@Base 13 + __hwasan_shadow_memory_dynamic_address@Base 13 + __hwasan_store16@Base 13 + __hwasan_store16_match_all@Base 14 + __hwasan_store16_match_all_noabort@Base 14 + __hwasan_store16_noabort@Base 13 + __hwasan_store1@Base 13 + __hwasan_store1_match_all@Base 14 + __hwasan_store1_match_all_noabort@Base 14 + __hwasan_store1_noabort@Base 13 + __hwasan_store2@Base 13 + __hwasan_store2_match_all@Base 14 + __hwasan_store2_match_all_noabort@Base 14 + __hwasan_store2_noabort@Base 13 + __hwasan_store4@Base 13 + __hwasan_store4_match_all@Base 14 + __hwasan_store4_match_all_noabort@Base 14 + __hwasan_store4_noabort@Base 13 + __hwasan_store8@Base 13 + __hwasan_store8_match_all@Base 14 + __hwasan_store8_match_all_noabort@Base 14 + __hwasan_store8_noabort@Base 13 + __hwasan_storeN@Base 13 + __hwasan_storeN_match_all@Base 14 + __hwasan_storeN_match_all_noabort@Base 14 + __hwasan_storeN_noabort@Base 13 + __hwasan_tag_memory@Base 13 + __hwasan_tag_mismatch4@Base 13 + (arch=arm64)__hwasan_tag_mismatch@Base 13 + (arch=arm64)__hwasan_tag_mismatch_v2@Base 13 + __hwasan_tag_pointer@Base 13 + __hwasan_test_shadow@Base 13 + __hwasan_thread_enter@Base 15 + __hwasan_thread_exit@Base 15 + __hwasan_tls@Base 13 + __interceptor___libc_longjmp@Base 13 + __interceptor_bcmp@Base 14 + __interceptor_longjmp@Base 13 + __interceptor_memcmp@Base 14 + __interceptor_memcpy@Base 14 + __interceptor_memmove@Base 14 + __interceptor_memset@Base 14 + __interceptor_mmap@Base 14 + __interceptor_mprotect@Base 14 + __interceptor_munmap@Base 14 + __interceptor_preadv2@Base 15 + __interceptor_pthread_create@Base 13 + __interceptor_pthread_detach@Base 14 + __interceptor_pthread_exit@Base 14 + __interceptor_pthread_join@Base 13 + __interceptor_pthread_timedjoin_np@Base 14 + __interceptor_pthread_tryjoin_np@Base 14 + __interceptor_pwritev2@Base 15 + __interceptor_setjmp@Base 13 + __interceptor_siglongjmp@Base 13 + __interceptor_sigsetjmp@Base 13 + __interceptor_trampoline___libc_longjmp@Base 14 + __interceptor_trampoline_bcmp@Base 14 + __interceptor_trampoline_longjmp@Base 14 + __interceptor_trampoline_memcmp@Base 14 + __interceptor_trampoline_memcpy@Base 14 + __interceptor_trampoline_memmove@Base 14 + __interceptor_trampoline_memset@Base 14 + __interceptor_trampoline_mmap@Base 14 + __interceptor_trampoline_mprotect@Base 14 + __interceptor_trampoline_munmap@Base 14 + __interceptor_trampoline_preadv2@Base 15 + __interceptor_trampoline_pthread_create@Base 14 + __interceptor_trampoline_pthread_detach@Base 14 + __interceptor_trampoline_pthread_exit@Base 14 + __interceptor_trampoline_pthread_join@Base 14 + __interceptor_trampoline_pthread_timedjoin_np@Base 14 + __interceptor_trampoline_pthread_tryjoin_np@Base 14 + __interceptor_trampoline_pwritev2@Base 15 + __interceptor_trampoline_setjmp@Base 14 + __interceptor_trampoline_siglongjmp@Base 14 + __interceptor_trampoline_sigsetjmp@Base 14 + __interceptor_trampoline_vfork@Base 14 + __interceptor_vfork@Base 13 + __libc_longjmp@Base 13 + __libc_memalign@Base 13 + __lsan_default_options@Base 14 + __lsan_disable@Base 14 + __lsan_do_leak_check@Base 14 + __lsan_do_recoverable_leak_check@Base 14 + __lsan_enable@Base 14 + __lsan_ignore_object@Base 14 + __lsan_register_root_region@Base 14 + __lsan_unregister_root_region@Base 14 + __sancov_default_options@Base 13 + __sancov_lowest_stack@Base 13 + __sanitizer___libc_memalign@Base 13 + __sanitizer_acquire_crash_state@Base 13 + __sanitizer_aligned_alloc@Base 13 + __sanitizer_calloc@Base 13 + __sanitizer_cfree@Base 13 + __sanitizer_cov_8bit_counters_init@Base 13 + __sanitizer_cov_bool_flag_init@Base 13 + __sanitizer_cov_dump@Base 13 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 13 + __sanitizer_cov_reset@Base 13 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 13 + __sanitizer_cov_trace_cmp2@Base 13 + __sanitizer_cov_trace_cmp4@Base 13 + __sanitizer_cov_trace_cmp8@Base 13 + __sanitizer_cov_trace_cmp@Base 13 + __sanitizer_cov_trace_const_cmp1@Base 13 + __sanitizer_cov_trace_const_cmp2@Base 13 + __sanitizer_cov_trace_const_cmp4@Base 13 + __sanitizer_cov_trace_const_cmp8@Base 13 + __sanitizer_cov_trace_div4@Base 13 + __sanitizer_cov_trace_div8@Base 13 + __sanitizer_cov_trace_gep@Base 13 + __sanitizer_cov_trace_pc_guard@Base 13 + __sanitizer_cov_trace_pc_guard_init@Base 13 + __sanitizer_cov_trace_pc_indir@Base 13 + __sanitizer_cov_trace_switch@Base 13 + __sanitizer_dump_coverage@Base 13 + __sanitizer_dump_trace_pc_guard_coverage@Base 13 + __sanitizer_free@Base 13 + __sanitizer_free_hook@Base 13 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 13 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 13 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 13 + __sanitizer_get_free_bytes@Base 13 + __sanitizer_get_heap_size@Base 13 + __sanitizer_get_module_and_offset_for_pc@Base 13 + __sanitizer_get_ownership@Base 13 + __sanitizer_get_report_path@Base 13 + __sanitizer_get_unmapped_bytes@Base 13 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 13 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_mallinfo@Base 13 + __sanitizer_malloc@Base 13 + __sanitizer_malloc_hook@Base 13 + __sanitizer_malloc_stats@Base 13 + __sanitizer_malloc_usable_size@Base 13 + __sanitizer_mallopt@Base 13 + __sanitizer_memalign@Base 13 + __sanitizer_on_print@Base 13 + __sanitizer_posix_memalign@Base 13 + __sanitizer_print_stack_trace@Base 13 + __sanitizer_purge_allocator@Base 14 + __sanitizer_pvalloc@Base 13 + __sanitizer_realloc@Base 13 + __sanitizer_reallocarray@Base 13 + __sanitizer_report_error_summary@Base 13 + __sanitizer_sandbox_on_notify@Base 13 + __sanitizer_set_death_callback@Base 13 + __sanitizer_set_report_fd@Base 13 + __sanitizer_set_report_path@Base 13 + __sanitizer_symbolize_global@Base 13 + __sanitizer_symbolize_pc@Base 13 + __sanitizer_syscall_post_impl_accept4@Base 14 + __sanitizer_syscall_post_impl_accept@Base 14 + __sanitizer_syscall_post_impl_access@Base 14 + __sanitizer_syscall_post_impl_acct@Base 14 + __sanitizer_syscall_post_impl_add_key@Base 14 + __sanitizer_syscall_post_impl_adjtimex@Base 14 + __sanitizer_syscall_post_impl_alarm@Base 14 + __sanitizer_syscall_post_impl_bdflush@Base 14 + __sanitizer_syscall_post_impl_bind@Base 14 + __sanitizer_syscall_post_impl_brk@Base 14 + __sanitizer_syscall_post_impl_capget@Base 14 + __sanitizer_syscall_post_impl_capset@Base 14 + __sanitizer_syscall_post_impl_chdir@Base 14 + __sanitizer_syscall_post_impl_chmod@Base 14 + __sanitizer_syscall_post_impl_chown@Base 14 + __sanitizer_syscall_post_impl_chroot@Base 14 + __sanitizer_syscall_post_impl_clock_adjtime@Base 14 + __sanitizer_syscall_post_impl_clock_getres@Base 14 + __sanitizer_syscall_post_impl_clock_gettime@Base 14 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 14 + __sanitizer_syscall_post_impl_clock_settime@Base 14 + __sanitizer_syscall_post_impl_close@Base 14 + __sanitizer_syscall_post_impl_connect@Base 14 + __sanitizer_syscall_post_impl_creat@Base 14 + __sanitizer_syscall_post_impl_delete_module@Base 14 + __sanitizer_syscall_post_impl_dup2@Base 14 + __sanitizer_syscall_post_impl_dup3@Base 14 + __sanitizer_syscall_post_impl_dup@Base 14 + __sanitizer_syscall_post_impl_epoll_create1@Base 14 + __sanitizer_syscall_post_impl_epoll_create@Base 14 + __sanitizer_syscall_post_impl_epoll_ctl@Base 14 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 14 + __sanitizer_syscall_post_impl_epoll_pwait@Base 14 + __sanitizer_syscall_post_impl_epoll_wait@Base 14 + __sanitizer_syscall_post_impl_eventfd2@Base 14 + __sanitizer_syscall_post_impl_eventfd@Base 14 + __sanitizer_syscall_post_impl_exit@Base 14 + __sanitizer_syscall_post_impl_exit_group@Base 14 + __sanitizer_syscall_post_impl_faccessat@Base 14 + __sanitizer_syscall_post_impl_fchdir@Base 14 + __sanitizer_syscall_post_impl_fchmod@Base 14 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 14 + __sanitizer_syscall_post_impl_fchown@Base 14 + __sanitizer_syscall_post_impl_fchownat@Base 14 + __sanitizer_syscall_post_impl_fcntl64@Base 14 + __sanitizer_syscall_post_impl_fcntl@Base 14 + __sanitizer_syscall_post_impl_fdatasync@Base 14 + __sanitizer_syscall_post_impl_fgetxattr@Base 14 + __sanitizer_syscall_post_impl_flistxattr@Base 14 + __sanitizer_syscall_post_impl_flock@Base 14 + __sanitizer_syscall_post_impl_fork@Base 14 + __sanitizer_syscall_post_impl_fremovexattr@Base 14 + __sanitizer_syscall_post_impl_fsetxattr@Base 14 + __sanitizer_syscall_post_impl_fstat64@Base 14 + __sanitizer_syscall_post_impl_fstat@Base 14 + __sanitizer_syscall_post_impl_fstatat64@Base 14 + __sanitizer_syscall_post_impl_fstatfs64@Base 14 + __sanitizer_syscall_post_impl_fstatfs@Base 14 + __sanitizer_syscall_post_impl_fsync@Base 14 + __sanitizer_syscall_post_impl_ftruncate@Base 14 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 14 + __sanitizer_syscall_post_impl_get_mempolicy@Base 14 + __sanitizer_syscall_post_impl_get_robust_list@Base 14 + __sanitizer_syscall_post_impl_getcpu@Base 14 + __sanitizer_syscall_post_impl_getcwd@Base 14 + __sanitizer_syscall_post_impl_getdents64@Base 14 + __sanitizer_syscall_post_impl_getdents@Base 14 + __sanitizer_syscall_post_impl_getegid@Base 14 + __sanitizer_syscall_post_impl_geteuid@Base 14 + __sanitizer_syscall_post_impl_getgid@Base 14 + __sanitizer_syscall_post_impl_getgroups@Base 14 + __sanitizer_syscall_post_impl_gethostname@Base 14 + __sanitizer_syscall_post_impl_getitimer@Base 14 + __sanitizer_syscall_post_impl_getpeername@Base 14 + __sanitizer_syscall_post_impl_getpgid@Base 14 + __sanitizer_syscall_post_impl_getpgrp@Base 14 + __sanitizer_syscall_post_impl_getpid@Base 14 + __sanitizer_syscall_post_impl_getppid@Base 14 + __sanitizer_syscall_post_impl_getpriority@Base 14 + __sanitizer_syscall_post_impl_getrandom@Base 14 + __sanitizer_syscall_post_impl_getresgid@Base 14 + __sanitizer_syscall_post_impl_getresuid@Base 14 + __sanitizer_syscall_post_impl_getrlimit@Base 14 + __sanitizer_syscall_post_impl_getrusage@Base 14 + __sanitizer_syscall_post_impl_getsid@Base 14 + __sanitizer_syscall_post_impl_getsockname@Base 14 + __sanitizer_syscall_post_impl_getsockopt@Base 14 + __sanitizer_syscall_post_impl_gettid@Base 14 + __sanitizer_syscall_post_impl_gettimeofday@Base 14 + __sanitizer_syscall_post_impl_getuid@Base 14 + __sanitizer_syscall_post_impl_getxattr@Base 14 + __sanitizer_syscall_post_impl_init_module@Base 14 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 14 + __sanitizer_syscall_post_impl_inotify_init1@Base 14 + __sanitizer_syscall_post_impl_inotify_init@Base 14 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 14 + __sanitizer_syscall_post_impl_io_cancel@Base 14 + __sanitizer_syscall_post_impl_io_destroy@Base 14 + __sanitizer_syscall_post_impl_io_getevents@Base 14 + __sanitizer_syscall_post_impl_io_setup@Base 14 + __sanitizer_syscall_post_impl_io_submit@Base 14 + __sanitizer_syscall_post_impl_ioctl@Base 14 + __sanitizer_syscall_post_impl_ioperm@Base 14 + __sanitizer_syscall_post_impl_ioprio_get@Base 14 + __sanitizer_syscall_post_impl_ioprio_set@Base 14 + __sanitizer_syscall_post_impl_ipc@Base 14 + __sanitizer_syscall_post_impl_kexec_load@Base 14 + __sanitizer_syscall_post_impl_keyctl@Base 14 + __sanitizer_syscall_post_impl_kill@Base 14 + __sanitizer_syscall_post_impl_lchown@Base 14 + __sanitizer_syscall_post_impl_lgetxattr@Base 14 + __sanitizer_syscall_post_impl_link@Base 14 + __sanitizer_syscall_post_impl_linkat@Base 14 + __sanitizer_syscall_post_impl_listen@Base 14 + __sanitizer_syscall_post_impl_listxattr@Base 14 + __sanitizer_syscall_post_impl_llistxattr@Base 14 + __sanitizer_syscall_post_impl_llseek@Base 14 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 14 + __sanitizer_syscall_post_impl_lremovexattr@Base 14 + __sanitizer_syscall_post_impl_lseek@Base 14 + __sanitizer_syscall_post_impl_lsetxattr@Base 14 + __sanitizer_syscall_post_impl_lstat64@Base 14 + __sanitizer_syscall_post_impl_lstat@Base 14 + __sanitizer_syscall_post_impl_madvise@Base 14 + __sanitizer_syscall_post_impl_mbind@Base 14 + __sanitizer_syscall_post_impl_migrate_pages@Base 14 + __sanitizer_syscall_post_impl_mincore@Base 14 + __sanitizer_syscall_post_impl_mkdir@Base 14 + __sanitizer_syscall_post_impl_mkdirat@Base 14 + __sanitizer_syscall_post_impl_mknod@Base 14 + __sanitizer_syscall_post_impl_mknodat@Base 14 + __sanitizer_syscall_post_impl_mlock@Base 14 + __sanitizer_syscall_post_impl_mlockall@Base 14 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 14 + __sanitizer_syscall_post_impl_mount@Base 14 + __sanitizer_syscall_post_impl_move_pages@Base 14 + __sanitizer_syscall_post_impl_mprotect@Base 14 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 14 + __sanitizer_syscall_post_impl_mq_notify@Base 14 + __sanitizer_syscall_post_impl_mq_open@Base 14 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 14 + __sanitizer_syscall_post_impl_mq_timedsend@Base 14 + __sanitizer_syscall_post_impl_mq_unlink@Base 14 + __sanitizer_syscall_post_impl_mremap@Base 14 + __sanitizer_syscall_post_impl_msgctl@Base 14 + __sanitizer_syscall_post_impl_msgget@Base 14 + __sanitizer_syscall_post_impl_msgrcv@Base 14 + __sanitizer_syscall_post_impl_msgsnd@Base 14 + __sanitizer_syscall_post_impl_msync@Base 14 + __sanitizer_syscall_post_impl_munlock@Base 14 + __sanitizer_syscall_post_impl_munlockall@Base 14 + __sanitizer_syscall_post_impl_munmap@Base 14 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 14 + __sanitizer_syscall_post_impl_nanosleep@Base 14 + __sanitizer_syscall_post_impl_newfstat@Base 14 + __sanitizer_syscall_post_impl_newfstatat@Base 14 + __sanitizer_syscall_post_impl_newlstat@Base 14 + __sanitizer_syscall_post_impl_newstat@Base 14 + __sanitizer_syscall_post_impl_newuname@Base 14 + __sanitizer_syscall_post_impl_ni_syscall@Base 14 + __sanitizer_syscall_post_impl_nice@Base 14 + __sanitizer_syscall_post_impl_old_getrlimit@Base 14 + __sanitizer_syscall_post_impl_old_mmap@Base 14 + __sanitizer_syscall_post_impl_old_readdir@Base 14 + __sanitizer_syscall_post_impl_old_select@Base 14 + __sanitizer_syscall_post_impl_oldumount@Base 14 + __sanitizer_syscall_post_impl_olduname@Base 14 + __sanitizer_syscall_post_impl_open@Base 14 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 14 + __sanitizer_syscall_post_impl_openat@Base 14 + __sanitizer_syscall_post_impl_pause@Base 14 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 14 + __sanitizer_syscall_post_impl_pciconfig_read@Base 14 + __sanitizer_syscall_post_impl_pciconfig_write@Base 14 + __sanitizer_syscall_post_impl_perf_event_open@Base 14 + __sanitizer_syscall_post_impl_personality@Base 14 + __sanitizer_syscall_post_impl_pipe2@Base 14 + __sanitizer_syscall_post_impl_pipe@Base 14 + __sanitizer_syscall_post_impl_pivot_root@Base 14 + __sanitizer_syscall_post_impl_poll@Base 14 + __sanitizer_syscall_post_impl_ppoll@Base 14 + __sanitizer_syscall_post_impl_pread64@Base 14 + __sanitizer_syscall_post_impl_preadv@Base 14 + __sanitizer_syscall_post_impl_prlimit64@Base 14 + __sanitizer_syscall_post_impl_process_vm_readv@Base 14 + __sanitizer_syscall_post_impl_process_vm_writev@Base 14 + __sanitizer_syscall_post_impl_pselect6@Base 14 + __sanitizer_syscall_post_impl_ptrace@Base 14 + __sanitizer_syscall_post_impl_pwrite64@Base 14 + __sanitizer_syscall_post_impl_pwritev@Base 14 + __sanitizer_syscall_post_impl_quotactl@Base 14 + __sanitizer_syscall_post_impl_read@Base 14 + __sanitizer_syscall_post_impl_readlink@Base 14 + __sanitizer_syscall_post_impl_readlinkat@Base 14 + __sanitizer_syscall_post_impl_readv@Base 14 + __sanitizer_syscall_post_impl_reboot@Base 14 + __sanitizer_syscall_post_impl_recv@Base 14 + __sanitizer_syscall_post_impl_recvfrom@Base 14 + __sanitizer_syscall_post_impl_recvmmsg@Base 14 + __sanitizer_syscall_post_impl_recvmsg@Base 14 + __sanitizer_syscall_post_impl_remap_file_pages@Base 14 + __sanitizer_syscall_post_impl_removexattr@Base 14 + __sanitizer_syscall_post_impl_rename@Base 14 + __sanitizer_syscall_post_impl_renameat@Base 14 + __sanitizer_syscall_post_impl_request_key@Base 14 + __sanitizer_syscall_post_impl_restart_syscall@Base 14 + __sanitizer_syscall_post_impl_rmdir@Base 14 + __sanitizer_syscall_post_impl_rt_sigaction@Base 14 + __sanitizer_syscall_post_impl_rt_sigpending@Base 14 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 14 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 14 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 14 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 14 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 14 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 14 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 14 + __sanitizer_syscall_post_impl_sched_getparam@Base 14 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 14 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 14 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 14 + __sanitizer_syscall_post_impl_sched_setparam@Base 14 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 14 + __sanitizer_syscall_post_impl_sched_yield@Base 14 + __sanitizer_syscall_post_impl_select@Base 14 + __sanitizer_syscall_post_impl_semctl@Base 14 + __sanitizer_syscall_post_impl_semget@Base 14 + __sanitizer_syscall_post_impl_semop@Base 14 + __sanitizer_syscall_post_impl_semtimedop@Base 14 + __sanitizer_syscall_post_impl_send@Base 14 + __sanitizer_syscall_post_impl_sendfile64@Base 14 + __sanitizer_syscall_post_impl_sendfile@Base 14 + __sanitizer_syscall_post_impl_sendmmsg@Base 14 + __sanitizer_syscall_post_impl_sendmsg@Base 14 + __sanitizer_syscall_post_impl_sendto@Base 14 + __sanitizer_syscall_post_impl_set_mempolicy@Base 14 + __sanitizer_syscall_post_impl_set_robust_list@Base 14 + __sanitizer_syscall_post_impl_set_tid_address@Base 14 + __sanitizer_syscall_post_impl_setdomainname@Base 14 + __sanitizer_syscall_post_impl_setfsgid@Base 14 + __sanitizer_syscall_post_impl_setfsuid@Base 14 + __sanitizer_syscall_post_impl_setgid@Base 14 + __sanitizer_syscall_post_impl_setgroups@Base 14 + __sanitizer_syscall_post_impl_sethostname@Base 14 + __sanitizer_syscall_post_impl_setitimer@Base 14 + __sanitizer_syscall_post_impl_setns@Base 14 + __sanitizer_syscall_post_impl_setpgid@Base 14 + __sanitizer_syscall_post_impl_setpriority@Base 14 + __sanitizer_syscall_post_impl_setregid@Base 14 + __sanitizer_syscall_post_impl_setresgid@Base 14 + __sanitizer_syscall_post_impl_setresuid@Base 14 + __sanitizer_syscall_post_impl_setreuid@Base 14 + __sanitizer_syscall_post_impl_setrlimit@Base 14 + __sanitizer_syscall_post_impl_setsid@Base 14 + __sanitizer_syscall_post_impl_setsockopt@Base 14 + __sanitizer_syscall_post_impl_settimeofday@Base 14 + __sanitizer_syscall_post_impl_setuid@Base 14 + __sanitizer_syscall_post_impl_setxattr@Base 14 + __sanitizer_syscall_post_impl_sgetmask@Base 14 + __sanitizer_syscall_post_impl_shmat@Base 14 + __sanitizer_syscall_post_impl_shmctl@Base 14 + __sanitizer_syscall_post_impl_shmdt@Base 14 + __sanitizer_syscall_post_impl_shmget@Base 14 + __sanitizer_syscall_post_impl_shutdown@Base 14 + __sanitizer_syscall_post_impl_sigaction@Base 14 + __sanitizer_syscall_post_impl_sigaltstack@Base 14 + __sanitizer_syscall_post_impl_signal@Base 14 + __sanitizer_syscall_post_impl_signalfd4@Base 14 + __sanitizer_syscall_post_impl_signalfd@Base 14 + __sanitizer_syscall_post_impl_sigpending@Base 14 + __sanitizer_syscall_post_impl_sigprocmask@Base 14 + __sanitizer_syscall_post_impl_socket@Base 14 + __sanitizer_syscall_post_impl_socketcall@Base 14 + __sanitizer_syscall_post_impl_socketpair@Base 14 + __sanitizer_syscall_post_impl_splice@Base 14 + __sanitizer_syscall_post_impl_spu_create@Base 14 + __sanitizer_syscall_post_impl_spu_run@Base 14 + __sanitizer_syscall_post_impl_ssetmask@Base 14 + __sanitizer_syscall_post_impl_stat64@Base 14 + __sanitizer_syscall_post_impl_stat@Base 14 + __sanitizer_syscall_post_impl_statfs64@Base 14 + __sanitizer_syscall_post_impl_statfs@Base 14 + __sanitizer_syscall_post_impl_stime@Base 14 + __sanitizer_syscall_post_impl_swapoff@Base 14 + __sanitizer_syscall_post_impl_swapon@Base 14 + __sanitizer_syscall_post_impl_symlink@Base 14 + __sanitizer_syscall_post_impl_symlinkat@Base 14 + __sanitizer_syscall_post_impl_sync@Base 14 + __sanitizer_syscall_post_impl_syncfs@Base 14 + __sanitizer_syscall_post_impl_sysctl@Base 14 + __sanitizer_syscall_post_impl_sysfs@Base 14 + __sanitizer_syscall_post_impl_sysinfo@Base 14 + __sanitizer_syscall_post_impl_syslog@Base 14 + __sanitizer_syscall_post_impl_tee@Base 14 + __sanitizer_syscall_post_impl_tgkill@Base 14 + __sanitizer_syscall_post_impl_time@Base 14 + __sanitizer_syscall_post_impl_timer_create@Base 14 + __sanitizer_syscall_post_impl_timer_delete@Base 14 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 14 + __sanitizer_syscall_post_impl_timer_gettime@Base 14 + __sanitizer_syscall_post_impl_timer_settime@Base 14 + __sanitizer_syscall_post_impl_timerfd_create@Base 14 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 14 + __sanitizer_syscall_post_impl_timerfd_settime@Base 14 + __sanitizer_syscall_post_impl_times@Base 14 + __sanitizer_syscall_post_impl_tkill@Base 14 + __sanitizer_syscall_post_impl_truncate@Base 14 + __sanitizer_syscall_post_impl_umask@Base 14 + __sanitizer_syscall_post_impl_umount@Base 14 + __sanitizer_syscall_post_impl_uname@Base 14 + __sanitizer_syscall_post_impl_unlink@Base 14 + __sanitizer_syscall_post_impl_unlinkat@Base 14 + __sanitizer_syscall_post_impl_unshare@Base 14 + __sanitizer_syscall_post_impl_uselib@Base 14 + __sanitizer_syscall_post_impl_ustat@Base 14 + __sanitizer_syscall_post_impl_utime@Base 14 + __sanitizer_syscall_post_impl_utimensat@Base 14 + __sanitizer_syscall_post_impl_utimes@Base 14 + __sanitizer_syscall_post_impl_vfork@Base 14 + __sanitizer_syscall_post_impl_vhangup@Base 14 + __sanitizer_syscall_post_impl_vmsplice@Base 14 + __sanitizer_syscall_post_impl_wait4@Base 14 + __sanitizer_syscall_post_impl_waitid@Base 14 + __sanitizer_syscall_post_impl_waitpid@Base 14 + __sanitizer_syscall_post_impl_write@Base 14 + __sanitizer_syscall_post_impl_writev@Base 14 + __sanitizer_syscall_pre_impl_accept4@Base 14 + __sanitizer_syscall_pre_impl_accept@Base 14 + __sanitizer_syscall_pre_impl_access@Base 14 + __sanitizer_syscall_pre_impl_acct@Base 14 + __sanitizer_syscall_pre_impl_add_key@Base 14 + __sanitizer_syscall_pre_impl_adjtimex@Base 14 + __sanitizer_syscall_pre_impl_alarm@Base 14 + __sanitizer_syscall_pre_impl_bdflush@Base 14 + __sanitizer_syscall_pre_impl_bind@Base 14 + __sanitizer_syscall_pre_impl_brk@Base 14 + __sanitizer_syscall_pre_impl_capget@Base 14 + __sanitizer_syscall_pre_impl_capset@Base 14 + __sanitizer_syscall_pre_impl_chdir@Base 14 + __sanitizer_syscall_pre_impl_chmod@Base 14 + __sanitizer_syscall_pre_impl_chown@Base 14 + __sanitizer_syscall_pre_impl_chroot@Base 14 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 14 + __sanitizer_syscall_pre_impl_clock_getres@Base 14 + __sanitizer_syscall_pre_impl_clock_gettime@Base 14 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 14 + __sanitizer_syscall_pre_impl_clock_settime@Base 14 + __sanitizer_syscall_pre_impl_close@Base 14 + __sanitizer_syscall_pre_impl_connect@Base 14 + __sanitizer_syscall_pre_impl_creat@Base 14 + __sanitizer_syscall_pre_impl_delete_module@Base 14 + __sanitizer_syscall_pre_impl_dup2@Base 14 + __sanitizer_syscall_pre_impl_dup3@Base 14 + __sanitizer_syscall_pre_impl_dup@Base 14 + __sanitizer_syscall_pre_impl_epoll_create1@Base 14 + __sanitizer_syscall_pre_impl_epoll_create@Base 14 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 14 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 14 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 14 + __sanitizer_syscall_pre_impl_epoll_wait@Base 14 + __sanitizer_syscall_pre_impl_eventfd2@Base 14 + __sanitizer_syscall_pre_impl_eventfd@Base 14 + __sanitizer_syscall_pre_impl_exit@Base 14 + __sanitizer_syscall_pre_impl_exit_group@Base 14 + __sanitizer_syscall_pre_impl_faccessat@Base 14 + __sanitizer_syscall_pre_impl_fchdir@Base 14 + __sanitizer_syscall_pre_impl_fchmod@Base 14 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 14 + __sanitizer_syscall_pre_impl_fchown@Base 14 + __sanitizer_syscall_pre_impl_fchownat@Base 14 + __sanitizer_syscall_pre_impl_fcntl64@Base 14 + __sanitizer_syscall_pre_impl_fcntl@Base 14 + __sanitizer_syscall_pre_impl_fdatasync@Base 14 + __sanitizer_syscall_pre_impl_fgetxattr@Base 14 + __sanitizer_syscall_pre_impl_flistxattr@Base 14 + __sanitizer_syscall_pre_impl_flock@Base 14 + __sanitizer_syscall_pre_impl_fork@Base 14 + __sanitizer_syscall_pre_impl_fremovexattr@Base 14 + __sanitizer_syscall_pre_impl_fsetxattr@Base 14 + __sanitizer_syscall_pre_impl_fstat64@Base 14 + __sanitizer_syscall_pre_impl_fstat@Base 14 + __sanitizer_syscall_pre_impl_fstatat64@Base 14 + __sanitizer_syscall_pre_impl_fstatfs64@Base 14 + __sanitizer_syscall_pre_impl_fstatfs@Base 14 + __sanitizer_syscall_pre_impl_fsync@Base 14 + __sanitizer_syscall_pre_impl_ftruncate@Base 14 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 14 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 14 + __sanitizer_syscall_pre_impl_get_robust_list@Base 14 + __sanitizer_syscall_pre_impl_getcpu@Base 14 + __sanitizer_syscall_pre_impl_getcwd@Base 14 + __sanitizer_syscall_pre_impl_getdents64@Base 14 + __sanitizer_syscall_pre_impl_getdents@Base 14 + __sanitizer_syscall_pre_impl_getegid@Base 14 + __sanitizer_syscall_pre_impl_geteuid@Base 14 + __sanitizer_syscall_pre_impl_getgid@Base 14 + __sanitizer_syscall_pre_impl_getgroups@Base 14 + __sanitizer_syscall_pre_impl_gethostname@Base 14 + __sanitizer_syscall_pre_impl_getitimer@Base 14 + __sanitizer_syscall_pre_impl_getpeername@Base 14 + __sanitizer_syscall_pre_impl_getpgid@Base 14 + __sanitizer_syscall_pre_impl_getpgrp@Base 14 + __sanitizer_syscall_pre_impl_getpid@Base 14 + __sanitizer_syscall_pre_impl_getppid@Base 14 + __sanitizer_syscall_pre_impl_getpriority@Base 14 + __sanitizer_syscall_pre_impl_getrandom@Base 14 + __sanitizer_syscall_pre_impl_getresgid@Base 14 + __sanitizer_syscall_pre_impl_getresuid@Base 14 + __sanitizer_syscall_pre_impl_getrlimit@Base 14 + __sanitizer_syscall_pre_impl_getrusage@Base 14 + __sanitizer_syscall_pre_impl_getsid@Base 14 + __sanitizer_syscall_pre_impl_getsockname@Base 14 + __sanitizer_syscall_pre_impl_getsockopt@Base 14 + __sanitizer_syscall_pre_impl_gettid@Base 14 + __sanitizer_syscall_pre_impl_gettimeofday@Base 14 + __sanitizer_syscall_pre_impl_getuid@Base 14 + __sanitizer_syscall_pre_impl_getxattr@Base 14 + __sanitizer_syscall_pre_impl_init_module@Base 14 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 14 + __sanitizer_syscall_pre_impl_inotify_init1@Base 14 + __sanitizer_syscall_pre_impl_inotify_init@Base 14 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 14 + __sanitizer_syscall_pre_impl_io_cancel@Base 14 + __sanitizer_syscall_pre_impl_io_destroy@Base 14 + __sanitizer_syscall_pre_impl_io_getevents@Base 14 + __sanitizer_syscall_pre_impl_io_setup@Base 14 + __sanitizer_syscall_pre_impl_io_submit@Base 14 + __sanitizer_syscall_pre_impl_ioctl@Base 14 + __sanitizer_syscall_pre_impl_ioperm@Base 14 + __sanitizer_syscall_pre_impl_ioprio_get@Base 14 + __sanitizer_syscall_pre_impl_ioprio_set@Base 14 + __sanitizer_syscall_pre_impl_ipc@Base 14 + __sanitizer_syscall_pre_impl_kexec_load@Base 14 + __sanitizer_syscall_pre_impl_keyctl@Base 14 + __sanitizer_syscall_pre_impl_kill@Base 14 + __sanitizer_syscall_pre_impl_lchown@Base 14 + __sanitizer_syscall_pre_impl_lgetxattr@Base 14 + __sanitizer_syscall_pre_impl_link@Base 14 + __sanitizer_syscall_pre_impl_linkat@Base 14 + __sanitizer_syscall_pre_impl_listen@Base 14 + __sanitizer_syscall_pre_impl_listxattr@Base 14 + __sanitizer_syscall_pre_impl_llistxattr@Base 14 + __sanitizer_syscall_pre_impl_llseek@Base 14 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 14 + __sanitizer_syscall_pre_impl_lremovexattr@Base 14 + __sanitizer_syscall_pre_impl_lseek@Base 14 + __sanitizer_syscall_pre_impl_lsetxattr@Base 14 + __sanitizer_syscall_pre_impl_lstat64@Base 14 + __sanitizer_syscall_pre_impl_lstat@Base 14 + __sanitizer_syscall_pre_impl_madvise@Base 14 + __sanitizer_syscall_pre_impl_mbind@Base 14 + __sanitizer_syscall_pre_impl_migrate_pages@Base 14 + __sanitizer_syscall_pre_impl_mincore@Base 14 + __sanitizer_syscall_pre_impl_mkdir@Base 14 + __sanitizer_syscall_pre_impl_mkdirat@Base 14 + __sanitizer_syscall_pre_impl_mknod@Base 14 + __sanitizer_syscall_pre_impl_mknodat@Base 14 + __sanitizer_syscall_pre_impl_mlock@Base 14 + __sanitizer_syscall_pre_impl_mlockall@Base 14 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 14 + __sanitizer_syscall_pre_impl_mount@Base 14 + __sanitizer_syscall_pre_impl_move_pages@Base 14 + __sanitizer_syscall_pre_impl_mprotect@Base 14 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 14 + __sanitizer_syscall_pre_impl_mq_notify@Base 14 + __sanitizer_syscall_pre_impl_mq_open@Base 14 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 14 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 14 + __sanitizer_syscall_pre_impl_mq_unlink@Base 14 + __sanitizer_syscall_pre_impl_mremap@Base 14 + __sanitizer_syscall_pre_impl_msgctl@Base 14 + __sanitizer_syscall_pre_impl_msgget@Base 14 + __sanitizer_syscall_pre_impl_msgrcv@Base 14 + __sanitizer_syscall_pre_impl_msgsnd@Base 14 + __sanitizer_syscall_pre_impl_msync@Base 14 + __sanitizer_syscall_pre_impl_munlock@Base 14 + __sanitizer_syscall_pre_impl_munlockall@Base 14 + __sanitizer_syscall_pre_impl_munmap@Base 14 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 14 + __sanitizer_syscall_pre_impl_nanosleep@Base 14 + __sanitizer_syscall_pre_impl_newfstat@Base 14 + __sanitizer_syscall_pre_impl_newfstatat@Base 14 + __sanitizer_syscall_pre_impl_newlstat@Base 14 + __sanitizer_syscall_pre_impl_newstat@Base 14 + __sanitizer_syscall_pre_impl_newuname@Base 14 + __sanitizer_syscall_pre_impl_ni_syscall@Base 14 + __sanitizer_syscall_pre_impl_nice@Base 14 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 14 + __sanitizer_syscall_pre_impl_old_mmap@Base 14 + __sanitizer_syscall_pre_impl_old_readdir@Base 14 + __sanitizer_syscall_pre_impl_old_select@Base 14 + __sanitizer_syscall_pre_impl_oldumount@Base 14 + __sanitizer_syscall_pre_impl_olduname@Base 14 + __sanitizer_syscall_pre_impl_open@Base 14 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 14 + __sanitizer_syscall_pre_impl_openat@Base 14 + __sanitizer_syscall_pre_impl_pause@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 14 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 14 + __sanitizer_syscall_pre_impl_perf_event_open@Base 14 + __sanitizer_syscall_pre_impl_personality@Base 14 + __sanitizer_syscall_pre_impl_pipe2@Base 14 + __sanitizer_syscall_pre_impl_pipe@Base 14 + __sanitizer_syscall_pre_impl_pivot_root@Base 14 + __sanitizer_syscall_pre_impl_poll@Base 14 + __sanitizer_syscall_pre_impl_ppoll@Base 14 + __sanitizer_syscall_pre_impl_pread64@Base 14 + __sanitizer_syscall_pre_impl_preadv@Base 14 + __sanitizer_syscall_pre_impl_prlimit64@Base 14 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 14 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 14 + __sanitizer_syscall_pre_impl_pselect6@Base 14 + __sanitizer_syscall_pre_impl_ptrace@Base 14 + __sanitizer_syscall_pre_impl_pwrite64@Base 14 + __sanitizer_syscall_pre_impl_pwritev@Base 14 + __sanitizer_syscall_pre_impl_quotactl@Base 14 + __sanitizer_syscall_pre_impl_read@Base 14 + __sanitizer_syscall_pre_impl_readlink@Base 14 + __sanitizer_syscall_pre_impl_readlinkat@Base 14 + __sanitizer_syscall_pre_impl_readv@Base 14 + __sanitizer_syscall_pre_impl_reboot@Base 14 + __sanitizer_syscall_pre_impl_recv@Base 14 + __sanitizer_syscall_pre_impl_recvfrom@Base 14 + __sanitizer_syscall_pre_impl_recvmmsg@Base 14 + __sanitizer_syscall_pre_impl_recvmsg@Base 14 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 14 + __sanitizer_syscall_pre_impl_removexattr@Base 14 + __sanitizer_syscall_pre_impl_rename@Base 14 + __sanitizer_syscall_pre_impl_renameat@Base 14 + __sanitizer_syscall_pre_impl_request_key@Base 14 + __sanitizer_syscall_pre_impl_restart_syscall@Base 14 + __sanitizer_syscall_pre_impl_rmdir@Base 14 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 14 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 14 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 14 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 14 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 14 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 14 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 14 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 14 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 14 + __sanitizer_syscall_pre_impl_sched_getparam@Base 14 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 14 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 14 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 14 + __sanitizer_syscall_pre_impl_sched_setparam@Base 14 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 14 + __sanitizer_syscall_pre_impl_sched_yield@Base 14 + __sanitizer_syscall_pre_impl_select@Base 14 + __sanitizer_syscall_pre_impl_semctl@Base 14 + __sanitizer_syscall_pre_impl_semget@Base 14 + __sanitizer_syscall_pre_impl_semop@Base 14 + __sanitizer_syscall_pre_impl_semtimedop@Base 14 + __sanitizer_syscall_pre_impl_send@Base 14 + __sanitizer_syscall_pre_impl_sendfile64@Base 14 + __sanitizer_syscall_pre_impl_sendfile@Base 14 + __sanitizer_syscall_pre_impl_sendmmsg@Base 14 + __sanitizer_syscall_pre_impl_sendmsg@Base 14 + __sanitizer_syscall_pre_impl_sendto@Base 14 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 14 + __sanitizer_syscall_pre_impl_set_robust_list@Base 14 + __sanitizer_syscall_pre_impl_set_tid_address@Base 14 + __sanitizer_syscall_pre_impl_setdomainname@Base 14 + __sanitizer_syscall_pre_impl_setfsgid@Base 14 + __sanitizer_syscall_pre_impl_setfsuid@Base 14 + __sanitizer_syscall_pre_impl_setgid@Base 14 + __sanitizer_syscall_pre_impl_setgroups@Base 14 + __sanitizer_syscall_pre_impl_sethostname@Base 14 + __sanitizer_syscall_pre_impl_setitimer@Base 14 + __sanitizer_syscall_pre_impl_setns@Base 14 + __sanitizer_syscall_pre_impl_setpgid@Base 14 + __sanitizer_syscall_pre_impl_setpriority@Base 14 + __sanitizer_syscall_pre_impl_setregid@Base 14 + __sanitizer_syscall_pre_impl_setresgid@Base 14 + __sanitizer_syscall_pre_impl_setresuid@Base 14 + __sanitizer_syscall_pre_impl_setreuid@Base 14 + __sanitizer_syscall_pre_impl_setrlimit@Base 14 + __sanitizer_syscall_pre_impl_setsid@Base 14 + __sanitizer_syscall_pre_impl_setsockopt@Base 14 + __sanitizer_syscall_pre_impl_settimeofday@Base 14 + __sanitizer_syscall_pre_impl_setuid@Base 14 + __sanitizer_syscall_pre_impl_setxattr@Base 14 + __sanitizer_syscall_pre_impl_sgetmask@Base 14 + __sanitizer_syscall_pre_impl_shmat@Base 14 + __sanitizer_syscall_pre_impl_shmctl@Base 14 + __sanitizer_syscall_pre_impl_shmdt@Base 14 + __sanitizer_syscall_pre_impl_shmget@Base 14 + __sanitizer_syscall_pre_impl_shutdown@Base 14 + __sanitizer_syscall_pre_impl_sigaction@Base 14 + __sanitizer_syscall_pre_impl_sigaltstack@Base 14 + __sanitizer_syscall_pre_impl_signal@Base 14 + __sanitizer_syscall_pre_impl_signalfd4@Base 14 + __sanitizer_syscall_pre_impl_signalfd@Base 14 + __sanitizer_syscall_pre_impl_sigpending@Base 14 + __sanitizer_syscall_pre_impl_sigprocmask@Base 14 + __sanitizer_syscall_pre_impl_socket@Base 14 + __sanitizer_syscall_pre_impl_socketcall@Base 14 + __sanitizer_syscall_pre_impl_socketpair@Base 14 + __sanitizer_syscall_pre_impl_splice@Base 14 + __sanitizer_syscall_pre_impl_spu_create@Base 14 + __sanitizer_syscall_pre_impl_spu_run@Base 14 + __sanitizer_syscall_pre_impl_ssetmask@Base 14 + __sanitizer_syscall_pre_impl_stat64@Base 14 + __sanitizer_syscall_pre_impl_stat@Base 14 + __sanitizer_syscall_pre_impl_statfs64@Base 14 + __sanitizer_syscall_pre_impl_statfs@Base 14 + __sanitizer_syscall_pre_impl_stime@Base 14 + __sanitizer_syscall_pre_impl_swapoff@Base 14 + __sanitizer_syscall_pre_impl_swapon@Base 14 + __sanitizer_syscall_pre_impl_symlink@Base 14 + __sanitizer_syscall_pre_impl_symlinkat@Base 14 + __sanitizer_syscall_pre_impl_sync@Base 14 + __sanitizer_syscall_pre_impl_syncfs@Base 14 + __sanitizer_syscall_pre_impl_sysctl@Base 14 + __sanitizer_syscall_pre_impl_sysfs@Base 14 + __sanitizer_syscall_pre_impl_sysinfo@Base 14 + __sanitizer_syscall_pre_impl_syslog@Base 14 + __sanitizer_syscall_pre_impl_tee@Base 14 + __sanitizer_syscall_pre_impl_tgkill@Base 14 + __sanitizer_syscall_pre_impl_time@Base 14 + __sanitizer_syscall_pre_impl_timer_create@Base 14 + __sanitizer_syscall_pre_impl_timer_delete@Base 14 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 14 + __sanitizer_syscall_pre_impl_timer_gettime@Base 14 + __sanitizer_syscall_pre_impl_timer_settime@Base 14 + __sanitizer_syscall_pre_impl_timerfd_create@Base 14 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 14 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 14 + __sanitizer_syscall_pre_impl_times@Base 14 + __sanitizer_syscall_pre_impl_tkill@Base 14 + __sanitizer_syscall_pre_impl_truncate@Base 14 + __sanitizer_syscall_pre_impl_umask@Base 14 + __sanitizer_syscall_pre_impl_umount@Base 14 + __sanitizer_syscall_pre_impl_uname@Base 14 + __sanitizer_syscall_pre_impl_unlink@Base 14 + __sanitizer_syscall_pre_impl_unlinkat@Base 14 + __sanitizer_syscall_pre_impl_unshare@Base 14 + __sanitizer_syscall_pre_impl_uselib@Base 14 + __sanitizer_syscall_pre_impl_ustat@Base 14 + __sanitizer_syscall_pre_impl_utime@Base 14 + __sanitizer_syscall_pre_impl_utimensat@Base 14 + __sanitizer_syscall_pre_impl_utimes@Base 14 + __sanitizer_syscall_pre_impl_vfork@Base 14 + __sanitizer_syscall_pre_impl_vhangup@Base 14 + __sanitizer_syscall_pre_impl_vmsplice@Base 14 + __sanitizer_syscall_pre_impl_wait4@Base 14 + __sanitizer_syscall_pre_impl_waitid@Base 14 + __sanitizer_syscall_pre_impl_waitpid@Base 14 + __sanitizer_syscall_pre_impl_write@Base 14 + __sanitizer_syscall_pre_impl_writev@Base 14 + __sanitizer_unaligned_load16@Base 13 + __sanitizer_unaligned_load32@Base 13 + __sanitizer_unaligned_load64@Base 13 + __sanitizer_unaligned_store16@Base 13 + __sanitizer_unaligned_store32@Base 13 + __sanitizer_unaligned_store64@Base 13 + __sanitizer_valloc@Base 13 + __sigsetjmp@Base 13 + _setjmp@Base 13 + aligned_alloc@Base 13 + bcmp@Base 14 + calloc@Base 13 + cfree@Base 13 + free@Base 13 + longjmp@Base 13 + mallinfo@Base 13 + malloc@Base 13 + malloc_stats@Base 13 + malloc_usable_size@Base 13 + mallopt@Base 13 + memalign@Base 13 + memcmp@Base 14 + memcpy@Base 14 + memmove@Base 14 + memset@Base 14 + mmap@Base 14 + mprotect@Base 14 + munmap@Base 14 + posix_memalign@Base 13 + preadv2@Base 15 + pthread_create@Base 13 + pthread_detach@Base 14 + pthread_exit@Base 14 + pthread_join@Base 13 + pthread_timedjoin_np@Base 14 + pthread_tryjoin_np@Base 14 + pvalloc@Base 13 + pwritev2@Base 15 + realloc@Base 13 + reallocarray@Base 13 + siglongjmp@Base 13 + valloc@Base 13 + vfork@Base 13 diff --git a/libitm.symbols b/libitm.symbols new file mode 100644 index 0000000..c97c8bc --- /dev/null +++ b/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 diff --git a/liblsan0.symbols b/liblsan0.symbols new file mode 100644 index 0000000..992a451 --- /dev/null +++ b/liblsan0.symbols @@ -0,0 +1,252 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 +liblsan.so.0 liblsan0 #MINVER# + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 8 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdaPvm@Base 8 + _ZdaPvmSt11align_val_t@Base 8 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 8 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdlPvm@Base 8 + _ZdlPvmSt11align_val_t@Base 8 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 8 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 8 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 8 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 8 + (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 + (arch=!ppc64 !ppc64el !riscv64)___interceptor_cfree@Base 14 + (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mallinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mallopt@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor__exit@Base 8 + __interceptor_aligned_alloc@Base 5 + __interceptor_calloc@Base 4.9 + (arch=!riscv64)__interceptor_cfree@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_mallinfo@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mallopt@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_posix_memalign@Base 4.9 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 14 + __interceptor_pthread_exit@Base 14 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_timedjoin_np@Base 14 + __interceptor_pthread_tryjoin_np@Base 14 + __interceptor_pvalloc@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_reallocarray@Base 10 + __interceptor_sigaction@Base 8 + __interceptor_signal@Base 8 + __interceptor_strerror@Base 10 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 + (arch=!ppc64 !ppc64el !riscv64)__interceptor_trampoline_cfree@Base 14 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallopt@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 + __interceptor_valloc@Base 4.9 + __libc_memalign@Base 4.9 + __lsan_default_options@Base 11 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_do_recoverable_leak_check@Base 6 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __lsan_init@Base 8 + __lsan_register_root_region@Base 5 + __lsan_unregister_root_region@Base 5 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 13 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_report_path@Base 12 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 13 + __sanitizer_on_print@Base 10 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_purge_allocator@Base 14 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + _exit@Base 8 + aligned_alloc@Base 5 + calloc@Base 4.9 + (arch=!riscv64)cfree@Base 4.9 + free@Base 4.9 + mallinfo@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mallopt@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + mprobe@Base 8 + posix_memalign@Base 4.9 + pthread_create@Base 4.9 + pthread_detach@Base 14 + pthread_exit@Base 14 + pthread_join@Base 4.9 + pthread_timedjoin_np@Base 14 + pthread_tryjoin_np@Base 14 + pvalloc@Base 4.9 + realloc@Base 4.9 + reallocarray@Base 10 + sigaction@Base 8 + signal@Base 8 + strerror@Base 10 + valloc@Base 4.9 diff --git a/libobjc.symbols b/libobjc.symbols new file mode 100644 index 0000000..f107f68 --- /dev/null +++ b/libobjc.symbols @@ -0,0 +1,11 @@ +libobjc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 +libobjc_gc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" +(optional)#include "libobjc.symbols.gc" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 + (arch=sparc64)_etext@Base 15 + (arch=riscv64)end@Base 15 diff --git a/libobjc.symbols.common b/libobjc.symbols.common new file mode 100644 index 0000000..2ec5ecc --- /dev/null +++ b/libobjc.symbols.common @@ -0,0 +1,205 @@ + __objc_accessors_init@Base 4.6 + __objc_add_class_to_hash@Base 4.2.1 + __objc_class_links_resolved@Base 4.2.1 + __objc_class_name_NXConstantString@Base 4.2.1 + __objc_class_name_Object@Base 4.2.1 + __objc_class_name_Protocol@Base 4.2.1 + __objc_dangling_categories@Base 4.2.1 + __objc_exec_class@Base 4.2.1 + __objc_force_linking@Base 4.2.1 + __objc_generate_gc_type_description@Base 4.2.1 + __objc_get_forward_imp@Base 4.2.1 + __objc_init_class@Base 4.6 + __objc_init_class_tables@Base 4.2.1 + __objc_init_dispatch_tables@Base 4.2.1 + __objc_init_selector_tables@Base 4.2.1 + __objc_init_thread_system@Base 4.2.1 + __objc_install_premature_dtable@Base 4.2.1 + __objc_is_multi_threaded@Base 4.2.1 + __objc_linking@Base 4.2.1 + __objc_msg_forward@Base 4.2.1 + __objc_msg_forward2@Base 4.3 + __objc_print_dtable_stats@Base 4.2.1 + __objc_protocols_add_protocol@Base 4.6 + __objc_protocols_init@Base 4.6 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_description_list@Base 4.6 + __objc_register_selectors_from_list@Base 4.2.1 + __objc_register_selectors_from_module@Base 4.6 + __objc_resolve_class_links@Base 4.2.1 + __objc_responds_to@Base 4.2.1 + __objc_runtime_mutex@Base 4.2.1 + __objc_runtime_threads_alive@Base 4.2.1 + __objc_selector_max_index@Base 4.2.1 + __objc_sparse2_id@Base 4.2.1 + __objc_sync_init@Base 4.6 + __objc_thread_exit_status@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_classes_with_methods@Base 4.6 + __objc_update_dispatch_table_for_class@Base 4.2.1 + _objc_abort@Base 4.6 + _objc_became_multi_threaded@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.6 + class_addIvar@Base 4.6 + class_addMethod@Base 4.6 + class_addProtocol@Base 4.6 + class_add_method_list@Base 4.2.1 + class_conformsToProtocol@Base 4.6 + class_copyIvarList@Base 4.6 + class_copyMethodList@Base 4.6 + class_copyPropertyList@Base 4.6 + class_copyProtocolList@Base 4.6 + class_createInstance@Base 4.6 + class_getClassMethod@Base 4.6 + class_getClassVariable@Base 4.6 + class_getInstanceMethod@Base 4.6 + class_getInstanceSize@Base 4.6 + class_getInstanceVariable@Base 4.6 + class_getIvarLayout@Base 4.6 + class_getMethodImplementation@Base 4.6 + class_getName@Base 4.6 + class_getProperty@Base 4.6 + class_getSuperclass@Base 4.6 + class_getVersion@Base 4.6 + class_getWeakIvarLayout@Base 4.6 + class_isMetaClass@Base 4.6 + class_ivar_set_gcinvisible@Base 4.2.1 + class_replaceMethod@Base 4.6 + class_respondsToSelector@Base 4.6 + class_setIvarLayout@Base 4.6 + class_setVersion@Base 4.6 + class_setWeakIvarLayout@Base 4.6 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + ivar_getName@Base 4.6 + ivar_getOffset@Base 4.6 + ivar_getTypeEncoding@Base 4.6 + method_copyArgumentType@Base 4.6 + method_copyReturnType@Base 4.6 + method_exchangeImplementations@Base 4.6 + method_getArgumentType@Base 4.6 + method_getDescription@Base 4.6 + method_getImplementation@Base 4.6 + method_getName@Base 4.6 + method_getNumberOfArguments@Base 4.6 + method_getReturnType@Base 4.6 + method_getTypeEncoding@Base 4.6 + method_get_imp@Base 4.6 + method_setImplementation@Base 4.6 + narrays@Base 4.2.1 + nbuckets@Base 4.2.1 + nil_method@Base 4.2.1 + nindices@Base 4.2.1 + objc_aligned_size@Base 4.2.1 + objc_alignof_type@Base 4.2.1 + objc_allocateClassPair@Base 4.6 + objc_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_condition_allocate@Base 4.2.1 + objc_condition_broadcast@Base 4.2.1 + objc_condition_deallocate@Base 4.2.1 + objc_condition_signal@Base 4.2.1 + objc_condition_wait@Base 4.2.1 + objc_copyProtocolList@Base 4.6 + objc_copyStruct@Base 4.6 + objc_disposeClassPair@Base 4.6 + objc_enumerationMutation@Base 4.6 + objc_exception_throw@Base 4.2.1 + objc_free@Base 4.2.1 + objc_getClass@Base 4.6 + objc_getClassList@Base 4.6 + objc_getMetaClass@Base 4.6 + objc_getProperty@Base 4.6 + objc_getPropertyStruct@Base 4.6 + objc_getProtocol@Base 4.6 + objc_getRequiredClass@Base 4.6 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_hash_add@Base 4.2.1 + objc_hash_delete@Base 4.2.1 + objc_hash_is_key_in_hash@Base 4.2.1 + objc_hash_new@Base 4.2.1 + objc_hash_next@Base 4.2.1 + objc_hash_remove@Base 4.2.1 + objc_hash_value_for_key@Base 4.2.1 + objc_layout_finish_structure@Base 4.2.1 + objc_layout_structure@Base 4.2.1 + objc_layout_structure_get_info@Base 4.2.1 + objc_layout_structure_next_member@Base 4.2.1 + objc_lookUpClass@Base 4.6 + objc_lookup_class@Base 4.2.1 + objc_malloc@Base 4.2.1 + objc_msg_lookup@Base 4.2.1 + objc_msg_lookup_super@Base 4.2.1 + objc_mutex_allocate@Base 4.2.1 + objc_mutex_deallocate@Base 4.2.1 + objc_mutex_lock@Base 4.2.1 + objc_mutex_trylock@Base 4.2.1 + objc_mutex_unlock@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_registerClassPair@Base 4.6 + objc_setEnumerationMutationHandler@Base 4.6 + objc_setExceptionMatcher@Base 4.6 + objc_setGetUnknownClassHandler@Base 4.6 + objc_setProperty@Base 4.6 + objc_setPropertyStruct@Base 4.6 + objc_setUncaughtExceptionHandler@Base 4.6 + objc_set_thread_callback@Base 4.2.1 + objc_sizeof_type@Base 4.2.1 + objc_skip_argspec@Base 4.2.1 + objc_skip_offset@Base 4.2.1 + objc_skip_type_qualifiers@Base 4.2.1 + objc_skip_typespec@Base 4.2.1 + objc_sync_enter@Base 4.6 + objc_sync_exit@Base 4.6 + objc_thread_add@Base 4.2.1 + objc_thread_detach@Base 4.2.1 + objc_thread_exit@Base 4.2.1 + objc_thread_get_data@Base 4.2.1 + objc_thread_get_priority@Base 4.2.1 + objc_thread_id@Base 4.2.1 + objc_thread_remove@Base 4.2.1 + objc_thread_set_data@Base 4.2.1 + objc_thread_set_priority@Base 4.2.1 + objc_thread_yield@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + object_getClassName@Base 4.6 + object_getIndexedIvars@Base 4.6 + object_getInstanceVariable@Base 4.6 + object_getIvar@Base 4.6 + object_setClass@Base 4.6 + object_setInstanceVariable@Base 4.6 + object_setIvar@Base 4.6 + property_getAttributes@Base 4.6 + property_getName@Base 4.6 + protocol_conformsToProtocol@Base 4.6 + protocol_copyMethodDescriptionList@Base 4.6 + protocol_copyPropertyList@Base 4.6 + protocol_copyProtocolList@Base 4.6 + protocol_getMethodDescription@Base 4.6 + protocol_getName@Base 4.6 + protocol_getProperty@Base 4.6 + protocol_isEqual@Base 4.6 + sarray_at_put@Base 4.2.1 + sarray_at_put_safe@Base 4.2.1 + sarray_free@Base 4.2.1 + sarray_lazy_copy@Base 4.2.1 + sarray_new@Base 4.2.1 + sarray_realloc@Base 4.2.1 + sarray_remove_garbage@Base 4.2.1 + search_for_method_in_list@Base 4.2.1 + sel_copyTypedSelectorList@Base 4.6 + sel_getName@Base 4.6 + sel_getTypeEncoding@Base 4.6 + sel_getTypedSelector@Base 4.6 + sel_getUid@Base 4.6 + sel_get_any_uid@Base 4.2.1 + sel_isEqual@Base 4.6 + sel_is_mapped@Base 4.2.1 + sel_registerName@Base 4.6 + sel_registerTypedName@Base 4.6 diff --git a/libobjc.symbols.gc b/libobjc.symbols.gc new file mode 100644 index 0000000..87681af --- /dev/null +++ b/libobjc.symbols.gc @@ -0,0 +1,522 @@ + async_set_pht_entry_from_index@Base 4.2.1 + free_list_index_of@Base 4.2.1 + suspend_self@Base 4.2.1 + GC_abort@Base 6 + GC_acquire_mark_lock@Base 6 + GC_add_ext_descriptor@Base 6 + GC_add_leaked@Base 6 + GC_add_map_entry@Base 6 + GC_add_roots@Base 6 + GC_add_roots_inner@Base 6 + GC_add_smashed@Base 6 + GC_add_to_black_list_normal@Base 6 + GC_add_to_black_list_stack@Base 6 + GC_add_to_fl@Base 6 + GC_add_to_heap@Base 6 + GC_adj_words_allocd@Base 6 + GC_all_bottom_indices@Base 6 + GC_all_bottom_indices_end@Base 6 + GC_all_interior_pointers@Base 6 + GC_alloc_large@Base 6 + GC_alloc_large_and_clear@Base 6 + GC_alloc_reclaim_list@Base 6 + GC_allocate_ml@Base 6 + GC_allochblk@Base 6 + GC_allochblk_nth@Base 6 + GC_allocobj@Base 6 + GC_aobjfreelist_ptr@Base 6 + GC_apply_to_all_blocks@Base 6 + GC_apply_to_maps@Base 6 + GC_approx_sp@Base 6 + GC_arobjfreelist@Base 6 + GC_array_kind@Base 6 + GC_array_mark_proc@Base 6 + GC_array_mark_proc_index@Base 6 + GC_arrays@Base 6 + GC_auobjfreelist_ptr@Base 6 + GC_avail_descr@Base 6 + GC_base@Base 6 + GC_begin_syscall@Base 6 + GC_bl_init@Base 6 + GC_black_list_spacing@Base 6 + GC_block_count@Base 6 + GC_block_empty@Base 6 + GC_block_nearly_full1@Base 6 + GC_block_nearly_full3@Base 6 + GC_block_nearly_full@Base 6 + GC_block_was_dirty@Base 6 + GC_bm_table@Base 6 + GC_brief_async_signal_safe_sleep@Base 6 + GC_build_fl1@Base 6 + GC_build_fl2@Base 6 + GC_build_fl4@Base 6 + GC_build_fl@Base 6 + GC_build_fl_clear2@Base 6 + GC_build_fl_clear3@Base 6 + GC_build_fl_clear4@Base 6 + GC_call_with_alloc_lock@Base 6 + GC_calloc_explicitly_typed@Base 6 + GC_change_stubborn@Base 6 + GC_check_annotated_obj@Base 6 + GC_check_heap@Base 6 + GC_check_heap_block@Base 6 + GC_check_heap_proc@Base 6 + GC_clear_a_few_frames@Base 6 + GC_clear_bl@Base 6 + GC_clear_fl_links@Base 6 + GC_clear_fl_marks@Base 6 + GC_clear_hdr_marks@Base 6 + GC_clear_mark_bit@Base 6 + GC_clear_marks@Base 6 + GC_clear_roots@Base 6 + GC_clear_stack@Base 6 + GC_clear_stack_inner@Base 6 + GC_collect_a_little@Base 6 + GC_collect_a_little_inner@Base 6 + GC_collect_or_expand@Base 6 + GC_collecting@Base 6 + GC_collection_in_progress@Base 6 + GC_cond_register_dynamic_libraries@Base 6 + GC_continue_reclaim@Base 6 + GC_copy_bl@Base 6 + GC_copyright@Base 6 + GC_current_warn_proc@Base 6 + GC_data_start@Base 6 + GC_debug_change_stubborn@Base 6 + GC_debug_end_stubborn_change@Base 6 + GC_debug_free@Base 6 + GC_debug_free_inner@Base 6 + GC_debug_gcj_fast_malloc@Base 6 + GC_debug_gcj_malloc@Base 6 + GC_debug_header_size@Base 6 + GC_debug_invoke_finalizer@Base 6 + GC_debug_malloc@Base 6 + GC_debug_malloc_atomic@Base 6 + GC_debug_malloc_atomic_ignore_off_page@Base 6 + GC_debug_malloc_atomic_uncollectable@Base 6 + GC_debug_malloc_ignore_off_page@Base 6 + GC_debug_malloc_replacement@Base 6 + GC_debug_malloc_stubborn@Base 6 + GC_debug_malloc_uncollectable@Base 6 + GC_debug_print_heap_obj_proc@Base 6 + GC_debug_realloc@Base 6 + GC_debug_realloc_replacement@Base 6 + GC_debug_register_displacement@Base 6 + GC_debug_register_finalizer@Base 6 + GC_debug_register_finalizer_ignore_self@Base 6 + GC_debug_register_finalizer_no_order@Base 6 + GC_debug_register_finalizer_unreachable@Base 6 + GC_debugging_started@Base 6 + GC_default_is_valid_displacement_print_proc@Base 6 + GC_default_is_visible_print_proc@Base 6 + GC_default_oom_fn@Base 6 + GC_default_print_heap_obj_proc@Base 6 + GC_default_push_other_roots@Base 6 + GC_default_same_obj_print_proc@Base 6 + GC_default_warn_proc@Base 6 + GC_deficit@Base 6 + GC_delete_gc_thread@Base 6 + GC_delete_thread@Base 6 + GC_descr_obj_size@Base 6 + GC_destroy_thread_local@Base 6 + GC_dirty_init@Base 6 + GC_dirty_maintained@Base 6 + GC_disable@Base 6 + GC_disable_signals@Base 6 + GC_dl_entries@Base 6 + GC_dlopen@Base 6 + GC_do_nothing@Base 6 + GC_dont_expand@Base 6 + GC_dont_gc@Base 6 + GC_dont_precollect@Base 6 + GC_double_descr@Base 6 + GC_dump@Base 6 + GC_dump_finalization@Base 6 + GC_dump_regions@Base 6 + GC_dump_regularly@Base 6 + GC_ed_size@Base 6 + GC_enable@Base 6 + GC_enable_incremental@Base 6 + GC_enable_signals@Base 6 + GC_end_blocking@Base 6 + GC_end_stubborn_change@Base 6 + GC_end_syscall@Base 6 + GC_enqueue_all_finalizers@Base 6 + GC_eobjfreelist@Base 6 + GC_err_printf@Base 6 + GC_err_puts@Base 6 + GC_err_write@Base 6 + GC_excl_table_entries@Base 6 + GC_exclude_static_roots@Base 6 + GC_exit_check@Base 6 + GC_expand_hp@Base 6 + GC_expand_hp_inner@Base 6 + GC_explicit_kind@Base 6 + GC_explicit_typing_initialized@Base 6 + GC_ext_descriptors@Base 6 + GC_extend_size_map@Base 6 + GC_fail_count@Base 6 + GC_fault_handler@Base 6 + GC_finalization_failures@Base 6 + GC_finalize@Base 6 + GC_finalize_all@Base 6 + GC_finalize_now@Base 6 + GC_finalize_on_demand@Base 6 + GC_finalizer_notifier@Base 6 + GC_find_header@Base 6 + GC_find_leak@Base 6 + GC_find_limit@Base 6 + GC_find_start@Base 6 + GC_finish_collection@Base 6 + GC_fl_builder_count@Base 6 + GC_fo_entries@Base 6 + GC_free@Base 6 + GC_free_block_ending_at@Base 6 + GC_free_bytes@Base 6 + GC_free_inner@Base 6 + GC_free_space_divisor@Base 6 + GC_freehblk@Base 6 + GC_freehblk_ptr@Base 6 + GC_full_freq@Base 6 + GC_gc_no@Base 6 + GC_gcj_debug_kind@Base 6 + GC_gcj_fast_malloc@Base 6 + GC_gcj_kind@Base 6 + GC_gcj_malloc@Base 6 + GC_gcj_malloc_ignore_off_page@Base 6 + GC_gcj_malloc_initialized@Base 6 + GC_gcjdebugobjfreelist@Base 6 + GC_gcjobjfreelist@Base 6 + GC_gcollect@Base 6 + GC_general_register_disappearing_link@Base 6 + GC_generic_lock@Base 6 + GC_generic_malloc@Base 6 + GC_generic_malloc_ignore_off_page@Base 6 + GC_generic_malloc_inner@Base 6 + GC_generic_malloc_inner_ignore_off_page@Base 6 + GC_generic_malloc_many@Base 6 + GC_generic_malloc_words_small@Base 6 + GC_generic_malloc_words_small_inner@Base 6 + GC_generic_or_special_malloc@Base 6 + GC_generic_push_regs@Base 6 + GC_get_bytes_since_gc@Base 6 + GC_get_first_part@Base 6 + GC_get_free_bytes@Base 6 + GC_get_heap_size@Base 6 + GC_get_nprocs@Base 6 + GC_get_stack_base@Base 6 + GC_get_thread_stack_base@Base 6 + GC_get_total_bytes@Base 6 + GC_greatest_plausible_heap_addr@Base 6 + GC_grow_table@Base 6 + GC_has_other_debug_info@Base 6 + GC_have_errors@Base 6 + GC_hblk_fl_from_blocks@Base 6 + GC_hblkfreelist@Base 6 + GC_hdr_cache_hits@Base 6 + GC_hdr_cache_misses@Base 6 + GC_high_water@Base 6 + GC_ignore_self_finalize_mark_proc@Base 6 + GC_in_thread_creation@Base 6 + GC_incomplete_normal_bl@Base 6 + GC_incomplete_stack_bl@Base 6 + GC_incr_mem_freed@Base 6 + GC_incr_words_allocd@Base 6 + GC_incremental@Base 6 + GC_incremental_protection_needs@Base 6 + GC_init@Base 6 + GC_init_explicit_typing@Base 6 + GC_init_gcj_malloc@Base 6 + GC_init_headers@Base 6 + GC_init_inner@Base 6 + GC_init_linux_data_start@Base 6 + GC_init_parallel@Base 6 + GC_init_size_map@Base 6 + GC_init_thread_local@Base 6 + GC_initiate_gc@Base 6 + GC_install_counts@Base 6 + GC_install_header@Base 6 + GC_invalid_header@Base 6 + GC_invalid_map@Base 6 + GC_invalidate_map@Base 6 + GC_invalidate_mark_state@Base 6 + GC_invoke_finalizers@Base 6 + GC_is_black_listed@Base 6 + GC_is_fresh@Base 6 + GC_is_full_gc@Base 6 + GC_is_initialized@Base 6 + GC_is_marked@Base 6 + GC_is_static_root@Base 6 + GC_is_thread_suspended@Base 6 + GC_is_valid_displacement@Base 6 + GC_is_valid_displacement_print_proc@Base 6 + GC_is_visible@Base 6 + GC_is_visible_print_proc@Base 6 + GC_java_finalization@Base 6 + GC_jmp_buf@Base 6 + GC_key_create@Base 6 + GC_large_alloc_warn_interval@Base 6 + GC_large_alloc_warn_suppressed@Base 6 + GC_leaked@Base 6 + GC_least_plausible_heap_addr@Base 6 + GC_linux_stack_base@Base 6 + GC_local_gcj_malloc@Base 6 + GC_local_malloc@Base 6 + GC_local_malloc_atomic@Base 6 + GC_lock@Base 6 + GC_lock_holder@Base 6 + GC_lookup_thread@Base 6 + GC_make_array_descriptor@Base 6 + GC_make_closure@Base 6 + GC_make_descriptor@Base 6 + GC_make_sequence_descriptor@Base 6 + GC_malloc@Base 6 + GC_malloc_atomic@Base 6 + GC_malloc_atomic_ignore_off_page@Base 6 + GC_malloc_atomic_uncollectable@Base 6 + GC_malloc_explicitly_typed@Base 6 + GC_malloc_explicitly_typed_ignore_off_page@Base 6 + GC_malloc_ignore_off_page@Base 6 + GC_malloc_many@Base 6 + GC_malloc_stubborn@Base 6 + GC_malloc_uncollectable@Base 6 + GC_mark_and_push@Base 6 + GC_mark_and_push_stack@Base 6 + GC_mark_from@Base 6 + GC_mark_init@Base 6 + GC_mark_some@Base 6 + GC_mark_stack@Base 6 + GC_mark_stack_empty@Base 6 + GC_mark_stack_limit@Base 6 + GC_mark_stack_size@Base 6 + GC_mark_stack_too_small@Base 6 + GC_mark_stack_top@Base 6 + GC_mark_state@Base 6 + GC_mark_thread_local_free_lists@Base 6 + GC_max@Base 6 + GC_max_retries@Base 6 + GC_maybe_gc@Base 6 + GC_mem_found@Base 6 + GC_memalign@Base 6 + GC_min@Base 6 + GC_min_sp@Base 6 + GC_n_attempts@Base 6 + GC_n_heap_sects@Base 6 + GC_n_kinds@Base 6 + GC_n_leaked@Base 6 + GC_n_mark_procs@Base 6 + GC_n_rescuing_pages@Base 6 + GC_n_set_marks@Base 6 + GC_n_smashed@Base 6 + GC_need_full_gc@Base 6 + GC_never_stop_func@Base 6 + GC_new_free_list@Base 6 + GC_new_free_list_inner@Base 6 + GC_new_hblk@Base 6 + GC_new_kind@Base 6 + GC_new_kind_inner@Base 6 + GC_new_proc@Base 6 + GC_new_proc_inner@Base 6 + GC_new_thread@Base 6 + GC_next_exclusion@Base 6 + GC_next_used_block@Base 6 + GC_no_dls@Base 6 + GC_non_gc_bytes@Base 6 + GC_noop1@Base 6 + GC_noop@Base 6 + GC_normal_finalize_mark_proc@Base 6 + GC_notify_all_builder@Base 6 + GC_notify_full_gc@Base 6 + GC_notify_or_invoke_finalizers@Base 6 + GC_nprocs@Base 6 + GC_null_finalize_mark_proc@Base 6 + GC_number_stack_black_listed@Base 6 + GC_obj_kinds@Base 6 + GC_objects_are_marked@Base 6 + GC_objfreelist_ptr@Base 6 + GC_old_bus_handler@Base 6 + GC_old_normal_bl@Base 6 + GC_old_segv_handler@Base 6 + GC_old_stack_bl@Base 6 + GC_on_stack@Base 6 + GC_oom_fn@Base 6 + GC_page_size@Base 6 + GC_page_was_dirty@Base 6 + GC_page_was_ever_dirty@Base 6 + GC_parallel@Base 6 + GC_pause@Base 6 + GC_post_incr@Base 6 + GC_pre_incr@Base 6 + GC_prev_block@Base 6 + GC_print_address_map@Base 6 + GC_print_all_errors@Base 6 + GC_print_all_smashed@Base 6 + GC_print_all_smashed_proc@Base 6 + GC_print_back_height@Base 6 + GC_print_block_descr@Base 6 + GC_print_block_list@Base 6 + GC_print_finalization_stats@Base 6 + GC_print_hblkfreelist@Base 6 + GC_print_heap_obj@Base 6 + GC_print_heap_sects@Base 6 + GC_print_obj@Base 6 + GC_print_smashed_obj@Base 6 + GC_print_source_ptr@Base 6 + GC_print_static_roots@Base 6 + GC_print_stats@Base 6 + GC_print_type@Base 6 + GC_printf@Base 6 + GC_project2@Base 6 + GC_promote_black_lists@Base 6 + GC_protect_heap@Base 6 + GC_pthread_create@Base 6 + GC_pthread_detach@Base 6 + GC_pthread_join@Base 6 + GC_pthread_sigmask@Base 6 + GC_push_all@Base 6 + GC_push_all_eager@Base 6 + GC_push_all_stack@Base 6 + GC_push_all_stacks@Base 6 + GC_push_complex_descriptor@Base 6 + GC_push_conditional@Base 6 + GC_push_conditional_with_exclusions@Base 6 + GC_push_current_stack@Base 6 + GC_push_finalizer_structures@Base 6 + GC_push_gc_structures@Base 6 + GC_push_marked1@Base 6 + GC_push_marked2@Base 6 + GC_push_marked4@Base 6 + GC_push_marked@Base 6 + GC_push_next_marked@Base 6 + GC_push_next_marked_dirty@Base 6 + GC_push_next_marked_uncollectable@Base 6 + GC_push_one@Base 6 + GC_push_other_roots@Base 6 + GC_push_roots@Base 6 + GC_push_selected@Base 6 + GC_push_stubborn_structures@Base 6 + GC_push_thread_structures@Base 6 + GC_quiet@Base 6 + GC_read_dirty@Base 6 + GC_realloc@Base 6 + GC_reclaim1@Base 6 + GC_reclaim_all@Base 6 + GC_reclaim_block@Base 6 + GC_reclaim_check@Base 6 + GC_reclaim_clear2@Base 6 + GC_reclaim_clear4@Base 6 + GC_reclaim_clear@Base 6 + GC_reclaim_generic@Base 6 + GC_reclaim_small_nonempty_block@Base 6 + GC_reclaim_uninit2@Base 6 + GC_reclaim_uninit4@Base 6 + GC_reclaim_uninit@Base 6 + GC_register_data_segments@Base 6 + GC_register_describe_type_fn@Base 6 + GC_register_disappearing_link@Base 6 + GC_register_displacement@Base 6 + GC_register_displacement_inner@Base 6 + GC_register_dynamic_libraries@Base 6 + GC_register_dynamic_libraries_dl_iterate_phdr@Base 6 + GC_register_finalizer@Base 6 + GC_register_finalizer_ignore_self@Base 6 + GC_register_finalizer_inner@Base 6 + GC_register_finalizer_no_order@Base 6 + GC_register_finalizer_unreachable@Base 6 + GC_register_has_static_roots_callback@Base 6 + GC_register_main_static_data@Base 6 + GC_register_my_thread@Base 6 + GC_release_mark_lock@Base 6 + GC_remove_allowed_signals@Base 6 + GC_remove_counts@Base 6 + GC_remove_from_fl@Base 6 + GC_remove_header@Base 6 + GC_remove_protection@Base 6 + GC_remove_roots@Base 6 + GC_remove_roots_inner@Base 6 + GC_remove_specific@Base 6 + GC_remove_tmp_roots@Base 6 + GC_repeat_read@Base 6 + GC_reset_fault_handler@Base 6 + GC_restart_handler@Base 6 + GC_resume_thread@Base 6 + GC_retry_signals@Base 6 + GC_root_size@Base 6 + GC_roots_present@Base 6 + GC_same_obj@Base 6 + GC_same_obj_print_proc@Base 6 + GC_scratch_alloc@Base 6 + GC_set_and_save_fault_handler@Base 6 + GC_set_fl_marks@Base 6 + GC_set_free_space_divisor@Base 6 + GC_set_hdr_marks@Base 6 + GC_set_mark_bit@Base 6 + GC_set_max_heap_size@Base 6 + GC_set_warn_proc@Base 6 + GC_setpagesize@Base 6 + GC_setspecific@Base 6 + GC_setup_temporary_fault_handler@Base 6 + GC_should_collect@Base 6 + GC_should_invoke_finalizers@Base 6 + GC_signal_mark_stack_overflow@Base 6 + GC_size@Base 6 + GC_sleep@Base 6 + GC_slow_getspecific@Base 6 + GC_smashed@Base 6 + GC_spin_count@Base 6 + GC_split_block@Base 6 + GC_stack_last_cleared@Base 6 + GC_stackbottom@Base 6 + GC_start_blocking@Base 6 + GC_start_call_back@Base 6 + GC_start_debugging@Base 6 + GC_start_reclaim@Base 6 + GC_start_routine@Base 6 + GC_start_time@Base 6 + GC_start_world@Base 6 + GC_stderr@Base 6 + GC_stdout@Base 6 + GC_stop_count@Base 6 + GC_stop_init@Base 6 + GC_stop_world@Base 6 + GC_stopped_mark@Base 6 + GC_stopping_pid@Base 6 + GC_stopping_thread@Base 6 + GC_store_debug_info@Base 6 + GC_suspend_ack_sem@Base 6 + GC_suspend_all@Base 6 + GC_suspend_handler@Base 6 + GC_suspend_handler_inner@Base 6 + GC_suspend_thread@Base 6 + GC_thr_init@Base 6 + GC_thr_initialized@Base 6 + GC_thread_exit_proc@Base 6 + GC_thread_key@Base 6 + GC_threads@Base 6 + GC_time_limit@Base 6 + GC_timeout_stop_func@Base 6 + GC_total_stack_black_listed@Base 6 + GC_try_to_collect@Base 6 + GC_try_to_collect_inner@Base 6 + GC_typed_mark_proc@Base 6 + GC_typed_mark_proc_index@Base 6 + GC_unix_get_mem@Base 6 + GC_unlocked_count@Base 6 + GC_unpromote_black_lists@Base 6 + GC_unprotect_range@Base 6 + GC_unreachable_finalize_mark_proc@Base 6 + GC_unregister_disappearing_link@Base 6 + GC_unregister_my_thread@Base 6 + GC_uobjfreelist_ptr@Base 6 + GC_use_entire_heap@Base 6 + GC_used_heap_size_after_full@Base 6 + GC_version@Base 6 + GC_wait_builder@Base 6 + GC_wait_for_gc_completion@Base 6 + GC_wait_for_reclaim@Base 6 + GC_with_callee_saves_pushed@Base 6 + GC_words_allocd_at_reset@Base 6 + GC_world_is_stopped@Base 6 + GC_world_stopped@Base 6 + GC_write@Base 6 + GC_write_fault_handler@Base 6 diff --git a/libquadmath.symbols b/libquadmath.symbols new file mode 100644 index 0000000..cd8ce65 --- /dev/null +++ b/libquadmath.symbols @@ -0,0 +1,4 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 + (symver)QUADMATH_1.2 9 diff --git a/libstdc++-BV-doc.doc-base b/libstdc++-BV-doc.doc-base new file mode 100644 index 0000000..c5fd048 --- /dev/null +++ b/libstdc++-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++-@BV@-doc +Title: The GNU Standard C++ Library v3 (gcc-@BV@) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Programming/C++ + +Format: html +Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html +Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* diff --git a/libstdc++-BV-doc.overrides b/libstdc++-BV-doc.overrides new file mode 100644 index 0000000..9685ae8 --- /dev/null +++ b/libstdc++-BV-doc.overrides @@ -0,0 +1,8 @@ +libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry + +# 3xx used by intent to avoid conficts +libstdc++-@BV@-doc binary: manpage-section-mismatch + +# some very long identifiers +# doxygen accepts formulas in man pages ... +libstdc++-@BV@-doc binary: groff-message diff --git a/libstdc++.symbols b/libstdc++.symbols new file mode 100644 index 0000000..e74a9d9 --- /dev/null +++ b/libstdc++.symbols @@ -0,0 +1,67 @@ +libstdc++.so.6 #PACKAGE# #MINVER# + (symver)CXXABI_1.3 4.1.1 + (symver)CXXABI_1.3.1 4.1.1 + (symver)CXXABI_1.3.2 4.3 + (symver)CXXABI_1.3.3 4.3 + (symver)CXXABI_1.3.4 4.3 + (symver)CXXABI_1.3.5 4.3 + (symver)CXXABI_1.3.6 4.3 + (symver)CXXABI_1.3.7 4.3 + (symver)CXXABI_1.3.8 4.3 + (symver)CXXABI_1.3.9 5 + (symver)CXXABI_1.3.10 6 + (symver)CXXABI_1.3.11 10.2 + (symver)CXXABI_1.3.12 9 + (symver)CXXABI_1.3.13 11 + (symver)CXXABI_1.3.14 13 + (symver)CXXABI_1.3.15 14 + (symver|arch=riscv64)CXXABI_1.3.16 15 + (symver|arch=armel armhf)CXXABI_ARM_1.3.3 4.4 + (symver|arch=amd64 i386 loong64 x32 hurd-amd64 hurd-i386)CXXABI_FLOAT128 5 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)CXXABI_LDBL_1.3 4.2.1 + (symver|arch=ppc64el)CXXABI_IEEE128_1.3.13 11 + (symver)CXXABI_TM_1 4.7 + (symver)GLIBCXX_3.4 4.1.1 + (symver)GLIBCXX_3.4.1 4.1.1 + (symver)GLIBCXX_3.4.2 4.1.1 + (symver)GLIBCXX_3.4.3 4.1.1 + (symver)GLIBCXX_3.4.4 4.1.1 + (symver)GLIBCXX_3.4.5 4.1.1 + (symver)GLIBCXX_3.4.6 4.1.1 + (symver)GLIBCXX_3.4.7 4.1.1 + (symver)GLIBCXX_3.4.8 4.1.1 + (symver)GLIBCXX_3.4.9 4.2.1 + (symver)GLIBCXX_3.4.10 4.3 + (symver)GLIBCXX_3.4.11 4.4 + (symver)GLIBCXX_3.4.12 4.4 + (symver)GLIBCXX_3.4.13 4.4.2 + (symver)GLIBCXX_3.4.14 4.5 + (symver)GLIBCXX_3.4.15 4.6 + (symver)GLIBCXX_3.4.16 4.6 + (symver)GLIBCXX_3.4.17 4.7 + (symver)GLIBCXX_3.4.18 4.8 + (symver)GLIBCXX_3.4.19 4.8 + (symver)GLIBCXX_3.4.20 4.9 + (symver)GLIBCXX_3.4.21 5.2 + (symver)GLIBCXX_3.4.22 6 + (symver)GLIBCXX_3.4.23 10.2 + (symver)GLIBCXX_3.4.24 7 + (symver)GLIBCXX_3.4.25 8 + (symver)GLIBCXX_3.4.26 9 + (symver)GLIBCXX_3.4.27 9.1 + (symver)GLIBCXX_3.4.28 10.2 + (symver)GLIBCXX_3.4.29 11 + (symver)GLIBCXX_3.4.30 12 + (symver)GLIBCXX_3.4.31 13 + (symver)GLIBCXX_3.4.32 13.1 + (symver)GLIBCXX_3.4.33 14 + (symver)GLIBCXX_3.4.34 15 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4 4.2.1 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.7 4.2.1 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.10 4.3 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.21 5 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.29 11 + (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.31 13 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.29 11 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.30 12 + (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.31 13 diff --git a/libstdc++CXX.prerm b/libstdc++CXX.prerm new file mode 100644 index 0000000..d4a6b38 --- /dev/null +++ b/libstdc++CXX.prerm @@ -0,0 +1,13 @@ +#! /bin/sh + +set -e + +case "$1" in + remove|upgrade) + files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') + rm -f $files + dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) + find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir +esac + +#DEBHELPER# diff --git a/libtsan2.symbols b/libtsan2.symbols new file mode 100644 index 0000000..a5bf6ac --- /dev/null +++ b/libtsan2.symbols @@ -0,0 +1,3298 @@ +# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 +libtsan.so.2 libtsan2 #MINVER# + AnnotateBenignRace@Base 4.9 + AnnotateBenignRaceSized@Base 4.9 + AnnotateCondVarSignal@Base 4.9 + AnnotateCondVarSignalAll@Base 4.9 + AnnotateCondVarWait@Base 4.9 + AnnotateEnableRaceDetection@Base 4.9 + AnnotateExpectRace@Base 4.9 + AnnotateFlushExpectedRaces@Base 4.9 + AnnotateFlushState@Base 4.9 + AnnotateHappensAfter@Base 4.9 + AnnotateHappensBefore@Base 4.9 + AnnotateIgnoreReadsBegin@Base 4.9 + AnnotateIgnoreReadsEnd@Base 4.9 + AnnotateIgnoreSyncBegin@Base 4.9 + AnnotateIgnoreSyncEnd@Base 4.9 + AnnotateIgnoreWritesBegin@Base 4.9 + AnnotateIgnoreWritesEnd@Base 4.9 + AnnotateMemoryIsInitialized@Base 4.9 + AnnotateMemoryIsUninitialized@Base 5 + AnnotateMutexIsNotPHB@Base 4.9 + AnnotateMutexIsUsedAsCondVar@Base 4.9 + AnnotateNewMemory@Base 4.9 + AnnotateNoOp@Base 4.9 + AnnotatePCQCreate@Base 4.9 + AnnotatePCQDestroy@Base 4.9 + AnnotatePCQGet@Base 4.9 + AnnotatePCQPut@Base 4.9 + AnnotatePublishMemoryRange@Base 4.9 + AnnotateRWLockAcquired@Base 4.9 + AnnotateRWLockCreate@Base 4.9 + AnnotateRWLockCreateStatic@Base 4.9 + AnnotateRWLockDestroy@Base 4.9 + AnnotateRWLockReleased@Base 4.9 + AnnotateThreadName@Base 4.9 + AnnotateTraceMemory@Base 4.9 + AnnotateUnpublishMemoryRange@Base 4.9 + RunningOnValgrind@Base 4.9 + ThreadSanitizerQuery@Base 4.9 + ValgrindSlowdown@Base 4.9 + WTFAnnotateBenignRaceSized@Base 4.9 + WTFAnnotateHappensAfter@Base 4.9 + WTFAnnotateHappensBefore@Base 4.9 + _ZN6__tsan10OnFinalizeEb@Base 4.9 + _ZN6__tsan12OnInitializeEv@Base 5 + _ZN6__tsan30OnPotentiallyBlockingRegionEndEv@Base 10 + _ZN6__tsan32OnPotentiallyBlockingRegionBeginEv@Base 10 + _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 9 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdaPvm@Base 9 + _ZdaPvmSt11align_val_t@Base 9 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 9 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdlPvm@Base 9 + _ZdlPvmSt11align_val_t@Base 9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 9 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 9 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 9 + (arch=!ppc64 !ppc64el)___interceptor___b64_ntop@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___b64_pton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___bzero@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___close@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___cxa_atexit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fxstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___fxstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___getdelim@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc23_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_fprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_printf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_snprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_sprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___lxstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___lxstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___overflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___res_iclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___snprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___sprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___strndup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___tls_get_addr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___uflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___underflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___vsnprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___vsprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___woverflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wuflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___wunderflow@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xpg_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor___xstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_begin@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_begin_1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor__obstack_newchunk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_abort@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_accept4@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_accept@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_argp_parse@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asctime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asctime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_asprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_atexit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_backtrace@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_backtrace_symbols@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bind@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bsearch@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_bzero@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_canonicalize_file_name@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_capget@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_capset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_cfree@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_getres@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_gettime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clock_settime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_clone@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_close@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_closedir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_confstr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_connect@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_creat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_creat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctermid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ctime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dl_iterate_phdr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dlclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dlopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dn_comp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dn_expand@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_drand48_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup3@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_dup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_endgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_endpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_create1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_ctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_epoll_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_aton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_aton_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_hostton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_line@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ether_ntohost@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd_read@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_eventfd_write@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fdopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fflush@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetgrent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetpwent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgets@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fgetxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_flistxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fmemopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopen64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fopencookie@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fork@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fputs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fread@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_freopen64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_freopen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexpf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_frexpl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatvfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fstatvfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ftime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_fwrite@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_get_current_dir_name@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getaddrinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getcwd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getdelim@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getentropy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrgid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrgid_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgrouplist@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getgroups@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostbyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gethostent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getifaddrs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getitimer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getloadavg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getmntent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getmntent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnameinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetbyaddr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetbyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getnetent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpass@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpeername@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotoent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getprotoent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwent_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwuid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getpwuid_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getrandom@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getresgid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getresuid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getsockname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getsockopt@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gettimeofday@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getusershell@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getutxline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_getxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_glob64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_glob@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gmtime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_gmtime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_iconv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_if_indextoname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_if_nametoindex@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_aton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_ntop@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inet_pton@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_initgroups@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inotify_init1@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_inotify_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ioctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_kill@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgamma@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgamma_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammaf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammaf_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgammal_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lgetxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_listen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_listxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_llistxattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_localtime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_localtime_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_longjmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lrand48_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lstat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_lstat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbsnrtowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbsrtowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mbstowcs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memcpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memmem@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memmove@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memrchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_memset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mincore@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mktime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mlockall@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mmap64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mmap@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modff@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_modfl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_mprotect@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_msgrcv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_msgsnd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munlockall@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_munmap@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_name_to_handle_at@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_nanosleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_on_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_by_handle_at@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_memstream@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_open_wmemstream@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_opendir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pause@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pclose@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pipe2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pipe@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_poll@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_popen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_spawn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_posix_spawnp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ppoll@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_prctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pread64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pread@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_preadv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_printf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_process_vm_readv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_process_vm_writev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getdetachstate@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getguardsize@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getinheritsched@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedpolicy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getscope@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstack@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstacksize@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_barrierattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_broadcast@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_clockwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_timedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getclock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getname_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_kill@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_clocklock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_lock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_timedlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_trylock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprioceiling@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprotocol@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_gettype@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_once@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_rdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedrdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedwrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_tryrdlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_trywrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_wrlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getkind_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setcancelstate@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setcanceltype@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_setname_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_sigmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_lock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_trylock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_unlock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptrace@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptsname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ptsname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_puts@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pututxline@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwrite64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwrite@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev2@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_pwritev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_qsort@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_qsort_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_raise@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_rand_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_random_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_read@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir64_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readdir_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readlinkat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_readv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_realpath@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recv@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvfrom@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvmmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_recvmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regcomp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regexec@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_regfree@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquof@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_remquol@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_rmdir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scandir64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scandir@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_scanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sched_getaffinity@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sched_getparam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_getvalue@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_init@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_open@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_post@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_timedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_trywait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_unlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sem_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_send@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendmmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendmsg@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sendto@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setbuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setbuffer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setgrent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setitimer@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setlinebuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setlocale@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setpwent@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_setvbuf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_shmctl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigaltstack@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigandset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigblock@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigemptyset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigfillset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_siglongjmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_signalfd@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigorset@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigpending@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigprocmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigsetmask@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigsuspend@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigtimedwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigwait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sigwaitinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincos@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincosf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sincosl@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_snprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_socket@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_socketpair@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_stat64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_stat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statvfs64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_statvfs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcasecmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcasestr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strchrnul@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strcspn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strdup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncasecmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncmp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strncpy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strndup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strnlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strpbrk@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strptime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strrchr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strspn@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strstr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtok@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strxfrm@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_sysinfo@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tcgetattr@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tempnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_textdomain@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_time@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_timerfd_gettime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_timerfd_settime@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_times@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpfile64@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpfile@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpnam@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tmpnam_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_tsearch@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ttyname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_ttyname_r@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_uname@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_unlink@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_usleep@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vasprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfork@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait3@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait4@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wait@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_waitid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_waitpid@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcrtomb@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcscat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsdup@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcslen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsncat@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsnlen@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsnrtombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsrtombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcstombs@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wctomb@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_wordexp@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_write@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_writev@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_bool@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_bytes@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_char@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_destroy@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_double@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_enum@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_float@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_hyper@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int16_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int32_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int64_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int8_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_int@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_long@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_quad_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_short@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_string@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_char@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_hyper@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_int@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_long@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_quad_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_u_short@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint16_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint32_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint64_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdr_uint8_t@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrmem_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrrec_create@Base 15 + (arch=!ppc64 !ppc64el)___interceptor_xdrstdio_create@Base 15 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __b64_ntop@Base 13 + __b64_pton@Base 13 + __bzero@Base 10 + __close@Base 4.9 + __cxa_atexit@Base 4.9 + __cxa_guard_abort@Base 4.9 + __cxa_guard_acquire@Base 4.9 + __cxa_guard_release@Base 4.9 + __fprintf_chk@Base 9 + __fxstat64@Base 4.9 + __fxstat@Base 4.9 + __getdelim@Base 5 + __interceptor___b64_ntop@Base 13 + __interceptor___b64_pton@Base 13 + __interceptor___bzero@Base 10 + __interceptor___close@Base 4.9 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___fprintf_chk@Base 9 + __interceptor___fxstat64@Base 4.9 + __interceptor___fxstat@Base 4.9 + __interceptor___getdelim@Base 5 + __interceptor___isoc23_fscanf@Base 14 + __interceptor___isoc23_scanf@Base 14 + __interceptor___isoc23_sscanf@Base 14 + __interceptor___isoc23_strtoimax@Base 14 + __interceptor___isoc23_strtoumax@Base 14 + __interceptor___isoc23_vfscanf@Base 14 + __interceptor___isoc23_vscanf@Base 14 + __interceptor___isoc23_vsscanf@Base 14 + __interceptor___isoc99_fprintf@Base 5 + __interceptor___isoc99_fscanf@Base 4.9 + __interceptor___isoc99_printf@Base 5 + __interceptor___isoc99_scanf@Base 4.9 + __interceptor___isoc99_snprintf@Base 5 + __interceptor___isoc99_sprintf@Base 5 + __interceptor___isoc99_sscanf@Base 4.9 + __interceptor___isoc99_vfprintf@Base 5 + __interceptor___isoc99_vfscanf@Base 4.9 + __interceptor___isoc99_vprintf@Base 5 + __interceptor___isoc99_vscanf@Base 4.9 + __interceptor___isoc99_vsnprintf@Base 5 + __interceptor___isoc99_vsprintf@Base 5 + __interceptor___isoc99_vsscanf@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor___lxstat64@Base 4.9 + __interceptor___lxstat@Base 4.9 + __interceptor___overflow@Base 5 + __interceptor___res_iclose@Base 4.9 + __interceptor___snprintf_chk@Base 9 + __interceptor___sprintf_chk@Base 9 + __interceptor___strndup@Base 8 + __interceptor___strxfrm_l@Base 9 + __interceptor___tls_get_addr@Base 6 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __interceptor___vsnprintf_chk@Base 9 + __interceptor___vsprintf_chk@Base 9 + __interceptor___wcsxfrm_l@Base 9 + __interceptor___woverflow@Base 5 + __interceptor___wuflow@Base 5 + __interceptor___wunderflow@Base 5 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor___xstat64@Base 4.9 + __interceptor___xstat@Base 4.9 + __interceptor__exit@Base 4.9 + __interceptor__obstack_begin@Base 5 + __interceptor__obstack_begin_1@Base 5 + __interceptor__obstack_newchunk@Base 5 + __interceptor_abort@Base 4.9 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_aligned_alloc@Base 5 + __interceptor_argp_parse@Base 14 + __interceptor_asctime@Base 4.9 + __interceptor_asctime_r@Base 4.9 + __interceptor_asprintf@Base 5 + __interceptor_atexit@Base 4.9 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_bcmp@Base 10 + __interceptor_bind@Base 4.9 + __interceptor_bsearch@Base 13 + __interceptor_bzero@Base 10 + __interceptor_calloc@Base 4.9 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_capget@Base 5 + __interceptor_capset@Base 5 + __interceptor_cfree@Base 4.9 + __interceptor_clock_getcpuclockid@Base 11 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_clone@Base 13 + __interceptor_close@Base 4.9 + __interceptor_closedir@Base 6 + __interceptor_confstr@Base 4.9 + __interceptor_connect@Base 4.9 + __interceptor_creat64@Base 4.9 + __interceptor_creat@Base 4.9 + __interceptor_ctermid@Base 7 + __interceptor_ctime@Base 4.9 + __interceptor_ctime_r@Base 4.9 + __interceptor_dl_iterate_phdr@Base 6 + __interceptor_dlclose@Base 4.9 + __interceptor_dlopen@Base 4.9 + __interceptor_dn_comp@Base 13 + __interceptor_dn_expand@Base 13 + __interceptor_drand48_r@Base 4.9 + __interceptor_dup2@Base 4.9 + __interceptor_dup3@Base 4.9 + __interceptor_dup@Base 4.9 + __interceptor_endgrent@Base 5 + __interceptor_endpwent@Base 5 + __interceptor_epoll_create1@Base 4.9 + __interceptor_epoll_create@Base 4.9 + __interceptor_epoll_ctl@Base 4.9 + __interceptor_epoll_pwait2@Base 14 + __interceptor_epoll_pwait@Base 7 + __interceptor_epoll_wait@Base 4.9 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_eventfd@Base 4.9 + __interceptor_eventfd_read@Base 7 + __interceptor_eventfd_write@Base 7 + __interceptor_fclose@Base 4.9 + __interceptor_fdopen@Base 5 + __interceptor_fflush@Base 4.9 + __interceptor_fgetgrent@Base 10 + __interceptor_fgetgrent_r@Base 10 + __interceptor_fgetpwent@Base 10 + __interceptor_fgetpwent_r@Base 10 + __interceptor_fgets@Base 9 + __interceptor_fgetxattr@Base 5 + __interceptor_flistxattr@Base 5 + __interceptor_fmemopen@Base 5 + __interceptor_fopen64@Base 5 + __interceptor_fopen@Base 4.9 + __interceptor_fopencookie@Base 6 + __interceptor_fork@Base 4.9 + __interceptor_fprintf@Base 5 + __interceptor_fputs@Base 9 + __interceptor_fread@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_freopen64@Base 5 + __interceptor_freopen@Base 4.9 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.9 + __interceptor_fstat64@Base 4.9 + __interceptor_fstat@Base 4.9 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_ftime@Base 5 + __interceptor_fwrite@Base 4.9 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getentropy@Base 14 + __interceptor_getgrent@Base 10 + __interceptor_getgrent_r@Base 10 + __interceptor_getgrgid@Base 10 + __interceptor_getgrgid_r@Base 10 + __interceptor_getgrnam@Base 10 + __interceptor_getgrnam_r@Base 10 + __interceptor_getgrouplist@Base 13 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getifaddrs@Base 5 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getloadavg@Base 8 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getnameinfo@Base 5 + __interceptor_getnetbyaddr@Base 13 + __interceptor_getnetbyname@Base 13 + __interceptor_getnetent@Base 13 + __interceptor_getpass@Base 5 + __interceptor_getpeername@Base 4.9 + __interceptor_getprotobyname@Base 11 + __interceptor_getprotobyname_r@Base 11 + __interceptor_getprotobynumber@Base 11 + __interceptor_getprotobynumber_r@Base 11 + __interceptor_getprotoent@Base 11 + __interceptor_getprotoent_r@Base 11 + __interceptor_getpwent@Base 10 + __interceptor_getpwent_r@Base 10 + __interceptor_getpwnam@Base 10 + __interceptor_getpwnam_r@Base 10 + __interceptor_getpwuid@Base 10 + __interceptor_getpwuid_r@Base 10 + __interceptor_getrandom@Base 10 + __interceptor_getresgid@Base 5 + __interceptor_getresuid@Base 5 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_gettimeofday@Base 4.9 + __interceptor_getusershell@Base 10 + __interceptor_getutent@Base 8 + __interceptor_getutid@Base 8 + __interceptor_getutline@Base 8 + __interceptor_getutxent@Base 8 + __interceptor_getutxid@Base 8 + __interceptor_getutxline@Base 8 + __interceptor_getxattr@Base 5 + __interceptor_glob64@Base 5 + __interceptor_glob@Base 5 + __interceptor_gmtime@Base 4.9 + __interceptor_gmtime_r@Base 4.9 + __interceptor_iconv@Base 4.9 + __interceptor_if_indextoname@Base 5 + __interceptor_if_nametoindex@Base 5 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_inotify_init1@Base 4.9 + __interceptor_inotify_init@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_kill@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_lgetxattr@Base 5 + __interceptor_listen@Base 4.9 + __interceptor_listxattr@Base 5 + __interceptor_llistxattr@Base 5 + __interceptor_localtime@Base 4.9 + __interceptor_localtime_r@Base 4.9 + __interceptor_longjmp@Base 4.9 + __interceptor_lrand48_r@Base 4.9 + __interceptor_lstat64@Base 13 + __interceptor_lstat@Base 13 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_memchr@Base 4.9 + __interceptor_memcmp@Base 4.9 + __interceptor_memcpy@Base 4.9 + __interceptor_memmem@Base 7 + __interceptor_memmove@Base 4.9 + __interceptor_memrchr@Base 4.9 + __interceptor_memset@Base 4.9 + __interceptor_mincore@Base 6 + __interceptor_mktime@Base 5 + __interceptor_mlock@Base 4.9 + __interceptor_mlockall@Base 4.9 + __interceptor_mmap64@Base 4.9 + __interceptor_mmap@Base 4.9 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_mprotect@Base 9 + __interceptor_msgrcv@Base 11 + __interceptor_msgsnd@Base 11 + __interceptor_munlock@Base 4.9 + __interceptor_munlockall@Base 4.9 + __interceptor_munmap@Base 4.9 + __interceptor_name_to_handle_at@Base 9 + __interceptor_nanosleep@Base 4.9 + __interceptor_on_exit@Base 4.9 + __interceptor_open64@Base 4.9 + __interceptor_open@Base 4.9 + __interceptor_open_by_handle_at@Base 9 + __interceptor_open_memstream@Base 5 + __interceptor_open_wmemstream@Base 5 + __interceptor_opendir@Base 4.9 + __interceptor_pause@Base 8 + __interceptor_pclose@Base 10 + __interceptor_pipe2@Base 4.9 + __interceptor_pipe@Base 4.9 + __interceptor_poll@Base 4.9 + __interceptor_popen@Base 10 + __interceptor_posix_memalign@Base 4.9 + __interceptor_posix_spawn@Base 13 + __interceptor_posix_spawnp@Base 13 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.9 + __interceptor_pread64@Base 4.9 + __interceptor_pread@Base 4.9 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_printf@Base 5 + __interceptor_process_vm_readv@Base 6 + __interceptor_process_vm_writev@Base 6 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_barrier_destroy@Base 4.9 + __interceptor_pthread_barrier_init@Base 4.9 + __interceptor_pthread_barrier_wait@Base 4.9 + __interceptor_pthread_barrierattr_getpshared@Base 5 + __interceptor_pthread_cond_broadcast@Base 4.9 + __interceptor_pthread_cond_clockwait@Base 13 + __interceptor_pthread_cond_destroy@Base 4.9 + __interceptor_pthread_cond_init@Base 4.9 + __interceptor_pthread_cond_signal@Base 4.9 + __interceptor_pthread_cond_timedwait@Base 4.9 + __interceptor_pthread_cond_wait@Base 4.9 + __interceptor_pthread_condattr_getclock@Base 5 + __interceptor_pthread_condattr_getpshared@Base 5 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 4.9 + __interceptor_pthread_exit@Base 10 + __interceptor_pthread_getaffinity_np@Base 13 + __interceptor_pthread_getcpuclockid@Base 13 + __interceptor_pthread_getname_np@Base 9 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_kill@Base 4.9 + __interceptor_pthread_mutex_clocklock@Base 15 + __interceptor_pthread_mutex_destroy@Base 4.9 + __interceptor_pthread_mutex_init@Base 4.9 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_timedlock@Base 4.9 + __interceptor_pthread_mutex_trylock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_mutexattr_getprioceiling@Base 5 + __interceptor_pthread_mutexattr_getprotocol@Base 5 + __interceptor_pthread_mutexattr_getpshared@Base 5 + __interceptor_pthread_mutexattr_getrobust@Base 5 + __interceptor_pthread_mutexattr_getrobust_np@Base 5 + __interceptor_pthread_mutexattr_gettype@Base 5 + __interceptor_pthread_once@Base 4.9 + __interceptor_pthread_rwlock_destroy@Base 4.9 + __interceptor_pthread_rwlock_init@Base 4.9 + __interceptor_pthread_rwlock_rdlock@Base 4.9 + __interceptor_pthread_rwlock_timedrdlock@Base 4.9 + __interceptor_pthread_rwlock_timedwrlock@Base 4.9 + __interceptor_pthread_rwlock_tryrdlock@Base 4.9 + __interceptor_pthread_rwlock_trywrlock@Base 4.9 + __interceptor_pthread_rwlock_unlock@Base 4.9 + __interceptor_pthread_rwlock_wrlock@Base 4.9 + __interceptor_pthread_rwlockattr_getkind_np@Base 5 + __interceptor_pthread_rwlockattr_getpshared@Base 5 + __interceptor_pthread_setcancelstate@Base 6 + __interceptor_pthread_setcanceltype@Base 6 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pthread_sigmask@Base 7 + __interceptor_pthread_spin_destroy@Base 4.9 + __interceptor_pthread_spin_init@Base 4.9 + __interceptor_pthread_spin_lock@Base 4.9 + __interceptor_pthread_spin_trylock@Base 4.9 + __interceptor_pthread_spin_unlock@Base 4.9 + __interceptor_pthread_timedjoin_np@Base 10 + __interceptor_pthread_tryjoin_np@Base 10 + __interceptor_ptrace@Base 4.9 + __interceptor_ptsname@Base 11 + __interceptor_ptsname_r@Base 11 + __interceptor_puts@Base 4.9 + __interceptor_pututxline@Base 10 + __interceptor_pvalloc@Base 4.9 + __interceptor_pwrite64@Base 4.9 + __interceptor_pwrite@Base 4.9 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_qsort@Base 11 + __interceptor_qsort_r@Base 11 + __interceptor_raise@Base 4.9 + __interceptor_rand_r@Base 5 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.9 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readlink@Base 9 + __interceptor_readlinkat@Base 9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_reallocarray@Base 10 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 4.9 + __interceptor_recvfrom@Base 7 + __interceptor_recvmmsg@Base 9 + __interceptor_recvmsg@Base 4.9 + __interceptor_regcomp@Base 10 + __interceptor_regerror@Base 10 + __interceptor_regexec@Base 10 + __interceptor_regfree@Base 10 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_rmdir@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.9 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_sched_getparam@Base 6 + __interceptor_sem_destroy@Base 4.9 + __interceptor_sem_getvalue@Base 4.9 + __interceptor_sem_init@Base 4.9 + __interceptor_sem_open@Base 13 + __interceptor_sem_post@Base 4.9 + __interceptor_sem_timedwait@Base 4.9 + __interceptor_sem_trywait@Base 4.9 + __interceptor_sem_unlink@Base 13 + __interceptor_sem_wait@Base 4.9 + __interceptor_send@Base 4.9 + __interceptor_sendmmsg@Base 9 + __interceptor_sendmsg@Base 4.9 + __interceptor_sendto@Base 7 + __interceptor_setbuf@Base 10 + __interceptor_setbuffer@Base 10 + __interceptor_setgrent@Base 5 + __interceptor_setitimer@Base 4.9 + __interceptor_setlinebuf@Base 10 + __interceptor_setlocale@Base 4.9 + __interceptor_setpwent@Base 5 + __interceptor_setvbuf@Base 10 + __interceptor_shmctl@Base 4.9 + __interceptor_sigaction@Base 4.9 + __interceptor_sigaltstack@Base 11 + __interceptor_sigandset@Base 11 + __interceptor_sigblock@Base 7 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.9 + __interceptor_signal@Base 4.9 + __interceptor_signalfd@Base 4.9 + __interceptor_sigorset@Base 11 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigsetmask@Base 7 + __interceptor_sigsuspend@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_sleep@Base 4.9 + __interceptor_snprintf@Base 5 + __interceptor_socket@Base 4.9 + __interceptor_socketpair@Base 4.9 + __interceptor_sprintf@Base 5 + __interceptor_sscanf@Base 4.9 + __interceptor_stat64@Base 13 + __interceptor_stat@Base 13 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.9 + __interceptor_strcasestr@Base 6 + __interceptor_strchr@Base 4.9 + __interceptor_strchrnul@Base 4.9 + __interceptor_strcmp@Base 4.9 + __interceptor_strcpy@Base 4.9 + __interceptor_strcspn@Base 6 + __interceptor_strdup@Base 4.9 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.9 + __interceptor_strncasecmp@Base 4.9 + __interceptor_strncmp@Base 4.9 + __interceptor_strncpy@Base 4.9 + __interceptor_strndup@Base 8 + __interceptor_strnlen@Base 7 + __interceptor_strpbrk@Base 6 + __interceptor_strptime@Base 4.9 + __interceptor_strrchr@Base 4.9 + __interceptor_strspn@Base 6 + __interceptor_strstr@Base 4.9 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtok@Base 8 + __interceptor_strtoumax@Base 4.9 + __interceptor_strxfrm@Base 9 + __interceptor_strxfrm_l@Base 9 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_timerfd_gettime@Base 5 + __interceptor_timerfd_settime@Base 5 + __interceptor_times@Base 4.9 + __interceptor_tmpfile64@Base 5 + __interceptor_tmpfile@Base 5 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_ntop@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_pton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___bzero@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___close@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___cxa_atexit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___getdelim@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_printf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_snprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___overflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___res_iclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___snprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___sprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___strndup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___tls_get_addr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___uflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___underflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsnprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsprintf_chk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___woverflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wuflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___wunderflow@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xpg_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin_1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_newchunk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_abort@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept4@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_argp_parse@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_asprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_atexit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace_symbols@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bind@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bsearch@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_bzero@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_canonicalize_file_name@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_capget@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_capset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_cfree@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getres@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_gettime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_settime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_clone@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_close@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_closedir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_confstr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_connect@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctermid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dl_iterate_phdr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_comp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_expand@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_drand48_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup3@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_endgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_endpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_ctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_hostton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_line@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntohost@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_read@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_write@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fdopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fflush@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgets@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_flistxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fmemopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopencookie@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fork@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fputs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fread@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ftime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_fwrite@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_get_current_dir_name@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getaddrinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getcwd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getdelim@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getentropy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrouplist@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgroups@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getifaddrs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getitimer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getloadavg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnameinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyaddr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpass@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpeername@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getrandom@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresgid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresuid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockopt@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gettimeofday@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getusershell@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_getxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_iconv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_indextoname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_nametoindex@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_aton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_ntop@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_pton@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_initgroups@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init1@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ioctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_kill@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgetxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_listen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_listxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_llistxattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_longjmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lrand48_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsnrtowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsrtowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbstowcs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmem@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmove@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memrchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_memset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mincore@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mktime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlockall@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modff@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_modfl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprotect@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgrcv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgsnd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlockall@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_munmap@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_name_to_handle_at@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_nanosleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_on_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_by_handle_at@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_memstream@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_wmemstream@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_opendir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pause@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pclose@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_poll@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_popen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawnp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ppoll@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_prctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_printf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_readv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_writev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getscope@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstack@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_broadcast@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_clockwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_timedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getclock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getaffinity_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getcpuclockid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getname_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getschedparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_kill@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_clocklock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_lock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_timedlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_trylock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_once@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_rdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedrdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedwrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_tryrdlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_trywrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_wrlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcancelstate@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcanceltype@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setname_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_sigmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_lock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_trylock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_unlock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptrace@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_puts@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pututxline@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev2@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_raise@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_rand_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_random_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_read@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlinkat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_readv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_realpath@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recv@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvfrom@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regcomp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regexec@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_regfree@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquof@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquol@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_rmdir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_scanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getaffinity@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getparam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_getvalue@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_init@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_open@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_post@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_timedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_trywait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_unlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_send@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmsg@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendto@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuffer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setgrent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setitimer@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlinebuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlocale@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setpwent@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_setvbuf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_shmctl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaltstack@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigandset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigblock@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigemptyset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigfillset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_siglongjmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_signalfd@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigorset@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigpending@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigprocmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsetmask@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsuspend@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigtimedwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwaitinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincos@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosl@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_snprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_socket@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_socketpair@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasecmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasestr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchrnul@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcspn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strdup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncasecmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncmp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncpy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strndup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strnlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strpbrk@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strptime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strrchr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strspn@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strstr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoimax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtok@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoumax@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_sysinfo@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tcgetattr@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tempnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_textdomain@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_time@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_gettime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_settime@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_times@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile64@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_tsearch@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname_r@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_uname@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_unlink@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_usleep@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vasprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfork@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsnprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsprintf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsscanf@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait3@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait4@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitpid@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcrtomb@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcscat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsdup@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcslen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsncat@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnlen@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnrtombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsrtombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcstombs@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm_l@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wctomb@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_wordexp@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_write@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_writev@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bool@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bytes@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_char@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_destroy@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_double@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_enum@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_float@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_hyper@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int16_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int32_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int64_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int8_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_long@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_quad_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_short@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_string@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_char@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_hyper@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_int@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_long@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_longlong_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_quad_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_short@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint16_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint32_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint64_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint8_t@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrmem_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrrec_create@Base 15 + (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 5 + __interceptor_ttyname@Base 10 + __interceptor_ttyname_r@Base 7 + __interceptor_uname@Base 11 + __interceptor_unlink@Base 4.9 + __interceptor_usleep@Base 4.9 + __interceptor_valloc@Base 4.9 + __interceptor_vasprintf@Base 5 + __interceptor_vfork@Base 5 + __interceptor_vfprintf@Base 5 + __interceptor_vfscanf@Base 4.9 + __interceptor_vprintf@Base 5 + __interceptor_vscanf@Base 4.9 + __interceptor_vsnprintf@Base 5 + __interceptor_vsprintf@Base 5 + __interceptor_vsscanf@Base 4.9 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcrtomb@Base 6 + __interceptor_wcscat@Base 8 + __interceptor_wcsdup@Base 10 + __interceptor_wcslen@Base 8 + __interceptor_wcsncat@Base 8 + __interceptor_wcsnlen@Base 8 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wcsxfrm@Base 9 + __interceptor_wcsxfrm_l@Base 9 + __interceptor_wctomb@Base 10 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.9 + __interceptor_writev@Base 4.9 + __interceptor_xdr_bool@Base 5 + __interceptor_xdr_bytes@Base 5 + __interceptor_xdr_char@Base 5 + __interceptor_xdr_destroy@Base 11 + __interceptor_xdr_double@Base 5 + __interceptor_xdr_enum@Base 5 + __interceptor_xdr_float@Base 5 + __interceptor_xdr_hyper@Base 5 + __interceptor_xdr_int16_t@Base 5 + __interceptor_xdr_int32_t@Base 5 + __interceptor_xdr_int64_t@Base 5 + __interceptor_xdr_int8_t@Base 5 + __interceptor_xdr_int@Base 5 + __interceptor_xdr_long@Base 5 + __interceptor_xdr_longlong_t@Base 5 + __interceptor_xdr_quad_t@Base 5 + __interceptor_xdr_short@Base 5 + __interceptor_xdr_string@Base 5 + __interceptor_xdr_u_char@Base 5 + __interceptor_xdr_u_hyper@Base 5 + __interceptor_xdr_u_int@Base 5 + __interceptor_xdr_u_long@Base 5 + __interceptor_xdr_u_longlong_t@Base 5 + __interceptor_xdr_u_quad_t@Base 5 + __interceptor_xdr_u_short@Base 5 + __interceptor_xdr_uint16_t@Base 5 + __interceptor_xdr_uint32_t@Base 5 + __interceptor_xdr_uint64_t@Base 5 + __interceptor_xdr_uint8_t@Base 5 + __interceptor_xdrmem_create@Base 5 + __interceptor_xdrrec_create@Base 11 + __interceptor_xdrstdio_create@Base 5 + __isoc23_fscanf@Base 14 + __isoc23_scanf@Base 14 + __isoc23_sscanf@Base 14 + __isoc23_strtoimax@Base 14 + __isoc23_strtoumax@Base 14 + __isoc23_vfscanf@Base 14 + __isoc23_vscanf@Base 14 + __isoc23_vsscanf@Base 14 + __isoc99_fprintf@Base 5 + __isoc99_fscanf@Base 4.9 + __isoc99_printf@Base 5 + __isoc99_scanf@Base 4.9 + __isoc99_snprintf@Base 5 + __isoc99_sprintf@Base 5 + __isoc99_sscanf@Base 4.9 + __isoc99_vfprintf@Base 5 + __isoc99_vfscanf@Base 4.9 + __isoc99_vprintf@Base 5 + __isoc99_vscanf@Base 4.9 + __isoc99_vsnprintf@Base 5 + __isoc99_vsprintf@Base 5 + __isoc99_vsscanf@Base 4.9 + __libc_memalign@Base 4.9 + __lxstat64@Base 4.9 + __lxstat@Base 4.9 + __overflow@Base 5 + __res_iclose@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 5 + __sanitizer_get_allocated_begin@Base 14 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_allocated_size_fast@Base 14 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_report_path@Base 13 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 5 + __sanitizer_on_print@Base 10 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_purge_allocator@Base 14 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 13 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getrandom@Base 10 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigaction@Base 7 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_sigaction@Base 7 + __sanitizer_syscall_post_impl_sigaltstack@Base 11 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 13 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getrandom@Base 10 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 7 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_sigaction@Base 7 + __sanitizer_syscall_pre_impl_sigaltstack@Base 11 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 + __sanitizer_weak_hook_memcmp@Base 8 + __sanitizer_weak_hook_memmem@Base 8 + __sanitizer_weak_hook_strcasecmp@Base 8 + __sanitizer_weak_hook_strcasestr@Base 8 + __sanitizer_weak_hook_strcmp@Base 8 + __sanitizer_weak_hook_strncasecmp@Base 8 + __sanitizer_weak_hook_strncmp@Base 8 + __sanitizer_weak_hook_strstr@Base 8 + __sigsetjmp@Base 4.9 + __snprintf_chk@Base 9 + __sprintf_chk@Base 9 + __strndup@Base 8 + __strxfrm_l@Base 9 + __tls_get_addr@Base 6 + __tsan_acquire@Base 4.9 + __tsan_atomic128_compare_exchange_strong@Base 4.9 + __tsan_atomic128_compare_exchange_val@Base 4.9 + __tsan_atomic128_compare_exchange_weak@Base 4.9 + __tsan_atomic128_exchange@Base 4.9 + __tsan_atomic128_fetch_add@Base 4.9 + __tsan_atomic128_fetch_and@Base 4.9 + __tsan_atomic128_fetch_nand@Base 4.9 + __tsan_atomic128_fetch_or@Base 4.9 + __tsan_atomic128_fetch_sub@Base 4.9 + __tsan_atomic128_fetch_xor@Base 4.9 + __tsan_atomic128_load@Base 4.9 + __tsan_atomic128_store@Base 4.9 + __tsan_atomic16_compare_exchange_strong@Base 4.9 + __tsan_atomic16_compare_exchange_val@Base 4.9 + __tsan_atomic16_compare_exchange_weak@Base 4.9 + __tsan_atomic16_exchange@Base 4.9 + __tsan_atomic16_fetch_add@Base 4.9 + __tsan_atomic16_fetch_and@Base 4.9 + __tsan_atomic16_fetch_nand@Base 4.9 + __tsan_atomic16_fetch_or@Base 4.9 + __tsan_atomic16_fetch_sub@Base 4.9 + __tsan_atomic16_fetch_xor@Base 4.9 + __tsan_atomic16_load@Base 4.9 + __tsan_atomic16_store@Base 4.9 + __tsan_atomic32_compare_exchange_strong@Base 4.9 + __tsan_atomic32_compare_exchange_val@Base 4.9 + __tsan_atomic32_compare_exchange_weak@Base 4.9 + __tsan_atomic32_exchange@Base 4.9 + __tsan_atomic32_fetch_add@Base 4.9 + __tsan_atomic32_fetch_and@Base 4.9 + __tsan_atomic32_fetch_nand@Base 4.9 + __tsan_atomic32_fetch_or@Base 4.9 + __tsan_atomic32_fetch_sub@Base 4.9 + __tsan_atomic32_fetch_xor@Base 4.9 + __tsan_atomic32_load@Base 4.9 + __tsan_atomic32_store@Base 4.9 + __tsan_atomic64_compare_exchange_strong@Base 4.9 + __tsan_atomic64_compare_exchange_val@Base 4.9 + __tsan_atomic64_compare_exchange_weak@Base 4.9 + __tsan_atomic64_exchange@Base 4.9 + __tsan_atomic64_fetch_add@Base 4.9 + __tsan_atomic64_fetch_and@Base 4.9 + __tsan_atomic64_fetch_nand@Base 4.9 + __tsan_atomic64_fetch_or@Base 4.9 + __tsan_atomic64_fetch_sub@Base 4.9 + __tsan_atomic64_fetch_xor@Base 4.9 + __tsan_atomic64_load@Base 4.9 + __tsan_atomic64_store@Base 4.9 + __tsan_atomic8_compare_exchange_strong@Base 4.9 + __tsan_atomic8_compare_exchange_val@Base 4.9 + __tsan_atomic8_compare_exchange_weak@Base 4.9 + __tsan_atomic8_exchange@Base 4.9 + __tsan_atomic8_fetch_add@Base 4.9 + __tsan_atomic8_fetch_and@Base 4.9 + __tsan_atomic8_fetch_nand@Base 4.9 + __tsan_atomic8_fetch_or@Base 4.9 + __tsan_atomic8_fetch_sub@Base 4.9 + __tsan_atomic8_fetch_xor@Base 4.9 + __tsan_atomic8_load@Base 4.9 + __tsan_atomic8_store@Base 4.9 + __tsan_atomic_signal_fence@Base 4.9 + __tsan_atomic_thread_fence@Base 4.9 + __tsan_check_no_mutexes_held@Base 14 + __tsan_create_fiber@Base 10 + __tsan_default_options@Base 4.9 + __tsan_default_suppressions@Base 7 + __tsan_destroy_fiber@Base 10 + __tsan_external_assign_tag@Base 8 + __tsan_external_read@Base 8 + __tsan_external_register_header@Base 8 + __tsan_external_register_tag@Base 8 + __tsan_external_write@Base 8 + __tsan_flush_memory@Base 8 + __tsan_func_entry@Base 4.9 + __tsan_func_exit@Base 4.9 + __tsan_get_alloc_stack@Base 8 + __tsan_get_current_fiber@Base 10 + __tsan_get_current_report@Base 7 + __tsan_get_report_data@Base 7 + __tsan_get_report_loc@Base 7 + __tsan_get_report_loc_object_type@Base 8 + __tsan_get_report_mop@Base 7 + __tsan_get_report_mutex@Base 7 + __tsan_get_report_stack@Base 7 + __tsan_get_report_tag@Base 9 + __tsan_get_report_thread@Base 7 + __tsan_get_report_unique_tid@Base 7 + __tsan_ignore_thread_begin@Base 8 + __tsan_ignore_thread_end@Base 8 + __tsan_init@Base 4.9 + __tsan_java_acquire@Base 6 + __tsan_java_alloc@Base 4.9 + __tsan_java_finalize@Base 5 + __tsan_java_find@Base 8 + __tsan_java_fini@Base 4.9 + __tsan_java_free@Base 4.9 + __tsan_java_init@Base 4.9 + __tsan_java_move@Base 4.9 + __tsan_java_mutex_lock@Base 4.9 + __tsan_java_mutex_lock_rec@Base 4.9 + __tsan_java_mutex_read_lock@Base 4.9 + __tsan_java_mutex_read_unlock@Base 4.9 + __tsan_java_mutex_unlock@Base 4.9 + __tsan_java_mutex_unlock_rec@Base 4.9 + __tsan_java_release@Base 6 + __tsan_java_release_store@Base 6 + __tsan_locate_address@Base 8 + __tsan_memcpy@Base 13 + __tsan_memmove@Base 13 + __tsan_memset@Base 13 + __tsan_mutex_create@Base 8 + __tsan_mutex_destroy@Base 8 + __tsan_mutex_post_divert@Base 8 + __tsan_mutex_post_lock@Base 8 + __tsan_mutex_post_signal@Base 8 + __tsan_mutex_post_unlock@Base 8 + __tsan_mutex_pre_divert@Base 8 + __tsan_mutex_pre_lock@Base 8 + __tsan_mutex_pre_signal@Base 8 + __tsan_mutex_pre_unlock@Base 8 + __tsan_on_report@Base 7 + __tsan_on_thread_idle@Base 14 + __tsan_read16@Base 4.9 + __tsan_read16_pc@Base 6 + __tsan_read1@Base 4.9 + __tsan_read1_pc@Base 6 + __tsan_read2@Base 4.9 + __tsan_read2_pc@Base 6 + __tsan_read4@Base 4.9 + __tsan_read4_pc@Base 6 + __tsan_read8@Base 4.9 + __tsan_read8_pc@Base 6 + __tsan_read_range@Base 4.9 + __tsan_read_range_pc@Base 10 + __tsan_release@Base 4.9 + __tsan_set_fiber_name@Base 10 + __tsan_switch_to_fiber@Base 10 + __tsan_symbolize_external@Base 7 + __tsan_symbolize_external_ex@Base 9 + __tsan_testonly_barrier_init@Base 7 + __tsan_testonly_barrier_wait@Base 7 + __tsan_testonly_shadow_stack_current_size@Base 8 + __tsan_unaligned_read16@Base 6 + __tsan_unaligned_read2@Base 4.9 + __tsan_unaligned_read4@Base 4.9 + __tsan_unaligned_read8@Base 4.9 + __tsan_unaligned_write16@Base 6 + __tsan_unaligned_write2@Base 4.9 + __tsan_unaligned_write4@Base 4.9 + __tsan_unaligned_write8@Base 4.9 + __tsan_vptr_read@Base 4.9 + __tsan_vptr_update@Base 4.9 + __tsan_write16@Base 4.9 + __tsan_write16_pc@Base 6 + __tsan_write1@Base 4.9 + __tsan_write1_pc@Base 6 + __tsan_write2@Base 4.9 + __tsan_write2_pc@Base 6 + __tsan_write4@Base 4.9 + __tsan_write4_pc@Base 6 + __tsan_write8@Base 4.9 + __tsan_write8_pc@Base 6 + __tsan_write_range@Base 4.9 + __tsan_write_range_pc@Base 10 + __uflow@Base 5 + __underflow@Base 5 + __vsnprintf_chk@Base 9 + __vsprintf_chk@Base 9 + __wcsxfrm_l@Base 9 + __woverflow@Base 5 + __wuflow@Base 5 + __wunderflow@Base 5 + __xpg_strerror_r@Base 4.9 + __xstat64@Base 4.9 + __xstat@Base 4.9 + _exit@Base 4.9 + _obstack_begin@Base 5 + _obstack_begin_1@Base 5 + _obstack_newchunk@Base 5 + _setjmp@Base 4.9 + abort@Base 4.9 + accept4@Base 4.9 + accept@Base 4.9 + aligned_alloc@Base 5 + argp_parse@Base 14 + asctime@Base 4.9 + asctime_r@Base 4.9 + asprintf@Base 5 + atexit@Base 4.9 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + bcmp@Base 10 + bind@Base 4.9 + bsearch@Base 13 + bzero@Base 10 + calloc@Base 4.9 + canonicalize_file_name@Base 4.9 + capget@Base 5 + capset@Base 5 + cfree@Base 4.9 + clock_getcpuclockid@Base 11 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + clone@Base 13 + close@Base 4.9 + closedir@Base 6 + confstr@Base 4.9 + connect@Base 4.9 + creat64@Base 4.9 + creat@Base 4.9 + ctermid@Base 7 + ctime@Base 4.9 + ctime_r@Base 4.9 + dl_iterate_phdr@Base 6 + dlclose@Base 4.9 + dlopen@Base 4.9 + dn_comp@Base 13 + dn_expand@Base 13 + drand48_r@Base 4.9 + dup2@Base 4.9 + dup3@Base 4.9 + dup@Base 4.9 + endgrent@Base 5 + endpwent@Base 5 + epoll_create1@Base 4.9 + epoll_create@Base 4.9 + epoll_ctl@Base 4.9 + epoll_pwait2@Base 14 + epoll_pwait@Base 7 + epoll_wait@Base 4.9 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + eventfd@Base 4.9 + eventfd_read@Base 7 + eventfd_write@Base 7 + fclose@Base 4.9 + fdopen@Base 5 + fflush@Base 4.9 + fgetgrent@Base 10 + fgetgrent_r@Base 10 + fgetpwent@Base 10 + fgetpwent_r@Base 10 + fgets@Base 9 + fgetxattr@Base 5 + flistxattr@Base 5 + fmemopen@Base 5 + fopen64@Base 5 + fopen@Base 4.9 + fopencookie@Base 6 + fork@Base 4.9 + fprintf@Base 5 + fputs@Base 9 + fread@Base 4.9 + free@Base 4.9 + freopen64@Base 5 + freopen@Base 4.9 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.9 + fstat64@Base 4.9 + fstat@Base 4.9 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + ftime@Base 5 + fwrite@Base 4.9 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getentropy@Base 14 + getgrent@Base 10 + getgrent_r@Base 10 + getgrgid@Base 10 + getgrgid_r@Base 10 + getgrnam@Base 10 + getgrnam_r@Base 10 + getgrouplist@Base 13 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getifaddrs@Base 5 + getitimer@Base 4.9 + getline@Base 4.9 + getloadavg@Base 8 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getnameinfo@Base 5 + getnetbyaddr@Base 13 + getnetbyname@Base 13 + getnetent@Base 13 + getpass@Base 5 + getpeername@Base 4.9 + getprotobyname@Base 11 + getprotobyname_r@Base 11 + getprotobynumber@Base 11 + getprotobynumber_r@Base 11 + getprotoent@Base 11 + getprotoent_r@Base 11 + getpwent@Base 10 + getpwent_r@Base 10 + getpwnam@Base 10 + getpwnam_r@Base 10 + getpwuid@Base 10 + getpwuid_r@Base 10 + getrandom@Base 10 + getresgid@Base 5 + getresuid@Base 5 + getsockname@Base 4.9 + getsockopt@Base 4.9 + gettimeofday@Base 4.9 + getusershell@Base 10 + getutent@Base 8 + getutid@Base 8 + getutline@Base 8 + getutxent@Base 8 + getutxid@Base 8 + getutxline@Base 8 + getxattr@Base 5 + glob64@Base 5 + glob@Base 5 + gmtime@Base 4.9 + gmtime_r@Base 4.9 + iconv@Base 4.9 + if_indextoname@Base 5 + if_nametoindex@Base 5 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + inotify_init1@Base 4.9 + inotify_init@Base 4.9 + ioctl@Base 4.9 + kill@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + lgetxattr@Base 5 + listen@Base 4.9 + listxattr@Base 5 + llistxattr@Base 5 + localtime@Base 4.9 + localtime_r@Base 4.9 + longjmp@Base 4.9 + lrand48_r@Base 4.9 + lstat64@Base 13 + lstat@Base 13 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + memchr@Base 4.9 + memcmp@Base 4.9 + memcpy@Base 4.9 + memmem@Base 7 + memmove@Base 4.9 + memrchr@Base 4.9 + memset@Base 4.9 + mincore@Base 6 + mktime@Base 5 + mlock@Base 4.9 + mlockall@Base 4.9 + mmap64@Base 4.9 + mmap@Base 4.9 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + mprobe@Base 8 + mprotect@Base 9 + msgrcv@Base 11 + msgsnd@Base 11 + munlock@Base 4.9 + munlockall@Base 4.9 + munmap@Base 4.9 + name_to_handle_at@Base 9 + nanosleep@Base 4.9 + on_exit@Base 4.9 + open64@Base 4.9 + open@Base 4.9 + open_by_handle_at@Base 9 + open_memstream@Base 5 + open_wmemstream@Base 5 + opendir@Base 4.9 + pause@Base 8 + pclose@Base 10 + pipe2@Base 4.9 + pipe@Base 4.9 + poll@Base 4.9 + popen@Base 10 + posix_memalign@Base 4.9 + posix_spawn@Base 13 + posix_spawnp@Base 13 + ppoll@Base 4.9 + prctl@Base 4.9 + pread64@Base 4.9 + pread@Base 4.9 + preadv2@Base 15 + preadv64@Base 4.9 + preadv@Base 4.9 + printf@Base 5 + process_vm_readv@Base 6 + process_vm_writev@Base 6 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_barrier_destroy@Base 4.9 + pthread_barrier_init@Base 4.9 + pthread_barrier_wait@Base 4.9 + pthread_barrierattr_getpshared@Base 5 + pthread_cond_broadcast@Base 4.9 + pthread_cond_clockwait@Base 13 + pthread_cond_destroy@Base 4.9 + pthread_cond_init@Base 4.9 + pthread_cond_signal@Base 4.9 + pthread_cond_timedwait@Base 4.9 + pthread_cond_wait@Base 4.9 + pthread_condattr_getclock@Base 5 + pthread_condattr_getpshared@Base 5 + pthread_create@Base 4.9 + pthread_detach@Base 4.9 + pthread_exit@Base 10 + pthread_getaffinity_np@Base 13 + pthread_getcpuclockid@Base 13 + pthread_getname_np@Base 9 + pthread_getschedparam@Base 4.9 + pthread_join@Base 4.9 + pthread_kill@Base 4.9 + pthread_mutex_clocklock@Base 15 + pthread_mutex_destroy@Base 4.9 + pthread_mutex_init@Base 4.9 + pthread_mutex_lock@Base 4.9 + pthread_mutex_timedlock@Base 4.9 + pthread_mutex_trylock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_mutexattr_getprioceiling@Base 5 + pthread_mutexattr_getprotocol@Base 5 + pthread_mutexattr_getpshared@Base 5 + pthread_mutexattr_getrobust@Base 5 + pthread_mutexattr_getrobust_np@Base 5 + pthread_mutexattr_gettype@Base 5 + pthread_once@Base 4.9 + pthread_rwlock_destroy@Base 4.9 + pthread_rwlock_init@Base 4.9 + pthread_rwlock_rdlock@Base 4.9 + pthread_rwlock_timedrdlock@Base 4.9 + pthread_rwlock_timedwrlock@Base 4.9 + pthread_rwlock_tryrdlock@Base 4.9 + pthread_rwlock_trywrlock@Base 4.9 + pthread_rwlock_unlock@Base 4.9 + pthread_rwlock_wrlock@Base 4.9 + pthread_rwlockattr_getkind_np@Base 5 + pthread_rwlockattr_getpshared@Base 5 + pthread_setcancelstate@Base 6 + pthread_setcanceltype@Base 6 + pthread_setname_np@Base 4.9 + pthread_sigmask@Base 7 + pthread_spin_destroy@Base 4.9 + pthread_spin_init@Base 4.9 + pthread_spin_lock@Base 4.9 + pthread_spin_trylock@Base 4.9 + pthread_spin_unlock@Base 4.9 + pthread_timedjoin_np@Base 10 + pthread_tryjoin_np@Base 10 + ptrace@Base 4.9 + ptsname@Base 11 + ptsname_r@Base 11 + puts@Base 4.9 + pututxline@Base 10 + pvalloc@Base 4.9 + pwrite64@Base 4.9 + pwrite@Base 4.9 + pwritev2@Base 15 + pwritev64@Base 4.9 + pwritev@Base 4.9 + qsort@Base 11 + qsort_r@Base 11 + raise@Base 4.9 + rand_r@Base 5 + random_r@Base 4.9 + read@Base 4.9 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readlink@Base 9 + readlinkat@Base 9 + readv@Base 4.9 + realloc@Base 4.9 + reallocarray@Base 10 + realpath@Base 4.9 + recv@Base 4.9 + recvfrom@Base 7 + recvmmsg@Base 9 + recvmsg@Base 4.9 + regcomp@Base 10 + regerror@Base 10 + regexec@Base 10 + regfree@Base 10 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + rmdir@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.9 + sched_getaffinity@Base 4.9 + sched_getparam@Base 6 + sem_destroy@Base 4.9 + sem_getvalue@Base 4.9 + sem_init@Base 4.9 + sem_open@Base 13 + sem_post@Base 4.9 + sem_timedwait@Base 4.9 + sem_trywait@Base 4.9 + sem_unlink@Base 13 + sem_wait@Base 4.9 + send@Base 4.9 + sendmmsg@Base 9 + sendmsg@Base 4.9 + sendto@Base 7 + setbuf@Base 10 + setbuffer@Base 10 + setgrent@Base 5 + setitimer@Base 4.9 + setjmp@Base 8 + setlinebuf@Base 10 + setlocale@Base 4.9 + setpwent@Base 5 + setvbuf@Base 10 + shmctl@Base 4.9 + sigaction@Base 4.9 + sigaltstack@Base 11 + sigandset@Base 11 + sigblock@Base 7 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.9 + signal@Base 4.9 + signalfd@Base 4.9 + sigorset@Base 11 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigsetjmp@Base 4.9 + sigsetmask@Base 7 + sigsuspend@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + sleep@Base 4.9 + snprintf@Base 5 + socket@Base 4.9 + socketpair@Base 4.9 + sprintf@Base 5 + sscanf@Base 4.9 + stat64@Base 13 + stat@Base 13 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.9 + strcasestr@Base 6 + strchr@Base 4.9 + strchrnul@Base 4.9 + strcmp@Base 4.9 + strcpy@Base 4.9 + strcspn@Base 6 + strdup@Base 4.9 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.9 + strncasecmp@Base 4.9 + strncmp@Base 4.9 + strncpy@Base 4.9 + strndup@Base 8 + strnlen@Base 7 + strpbrk@Base 6 + strptime@Base 4.9 + strrchr@Base 4.9 + strspn@Base 6 + strstr@Base 4.9 + strtoimax@Base 4.9 + strtok@Base 8 + strtoumax@Base 4.9 + strxfrm@Base 9 + strxfrm_l@Base 9 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + timerfd_gettime@Base 5 + timerfd_settime@Base 5 + times@Base 4.9 + tmpfile64@Base 5 + tmpfile@Base 5 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + tsearch@Base 5 + ttyname@Base 10 + ttyname_r@Base 7 + uname@Base 11 + unlink@Base 4.9 + usleep@Base 4.9 + valloc@Base 4.9 + vasprintf@Base 5 + vfork@Base 5 + vfprintf@Base 5 + vfscanf@Base 4.9 + vprintf@Base 5 + vscanf@Base 4.9 + vsnprintf@Base 5 + vsprintf@Base 5 + vsscanf@Base 4.9 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcrtomb@Base 6 + wcscat@Base 8 + wcsdup@Base 10 + wcslen@Base 8 + wcsncat@Base 8 + wcsnlen@Base 8 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wcsxfrm@Base 9 + wcsxfrm_l@Base 9 + wctomb@Base 10 + wordexp@Base 4.9 + write@Base 4.9 + writev@Base 4.9 + xdr_bool@Base 5 + xdr_bytes@Base 5 + xdr_char@Base 5 + xdr_destroy@Base 11 + xdr_double@Base 5 + xdr_enum@Base 5 + xdr_float@Base 5 + xdr_hyper@Base 5 + xdr_int16_t@Base 5 + xdr_int32_t@Base 5 + xdr_int64_t@Base 5 + xdr_int8_t@Base 5 + xdr_int@Base 5 + xdr_long@Base 5 + xdr_longlong_t@Base 5 + xdr_quad_t@Base 5 + xdr_short@Base 5 + xdr_string@Base 5 + xdr_u_char@Base 5 + xdr_u_hyper@Base 5 + xdr_u_int@Base 5 + xdr_u_long@Base 5 + xdr_u_longlong_t@Base 5 + xdr_u_quad_t@Base 5 + xdr_u_short@Base 5 + xdr_uint16_t@Base 5 + xdr_uint32_t@Base 5 + xdr_uint64_t@Base 5 + xdr_uint8_t@Base 5 + xdrmem_create@Base 5 + xdrrec_create@Base 11 + xdrstdio_create@Base 5 diff --git a/libubsan1.symbols b/libubsan1.symbols new file mode 100644 index 0000000..a14ceb3 --- /dev/null +++ b/libubsan1.symbols @@ -0,0 +1,157 @@ +libubsan.so.1 libubsan1 #MINVER# + _ZN7__ubsan31RegisterUndefinedBehaviorReportEPNS_23UndefinedBehaviorReportE@Base 9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_syminfo_to_full_callback@Base 11 + __asan_backtrace_syminfo_to_full_error_callback@Base 11 + __asan_backtrace_uncompress_lzma@Base 11 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_uncompress_zstd@Base 13 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_bool_flag_init@Base 11 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_load16@Base 13 + __sanitizer_cov_load1@Base 13 + __sanitizer_cov_load2@Base 13 + __sanitizer_cov_load4@Base 13 + __sanitizer_cov_load8@Base 13 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_store16@Base 13 + __sanitizer_cov_store1@Base 13 + __sanitizer_cov_store2@Base 13 + __sanitizer_cov_store4@Base 13 + __sanitizer_cov_store8@Base 13 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 13 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_report_path@Base 12 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_internal_memcpy@Base 14 + __sanitizer_internal_memmove@Base 14 + __sanitizer_internal_memset@Base 14 + __sanitizer_malloc_hook@Base 13 + __sanitizer_on_print@Base 10 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __ubsan_default_options@Base 8 + __ubsan_get_current_report_data@Base 9 + __ubsan_handle_add_overflow@Base 4.9 + __ubsan_handle_add_overflow_abort@Base 4.9 + __ubsan_handle_alignment_assumption@Base 10 + __ubsan_handle_alignment_assumption_abort@Base 10 + __ubsan_handle_builtin_unreachable@Base 4.9 + __ubsan_handle_cfi_bad_icall@Base 9 + __ubsan_handle_cfi_bad_icall_abort@Base 9 + __ubsan_handle_cfi_bad_type@Base 7 + __ubsan_handle_cfi_check_fail@Base 7 + __ubsan_handle_cfi_check_fail_abort@Base 7 + __ubsan_handle_divrem_overflow@Base 4.9 + __ubsan_handle_divrem_overflow_abort@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss_abort@Base 4.9 + __ubsan_handle_float_cast_overflow@Base 4.9 + __ubsan_handle_float_cast_overflow_abort@Base 4.9 + __ubsan_handle_function_type_mismatch@Base 14 + __ubsan_handle_function_type_mismatch_abort@Base 14 + __ubsan_handle_function_type_mismatch_v1@Base 4.9 + __ubsan_handle_function_type_mismatch_v1_abort@Base 4.9 + __ubsan_handle_implicit_conversion@Base 9 + __ubsan_handle_implicit_conversion_abort@Base 9 + __ubsan_handle_invalid_builtin@Base 8 + __ubsan_handle_invalid_builtin_abort@Base 8 + __ubsan_handle_invalid_objc_cast@Base 11 + __ubsan_handle_invalid_objc_cast_abort@Base 11 + __ubsan_handle_load_invalid_value@Base 4.9 + __ubsan_handle_load_invalid_value_abort@Base 4.9 + __ubsan_handle_missing_return@Base 4.9 + __ubsan_handle_mul_overflow@Base 4.9 + __ubsan_handle_mul_overflow_abort@Base 4.9 + __ubsan_handle_negate_overflow@Base 4.9 + __ubsan_handle_negate_overflow_abort@Base 4.9 + __ubsan_handle_nonnull_arg@Base 5 + __ubsan_handle_nonnull_arg_abort@Base 5 + __ubsan_handle_nonnull_return_v1@Base 8 + __ubsan_handle_nonnull_return_v1_abort@Base 8 + __ubsan_handle_nullability_arg@Base 8 + __ubsan_handle_nullability_arg_abort@Base 8 + __ubsan_handle_nullability_return_v1@Base 8 + __ubsan_handle_nullability_return_v1_abort@Base 8 + __ubsan_handle_out_of_bounds@Base 4.9 + __ubsan_handle_out_of_bounds_abort@Base 4.9 + __ubsan_handle_pointer_overflow@Base 8 + __ubsan_handle_pointer_overflow_abort@Base 8 + __ubsan_handle_shift_out_of_bounds@Base 4.9 + __ubsan_handle_shift_out_of_bounds_abort@Base 4.9 + __ubsan_handle_sub_overflow@Base 4.9 + __ubsan_handle_sub_overflow_abort@Base 4.9 + __ubsan_handle_type_mismatch_v1@Base 8 + __ubsan_handle_type_mismatch_v1_abort@Base 8 + __ubsan_handle_vla_bound_not_positive@Base 4.9 + __ubsan_handle_vla_bound_not_positive_abort@Base 4.9 + __ubsan_on_report@Base 9 + __ubsan_vptr_type_cache@Base 4.9 diff --git a/libvtv0.symbols b/libvtv0.symbols new file mode 100644 index 0000000..908a64e --- /dev/null +++ b/libvtv0.symbols @@ -0,0 +1,68 @@ +libvtv.so.0 libvtv0 #MINVER# + _Z10__vtv_freePv@Base 4.9.0 + (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 + (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 + _Z14__VLTDumpStatsv@Base 4.9.0 + _Z14__vtv_open_logPKc@Base 4.9.0 + (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 + _Z16__vtv_add_to_logiPKcz@Base 4.9.0 + (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 + (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 + _Z17__vtv_malloc_initv@Base 4.9.0 + _Z17__vtv_really_failPKc@Base 4.9.0 + _Z17__vtv_verify_failPPvPKv@Base 4.9.0 + _Z18__vtv_malloc_statsv@Base 4.9.0 + _Z20__vtv_malloc_protectv@Base 4.9.0 + (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 + (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 + (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 + _Z22__vtv_malloc_unprotectv@Base 4.9.0 + _Z23__vtv_malloc_dump_statsv@Base 4.9.0 + _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 + (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 + (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 + _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 + _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 + _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 + _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + __VLTChangePermission@Base 4.9.0 + __VLTprotect@Base 4.9.0 + __VLTunprotect@Base 4.9.0 + _vtable_map_vars_end@Base 4.9.0 + _vtable_map_vars_start@Base 4.9.0 + mprotect_cycles@Base 4.9.0 + num_cache_entries@Base 4.9.0 + num_calls_to_mprotect@Base 4.9.0 + num_calls_to_regpair@Base 4.9.0 + num_calls_to_regset@Base 4.9.0 + num_calls_to_verify_vtable@Base 4.9.0 + num_pages_protected@Base 4.9.0 + regpair_cycles@Base 4.9.0 + regset_cycles@Base 4.9.0 + verify_vtable_cycles@Base 4.9.0 diff --git a/libx32asan8.symbols b/libx32asan8.symbols new file mode 100644 index 0000000..ed11d05 --- /dev/null +++ b/libx32asan8.symbols @@ -0,0 +1,3045 @@ +# SymbolsHelper-Confirmed: 15 amd64 i386 +libasan.so.8 libx32asan8 #MINVER# + _Unwind_RaiseException@Base 15 + _ZdaPv@Base 15 + _ZdaPvRKSt9nothrow_t@Base 15 + _ZdaPvSt11align_val_t@Base 15 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdaPvj@Base 15 + _ZdaPvjSt11align_val_t@Base 15 + _ZdlPv@Base 15 + _ZdlPvRKSt9nothrow_t@Base 15 + _ZdlPvSt11align_val_t@Base 15 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 + _ZdlPvj@Base 15 + _ZdlPvjSt11align_val_t@Base 15 + _Znaj@Base 15 + _ZnajRKSt9nothrow_t@Base 15 + _ZnajSt11align_val_t@Base 15 + _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 + _Znwj@Base 15 + _ZnwjRKSt9nothrow_t@Base 15 + _ZnwjSt11align_val_t@Base 15 + _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 + ___interceptor__Unwind_RaiseException@Base 15 + ___interceptor___b64_ntop@Base 15 + ___interceptor___b64_pton@Base 15 + ___interceptor___bzero@Base 15 + ___interceptor___cxa_atexit@Base 15 + ___interceptor___cxa_throw@Base 15 + ___interceptor___fprintf_chk@Base 15 + ___interceptor___getdelim@Base 15 + ___interceptor___isoc23_fscanf@Base 15 + ___interceptor___isoc23_scanf@Base 15 + ___interceptor___isoc23_sscanf@Base 15 + ___interceptor___isoc23_strtoimax@Base 15 + ___interceptor___isoc23_strtol@Base 15 + ___interceptor___isoc23_strtoll@Base 15 + ___interceptor___isoc23_strtoumax@Base 15 + ___interceptor___isoc23_vfscanf@Base 15 + ___interceptor___isoc23_vscanf@Base 15 + ___interceptor___isoc23_vsscanf@Base 15 + ___interceptor___isoc99_fprintf@Base 15 + ___interceptor___isoc99_fscanf@Base 15 + ___interceptor___isoc99_printf@Base 15 + ___interceptor___isoc99_scanf@Base 15 + ___interceptor___isoc99_snprintf@Base 15 + ___interceptor___isoc99_sprintf@Base 15 + ___interceptor___isoc99_sscanf@Base 15 + ___interceptor___isoc99_vfprintf@Base 15 + ___interceptor___isoc99_vfscanf@Base 15 + ___interceptor___isoc99_vprintf@Base 15 + ___interceptor___isoc99_vscanf@Base 15 + ___interceptor___isoc99_vsnprintf@Base 15 + ___interceptor___isoc99_vsprintf@Base 15 + ___interceptor___isoc99_vsscanf@Base 15 + ___interceptor___libc_memalign@Base 15 + ___interceptor___longjmp_chk@Base 15 + ___interceptor___lxstat64@Base 15 + ___interceptor___lxstat@Base 15 + ___interceptor___overflow@Base 15 + ___interceptor___snprintf_chk@Base 15 + ___interceptor___sprintf_chk@Base 15 + ___interceptor___strdup@Base 15 + ___interceptor___strndup@Base 15 + ___interceptor___strxfrm_l@Base 15 + ___interceptor___tls_get_addr@Base 15 + ___interceptor___uflow@Base 15 + ___interceptor___underflow@Base 15 + ___interceptor___vsnprintf_chk@Base 15 + ___interceptor___vsprintf_chk@Base 15 + ___interceptor___wcsxfrm_l@Base 15 + ___interceptor___woverflow@Base 15 + ___interceptor___wuflow@Base 15 + ___interceptor___wunderflow@Base 15 + ___interceptor___xpg_strerror_r@Base 15 + ___interceptor___xstat64@Base 15 + ___interceptor___xstat@Base 15 + ___interceptor__exit@Base 15 + ___interceptor__longjmp@Base 15 + ___interceptor__obstack_begin@Base 15 + ___interceptor__obstack_begin_1@Base 15 + ___interceptor__obstack_newchunk@Base 15 + ___interceptor_accept4@Base 15 + ___interceptor_accept@Base 15 + ___interceptor_aligned_alloc@Base 15 + ___interceptor_argp_parse@Base 15 + ___interceptor_asctime@Base 15 + ___interceptor_asctime_r@Base 15 + ___interceptor_asprintf@Base 15 + ___interceptor_atoi@Base 15 + ___interceptor_atol@Base 15 + ___interceptor_atoll@Base 15 + ___interceptor_backtrace@Base 15 + ___interceptor_backtrace_symbols@Base 15 + ___interceptor_bcmp@Base 15 + ___interceptor_bsearch@Base 15 + ___interceptor_bzero@Base 15 + ___interceptor_calloc@Base 15 + ___interceptor_canonicalize_file_name@Base 15 + ___interceptor_capget@Base 15 + ___interceptor_capset@Base 15 + ___interceptor_cfree@Base 15 + ___interceptor_clock_getcpuclockid@Base 15 + ___interceptor_clock_getres@Base 15 + ___interceptor_clock_gettime@Base 15 + ___interceptor_clock_settime@Base 15 + ___interceptor_confstr@Base 15 + ___interceptor_ctermid@Base 15 + ___interceptor_ctime@Base 15 + ___interceptor_ctime_r@Base 15 + ___interceptor_dlclose@Base 15 + ___interceptor_dlopen@Base 15 + ___interceptor_dn_comp@Base 15 + ___interceptor_dn_expand@Base 15 + ___interceptor_drand48_r@Base 15 + ___interceptor_endgrent@Base 15 + ___interceptor_endpwent@Base 15 + ___interceptor_ether_aton@Base 15 + ___interceptor_ether_aton_r@Base 15 + ___interceptor_ether_hostton@Base 15 + ___interceptor_ether_line@Base 15 + ___interceptor_ether_ntoa@Base 15 + ___interceptor_ether_ntoa_r@Base 15 + ___interceptor_ether_ntohost@Base 15 + ___interceptor_eventfd_read@Base 15 + ___interceptor_eventfd_write@Base 15 + ___interceptor_fclose@Base 15 + ___interceptor_fdopen@Base 15 + ___interceptor_fflush@Base 15 + ___interceptor_fgetgrent@Base 15 + ___interceptor_fgetgrent_r@Base 15 + ___interceptor_fgetpwent@Base 15 + ___interceptor_fgetpwent_r@Base 15 + ___interceptor_fgets@Base 15 + ___interceptor_fgetxattr@Base 15 + ___interceptor_flistxattr@Base 15 + ___interceptor_fmemopen@Base 15 + ___interceptor_fopen64@Base 15 + ___interceptor_fopen@Base 15 + ___interceptor_fopencookie@Base 15 + ___interceptor_fprintf@Base 15 + ___interceptor_fputs@Base 15 + ___interceptor_fread@Base 15 + ___interceptor_free@Base 15 + ___interceptor_freopen64@Base 15 + ___interceptor_freopen@Base 15 + ___interceptor_frexp@Base 15 + ___interceptor_frexpf@Base 15 + ___interceptor_frexpl@Base 15 + ___interceptor_fscanf@Base 15 + ___interceptor_fstatfs64@Base 15 + ___interceptor_fstatfs@Base 15 + ___interceptor_fstatvfs64@Base 15 + ___interceptor_fstatvfs@Base 15 + ___interceptor_ftime@Base 15 + ___interceptor_fwrite@Base 15 + ___interceptor_get_current_dir_name@Base 15 + ___interceptor_getaddrinfo@Base 15 + ___interceptor_getcwd@Base 15 + ___interceptor_getdelim@Base 15 + ___interceptor_getentropy@Base 15 + ___interceptor_getgrent@Base 15 + ___interceptor_getgrent_r@Base 15 + ___interceptor_getgrgid@Base 15 + ___interceptor_getgrgid_r@Base 15 + ___interceptor_getgrnam@Base 15 + ___interceptor_getgrnam_r@Base 15 + ___interceptor_getgrouplist@Base 15 + ___interceptor_getgroups@Base 15 + ___interceptor_gethostbyaddr@Base 15 + ___interceptor_gethostbyaddr_r@Base 15 + ___interceptor_gethostbyname2@Base 15 + ___interceptor_gethostbyname2_r@Base 15 + ___interceptor_gethostbyname@Base 15 + ___interceptor_gethostbyname_r@Base 15 + ___interceptor_gethostent@Base 15 + ___interceptor_gethostent_r@Base 15 + ___interceptor_getifaddrs@Base 15 + ___interceptor_getitimer@Base 15 + ___interceptor_getline@Base 15 + ___interceptor_getloadavg@Base 15 + ___interceptor_getmntent@Base 15 + ___interceptor_getmntent_r@Base 15 + ___interceptor_getnameinfo@Base 15 + ___interceptor_getnetbyaddr@Base 15 + ___interceptor_getnetbyname@Base 15 + ___interceptor_getnetent@Base 15 + ___interceptor_getpass@Base 15 + ___interceptor_getpeername@Base 15 + ___interceptor_getprotobyname@Base 15 + ___interceptor_getprotobyname_r@Base 15 + ___interceptor_getprotobynumber@Base 15 + ___interceptor_getprotobynumber_r@Base 15 + ___interceptor_getprotoent@Base 15 + ___interceptor_getprotoent_r@Base 15 + ___interceptor_getpwent@Base 15 + ___interceptor_getpwent_r@Base 15 + ___interceptor_getpwnam@Base 15 + ___interceptor_getpwnam_r@Base 15 + ___interceptor_getpwuid@Base 15 + ___interceptor_getpwuid_r@Base 15 + ___interceptor_getrandom@Base 15 + ___interceptor_getresgid@Base 15 + ___interceptor_getresuid@Base 15 + ___interceptor_getsockname@Base 15 + ___interceptor_getsockopt@Base 15 + ___interceptor_getusershell@Base 15 + ___interceptor_getutent@Base 15 + ___interceptor_getutid@Base 15 + ___interceptor_getutline@Base 15 + ___interceptor_getutxent@Base 15 + ___interceptor_getutxid@Base 15 + ___interceptor_getutxline@Base 15 + ___interceptor_getxattr@Base 15 + ___interceptor_glob64@Base 15 + ___interceptor_glob@Base 15 + ___interceptor_gmtime@Base 15 + ___interceptor_gmtime_r@Base 15 + ___interceptor_iconv@Base 15 + ___interceptor_if_indextoname@Base 15 + ___interceptor_if_nametoindex@Base 15 + ___interceptor_index@Base 15 + ___interceptor_inet_aton@Base 15 + ___interceptor_inet_ntop@Base 15 + ___interceptor_inet_pton@Base 15 + ___interceptor_initgroups@Base 15 + ___interceptor_ioctl@Base 15 + ___interceptor_lgamma@Base 15 + ___interceptor_lgamma_r@Base 15 + ___interceptor_lgammaf@Base 15 + ___interceptor_lgammaf_r@Base 15 + ___interceptor_lgammal@Base 15 + ___interceptor_lgammal_r@Base 15 + ___interceptor_lgetxattr@Base 15 + ___interceptor_listxattr@Base 15 + ___interceptor_llistxattr@Base 15 + ___interceptor_localtime@Base 15 + ___interceptor_localtime_r@Base 15 + ___interceptor_longjmp@Base 15 + ___interceptor_lrand48_r@Base 15 + ___interceptor_lstat64@Base 15 + ___interceptor_lstat@Base 15 + ___interceptor_makecontext@Base 15 + ___interceptor_mallinfo@Base 15 + ___interceptor_malloc@Base 15 + ___interceptor_malloc_stats@Base 15 + ___interceptor_malloc_usable_size@Base 15 + ___interceptor_mallopt@Base 15 + ___interceptor_mbsnrtowcs@Base 15 + ___interceptor_mbsrtowcs@Base 15 + ___interceptor_mbstowcs@Base 15 + ___interceptor_mcheck@Base 15 + ___interceptor_mcheck_pedantic@Base 15 + ___interceptor_memalign@Base 15 + ___interceptor_memchr@Base 15 + ___interceptor_memcmp@Base 15 + ___interceptor_memcpy@Base 15 + ___interceptor_memmem@Base 15 + ___interceptor_memmove@Base 15 + ___interceptor_memrchr@Base 15 + ___interceptor_memset@Base 15 + ___interceptor_mincore@Base 15 + ___interceptor_mktime@Base 15 + ___interceptor_mlock@Base 15 + ___interceptor_mlockall@Base 15 + ___interceptor_mmap64@Base 15 + ___interceptor_mmap@Base 15 + ___interceptor_modf@Base 15 + ___interceptor_modff@Base 15 + ___interceptor_modfl@Base 15 + ___interceptor_mprobe@Base 15 + ___interceptor_mprotect@Base 15 + ___interceptor_msgrcv@Base 15 + ___interceptor_msgsnd@Base 15 + ___interceptor_munlock@Base 15 + ___interceptor_munlockall@Base 15 + ___interceptor_munmap@Base 15 + ___interceptor_name_to_handle_at@Base 15 + ___interceptor_open_by_handle_at@Base 15 + ___interceptor_open_memstream@Base 15 + ___interceptor_open_wmemstream@Base 15 + ___interceptor_opendir@Base 15 + ___interceptor_pclose@Base 15 + ___interceptor_poll@Base 15 + ___interceptor_popen@Base 15 + ___interceptor_posix_memalign@Base 15 + ___interceptor_posix_spawn@Base 15 + ___interceptor_posix_spawnp@Base 15 + ___interceptor_ppoll@Base 15 + ___interceptor_prctl@Base 15 + ___interceptor_pread64@Base 15 + ___interceptor_pread@Base 15 + ___interceptor_preadv2@Base 15 + ___interceptor_preadv64@Base 15 + ___interceptor_preadv@Base 15 + ___interceptor_printf@Base 15 + ___interceptor_process_vm_readv@Base 15 + ___interceptor_process_vm_writev@Base 15 + ___interceptor_pthread_attr_getaffinity_np@Base 15 + ___interceptor_pthread_attr_getdetachstate@Base 15 + ___interceptor_pthread_attr_getguardsize@Base 15 + ___interceptor_pthread_attr_getinheritsched@Base 15 + ___interceptor_pthread_attr_getschedparam@Base 15 + ___interceptor_pthread_attr_getschedpolicy@Base 15 + ___interceptor_pthread_attr_getscope@Base 15 + ___interceptor_pthread_attr_getstack@Base 15 + ___interceptor_pthread_attr_getstacksize@Base 15 + ___interceptor_pthread_barrierattr_getpshared@Base 15 + ___interceptor_pthread_condattr_getclock@Base 15 + ___interceptor_pthread_condattr_getpshared@Base 15 + ___interceptor_pthread_create@Base 15 + ___interceptor_pthread_detach@Base 15 + ___interceptor_pthread_exit@Base 15 + ___interceptor_pthread_getaffinity_np@Base 15 + ___interceptor_pthread_getcpuclockid@Base 15 + ___interceptor_pthread_getname_np@Base 15 + ___interceptor_pthread_getschedparam@Base 15 + ___interceptor_pthread_join@Base 15 + ___interceptor_pthread_mutexattr_getprioceiling@Base 15 + ___interceptor_pthread_mutexattr_getprotocol@Base 15 + ___interceptor_pthread_mutexattr_getpshared@Base 15 + ___interceptor_pthread_mutexattr_getrobust@Base 15 + ___interceptor_pthread_mutexattr_getrobust_np@Base 15 + ___interceptor_pthread_mutexattr_gettype@Base 15 + ___interceptor_pthread_rwlockattr_getkind_np@Base 15 + ___interceptor_pthread_rwlockattr_getpshared@Base 15 + ___interceptor_pthread_setcancelstate@Base 15 + ___interceptor_pthread_setcanceltype@Base 15 + ___interceptor_pthread_setname_np@Base 15 + ___interceptor_pthread_sigmask@Base 15 + ___interceptor_pthread_timedjoin_np@Base 15 + ___interceptor_pthread_tryjoin_np@Base 15 + ___interceptor_ptrace@Base 15 + ___interceptor_ptsname@Base 15 + ___interceptor_ptsname_r@Base 15 + ___interceptor_puts@Base 15 + ___interceptor_pututxline@Base 15 + ___interceptor_pvalloc@Base 15 + ___interceptor_pwrite64@Base 15 + ___interceptor_pwrite@Base 15 + ___interceptor_pwritev2@Base 15 + ___interceptor_pwritev64@Base 15 + ___interceptor_pwritev@Base 15 + ___interceptor_qsort@Base 15 + ___interceptor_qsort_r@Base 15 + ___interceptor_rand_r@Base 15 + ___interceptor_random_r@Base 15 + ___interceptor_read@Base 15 + ___interceptor_readdir64@Base 15 + ___interceptor_readdir64_r@Base 15 + ___interceptor_readdir@Base 15 + ___interceptor_readdir_r@Base 15 + ___interceptor_readlink@Base 15 + ___interceptor_readlinkat@Base 15 + ___interceptor_readv@Base 15 + ___interceptor_realloc@Base 15 + ___interceptor_reallocarray@Base 15 + ___interceptor_realpath@Base 15 + ___interceptor_recv@Base 15 + ___interceptor_recvfrom@Base 15 + ___interceptor_recvmmsg@Base 15 + ___interceptor_recvmsg@Base 15 + ___interceptor_regcomp@Base 15 + ___interceptor_regerror@Base 15 + ___interceptor_regexec@Base 15 + ___interceptor_regfree@Base 15 + ___interceptor_remquo@Base 15 + ___interceptor_remquof@Base 15 + ___interceptor_remquol@Base 15 + ___interceptor_scandir64@Base 15 + ___interceptor_scandir@Base 15 + ___interceptor_scanf@Base 15 + ___interceptor_sched_getaffinity@Base 15 + ___interceptor_sched_getparam@Base 15 + ___interceptor_sem_destroy@Base 15 + ___interceptor_sem_getvalue@Base 15 + ___interceptor_sem_init@Base 15 + ___interceptor_sem_open@Base 15 + ___interceptor_sem_post@Base 15 + ___interceptor_sem_timedwait@Base 15 + ___interceptor_sem_trywait@Base 15 + ___interceptor_sem_unlink@Base 15 + ___interceptor_sem_wait@Base 15 + ___interceptor_send@Base 15 + ___interceptor_sendmmsg@Base 15 + ___interceptor_sendmsg@Base 15 + ___interceptor_sendto@Base 15 + ___interceptor_setbuf@Base 15 + ___interceptor_setbuffer@Base 15 + ___interceptor_setgrent@Base 15 + ___interceptor_setitimer@Base 15 + ___interceptor_setlinebuf@Base 15 + ___interceptor_setlocale@Base 15 + ___interceptor_setpwent@Base 15 + ___interceptor_setvbuf@Base 15 + ___interceptor_sigaction@Base 15 + ___interceptor_sigaltstack@Base 15 + ___interceptor_sigandset@Base 15 + ___interceptor_sigemptyset@Base 15 + ___interceptor_sigfillset@Base 15 + ___interceptor_siglongjmp@Base 15 + ___interceptor_signal@Base 15 + ___interceptor_sigorset@Base 15 + ___interceptor_sigpending@Base 15 + ___interceptor_sigprocmask@Base 15 + ___interceptor_sigtimedwait@Base 15 + ___interceptor_sigwait@Base 15 + ___interceptor_sigwaitinfo@Base 15 + ___interceptor_sincos@Base 15 + ___interceptor_sincosf@Base 15 + ___interceptor_sincosl@Base 15 + ___interceptor_snprintf@Base 15 + ___interceptor_sprintf@Base 15 + ___interceptor_sscanf@Base 15 + ___interceptor_stat64@Base 15 + ___interceptor_stat@Base 15 + ___interceptor_statfs64@Base 15 + ___interceptor_statfs@Base 15 + ___interceptor_statvfs64@Base 15 + ___interceptor_statvfs@Base 15 + ___interceptor_strcasecmp@Base 15 + ___interceptor_strcasestr@Base 15 + ___interceptor_strcat@Base 15 + ___interceptor_strchr@Base 15 + ___interceptor_strchrnul@Base 15 + ___interceptor_strcmp@Base 15 + ___interceptor_strcpy@Base 15 + ___interceptor_strcspn@Base 15 + ___interceptor_strdup@Base 15 + ___interceptor_strerror@Base 15 + ___interceptor_strerror_r@Base 15 + ___interceptor_strlen@Base 15 + ___interceptor_strncasecmp@Base 15 + ___interceptor_strncat@Base 15 + ___interceptor_strncmp@Base 15 + ___interceptor_strncpy@Base 15 + ___interceptor_strndup@Base 15 + ___interceptor_strnlen@Base 15 + ___interceptor_strpbrk@Base 15 + ___interceptor_strptime@Base 15 + ___interceptor_strrchr@Base 15 + ___interceptor_strspn@Base 15 + ___interceptor_strstr@Base 15 + ___interceptor_strtoimax@Base 15 + ___interceptor_strtok@Base 15 + ___interceptor_strtol@Base 15 + ___interceptor_strtoll@Base 15 + ___interceptor_strtoumax@Base 15 + ___interceptor_strxfrm@Base 15 + ___interceptor_strxfrm_l@Base 15 + ___interceptor_swapcontext@Base 15 + ___interceptor_sysinfo@Base 15 + ___interceptor_tcgetattr@Base 15 + ___interceptor_tempnam@Base 15 + ___interceptor_textdomain@Base 15 + ___interceptor_time@Base 15 + ___interceptor_timerfd_gettime@Base 15 + ___interceptor_timerfd_settime@Base 15 + ___interceptor_times@Base 15 + ___interceptor_tmpnam@Base 15 + ___interceptor_tmpnam_r@Base 15 + ___interceptor_tsearch@Base 15 + ___interceptor_ttyname@Base 15 + ___interceptor_ttyname_r@Base 15 + ___interceptor_uname@Base 15 + ___interceptor_valloc@Base 15 + ___interceptor_vasprintf@Base 15 + ___interceptor_vfork@Base 15 + ___interceptor_vfprintf@Base 15 + ___interceptor_vfscanf@Base 15 + ___interceptor_vprintf@Base 15 + ___interceptor_vscanf@Base 15 + ___interceptor_vsnprintf@Base 15 + ___interceptor_vsprintf@Base 15 + ___interceptor_vsscanf@Base 15 + ___interceptor_wait3@Base 15 + ___interceptor_wait4@Base 15 + ___interceptor_wait@Base 15 + ___interceptor_waitid@Base 15 + ___interceptor_waitpid@Base 15 + ___interceptor_wcrtomb@Base 15 + ___interceptor_wcscat@Base 15 + ___interceptor_wcsdup@Base 15 + ___interceptor_wcslen@Base 15 + ___interceptor_wcsncat@Base 15 + ___interceptor_wcsnlen@Base 15 + ___interceptor_wcsnrtombs@Base 15 + ___interceptor_wcsrtombs@Base 15 + ___interceptor_wcstombs@Base 15 + ___interceptor_wcsxfrm@Base 15 + ___interceptor_wcsxfrm_l@Base 15 + ___interceptor_wctomb@Base 15 + ___interceptor_wordexp@Base 15 + ___interceptor_write@Base 15 + ___interceptor_writev@Base 15 + ___interceptor_xdr_bool@Base 15 + ___interceptor_xdr_bytes@Base 15 + ___interceptor_xdr_char@Base 15 + ___interceptor_xdr_destroy@Base 15 + ___interceptor_xdr_double@Base 15 + ___interceptor_xdr_enum@Base 15 + ___interceptor_xdr_float@Base 15 + ___interceptor_xdr_hyper@Base 15 + ___interceptor_xdr_int16_t@Base 15 + ___interceptor_xdr_int32_t@Base 15 + ___interceptor_xdr_int64_t@Base 15 + ___interceptor_xdr_int8_t@Base 15 + ___interceptor_xdr_int@Base 15 + ___interceptor_xdr_long@Base 15 + ___interceptor_xdr_longlong_t@Base 15 + ___interceptor_xdr_quad_t@Base 15 + ___interceptor_xdr_short@Base 15 + ___interceptor_xdr_string@Base 15 + ___interceptor_xdr_u_char@Base 15 + ___interceptor_xdr_u_hyper@Base 15 + ___interceptor_xdr_u_int@Base 15 + ___interceptor_xdr_u_long@Base 15 + ___interceptor_xdr_u_longlong_t@Base 15 + ___interceptor_xdr_u_quad_t@Base 15 + ___interceptor_xdr_u_short@Base 15 + ___interceptor_xdr_uint16_t@Base 15 + ___interceptor_xdr_uint32_t@Base 15 + ___interceptor_xdr_uint64_t@Base 15 + ___interceptor_xdr_uint8_t@Base 15 + ___interceptor_xdrmem_create@Base 15 + ___interceptor_xdrrec_create@Base 15 + ___interceptor_xdrstdio_create@Base 15 + __asan_addr_is_in_fake_stack@Base 15 + __asan_address_is_poisoned@Base 15 + __asan_after_dynamic_init@Base 15 + __asan_alloca_poison@Base 15 + __asan_allocas_unpoison@Base 15 + __asan_backtrace_alloc@Base 15 + __asan_backtrace_close@Base 15 + __asan_backtrace_create_state@Base 15 + __asan_backtrace_dwarf_add@Base 15 + __asan_backtrace_free@Base 15 + __asan_backtrace_get_view@Base 15 + __asan_backtrace_initialize@Base 15 + __asan_backtrace_open@Base 15 + __asan_backtrace_pcinfo@Base 15 + __asan_backtrace_qsort@Base 15 + __asan_backtrace_release_view@Base 15 + __asan_backtrace_syminfo@Base 15 + __asan_backtrace_syminfo_to_full_callback@Base 15 + __asan_backtrace_syminfo_to_full_error_callback@Base 15 + __asan_backtrace_uncompress_lzma@Base 15 + __asan_backtrace_uncompress_zdebug@Base 15 + __asan_backtrace_uncompress_zstd@Base 15 + __asan_backtrace_vector_finish@Base 15 + __asan_backtrace_vector_grow@Base 15 + __asan_backtrace_vector_release@Base 15 + __asan_before_dynamic_init@Base 15 + __asan_cplus_demangle_builtin_types@Base 15 + __asan_cplus_demangle_fill_ctor@Base 15 + __asan_cplus_demangle_fill_dtor@Base 15 + __asan_cplus_demangle_fill_extended_operator@Base 15 + __asan_cplus_demangle_fill_name@Base 15 + __asan_cplus_demangle_init_info@Base 15 + __asan_cplus_demangle_mangled_name@Base 15 + __asan_cplus_demangle_operators@Base 15 + __asan_cplus_demangle_print@Base 15 + __asan_cplus_demangle_print_callback@Base 15 + __asan_cplus_demangle_type@Base 15 + __asan_cplus_demangle_v3@Base 15 + __asan_cplus_demangle_v3_callback@Base 15 + __asan_default_options@Base 15 + __asan_default_suppressions@Base 15 + __asan_describe_address@Base 15 + __asan_exp_load16@Base 15 + __asan_exp_load1@Base 15 + __asan_exp_load2@Base 15 + __asan_exp_load4@Base 15 + __asan_exp_load8@Base 15 + __asan_exp_loadN@Base 15 + __asan_exp_store16@Base 15 + __asan_exp_store1@Base 15 + __asan_exp_store2@Base 15 + __asan_exp_store4@Base 15 + __asan_exp_store8@Base 15 + __asan_exp_storeN@Base 15 + __asan_get_alloc_stack@Base 15 + __asan_get_current_fake_stack@Base 15 + __asan_get_free_stack@Base 15 + __asan_get_report_access_size@Base 15 + __asan_get_report_access_type@Base 15 + __asan_get_report_address@Base 15 + __asan_get_report_bp@Base 15 + __asan_get_report_description@Base 15 + __asan_get_report_pc@Base 15 + __asan_get_report_sp@Base 15 + __asan_get_shadow_mapping@Base 15 + __asan_handle_no_return@Base 15 + __asan_handle_vfork@Base 15 + __asan_init@Base 15 + __asan_internal_memcmp@Base 15 + __asan_internal_memcpy@Base 15 + __asan_internal_memset@Base 15 + __asan_internal_strcmp@Base 15 + __asan_internal_strlen@Base 15 + __asan_internal_strncmp@Base 15 + __asan_internal_strnlen@Base 15 + __asan_is_gnu_v3_mangled_ctor@Base 15 + __asan_is_gnu_v3_mangled_dtor@Base 15 + __asan_java_demangle_v3@Base 15 + __asan_java_demangle_v3_callback@Base 15 + __asan_load16@Base 15 + __asan_load16_noabort@Base 15 + __asan_load1@Base 15 + __asan_load1_noabort@Base 15 + __asan_load2@Base 15 + __asan_load2_noabort@Base 15 + __asan_load4@Base 15 + __asan_load4_noabort@Base 15 + __asan_load8@Base 15 + __asan_load8_noabort@Base 15 + __asan_loadN@Base 15 + __asan_loadN_noabort@Base 15 + __asan_load_cxx_array_cookie@Base 15 + __asan_locate_address@Base 15 + __asan_memcpy@Base 15 + __asan_memmove@Base 15 + __asan_memset@Base 15 + __asan_on_error@Base 15 + __asan_option_detect_stack_use_after_return@Base 15 + __asan_poison_cxx_array_cookie@Base 15 + __asan_poison_intra_object_redzone@Base 15 + __asan_poison_memory_region@Base 15 + __asan_poison_stack_memory@Base 15 + __asan_print_accumulated_stats@Base 15 + __asan_region_is_poisoned@Base 15 + __asan_register_elf_globals@Base 15 + __asan_register_globals@Base 15 + __asan_register_image_globals@Base 15 + __asan_report_error@Base 15 + __asan_report_exp_load16@Base 15 + __asan_report_exp_load1@Base 15 + __asan_report_exp_load2@Base 15 + __asan_report_exp_load4@Base 15 + __asan_report_exp_load8@Base 15 + __asan_report_exp_load_n@Base 15 + __asan_report_exp_store16@Base 15 + __asan_report_exp_store1@Base 15 + __asan_report_exp_store2@Base 15 + __asan_report_exp_store4@Base 15 + __asan_report_exp_store8@Base 15 + __asan_report_exp_store_n@Base 15 + __asan_report_load16@Base 15 + __asan_report_load16_noabort@Base 15 + __asan_report_load1@Base 15 + __asan_report_load1_noabort@Base 15 + __asan_report_load2@Base 15 + __asan_report_load2_noabort@Base 15 + __asan_report_load4@Base 15 + __asan_report_load4_noabort@Base 15 + __asan_report_load8@Base 15 + __asan_report_load8_noabort@Base 15 + __asan_report_load_n@Base 15 + __asan_report_load_n_noabort@Base 15 + __asan_report_present@Base 15 + __asan_report_store16@Base 15 + __asan_report_store16_noabort@Base 15 + __asan_report_store1@Base 15 + __asan_report_store1_noabort@Base 15 + __asan_report_store2@Base 15 + __asan_report_store2_noabort@Base 15 + __asan_report_store4@Base 15 + __asan_report_store4_noabort@Base 15 + __asan_report_store8@Base 15 + __asan_report_store8_noabort@Base 15 + __asan_report_store_n@Base 15 + __asan_report_store_n_noabort@Base 15 + __asan_rt_version@Base 15 + __asan_set_death_callback@Base 15 + __asan_set_error_report_callback@Base 15 + __asan_set_shadow_00@Base 15 + __asan_set_shadow_01@Base 15 + __asan_set_shadow_02@Base 15 + __asan_set_shadow_03@Base 15 + __asan_set_shadow_04@Base 15 + __asan_set_shadow_05@Base 15 + __asan_set_shadow_06@Base 15 + __asan_set_shadow_07@Base 15 + __asan_set_shadow_f1@Base 15 + __asan_set_shadow_f2@Base 15 + __asan_set_shadow_f3@Base 15 + __asan_set_shadow_f5@Base 15 + __asan_set_shadow_f8@Base 15 + __asan_shadow_memory_dynamic_address@Base 15 + __asan_stack_free_0@Base 15 + __asan_stack_free_10@Base 15 + __asan_stack_free_1@Base 15 + __asan_stack_free_2@Base 15 + __asan_stack_free_3@Base 15 + __asan_stack_free_4@Base 15 + __asan_stack_free_5@Base 15 + __asan_stack_free_6@Base 15 + __asan_stack_free_7@Base 15 + __asan_stack_free_8@Base 15 + __asan_stack_free_9@Base 15 + __asan_stack_malloc_0@Base 15 + __asan_stack_malloc_10@Base 15 + __asan_stack_malloc_1@Base 15 + __asan_stack_malloc_2@Base 15 + __asan_stack_malloc_3@Base 15 + __asan_stack_malloc_4@Base 15 + __asan_stack_malloc_5@Base 15 + __asan_stack_malloc_6@Base 15 + __asan_stack_malloc_7@Base 15 + __asan_stack_malloc_8@Base 15 + __asan_stack_malloc_9@Base 15 + __asan_stack_malloc_always_0@Base 15 + __asan_stack_malloc_always_10@Base 15 + __asan_stack_malloc_always_1@Base 15 + __asan_stack_malloc_always_2@Base 15 + __asan_stack_malloc_always_3@Base 15 + __asan_stack_malloc_always_4@Base 15 + __asan_stack_malloc_always_5@Base 15 + __asan_stack_malloc_always_6@Base 15 + __asan_stack_malloc_always_7@Base 15 + __asan_stack_malloc_always_8@Base 15 + __asan_stack_malloc_always_9@Base 15 + __asan_store16@Base 15 + __asan_store16_noabort@Base 15 + __asan_store1@Base 15 + __asan_store1_noabort@Base 15 + __asan_store2@Base 15 + __asan_store2_noabort@Base 15 + __asan_store4@Base 15 + __asan_store4_noabort@Base 15 + __asan_store8@Base 15 + __asan_store8_noabort@Base 15 + __asan_storeN@Base 15 + __asan_storeN_noabort@Base 15 + __asan_test_only_reported_buggy_pointer@Base 15 + __asan_unpoison_intra_object_redzone@Base 15 + __asan_unpoison_memory_region@Base 15 + __asan_unpoison_stack_memory@Base 15 + __asan_unregister_elf_globals@Base 15 + __asan_unregister_globals@Base 15 + __asan_unregister_image_globals@Base 15 + __asan_update_allocation_context@Base 15 + __asan_version_mismatch_check_v8@Base 15 + __b64_ntop@Base 15 + __b64_pton@Base 15 + __bzero@Base 15 + __cxa_atexit@Base 15 + __cxa_throw@Base 15 + __fprintf_chk@Base 15 + __getdelim@Base 15 + __interceptor__Unwind_RaiseException@Base 15 + __interceptor___b64_ntop@Base 15 + __interceptor___b64_pton@Base 15 + __interceptor___bzero@Base 15 + __interceptor___cxa_atexit@Base 15 + __interceptor___cxa_throw@Base 15 + __interceptor___fprintf_chk@Base 15 + __interceptor___getdelim@Base 15 + __interceptor___isoc23_fscanf@Base 15 + __interceptor___isoc23_scanf@Base 15 + __interceptor___isoc23_sscanf@Base 15 + __interceptor___isoc23_strtoimax@Base 15 + __interceptor___isoc23_strtol@Base 15 + __interceptor___isoc23_strtoll@Base 15 + __interceptor___isoc23_strtoumax@Base 15 + __interceptor___isoc23_vfscanf@Base 15 + __interceptor___isoc23_vscanf@Base 15 + __interceptor___isoc23_vsscanf@Base 15 + __interceptor___isoc99_fprintf@Base 15 + __interceptor___isoc99_fscanf@Base 15 + __interceptor___isoc99_printf@Base 15 + __interceptor___isoc99_scanf@Base 15 + __interceptor___isoc99_snprintf@Base 15 + __interceptor___isoc99_sprintf@Base 15 + __interceptor___isoc99_sscanf@Base 15 + __interceptor___isoc99_vfprintf@Base 15 + __interceptor___isoc99_vfscanf@Base 15 + __interceptor___isoc99_vprintf@Base 15 + __interceptor___isoc99_vscanf@Base 15 + __interceptor___isoc99_vsnprintf@Base 15 + __interceptor___isoc99_vsprintf@Base 15 + __interceptor___isoc99_vsscanf@Base 15 + __interceptor___libc_memalign@Base 15 + __interceptor___longjmp_chk@Base 15 + __interceptor___lxstat64@Base 15 + __interceptor___lxstat@Base 15 + __interceptor___overflow@Base 15 + __interceptor___snprintf_chk@Base 15 + __interceptor___sprintf_chk@Base 15 + __interceptor___strdup@Base 15 + __interceptor___strndup@Base 15 + __interceptor___strxfrm_l@Base 15 + __interceptor___tls_get_addr@Base 15 + __interceptor___uflow@Base 15 + __interceptor___underflow@Base 15 + __interceptor___vsnprintf_chk@Base 15 + __interceptor___vsprintf_chk@Base 15 + __interceptor___wcsxfrm_l@Base 15 + __interceptor___woverflow@Base 15 + __interceptor___wuflow@Base 15 + __interceptor___wunderflow@Base 15 + __interceptor___xpg_strerror_r@Base 15 + __interceptor___xstat64@Base 15 + __interceptor___xstat@Base 15 + __interceptor__exit@Base 15 + __interceptor__longjmp@Base 15 + __interceptor__obstack_begin@Base 15 + __interceptor__obstack_begin_1@Base 15 + __interceptor__obstack_newchunk@Base 15 + __interceptor_accept4@Base 15 + __interceptor_accept@Base 15 + __interceptor_aligned_alloc@Base 15 + __interceptor_argp_parse@Base 15 + __interceptor_asctime@Base 15 + __interceptor_asctime_r@Base 15 + __interceptor_asprintf@Base 15 + __interceptor_atoi@Base 15 + __interceptor_atol@Base 15 + __interceptor_atoll@Base 15 + __interceptor_backtrace@Base 15 + __interceptor_backtrace_symbols@Base 15 + __interceptor_bcmp@Base 15 + __interceptor_bsearch@Base 15 + __interceptor_bzero@Base 15 + __interceptor_calloc@Base 15 + __interceptor_canonicalize_file_name@Base 15 + __interceptor_capget@Base 15 + __interceptor_capset@Base 15 + __interceptor_cfree@Base 15 + __interceptor_clock_getcpuclockid@Base 15 + __interceptor_clock_getres@Base 15 + __interceptor_clock_gettime@Base 15 + __interceptor_clock_settime@Base 15 + __interceptor_confstr@Base 15 + __interceptor_ctermid@Base 15 + __interceptor_ctime@Base 15 + __interceptor_ctime_r@Base 15 + __interceptor_dlclose@Base 15 + __interceptor_dlopen@Base 15 + __interceptor_dn_comp@Base 15 + __interceptor_dn_expand@Base 15 + __interceptor_drand48_r@Base 15 + __interceptor_endgrent@Base 15 + __interceptor_endpwent@Base 15 + __interceptor_ether_aton@Base 15 + __interceptor_ether_aton_r@Base 15 + __interceptor_ether_hostton@Base 15 + __interceptor_ether_line@Base 15 + __interceptor_ether_ntoa@Base 15 + __interceptor_ether_ntoa_r@Base 15 + __interceptor_ether_ntohost@Base 15 + __interceptor_eventfd_read@Base 15 + __interceptor_eventfd_write@Base 15 + __interceptor_fclose@Base 15 + __interceptor_fdopen@Base 15 + __interceptor_fflush@Base 15 + __interceptor_fgetgrent@Base 15 + __interceptor_fgetgrent_r@Base 15 + __interceptor_fgetpwent@Base 15 + __interceptor_fgetpwent_r@Base 15 + __interceptor_fgets@Base 15 + __interceptor_fgetxattr@Base 15 + __interceptor_flistxattr@Base 15 + __interceptor_fmemopen@Base 15 + __interceptor_fopen64@Base 15 + __interceptor_fopen@Base 15 + __interceptor_fopencookie@Base 15 + __interceptor_fprintf@Base 15 + __interceptor_fputs@Base 15 + __interceptor_fread@Base 15 + __interceptor_free@Base 15 + __interceptor_freopen64@Base 15 + __interceptor_freopen@Base 15 + __interceptor_frexp@Base 15 + __interceptor_frexpf@Base 15 + __interceptor_frexpl@Base 15 + __interceptor_fscanf@Base 15 + __interceptor_fstatfs64@Base 15 + __interceptor_fstatfs@Base 15 + __interceptor_fstatvfs64@Base 15 + __interceptor_fstatvfs@Base 15 + __interceptor_ftime@Base 15 + __interceptor_fwrite@Base 15 + __interceptor_get_current_dir_name@Base 15 + __interceptor_getaddrinfo@Base 15 + __interceptor_getcwd@Base 15 + __interceptor_getdelim@Base 15 + __interceptor_getentropy@Base 15 + __interceptor_getgrent@Base 15 + __interceptor_getgrent_r@Base 15 + __interceptor_getgrgid@Base 15 + __interceptor_getgrgid_r@Base 15 + __interceptor_getgrnam@Base 15 + __interceptor_getgrnam_r@Base 15 + __interceptor_getgrouplist@Base 15 + __interceptor_getgroups@Base 15 + __interceptor_gethostbyaddr@Base 15 + __interceptor_gethostbyaddr_r@Base 15 + __interceptor_gethostbyname2@Base 15 + __interceptor_gethostbyname2_r@Base 15 + __interceptor_gethostbyname@Base 15 + __interceptor_gethostbyname_r@Base 15 + __interceptor_gethostent@Base 15 + __interceptor_gethostent_r@Base 15 + __interceptor_getifaddrs@Base 15 + __interceptor_getitimer@Base 15 + __interceptor_getline@Base 15 + __interceptor_getloadavg@Base 15 + __interceptor_getmntent@Base 15 + __interceptor_getmntent_r@Base 15 + __interceptor_getnameinfo@Base 15 + __interceptor_getnetbyaddr@Base 15 + __interceptor_getnetbyname@Base 15 + __interceptor_getnetent@Base 15 + __interceptor_getpass@Base 15 + __interceptor_getpeername@Base 15 + __interceptor_getprotobyname@Base 15 + __interceptor_getprotobyname_r@Base 15 + __interceptor_getprotobynumber@Base 15 + __interceptor_getprotobynumber_r@Base 15 + __interceptor_getprotoent@Base 15 + __interceptor_getprotoent_r@Base 15 + __interceptor_getpwent@Base 15 + __interceptor_getpwent_r@Base 15 + __interceptor_getpwnam@Base 15 + __interceptor_getpwnam_r@Base 15 + __interceptor_getpwuid@Base 15 + __interceptor_getpwuid_r@Base 15 + __interceptor_getrandom@Base 15 + __interceptor_getresgid@Base 15 + __interceptor_getresuid@Base 15 + __interceptor_getsockname@Base 15 + __interceptor_getsockopt@Base 15 + __interceptor_getusershell@Base 15 + __interceptor_getutent@Base 15 + __interceptor_getutid@Base 15 + __interceptor_getutline@Base 15 + __interceptor_getutxent@Base 15 + __interceptor_getutxid@Base 15 + __interceptor_getutxline@Base 15 + __interceptor_getxattr@Base 15 + __interceptor_glob64@Base 15 + __interceptor_glob@Base 15 + __interceptor_gmtime@Base 15 + __interceptor_gmtime_r@Base 15 + __interceptor_iconv@Base 15 + __interceptor_if_indextoname@Base 15 + __interceptor_if_nametoindex@Base 15 + __interceptor_index@Base 15 + __interceptor_inet_aton@Base 15 + __interceptor_inet_ntop@Base 15 + __interceptor_inet_pton@Base 15 + __interceptor_initgroups@Base 15 + __interceptor_ioctl@Base 15 + __interceptor_lgamma@Base 15 + __interceptor_lgamma_r@Base 15 + __interceptor_lgammaf@Base 15 + __interceptor_lgammaf_r@Base 15 + __interceptor_lgammal@Base 15 + __interceptor_lgammal_r@Base 15 + __interceptor_lgetxattr@Base 15 + __interceptor_listxattr@Base 15 + __interceptor_llistxattr@Base 15 + __interceptor_localtime@Base 15 + __interceptor_localtime_r@Base 15 + __interceptor_longjmp@Base 15 + __interceptor_lrand48_r@Base 15 + __interceptor_lstat64@Base 15 + __interceptor_lstat@Base 15 + __interceptor_makecontext@Base 15 + __interceptor_mallinfo@Base 15 + __interceptor_malloc@Base 15 + __interceptor_malloc_stats@Base 15 + __interceptor_malloc_usable_size@Base 15 + __interceptor_mallopt@Base 15 + __interceptor_mbsnrtowcs@Base 15 + __interceptor_mbsrtowcs@Base 15 + __interceptor_mbstowcs@Base 15 + __interceptor_mcheck@Base 15 + __interceptor_mcheck_pedantic@Base 15 + __interceptor_memalign@Base 15 + __interceptor_memchr@Base 15 + __interceptor_memcmp@Base 15 + __interceptor_memcpy@Base 15 + __interceptor_memmem@Base 15 + __interceptor_memmove@Base 15 + __interceptor_memrchr@Base 15 + __interceptor_memset@Base 15 + __interceptor_mincore@Base 15 + __interceptor_mktime@Base 15 + __interceptor_mlock@Base 15 + __interceptor_mlockall@Base 15 + __interceptor_mmap64@Base 15 + __interceptor_mmap@Base 15 + __interceptor_modf@Base 15 + __interceptor_modff@Base 15 + __interceptor_modfl@Base 15 + __interceptor_mprobe@Base 15 + __interceptor_mprotect@Base 15 + __interceptor_msgrcv@Base 15 + __interceptor_msgsnd@Base 15 + __interceptor_munlock@Base 15 + __interceptor_munlockall@Base 15 + __interceptor_munmap@Base 15 + __interceptor_name_to_handle_at@Base 15 + __interceptor_open_by_handle_at@Base 15 + __interceptor_open_memstream@Base 15 + __interceptor_open_wmemstream@Base 15 + __interceptor_opendir@Base 15 + __interceptor_pclose@Base 15 + __interceptor_poll@Base 15 + __interceptor_popen@Base 15 + __interceptor_posix_memalign@Base 15 + __interceptor_posix_spawn@Base 15 + __interceptor_posix_spawnp@Base 15 + __interceptor_ppoll@Base 15 + __interceptor_prctl@Base 15 + __interceptor_pread64@Base 15 + __interceptor_pread@Base 15 + __interceptor_preadv2@Base 15 + __interceptor_preadv64@Base 15 + __interceptor_preadv@Base 15 + __interceptor_printf@Base 15 + __interceptor_process_vm_readv@Base 15 + __interceptor_process_vm_writev@Base 15 + __interceptor_pthread_attr_getaffinity_np@Base 15 + __interceptor_pthread_attr_getdetachstate@Base 15 + __interceptor_pthread_attr_getguardsize@Base 15 + __interceptor_pthread_attr_getinheritsched@Base 15 + __interceptor_pthread_attr_getschedparam@Base 15 + __interceptor_pthread_attr_getschedpolicy@Base 15 + __interceptor_pthread_attr_getscope@Base 15 + __interceptor_pthread_attr_getstack@Base 15 + __interceptor_pthread_attr_getstacksize@Base 15 + __interceptor_pthread_barrierattr_getpshared@Base 15 + __interceptor_pthread_condattr_getclock@Base 15 + __interceptor_pthread_condattr_getpshared@Base 15 + __interceptor_pthread_create@Base 15 + __interceptor_pthread_detach@Base 15 + __interceptor_pthread_exit@Base 15 + __interceptor_pthread_getaffinity_np@Base 15 + __interceptor_pthread_getcpuclockid@Base 15 + __interceptor_pthread_getname_np@Base 15 + __interceptor_pthread_getschedparam@Base 15 + __interceptor_pthread_join@Base 15 + __interceptor_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_pthread_mutexattr_getprotocol@Base 15 + __interceptor_pthread_mutexattr_getpshared@Base 15 + __interceptor_pthread_mutexattr_getrobust@Base 15 + __interceptor_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_pthread_mutexattr_gettype@Base 15 + __interceptor_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_pthread_rwlockattr_getpshared@Base 15 + __interceptor_pthread_setcancelstate@Base 15 + __interceptor_pthread_setcanceltype@Base 15 + __interceptor_pthread_setname_np@Base 15 + __interceptor_pthread_sigmask@Base 15 + __interceptor_pthread_timedjoin_np@Base 15 + __interceptor_pthread_tryjoin_np@Base 15 + __interceptor_ptrace@Base 15 + __interceptor_ptsname@Base 15 + __interceptor_ptsname_r@Base 15 + __interceptor_puts@Base 15 + __interceptor_pututxline@Base 15 + __interceptor_pvalloc@Base 15 + __interceptor_pwrite64@Base 15 + __interceptor_pwrite@Base 15 + __interceptor_pwritev2@Base 15 + __interceptor_pwritev64@Base 15 + __interceptor_pwritev@Base 15 + __interceptor_qsort@Base 15 + __interceptor_qsort_r@Base 15 + __interceptor_rand_r@Base 15 + __interceptor_random_r@Base 15 + __interceptor_read@Base 15 + __interceptor_readdir64@Base 15 + __interceptor_readdir64_r@Base 15 + __interceptor_readdir@Base 15 + __interceptor_readdir_r@Base 15 + __interceptor_readlink@Base 15 + __interceptor_readlinkat@Base 15 + __interceptor_readv@Base 15 + __interceptor_realloc@Base 15 + __interceptor_reallocarray@Base 15 + __interceptor_realpath@Base 15 + __interceptor_recv@Base 15 + __interceptor_recvfrom@Base 15 + __interceptor_recvmmsg@Base 15 + __interceptor_recvmsg@Base 15 + __interceptor_regcomp@Base 15 + __interceptor_regerror@Base 15 + __interceptor_regexec@Base 15 + __interceptor_regfree@Base 15 + __interceptor_remquo@Base 15 + __interceptor_remquof@Base 15 + __interceptor_remquol@Base 15 + __interceptor_scandir64@Base 15 + __interceptor_scandir@Base 15 + __interceptor_scanf@Base 15 + __interceptor_sched_getaffinity@Base 15 + __interceptor_sched_getparam@Base 15 + __interceptor_sem_destroy@Base 15 + __interceptor_sem_getvalue@Base 15 + __interceptor_sem_init@Base 15 + __interceptor_sem_open@Base 15 + __interceptor_sem_post@Base 15 + __interceptor_sem_timedwait@Base 15 + __interceptor_sem_trywait@Base 15 + __interceptor_sem_unlink@Base 15 + __interceptor_sem_wait@Base 15 + __interceptor_send@Base 15 + __interceptor_sendmmsg@Base 15 + __interceptor_sendmsg@Base 15 + __interceptor_sendto@Base 15 + __interceptor_setbuf@Base 15 + __interceptor_setbuffer@Base 15 + __interceptor_setgrent@Base 15 + __interceptor_setitimer@Base 15 + __interceptor_setlinebuf@Base 15 + __interceptor_setlocale@Base 15 + __interceptor_setpwent@Base 15 + __interceptor_setvbuf@Base 15 + __interceptor_sigaction@Base 15 + __interceptor_sigaltstack@Base 15 + __interceptor_sigandset@Base 15 + __interceptor_sigemptyset@Base 15 + __interceptor_sigfillset@Base 15 + __interceptor_siglongjmp@Base 15 + __interceptor_signal@Base 15 + __interceptor_sigorset@Base 15 + __interceptor_sigpending@Base 15 + __interceptor_sigprocmask@Base 15 + __interceptor_sigtimedwait@Base 15 + __interceptor_sigwait@Base 15 + __interceptor_sigwaitinfo@Base 15 + __interceptor_sincos@Base 15 + __interceptor_sincosf@Base 15 + __interceptor_sincosl@Base 15 + __interceptor_snprintf@Base 15 + __interceptor_sprintf@Base 15 + __interceptor_sscanf@Base 15 + __interceptor_stat64@Base 15 + __interceptor_stat@Base 15 + __interceptor_statfs64@Base 15 + __interceptor_statfs@Base 15 + __interceptor_statvfs64@Base 15 + __interceptor_statvfs@Base 15 + __interceptor_strcasecmp@Base 15 + __interceptor_strcasestr@Base 15 + __interceptor_strcat@Base 15 + __interceptor_strchr@Base 15 + __interceptor_strchrnul@Base 15 + __interceptor_strcmp@Base 15 + __interceptor_strcpy@Base 15 + __interceptor_strcspn@Base 15 + __interceptor_strdup@Base 15 + __interceptor_strerror@Base 15 + __interceptor_strerror_r@Base 15 + __interceptor_strlen@Base 15 + __interceptor_strncasecmp@Base 15 + __interceptor_strncat@Base 15 + __interceptor_strncmp@Base 15 + __interceptor_strncpy@Base 15 + __interceptor_strndup@Base 15 + __interceptor_strnlen@Base 15 + __interceptor_strpbrk@Base 15 + __interceptor_strptime@Base 15 + __interceptor_strrchr@Base 15 + __interceptor_strspn@Base 15 + __interceptor_strstr@Base 15 + __interceptor_strtoimax@Base 15 + __interceptor_strtok@Base 15 + __interceptor_strtol@Base 15 + __interceptor_strtoll@Base 15 + __interceptor_strtoumax@Base 15 + __interceptor_strxfrm@Base 15 + __interceptor_strxfrm_l@Base 15 + __interceptor_swapcontext@Base 15 + __interceptor_sysinfo@Base 15 + __interceptor_tcgetattr@Base 15 + __interceptor_tempnam@Base 15 + __interceptor_textdomain@Base 15 + __interceptor_time@Base 15 + __interceptor_timerfd_gettime@Base 15 + __interceptor_timerfd_settime@Base 15 + __interceptor_times@Base 15 + __interceptor_tmpnam@Base 15 + __interceptor_tmpnam_r@Base 15 + __interceptor_trampoline__Unwind_RaiseException@Base 15 + __interceptor_trampoline___b64_ntop@Base 15 + __interceptor_trampoline___b64_pton@Base 15 + __interceptor_trampoline___bzero@Base 15 + __interceptor_trampoline___cxa_atexit@Base 15 + __interceptor_trampoline___cxa_throw@Base 15 + __interceptor_trampoline___fprintf_chk@Base 15 + __interceptor_trampoline___getdelim@Base 15 + __interceptor_trampoline___isoc23_fscanf@Base 15 + __interceptor_trampoline___isoc23_scanf@Base 15 + __interceptor_trampoline___isoc23_sscanf@Base 15 + __interceptor_trampoline___isoc23_strtoimax@Base 15 + __interceptor_trampoline___isoc23_strtol@Base 15 + __interceptor_trampoline___isoc23_strtoll@Base 15 + __interceptor_trampoline___isoc23_strtoumax@Base 15 + __interceptor_trampoline___isoc23_vfscanf@Base 15 + __interceptor_trampoline___isoc23_vscanf@Base 15 + __interceptor_trampoline___isoc23_vsscanf@Base 15 + __interceptor_trampoline___isoc99_fprintf@Base 15 + __interceptor_trampoline___isoc99_fscanf@Base 15 + __interceptor_trampoline___isoc99_printf@Base 15 + __interceptor_trampoline___isoc99_scanf@Base 15 + __interceptor_trampoline___isoc99_snprintf@Base 15 + __interceptor_trampoline___isoc99_sprintf@Base 15 + __interceptor_trampoline___isoc99_sscanf@Base 15 + __interceptor_trampoline___isoc99_vfprintf@Base 15 + __interceptor_trampoline___isoc99_vfscanf@Base 15 + __interceptor_trampoline___isoc99_vprintf@Base 15 + __interceptor_trampoline___isoc99_vscanf@Base 15 + __interceptor_trampoline___isoc99_vsnprintf@Base 15 + __interceptor_trampoline___isoc99_vsprintf@Base 15 + __interceptor_trampoline___isoc99_vsscanf@Base 15 + __interceptor_trampoline___libc_memalign@Base 15 + __interceptor_trampoline___longjmp_chk@Base 15 + __interceptor_trampoline___lxstat64@Base 15 + __interceptor_trampoline___lxstat@Base 15 + __interceptor_trampoline___overflow@Base 15 + __interceptor_trampoline___snprintf_chk@Base 15 + __interceptor_trampoline___sprintf_chk@Base 15 + __interceptor_trampoline___strdup@Base 15 + __interceptor_trampoline___strndup@Base 15 + __interceptor_trampoline___strxfrm_l@Base 15 + __interceptor_trampoline___tls_get_addr@Base 15 + __interceptor_trampoline___uflow@Base 15 + __interceptor_trampoline___underflow@Base 15 + __interceptor_trampoline___vsnprintf_chk@Base 15 + __interceptor_trampoline___vsprintf_chk@Base 15 + __interceptor_trampoline___wcsxfrm_l@Base 15 + __interceptor_trampoline___woverflow@Base 15 + __interceptor_trampoline___wuflow@Base 15 + __interceptor_trampoline___wunderflow@Base 15 + __interceptor_trampoline___xpg_strerror_r@Base 15 + __interceptor_trampoline___xstat64@Base 15 + __interceptor_trampoline___xstat@Base 15 + __interceptor_trampoline__exit@Base 15 + __interceptor_trampoline__longjmp@Base 15 + __interceptor_trampoline__obstack_begin@Base 15 + __interceptor_trampoline__obstack_begin_1@Base 15 + __interceptor_trampoline__obstack_newchunk@Base 15 + __interceptor_trampoline_accept4@Base 15 + __interceptor_trampoline_accept@Base 15 + __interceptor_trampoline_aligned_alloc@Base 15 + __interceptor_trampoline_argp_parse@Base 15 + __interceptor_trampoline_asctime@Base 15 + __interceptor_trampoline_asctime_r@Base 15 + __interceptor_trampoline_asprintf@Base 15 + __interceptor_trampoline_atoi@Base 15 + __interceptor_trampoline_atol@Base 15 + __interceptor_trampoline_atoll@Base 15 + __interceptor_trampoline_backtrace@Base 15 + __interceptor_trampoline_backtrace_symbols@Base 15 + __interceptor_trampoline_bcmp@Base 15 + __interceptor_trampoline_bsearch@Base 15 + __interceptor_trampoline_bzero@Base 15 + __interceptor_trampoline_calloc@Base 15 + __interceptor_trampoline_canonicalize_file_name@Base 15 + __interceptor_trampoline_capget@Base 15 + __interceptor_trampoline_capset@Base 15 + __interceptor_trampoline_cfree@Base 15 + __interceptor_trampoline_clock_getcpuclockid@Base 15 + __interceptor_trampoline_clock_getres@Base 15 + __interceptor_trampoline_clock_gettime@Base 15 + __interceptor_trampoline_clock_settime@Base 15 + __interceptor_trampoline_confstr@Base 15 + __interceptor_trampoline_ctermid@Base 15 + __interceptor_trampoline_ctime@Base 15 + __interceptor_trampoline_ctime_r@Base 15 + __interceptor_trampoline_dlclose@Base 15 + __interceptor_trampoline_dlopen@Base 15 + __interceptor_trampoline_dn_comp@Base 15 + __interceptor_trampoline_dn_expand@Base 15 + __interceptor_trampoline_drand48_r@Base 15 + __interceptor_trampoline_endgrent@Base 15 + __interceptor_trampoline_endpwent@Base 15 + __interceptor_trampoline_ether_aton@Base 15 + __interceptor_trampoline_ether_aton_r@Base 15 + __interceptor_trampoline_ether_hostton@Base 15 + __interceptor_trampoline_ether_line@Base 15 + __interceptor_trampoline_ether_ntoa@Base 15 + __interceptor_trampoline_ether_ntoa_r@Base 15 + __interceptor_trampoline_ether_ntohost@Base 15 + __interceptor_trampoline_eventfd_read@Base 15 + __interceptor_trampoline_eventfd_write@Base 15 + __interceptor_trampoline_fclose@Base 15 + __interceptor_trampoline_fdopen@Base 15 + __interceptor_trampoline_fflush@Base 15 + __interceptor_trampoline_fgetgrent@Base 15 + __interceptor_trampoline_fgetgrent_r@Base 15 + __interceptor_trampoline_fgetpwent@Base 15 + __interceptor_trampoline_fgetpwent_r@Base 15 + __interceptor_trampoline_fgets@Base 15 + __interceptor_trampoline_fgetxattr@Base 15 + __interceptor_trampoline_flistxattr@Base 15 + __interceptor_trampoline_fmemopen@Base 15 + __interceptor_trampoline_fopen64@Base 15 + __interceptor_trampoline_fopen@Base 15 + __interceptor_trampoline_fopencookie@Base 15 + __interceptor_trampoline_fprintf@Base 15 + __interceptor_trampoline_fputs@Base 15 + __interceptor_trampoline_fread@Base 15 + __interceptor_trampoline_free@Base 15 + __interceptor_trampoline_freopen64@Base 15 + __interceptor_trampoline_freopen@Base 15 + __interceptor_trampoline_frexp@Base 15 + __interceptor_trampoline_frexpf@Base 15 + __interceptor_trampoline_frexpl@Base 15 + __interceptor_trampoline_fscanf@Base 15 + __interceptor_trampoline_fstatfs64@Base 15 + __interceptor_trampoline_fstatfs@Base 15 + __interceptor_trampoline_fstatvfs64@Base 15 + __interceptor_trampoline_fstatvfs@Base 15 + __interceptor_trampoline_ftime@Base 15 + __interceptor_trampoline_fwrite@Base 15 + __interceptor_trampoline_get_current_dir_name@Base 15 + __interceptor_trampoline_getaddrinfo@Base 15 + __interceptor_trampoline_getcwd@Base 15 + __interceptor_trampoline_getdelim@Base 15 + __interceptor_trampoline_getentropy@Base 15 + __interceptor_trampoline_getgrent@Base 15 + __interceptor_trampoline_getgrent_r@Base 15 + __interceptor_trampoline_getgrgid@Base 15 + __interceptor_trampoline_getgrgid_r@Base 15 + __interceptor_trampoline_getgrnam@Base 15 + __interceptor_trampoline_getgrnam_r@Base 15 + __interceptor_trampoline_getgrouplist@Base 15 + __interceptor_trampoline_getgroups@Base 15 + __interceptor_trampoline_gethostbyaddr@Base 15 + __interceptor_trampoline_gethostbyaddr_r@Base 15 + __interceptor_trampoline_gethostbyname2@Base 15 + __interceptor_trampoline_gethostbyname2_r@Base 15 + __interceptor_trampoline_gethostbyname@Base 15 + __interceptor_trampoline_gethostbyname_r@Base 15 + __interceptor_trampoline_gethostent@Base 15 + __interceptor_trampoline_gethostent_r@Base 15 + __interceptor_trampoline_getifaddrs@Base 15 + __interceptor_trampoline_getitimer@Base 15 + __interceptor_trampoline_getline@Base 15 + __interceptor_trampoline_getloadavg@Base 15 + __interceptor_trampoline_getmntent@Base 15 + __interceptor_trampoline_getmntent_r@Base 15 + __interceptor_trampoline_getnameinfo@Base 15 + __interceptor_trampoline_getnetbyaddr@Base 15 + __interceptor_trampoline_getnetbyname@Base 15 + __interceptor_trampoline_getnetent@Base 15 + __interceptor_trampoline_getpass@Base 15 + __interceptor_trampoline_getpeername@Base 15 + __interceptor_trampoline_getprotobyname@Base 15 + __interceptor_trampoline_getprotobyname_r@Base 15 + __interceptor_trampoline_getprotobynumber@Base 15 + __interceptor_trampoline_getprotobynumber_r@Base 15 + __interceptor_trampoline_getprotoent@Base 15 + __interceptor_trampoline_getprotoent_r@Base 15 + __interceptor_trampoline_getpwent@Base 15 + __interceptor_trampoline_getpwent_r@Base 15 + __interceptor_trampoline_getpwnam@Base 15 + __interceptor_trampoline_getpwnam_r@Base 15 + __interceptor_trampoline_getpwuid@Base 15 + __interceptor_trampoline_getpwuid_r@Base 15 + __interceptor_trampoline_getrandom@Base 15 + __interceptor_trampoline_getresgid@Base 15 + __interceptor_trampoline_getresuid@Base 15 + __interceptor_trampoline_getsockname@Base 15 + __interceptor_trampoline_getsockopt@Base 15 + __interceptor_trampoline_getusershell@Base 15 + __interceptor_trampoline_getutent@Base 15 + __interceptor_trampoline_getutid@Base 15 + __interceptor_trampoline_getutline@Base 15 + __interceptor_trampoline_getutxent@Base 15 + __interceptor_trampoline_getutxid@Base 15 + __interceptor_trampoline_getutxline@Base 15 + __interceptor_trampoline_getxattr@Base 15 + __interceptor_trampoline_glob64@Base 15 + __interceptor_trampoline_glob@Base 15 + __interceptor_trampoline_gmtime@Base 15 + __interceptor_trampoline_gmtime_r@Base 15 + __interceptor_trampoline_iconv@Base 15 + __interceptor_trampoline_if_indextoname@Base 15 + __interceptor_trampoline_if_nametoindex@Base 15 + __interceptor_trampoline_index@Base 15 + __interceptor_trampoline_inet_aton@Base 15 + __interceptor_trampoline_inet_ntop@Base 15 + __interceptor_trampoline_inet_pton@Base 15 + __interceptor_trampoline_initgroups@Base 15 + __interceptor_trampoline_ioctl@Base 15 + __interceptor_trampoline_lgamma@Base 15 + __interceptor_trampoline_lgamma_r@Base 15 + __interceptor_trampoline_lgammaf@Base 15 + __interceptor_trampoline_lgammaf_r@Base 15 + __interceptor_trampoline_lgammal@Base 15 + __interceptor_trampoline_lgammal_r@Base 15 + __interceptor_trampoline_lgetxattr@Base 15 + __interceptor_trampoline_listxattr@Base 15 + __interceptor_trampoline_llistxattr@Base 15 + __interceptor_trampoline_localtime@Base 15 + __interceptor_trampoline_localtime_r@Base 15 + __interceptor_trampoline_longjmp@Base 15 + __interceptor_trampoline_lrand48_r@Base 15 + __interceptor_trampoline_lstat64@Base 15 + __interceptor_trampoline_lstat@Base 15 + __interceptor_trampoline_makecontext@Base 15 + __interceptor_trampoline_mallinfo@Base 15 + __interceptor_trampoline_malloc@Base 15 + __interceptor_trampoline_malloc_stats@Base 15 + __interceptor_trampoline_malloc_usable_size@Base 15 + __interceptor_trampoline_mallopt@Base 15 + __interceptor_trampoline_mbsnrtowcs@Base 15 + __interceptor_trampoline_mbsrtowcs@Base 15 + __interceptor_trampoline_mbstowcs@Base 15 + __interceptor_trampoline_mcheck@Base 15 + __interceptor_trampoline_mcheck_pedantic@Base 15 + __interceptor_trampoline_memalign@Base 15 + __interceptor_trampoline_memchr@Base 15 + __interceptor_trampoline_memcmp@Base 15 + __interceptor_trampoline_memcpy@Base 15 + __interceptor_trampoline_memmem@Base 15 + __interceptor_trampoline_memmove@Base 15 + __interceptor_trampoline_memrchr@Base 15 + __interceptor_trampoline_memset@Base 15 + __interceptor_trampoline_mincore@Base 15 + __interceptor_trampoline_mktime@Base 15 + __interceptor_trampoline_mlock@Base 15 + __interceptor_trampoline_mlockall@Base 15 + __interceptor_trampoline_mmap64@Base 15 + __interceptor_trampoline_mmap@Base 15 + __interceptor_trampoline_modf@Base 15 + __interceptor_trampoline_modff@Base 15 + __interceptor_trampoline_modfl@Base 15 + __interceptor_trampoline_mprobe@Base 15 + __interceptor_trampoline_mprotect@Base 15 + __interceptor_trampoline_msgrcv@Base 15 + __interceptor_trampoline_msgsnd@Base 15 + __interceptor_trampoline_munlock@Base 15 + __interceptor_trampoline_munlockall@Base 15 + __interceptor_trampoline_munmap@Base 15 + __interceptor_trampoline_name_to_handle_at@Base 15 + __interceptor_trampoline_open_by_handle_at@Base 15 + __interceptor_trampoline_open_memstream@Base 15 + __interceptor_trampoline_open_wmemstream@Base 15 + __interceptor_trampoline_opendir@Base 15 + __interceptor_trampoline_pclose@Base 15 + __interceptor_trampoline_poll@Base 15 + __interceptor_trampoline_popen@Base 15 + __interceptor_trampoline_posix_memalign@Base 15 + __interceptor_trampoline_posix_spawn@Base 15 + __interceptor_trampoline_posix_spawnp@Base 15 + __interceptor_trampoline_ppoll@Base 15 + __interceptor_trampoline_prctl@Base 15 + __interceptor_trampoline_pread64@Base 15 + __interceptor_trampoline_pread@Base 15 + __interceptor_trampoline_preadv2@Base 15 + __interceptor_trampoline_preadv64@Base 15 + __interceptor_trampoline_preadv@Base 15 + __interceptor_trampoline_printf@Base 15 + __interceptor_trampoline_process_vm_readv@Base 15 + __interceptor_trampoline_process_vm_writev@Base 15 + __interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 + __interceptor_trampoline_pthread_attr_getdetachstate@Base 15 + __interceptor_trampoline_pthread_attr_getguardsize@Base 15 + __interceptor_trampoline_pthread_attr_getinheritsched@Base 15 + __interceptor_trampoline_pthread_attr_getschedparam@Base 15 + __interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 + __interceptor_trampoline_pthread_attr_getscope@Base 15 + __interceptor_trampoline_pthread_attr_getstack@Base 15 + __interceptor_trampoline_pthread_attr_getstacksize@Base 15 + __interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 + __interceptor_trampoline_pthread_condattr_getclock@Base 15 + __interceptor_trampoline_pthread_condattr_getpshared@Base 15 + __interceptor_trampoline_pthread_create@Base 15 + __interceptor_trampoline_pthread_detach@Base 15 + __interceptor_trampoline_pthread_exit@Base 15 + __interceptor_trampoline_pthread_getaffinity_np@Base 15 + __interceptor_trampoline_pthread_getcpuclockid@Base 15 + __interceptor_trampoline_pthread_getname_np@Base 15 + __interceptor_trampoline_pthread_getschedparam@Base 15 + __interceptor_trampoline_pthread_join@Base 15 + __interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 + __interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 + __interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 + __interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 + __interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 + __interceptor_trampoline_pthread_mutexattr_gettype@Base 15 + __interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 + __interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 + __interceptor_trampoline_pthread_setcancelstate@Base 15 + __interceptor_trampoline_pthread_setcanceltype@Base 15 + __interceptor_trampoline_pthread_setname_np@Base 15 + __interceptor_trampoline_pthread_sigmask@Base 15 + __interceptor_trampoline_pthread_timedjoin_np@Base 15 + __interceptor_trampoline_pthread_tryjoin_np@Base 15 + __interceptor_trampoline_ptrace@Base 15 + __interceptor_trampoline_ptsname@Base 15 + __interceptor_trampoline_ptsname_r@Base 15 + __interceptor_trampoline_puts@Base 15 + __interceptor_trampoline_pututxline@Base 15 + __interceptor_trampoline_pvalloc@Base 15 + __interceptor_trampoline_pwrite64@Base 15 + __interceptor_trampoline_pwrite@Base 15 + __interceptor_trampoline_pwritev2@Base 15 + __interceptor_trampoline_pwritev64@Base 15 + __interceptor_trampoline_pwritev@Base 15 + __interceptor_trampoline_qsort@Base 15 + __interceptor_trampoline_qsort_r@Base 15 + __interceptor_trampoline_rand_r@Base 15 + __interceptor_trampoline_random_r@Base 15 + __interceptor_trampoline_read@Base 15 + __interceptor_trampoline_readdir64@Base 15 + __interceptor_trampoline_readdir64_r@Base 15 + __interceptor_trampoline_readdir@Base 15 + __interceptor_trampoline_readdir_r@Base 15 + __interceptor_trampoline_readlink@Base 15 + __interceptor_trampoline_readlinkat@Base 15 + __interceptor_trampoline_readv@Base 15 + __interceptor_trampoline_realloc@Base 15 + __interceptor_trampoline_reallocarray@Base 15 + __interceptor_trampoline_realpath@Base 15 + __interceptor_trampoline_recv@Base 15 + __interceptor_trampoline_recvfrom@Base 15 + __interceptor_trampoline_recvmmsg@Base 15 + __interceptor_trampoline_recvmsg@Base 15 + __interceptor_trampoline_regcomp@Base 15 + __interceptor_trampoline_regerror@Base 15 + __interceptor_trampoline_regexec@Base 15 + __interceptor_trampoline_regfree@Base 15 + __interceptor_trampoline_remquo@Base 15 + __interceptor_trampoline_remquof@Base 15 + __interceptor_trampoline_remquol@Base 15 + __interceptor_trampoline_scandir64@Base 15 + __interceptor_trampoline_scandir@Base 15 + __interceptor_trampoline_scanf@Base 15 + __interceptor_trampoline_sched_getaffinity@Base 15 + __interceptor_trampoline_sched_getparam@Base 15 + __interceptor_trampoline_sem_destroy@Base 15 + __interceptor_trampoline_sem_getvalue@Base 15 + __interceptor_trampoline_sem_init@Base 15 + __interceptor_trampoline_sem_open@Base 15 + __interceptor_trampoline_sem_post@Base 15 + __interceptor_trampoline_sem_timedwait@Base 15 + __interceptor_trampoline_sem_trywait@Base 15 + __interceptor_trampoline_sem_unlink@Base 15 + __interceptor_trampoline_sem_wait@Base 15 + __interceptor_trampoline_send@Base 15 + __interceptor_trampoline_sendmmsg@Base 15 + __interceptor_trampoline_sendmsg@Base 15 + __interceptor_trampoline_sendto@Base 15 + __interceptor_trampoline_setbuf@Base 15 + __interceptor_trampoline_setbuffer@Base 15 + __interceptor_trampoline_setgrent@Base 15 + __interceptor_trampoline_setitimer@Base 15 + __interceptor_trampoline_setlinebuf@Base 15 + __interceptor_trampoline_setlocale@Base 15 + __interceptor_trampoline_setpwent@Base 15 + __interceptor_trampoline_setvbuf@Base 15 + __interceptor_trampoline_sigaction@Base 15 + __interceptor_trampoline_sigaltstack@Base 15 + __interceptor_trampoline_sigandset@Base 15 + __interceptor_trampoline_sigemptyset@Base 15 + __interceptor_trampoline_sigfillset@Base 15 + __interceptor_trampoline_siglongjmp@Base 15 + __interceptor_trampoline_signal@Base 15 + __interceptor_trampoline_sigorset@Base 15 + __interceptor_trampoline_sigpending@Base 15 + __interceptor_trampoline_sigprocmask@Base 15 + __interceptor_trampoline_sigtimedwait@Base 15 + __interceptor_trampoline_sigwait@Base 15 + __interceptor_trampoline_sigwaitinfo@Base 15 + __interceptor_trampoline_sincos@Base 15 + __interceptor_trampoline_sincosf@Base 15 + __interceptor_trampoline_sincosl@Base 15 + __interceptor_trampoline_snprintf@Base 15 + __interceptor_trampoline_sprintf@Base 15 + __interceptor_trampoline_sscanf@Base 15 + __interceptor_trampoline_stat64@Base 15 + __interceptor_trampoline_stat@Base 15 + __interceptor_trampoline_statfs64@Base 15 + __interceptor_trampoline_statfs@Base 15 + __interceptor_trampoline_statvfs64@Base 15 + __interceptor_trampoline_statvfs@Base 15 + __interceptor_trampoline_strcasecmp@Base 15 + __interceptor_trampoline_strcasestr@Base 15 + __interceptor_trampoline_strcat@Base 15 + __interceptor_trampoline_strchr@Base 15 + __interceptor_trampoline_strchrnul@Base 15 + __interceptor_trampoline_strcmp@Base 15 + __interceptor_trampoline_strcpy@Base 15 + __interceptor_trampoline_strcspn@Base 15 + __interceptor_trampoline_strdup@Base 15 + __interceptor_trampoline_strerror@Base 15 + __interceptor_trampoline_strerror_r@Base 15 + __interceptor_trampoline_strlen@Base 15 + __interceptor_trampoline_strncasecmp@Base 15 + __interceptor_trampoline_strncat@Base 15 + __interceptor_trampoline_strncmp@Base 15 + __interceptor_trampoline_strncpy@Base 15 + __interceptor_trampoline_strndup@Base 15 + __interceptor_trampoline_strnlen@Base 15 + __interceptor_trampoline_strpbrk@Base 15 + __interceptor_trampoline_strptime@Base 15 + __interceptor_trampoline_strrchr@Base 15 + __interceptor_trampoline_strspn@Base 15 + __interceptor_trampoline_strstr@Base 15 + __interceptor_trampoline_strtoimax@Base 15 + __interceptor_trampoline_strtok@Base 15 + __interceptor_trampoline_strtol@Base 15 + __interceptor_trampoline_strtoll@Base 15 + __interceptor_trampoline_strtoumax@Base 15 + __interceptor_trampoline_strxfrm@Base 15 + __interceptor_trampoline_strxfrm_l@Base 15 + __interceptor_trampoline_swapcontext@Base 15 + __interceptor_trampoline_sysinfo@Base 15 + __interceptor_trampoline_tcgetattr@Base 15 + __interceptor_trampoline_tempnam@Base 15 + __interceptor_trampoline_textdomain@Base 15 + __interceptor_trampoline_time@Base 15 + __interceptor_trampoline_timerfd_gettime@Base 15 + __interceptor_trampoline_timerfd_settime@Base 15 + __interceptor_trampoline_times@Base 15 + __interceptor_trampoline_tmpnam@Base 15 + __interceptor_trampoline_tmpnam_r@Base 15 + __interceptor_trampoline_tsearch@Base 15 + __interceptor_trampoline_ttyname@Base 15 + __interceptor_trampoline_ttyname_r@Base 15 + __interceptor_trampoline_uname@Base 15 + __interceptor_trampoline_valloc@Base 15 + __interceptor_trampoline_vasprintf@Base 15 + __interceptor_trampoline_vfork@Base 15 + __interceptor_trampoline_vfprintf@Base 15 + __interceptor_trampoline_vfscanf@Base 15 + __interceptor_trampoline_vprintf@Base 15 + __interceptor_trampoline_vscanf@Base 15 + __interceptor_trampoline_vsnprintf@Base 15 + __interceptor_trampoline_vsprintf@Base 15 + __interceptor_trampoline_vsscanf@Base 15 + __interceptor_trampoline_wait3@Base 15 + __interceptor_trampoline_wait4@Base 15 + __interceptor_trampoline_wait@Base 15 + __interceptor_trampoline_waitid@Base 15 + __interceptor_trampoline_waitpid@Base 15 + __interceptor_trampoline_wcrtomb@Base 15 + __interceptor_trampoline_wcscat@Base 15 + __interceptor_trampoline_wcsdup@Base 15 + __interceptor_trampoline_wcslen@Base 15 + __interceptor_trampoline_wcsncat@Base 15 + __interceptor_trampoline_wcsnlen@Base 15 + __interceptor_trampoline_wcsnrtombs@Base 15 + __interceptor_trampoline_wcsrtombs@Base 15 + __interceptor_trampoline_wcstombs@Base 15 + __interceptor_trampoline_wcsxfrm@Base 15 + __interceptor_trampoline_wcsxfrm_l@Base 15 + __interceptor_trampoline_wctomb@Base 15 + __interceptor_trampoline_wordexp@Base 15 + __interceptor_trampoline_write@Base 15 + __interceptor_trampoline_writev@Base 15 + __interceptor_trampoline_xdr_bool@Base 15 + __interceptor_trampoline_xdr_bytes@Base 15 + __interceptor_trampoline_xdr_char@Base 15 + __interceptor_trampoline_xdr_destroy@Base 15 + __interceptor_trampoline_xdr_double@Base 15 + __interceptor_trampoline_xdr_enum@Base 15 + __interceptor_trampoline_xdr_float@Base 15 + __interceptor_trampoline_xdr_hyper@Base 15 + __interceptor_trampoline_xdr_int16_t@Base 15 + __interceptor_trampoline_xdr_int32_t@Base 15 + __interceptor_trampoline_xdr_int64_t@Base 15 + __interceptor_trampoline_xdr_int8_t@Base 15 + __interceptor_trampoline_xdr_int@Base 15 + __interceptor_trampoline_xdr_long@Base 15 + __interceptor_trampoline_xdr_longlong_t@Base 15 + __interceptor_trampoline_xdr_quad_t@Base 15 + __interceptor_trampoline_xdr_short@Base 15 + __interceptor_trampoline_xdr_string@Base 15 + __interceptor_trampoline_xdr_u_char@Base 15 + __interceptor_trampoline_xdr_u_hyper@Base 15 + __interceptor_trampoline_xdr_u_int@Base 15 + __interceptor_trampoline_xdr_u_long@Base 15 + __interceptor_trampoline_xdr_u_longlong_t@Base 15 + __interceptor_trampoline_xdr_u_quad_t@Base 15 + __interceptor_trampoline_xdr_u_short@Base 15 + __interceptor_trampoline_xdr_uint16_t@Base 15 + __interceptor_trampoline_xdr_uint32_t@Base 15 + __interceptor_trampoline_xdr_uint64_t@Base 15 + __interceptor_trampoline_xdr_uint8_t@Base 15 + __interceptor_trampoline_xdrmem_create@Base 15 + __interceptor_trampoline_xdrrec_create@Base 15 + __interceptor_trampoline_xdrstdio_create@Base 15 + __interceptor_tsearch@Base 15 + __interceptor_ttyname@Base 15 + __interceptor_ttyname_r@Base 15 + __interceptor_uname@Base 15 + __interceptor_valloc@Base 15 + __interceptor_vasprintf@Base 15 + __interceptor_vfork@Base 15 + __interceptor_vfprintf@Base 15 + __interceptor_vfscanf@Base 15 + __interceptor_vprintf@Base 15 + __interceptor_vscanf@Base 15 + __interceptor_vsnprintf@Base 15 + __interceptor_vsprintf@Base 15 + __interceptor_vsscanf@Base 15 + __interceptor_wait3@Base 15 + __interceptor_wait4@Base 15 + __interceptor_wait@Base 15 + __interceptor_waitid@Base 15 + __interceptor_waitpid@Base 15 + __interceptor_wcrtomb@Base 15 + __interceptor_wcscat@Base 15 + __interceptor_wcsdup@Base 15 + __interceptor_wcslen@Base 15 + __interceptor_wcsncat@Base 15 + __interceptor_wcsnlen@Base 15 + __interceptor_wcsnrtombs@Base 15 + __interceptor_wcsrtombs@Base 15 + __interceptor_wcstombs@Base 15 + __interceptor_wcsxfrm@Base 15 + __interceptor_wcsxfrm_l@Base 15 + __interceptor_wctomb@Base 15 + __interceptor_wordexp@Base 15 + __interceptor_write@Base 15 + __interceptor_writev@Base 15 + __interceptor_xdr_bool@Base 15 + __interceptor_xdr_bytes@Base 15 + __interceptor_xdr_char@Base 15 + __interceptor_xdr_destroy@Base 15 + __interceptor_xdr_double@Base 15 + __interceptor_xdr_enum@Base 15 + __interceptor_xdr_float@Base 15 + __interceptor_xdr_hyper@Base 15 + __interceptor_xdr_int16_t@Base 15 + __interceptor_xdr_int32_t@Base 15 + __interceptor_xdr_int64_t@Base 15 + __interceptor_xdr_int8_t@Base 15 + __interceptor_xdr_int@Base 15 + __interceptor_xdr_long@Base 15 + __interceptor_xdr_longlong_t@Base 15 + __interceptor_xdr_quad_t@Base 15 + __interceptor_xdr_short@Base 15 + __interceptor_xdr_string@Base 15 + __interceptor_xdr_u_char@Base 15 + __interceptor_xdr_u_hyper@Base 15 + __interceptor_xdr_u_int@Base 15 + __interceptor_xdr_u_long@Base 15 + __interceptor_xdr_u_longlong_t@Base 15 + __interceptor_xdr_u_quad_t@Base 15 + __interceptor_xdr_u_short@Base 15 + __interceptor_xdr_uint16_t@Base 15 + __interceptor_xdr_uint32_t@Base 15 + __interceptor_xdr_uint64_t@Base 15 + __interceptor_xdr_uint8_t@Base 15 + __interceptor_xdrmem_create@Base 15 + __interceptor_xdrrec_create@Base 15 + __interceptor_xdrstdio_create@Base 15 + __isoc23_fscanf@Base 15 + __isoc23_scanf@Base 15 + __isoc23_sscanf@Base 15 + __isoc23_strtoimax@Base 15 + __isoc23_strtol@Base 15 + __isoc23_strtoll@Base 15 + __isoc23_strtoumax@Base 15 + __isoc23_vfscanf@Base 15 + __isoc23_vscanf@Base 15 + __isoc23_vsscanf@Base 15 + __isoc99_fprintf@Base 15 + __isoc99_fscanf@Base 15 + __isoc99_printf@Base 15 + __isoc99_scanf@Base 15 + __isoc99_snprintf@Base 15 + __isoc99_sprintf@Base 15 + __isoc99_sscanf@Base 15 + __isoc99_vfprintf@Base 15 + __isoc99_vfscanf@Base 15 + __isoc99_vprintf@Base 15 + __isoc99_vscanf@Base 15 + __isoc99_vsnprintf@Base 15 + __isoc99_vsprintf@Base 15 + __isoc99_vsscanf@Base 15 + __libc_memalign@Base 15 + __longjmp_chk@Base 15 + __lsan_default_options@Base 15 + __lsan_disable@Base 15 + __lsan_do_leak_check@Base 15 + __lsan_do_recoverable_leak_check@Base 15 + __lsan_enable@Base 15 + __lsan_ignore_object@Base 15 + __lsan_register_root_region@Base 15 + __lsan_unregister_root_region@Base 15 + __lxstat64@Base 15 + __lxstat@Base 15 + __overflow@Base 15 + __sancov_default_options@Base 15 + __sancov_lowest_stack@Base 15 + __sanitizer_acquire_crash_state@Base 15 + __sanitizer_annotate_contiguous_container@Base 15 + __sanitizer_annotate_double_ended_contiguous_container@Base 15 + __sanitizer_contiguous_container_find_bad_address@Base 15 + __sanitizer_copy_contiguous_container_annotations@Base 15 + __sanitizer_cov_8bit_counters_init@Base 15 + __sanitizer_cov_bool_flag_init@Base 15 + __sanitizer_cov_dump@Base 15 + __sanitizer_cov_load16@Base 15 + __sanitizer_cov_load1@Base 15 + __sanitizer_cov_load2@Base 15 + __sanitizer_cov_load4@Base 15 + __sanitizer_cov_load8@Base 15 + __sanitizer_cov_pcs_init@Base 15 + __sanitizer_cov_reset@Base 15 + __sanitizer_cov_store16@Base 15 + __sanitizer_cov_store1@Base 15 + __sanitizer_cov_store2@Base 15 + __sanitizer_cov_store4@Base 15 + __sanitizer_cov_store8@Base 15 + __sanitizer_cov_trace_cmp1@Base 15 + __sanitizer_cov_trace_cmp2@Base 15 + __sanitizer_cov_trace_cmp4@Base 15 + __sanitizer_cov_trace_cmp8@Base 15 + __sanitizer_cov_trace_cmp@Base 15 + __sanitizer_cov_trace_const_cmp1@Base 15 + __sanitizer_cov_trace_const_cmp2@Base 15 + __sanitizer_cov_trace_const_cmp4@Base 15 + __sanitizer_cov_trace_const_cmp8@Base 15 + __sanitizer_cov_trace_div4@Base 15 + __sanitizer_cov_trace_div8@Base 15 + __sanitizer_cov_trace_gep@Base 15 + __sanitizer_cov_trace_pc_guard@Base 15 + __sanitizer_cov_trace_pc_guard_init@Base 15 + __sanitizer_cov_trace_pc_indir@Base 15 + __sanitizer_cov_trace_switch@Base 15 + __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 + __sanitizer_dump_coverage@Base 15 + __sanitizer_dump_trace_pc_guard_coverage@Base 15 + __sanitizer_finish_switch_fiber@Base 15 + __sanitizer_free_hook@Base 15 + __sanitizer_get_allocated_begin@Base 15 + __sanitizer_get_allocated_size@Base 15 + __sanitizer_get_allocated_size_fast@Base 15 + __sanitizer_get_current_allocated_bytes@Base 15 + __sanitizer_get_dtls_size@Base 15 + __sanitizer_get_estimated_allocated_size@Base 15 + __sanitizer_get_free_bytes@Base 15 + __sanitizer_get_heap_size@Base 15 + __sanitizer_get_module_and_offset_for_pc@Base 15 + __sanitizer_get_ownership@Base 15 + __sanitizer_get_report_path@Base 15 + __sanitizer_get_unmapped_bytes@Base 15 + __sanitizer_ignore_free_hook@Base 15 + __sanitizer_install_malloc_and_free_hooks@Base 15 + __sanitizer_internal_memcpy@Base 15 + __sanitizer_internal_memmove@Base 15 + __sanitizer_internal_memset@Base 15 + __sanitizer_malloc_hook@Base 15 + __sanitizer_on_print@Base 15 + __sanitizer_print_memory_profile@Base 15 + __sanitizer_print_stack_trace@Base 15 + __sanitizer_ptr_cmp@Base 15 + __sanitizer_ptr_sub@Base 15 + __sanitizer_purge_allocator@Base 15 + __sanitizer_report_error_summary@Base 15 + __sanitizer_sandbox_on_notify@Base 15 + __sanitizer_set_death_callback@Base 15 + __sanitizer_set_report_fd@Base 15 + __sanitizer_set_report_path@Base 15 + __sanitizer_start_switch_fiber@Base 15 + __sanitizer_symbolize_global@Base 15 + __sanitizer_symbolize_pc@Base 15 + __sanitizer_syscall_post_impl_accept4@Base 15 + __sanitizer_syscall_post_impl_accept@Base 15 + __sanitizer_syscall_post_impl_access@Base 15 + __sanitizer_syscall_post_impl_acct@Base 15 + __sanitizer_syscall_post_impl_add_key@Base 15 + __sanitizer_syscall_post_impl_adjtimex@Base 15 + __sanitizer_syscall_post_impl_alarm@Base 15 + __sanitizer_syscall_post_impl_bdflush@Base 15 + __sanitizer_syscall_post_impl_bind@Base 15 + __sanitizer_syscall_post_impl_brk@Base 15 + __sanitizer_syscall_post_impl_capget@Base 15 + __sanitizer_syscall_post_impl_capset@Base 15 + __sanitizer_syscall_post_impl_chdir@Base 15 + __sanitizer_syscall_post_impl_chmod@Base 15 + __sanitizer_syscall_post_impl_chown16@Base 15 + __sanitizer_syscall_post_impl_chown@Base 15 + __sanitizer_syscall_post_impl_chroot@Base 15 + __sanitizer_syscall_post_impl_clock_adjtime@Base 15 + __sanitizer_syscall_post_impl_clock_getres@Base 15 + __sanitizer_syscall_post_impl_clock_gettime@Base 15 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_post_impl_clock_settime@Base 15 + __sanitizer_syscall_post_impl_close@Base 15 + __sanitizer_syscall_post_impl_connect@Base 15 + __sanitizer_syscall_post_impl_creat@Base 15 + __sanitizer_syscall_post_impl_delete_module@Base 15 + __sanitizer_syscall_post_impl_dup2@Base 15 + __sanitizer_syscall_post_impl_dup3@Base 15 + __sanitizer_syscall_post_impl_dup@Base 15 + __sanitizer_syscall_post_impl_epoll_create1@Base 15 + __sanitizer_syscall_post_impl_epoll_create@Base 15 + __sanitizer_syscall_post_impl_epoll_ctl@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_post_impl_epoll_pwait@Base 15 + __sanitizer_syscall_post_impl_epoll_wait@Base 15 + __sanitizer_syscall_post_impl_eventfd2@Base 15 + __sanitizer_syscall_post_impl_eventfd@Base 15 + __sanitizer_syscall_post_impl_exit@Base 15 + __sanitizer_syscall_post_impl_exit_group@Base 15 + __sanitizer_syscall_post_impl_faccessat@Base 15 + __sanitizer_syscall_post_impl_fchdir@Base 15 + __sanitizer_syscall_post_impl_fchmod@Base 15 + __sanitizer_syscall_post_impl_fchmodat2@Base 15 + __sanitizer_syscall_post_impl_fchmodat@Base 15 + __sanitizer_syscall_post_impl_fchown16@Base 15 + __sanitizer_syscall_post_impl_fchown@Base 15 + __sanitizer_syscall_post_impl_fchownat@Base 15 + __sanitizer_syscall_post_impl_fcntl64@Base 15 + __sanitizer_syscall_post_impl_fcntl@Base 15 + __sanitizer_syscall_post_impl_fdatasync@Base 15 + __sanitizer_syscall_post_impl_fgetxattr@Base 15 + __sanitizer_syscall_post_impl_flistxattr@Base 15 + __sanitizer_syscall_post_impl_flock@Base 15 + __sanitizer_syscall_post_impl_fork@Base 15 + __sanitizer_syscall_post_impl_fremovexattr@Base 15 + __sanitizer_syscall_post_impl_fsetxattr@Base 15 + __sanitizer_syscall_post_impl_fstat64@Base 15 + __sanitizer_syscall_post_impl_fstat@Base 15 + __sanitizer_syscall_post_impl_fstatat64@Base 15 + __sanitizer_syscall_post_impl_fstatfs64@Base 15 + __sanitizer_syscall_post_impl_fstatfs@Base 15 + __sanitizer_syscall_post_impl_fsync@Base 15 + __sanitizer_syscall_post_impl_ftruncate@Base 15 + __sanitizer_syscall_post_impl_futex@Base 15 + __sanitizer_syscall_post_impl_futimesat@Base 15 + __sanitizer_syscall_post_impl_get_mempolicy@Base 15 + __sanitizer_syscall_post_impl_get_robust_list@Base 15 + __sanitizer_syscall_post_impl_getcpu@Base 15 + __sanitizer_syscall_post_impl_getcwd@Base 15 + __sanitizer_syscall_post_impl_getdents64@Base 15 + __sanitizer_syscall_post_impl_getdents@Base 15 + __sanitizer_syscall_post_impl_getegid16@Base 15 + __sanitizer_syscall_post_impl_getegid@Base 15 + __sanitizer_syscall_post_impl_geteuid16@Base 15 + __sanitizer_syscall_post_impl_geteuid@Base 15 + __sanitizer_syscall_post_impl_getgid16@Base 15 + __sanitizer_syscall_post_impl_getgid@Base 15 + __sanitizer_syscall_post_impl_getgroups16@Base 15 + __sanitizer_syscall_post_impl_getgroups@Base 15 + __sanitizer_syscall_post_impl_gethostname@Base 15 + __sanitizer_syscall_post_impl_getitimer@Base 15 + __sanitizer_syscall_post_impl_getpeername@Base 15 + __sanitizer_syscall_post_impl_getpgid@Base 15 + __sanitizer_syscall_post_impl_getpgrp@Base 15 + __sanitizer_syscall_post_impl_getpid@Base 15 + __sanitizer_syscall_post_impl_getppid@Base 15 + __sanitizer_syscall_post_impl_getpriority@Base 15 + __sanitizer_syscall_post_impl_getrandom@Base 15 + __sanitizer_syscall_post_impl_getresgid16@Base 15 + __sanitizer_syscall_post_impl_getresgid@Base 15 + __sanitizer_syscall_post_impl_getresuid16@Base 15 + __sanitizer_syscall_post_impl_getresuid@Base 15 + __sanitizer_syscall_post_impl_getrlimit@Base 15 + __sanitizer_syscall_post_impl_getrusage@Base 15 + __sanitizer_syscall_post_impl_getsid@Base 15 + __sanitizer_syscall_post_impl_getsockname@Base 15 + __sanitizer_syscall_post_impl_getsockopt@Base 15 + __sanitizer_syscall_post_impl_gettid@Base 15 + __sanitizer_syscall_post_impl_gettimeofday@Base 15 + __sanitizer_syscall_post_impl_getuid16@Base 15 + __sanitizer_syscall_post_impl_getuid@Base 15 + __sanitizer_syscall_post_impl_getxattr@Base 15 + __sanitizer_syscall_post_impl_init_module@Base 15 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_post_impl_inotify_init1@Base 15 + __sanitizer_syscall_post_impl_inotify_init@Base 15 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_post_impl_io_cancel@Base 15 + __sanitizer_syscall_post_impl_io_destroy@Base 15 + __sanitizer_syscall_post_impl_io_getevents@Base 15 + __sanitizer_syscall_post_impl_io_setup@Base 15 + __sanitizer_syscall_post_impl_io_submit@Base 15 + __sanitizer_syscall_post_impl_ioctl@Base 15 + __sanitizer_syscall_post_impl_ioperm@Base 15 + __sanitizer_syscall_post_impl_ioprio_get@Base 15 + __sanitizer_syscall_post_impl_ioprio_set@Base 15 + __sanitizer_syscall_post_impl_ipc@Base 15 + __sanitizer_syscall_post_impl_kexec_load@Base 15 + __sanitizer_syscall_post_impl_keyctl@Base 15 + __sanitizer_syscall_post_impl_kill@Base 15 + __sanitizer_syscall_post_impl_lchown16@Base 15 + __sanitizer_syscall_post_impl_lchown@Base 15 + __sanitizer_syscall_post_impl_lgetxattr@Base 15 + __sanitizer_syscall_post_impl_link@Base 15 + __sanitizer_syscall_post_impl_linkat@Base 15 + __sanitizer_syscall_post_impl_listen@Base 15 + __sanitizer_syscall_post_impl_listxattr@Base 15 + __sanitizer_syscall_post_impl_llistxattr@Base 15 + __sanitizer_syscall_post_impl_llseek@Base 15 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_post_impl_lremovexattr@Base 15 + __sanitizer_syscall_post_impl_lseek@Base 15 + __sanitizer_syscall_post_impl_lsetxattr@Base 15 + __sanitizer_syscall_post_impl_lstat64@Base 15 + __sanitizer_syscall_post_impl_lstat@Base 15 + __sanitizer_syscall_post_impl_madvise@Base 15 + __sanitizer_syscall_post_impl_mbind@Base 15 + __sanitizer_syscall_post_impl_migrate_pages@Base 15 + __sanitizer_syscall_post_impl_mincore@Base 15 + __sanitizer_syscall_post_impl_mkdir@Base 15 + __sanitizer_syscall_post_impl_mkdirat@Base 15 + __sanitizer_syscall_post_impl_mknod@Base 15 + __sanitizer_syscall_post_impl_mknodat@Base 15 + __sanitizer_syscall_post_impl_mlock@Base 15 + __sanitizer_syscall_post_impl_mlockall@Base 15 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_post_impl_mount@Base 15 + __sanitizer_syscall_post_impl_move_pages@Base 15 + __sanitizer_syscall_post_impl_mprotect@Base 15 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_post_impl_mq_notify@Base 15 + __sanitizer_syscall_post_impl_mq_open@Base 15 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_post_impl_mq_timedsend@Base 15 + __sanitizer_syscall_post_impl_mq_unlink@Base 15 + __sanitizer_syscall_post_impl_mremap@Base 15 + __sanitizer_syscall_post_impl_msgctl@Base 15 + __sanitizer_syscall_post_impl_msgget@Base 15 + __sanitizer_syscall_post_impl_msgrcv@Base 15 + __sanitizer_syscall_post_impl_msgsnd@Base 15 + __sanitizer_syscall_post_impl_msync@Base 15 + __sanitizer_syscall_post_impl_munlock@Base 15 + __sanitizer_syscall_post_impl_munlockall@Base 15 + __sanitizer_syscall_post_impl_munmap@Base 15 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_post_impl_nanosleep@Base 15 + __sanitizer_syscall_post_impl_newfstat@Base 15 + __sanitizer_syscall_post_impl_newfstatat@Base 15 + __sanitizer_syscall_post_impl_newlstat@Base 15 + __sanitizer_syscall_post_impl_newstat@Base 15 + __sanitizer_syscall_post_impl_newuname@Base 15 + __sanitizer_syscall_post_impl_ni_syscall@Base 15 + __sanitizer_syscall_post_impl_nice@Base 15 + __sanitizer_syscall_post_impl_old_getrlimit@Base 15 + __sanitizer_syscall_post_impl_old_mmap@Base 15 + __sanitizer_syscall_post_impl_old_readdir@Base 15 + __sanitizer_syscall_post_impl_old_select@Base 15 + __sanitizer_syscall_post_impl_oldumount@Base 15 + __sanitizer_syscall_post_impl_olduname@Base 15 + __sanitizer_syscall_post_impl_open@Base 15 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_post_impl_openat@Base 15 + __sanitizer_syscall_post_impl_pause@Base 15 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_post_impl_pciconfig_read@Base 15 + __sanitizer_syscall_post_impl_pciconfig_write@Base 15 + __sanitizer_syscall_post_impl_perf_event_open@Base 15 + __sanitizer_syscall_post_impl_personality@Base 15 + __sanitizer_syscall_post_impl_pipe2@Base 15 + __sanitizer_syscall_post_impl_pipe@Base 15 + __sanitizer_syscall_post_impl_pivot_root@Base 15 + __sanitizer_syscall_post_impl_poll@Base 15 + __sanitizer_syscall_post_impl_ppoll@Base 15 + __sanitizer_syscall_post_impl_pread64@Base 15 + __sanitizer_syscall_post_impl_preadv@Base 15 + __sanitizer_syscall_post_impl_prlimit64@Base 15 + __sanitizer_syscall_post_impl_process_vm_readv@Base 15 + __sanitizer_syscall_post_impl_process_vm_writev@Base 15 + __sanitizer_syscall_post_impl_pselect6@Base 15 + __sanitizer_syscall_post_impl_ptrace@Base 15 + __sanitizer_syscall_post_impl_pwrite64@Base 15 + __sanitizer_syscall_post_impl_pwritev@Base 15 + __sanitizer_syscall_post_impl_quotactl@Base 15 + __sanitizer_syscall_post_impl_read@Base 15 + __sanitizer_syscall_post_impl_readlink@Base 15 + __sanitizer_syscall_post_impl_readlinkat@Base 15 + __sanitizer_syscall_post_impl_readv@Base 15 + __sanitizer_syscall_post_impl_reboot@Base 15 + __sanitizer_syscall_post_impl_recv@Base 15 + __sanitizer_syscall_post_impl_recvfrom@Base 15 + __sanitizer_syscall_post_impl_recvmmsg@Base 15 + __sanitizer_syscall_post_impl_recvmsg@Base 15 + __sanitizer_syscall_post_impl_remap_file_pages@Base 15 + __sanitizer_syscall_post_impl_removexattr@Base 15 + __sanitizer_syscall_post_impl_rename@Base 15 + __sanitizer_syscall_post_impl_renameat@Base 15 + __sanitizer_syscall_post_impl_request_key@Base 15 + __sanitizer_syscall_post_impl_restart_syscall@Base 15 + __sanitizer_syscall_post_impl_rmdir@Base 15 + __sanitizer_syscall_post_impl_rt_sigaction@Base 15 + __sanitizer_syscall_post_impl_rt_sigpending@Base 15 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_getparam@Base 15 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_post_impl_sched_setparam@Base 15 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_post_impl_sched_yield@Base 15 + __sanitizer_syscall_post_impl_select@Base 15 + __sanitizer_syscall_post_impl_semctl@Base 15 + __sanitizer_syscall_post_impl_semget@Base 15 + __sanitizer_syscall_post_impl_semop@Base 15 + __sanitizer_syscall_post_impl_semtimedop@Base 15 + __sanitizer_syscall_post_impl_send@Base 15 + __sanitizer_syscall_post_impl_sendfile64@Base 15 + __sanitizer_syscall_post_impl_sendfile@Base 15 + __sanitizer_syscall_post_impl_sendmmsg@Base 15 + __sanitizer_syscall_post_impl_sendmsg@Base 15 + __sanitizer_syscall_post_impl_sendto@Base 15 + __sanitizer_syscall_post_impl_set_mempolicy@Base 15 + __sanitizer_syscall_post_impl_set_robust_list@Base 15 + __sanitizer_syscall_post_impl_set_tid_address@Base 15 + __sanitizer_syscall_post_impl_setdomainname@Base 15 + __sanitizer_syscall_post_impl_setfsgid16@Base 15 + __sanitizer_syscall_post_impl_setfsgid@Base 15 + __sanitizer_syscall_post_impl_setfsuid16@Base 15 + __sanitizer_syscall_post_impl_setfsuid@Base 15 + __sanitizer_syscall_post_impl_setgid16@Base 15 + __sanitizer_syscall_post_impl_setgid@Base 15 + __sanitizer_syscall_post_impl_setgroups16@Base 15 + __sanitizer_syscall_post_impl_setgroups@Base 15 + __sanitizer_syscall_post_impl_sethostname@Base 15 + __sanitizer_syscall_post_impl_setitimer@Base 15 + __sanitizer_syscall_post_impl_setns@Base 15 + __sanitizer_syscall_post_impl_setpgid@Base 15 + __sanitizer_syscall_post_impl_setpriority@Base 15 + __sanitizer_syscall_post_impl_setregid16@Base 15 + __sanitizer_syscall_post_impl_setregid@Base 15 + __sanitizer_syscall_post_impl_setresgid16@Base 15 + __sanitizer_syscall_post_impl_setresgid@Base 15 + __sanitizer_syscall_post_impl_setresuid16@Base 15 + __sanitizer_syscall_post_impl_setresuid@Base 15 + __sanitizer_syscall_post_impl_setreuid16@Base 15 + __sanitizer_syscall_post_impl_setreuid@Base 15 + __sanitizer_syscall_post_impl_setrlimit@Base 15 + __sanitizer_syscall_post_impl_setsid@Base 15 + __sanitizer_syscall_post_impl_setsockopt@Base 15 + __sanitizer_syscall_post_impl_settimeofday@Base 15 + __sanitizer_syscall_post_impl_setuid16@Base 15 + __sanitizer_syscall_post_impl_setuid@Base 15 + __sanitizer_syscall_post_impl_setxattr@Base 15 + __sanitizer_syscall_post_impl_sgetmask@Base 15 + __sanitizer_syscall_post_impl_shmat@Base 15 + __sanitizer_syscall_post_impl_shmctl@Base 15 + __sanitizer_syscall_post_impl_shmdt@Base 15 + __sanitizer_syscall_post_impl_shmget@Base 15 + __sanitizer_syscall_post_impl_shutdown@Base 15 + __sanitizer_syscall_post_impl_sigaction@Base 15 + __sanitizer_syscall_post_impl_sigaltstack@Base 15 + __sanitizer_syscall_post_impl_signal@Base 15 + __sanitizer_syscall_post_impl_signalfd4@Base 15 + __sanitizer_syscall_post_impl_signalfd@Base 15 + __sanitizer_syscall_post_impl_sigpending@Base 15 + __sanitizer_syscall_post_impl_sigprocmask@Base 15 + __sanitizer_syscall_post_impl_socket@Base 15 + __sanitizer_syscall_post_impl_socketcall@Base 15 + __sanitizer_syscall_post_impl_socketpair@Base 15 + __sanitizer_syscall_post_impl_splice@Base 15 + __sanitizer_syscall_post_impl_spu_create@Base 15 + __sanitizer_syscall_post_impl_spu_run@Base 15 + __sanitizer_syscall_post_impl_ssetmask@Base 15 + __sanitizer_syscall_post_impl_stat64@Base 15 + __sanitizer_syscall_post_impl_stat@Base 15 + __sanitizer_syscall_post_impl_statfs64@Base 15 + __sanitizer_syscall_post_impl_statfs@Base 15 + __sanitizer_syscall_post_impl_stime@Base 15 + __sanitizer_syscall_post_impl_swapoff@Base 15 + __sanitizer_syscall_post_impl_swapon@Base 15 + __sanitizer_syscall_post_impl_symlink@Base 15 + __sanitizer_syscall_post_impl_symlinkat@Base 15 + __sanitizer_syscall_post_impl_sync@Base 15 + __sanitizer_syscall_post_impl_syncfs@Base 15 + __sanitizer_syscall_post_impl_sysctl@Base 15 + __sanitizer_syscall_post_impl_sysfs@Base 15 + __sanitizer_syscall_post_impl_sysinfo@Base 15 + __sanitizer_syscall_post_impl_syslog@Base 15 + __sanitizer_syscall_post_impl_tee@Base 15 + __sanitizer_syscall_post_impl_tgkill@Base 15 + __sanitizer_syscall_post_impl_time@Base 15 + __sanitizer_syscall_post_impl_timer_create@Base 15 + __sanitizer_syscall_post_impl_timer_delete@Base 15 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_post_impl_timer_gettime@Base 15 + __sanitizer_syscall_post_impl_timer_settime@Base 15 + __sanitizer_syscall_post_impl_timerfd_create@Base 15 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_post_impl_timerfd_settime@Base 15 + __sanitizer_syscall_post_impl_times@Base 15 + __sanitizer_syscall_post_impl_tkill@Base 15 + __sanitizer_syscall_post_impl_truncate@Base 15 + __sanitizer_syscall_post_impl_umask@Base 15 + __sanitizer_syscall_post_impl_umount@Base 15 + __sanitizer_syscall_post_impl_uname@Base 15 + __sanitizer_syscall_post_impl_unlink@Base 15 + __sanitizer_syscall_post_impl_unlinkat@Base 15 + __sanitizer_syscall_post_impl_unshare@Base 15 + __sanitizer_syscall_post_impl_uselib@Base 15 + __sanitizer_syscall_post_impl_ustat@Base 15 + __sanitizer_syscall_post_impl_utime@Base 15 + __sanitizer_syscall_post_impl_utimensat@Base 15 + __sanitizer_syscall_post_impl_utimes@Base 15 + __sanitizer_syscall_post_impl_vfork@Base 15 + __sanitizer_syscall_post_impl_vhangup@Base 15 + __sanitizer_syscall_post_impl_vmsplice@Base 15 + __sanitizer_syscall_post_impl_wait4@Base 15 + __sanitizer_syscall_post_impl_waitid@Base 15 + __sanitizer_syscall_post_impl_waitpid@Base 15 + __sanitizer_syscall_post_impl_write@Base 15 + __sanitizer_syscall_post_impl_writev@Base 15 + __sanitizer_syscall_pre_impl_accept4@Base 15 + __sanitizer_syscall_pre_impl_accept@Base 15 + __sanitizer_syscall_pre_impl_access@Base 15 + __sanitizer_syscall_pre_impl_acct@Base 15 + __sanitizer_syscall_pre_impl_add_key@Base 15 + __sanitizer_syscall_pre_impl_adjtimex@Base 15 + __sanitizer_syscall_pre_impl_alarm@Base 15 + __sanitizer_syscall_pre_impl_bdflush@Base 15 + __sanitizer_syscall_pre_impl_bind@Base 15 + __sanitizer_syscall_pre_impl_brk@Base 15 + __sanitizer_syscall_pre_impl_capget@Base 15 + __sanitizer_syscall_pre_impl_capset@Base 15 + __sanitizer_syscall_pre_impl_chdir@Base 15 + __sanitizer_syscall_pre_impl_chmod@Base 15 + __sanitizer_syscall_pre_impl_chown16@Base 15 + __sanitizer_syscall_pre_impl_chown@Base 15 + __sanitizer_syscall_pre_impl_chroot@Base 15 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 + __sanitizer_syscall_pre_impl_clock_getres@Base 15 + __sanitizer_syscall_pre_impl_clock_gettime@Base 15 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_clock_settime@Base 15 + __sanitizer_syscall_pre_impl_close@Base 15 + __sanitizer_syscall_pre_impl_connect@Base 15 + __sanitizer_syscall_pre_impl_creat@Base 15 + __sanitizer_syscall_pre_impl_delete_module@Base 15 + __sanitizer_syscall_pre_impl_dup2@Base 15 + __sanitizer_syscall_pre_impl_dup3@Base 15 + __sanitizer_syscall_pre_impl_dup@Base 15 + __sanitizer_syscall_pre_impl_epoll_create1@Base 15 + __sanitizer_syscall_pre_impl_epoll_create@Base 15 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 + __sanitizer_syscall_pre_impl_epoll_wait@Base 15 + __sanitizer_syscall_pre_impl_eventfd2@Base 15 + __sanitizer_syscall_pre_impl_eventfd@Base 15 + __sanitizer_syscall_pre_impl_exit@Base 15 + __sanitizer_syscall_pre_impl_exit_group@Base 15 + __sanitizer_syscall_pre_impl_faccessat@Base 15 + __sanitizer_syscall_pre_impl_fchdir@Base 15 + __sanitizer_syscall_pre_impl_fchmod@Base 15 + __sanitizer_syscall_pre_impl_fchmodat2@Base 15 + __sanitizer_syscall_pre_impl_fchmodat@Base 15 + __sanitizer_syscall_pre_impl_fchown16@Base 15 + __sanitizer_syscall_pre_impl_fchown@Base 15 + __sanitizer_syscall_pre_impl_fchownat@Base 15 + __sanitizer_syscall_pre_impl_fcntl64@Base 15 + __sanitizer_syscall_pre_impl_fcntl@Base 15 + __sanitizer_syscall_pre_impl_fdatasync@Base 15 + __sanitizer_syscall_pre_impl_fgetxattr@Base 15 + __sanitizer_syscall_pre_impl_flistxattr@Base 15 + __sanitizer_syscall_pre_impl_flock@Base 15 + __sanitizer_syscall_pre_impl_fork@Base 15 + __sanitizer_syscall_pre_impl_fremovexattr@Base 15 + __sanitizer_syscall_pre_impl_fsetxattr@Base 15 + __sanitizer_syscall_pre_impl_fstat64@Base 15 + __sanitizer_syscall_pre_impl_fstat@Base 15 + __sanitizer_syscall_pre_impl_fstatat64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs64@Base 15 + __sanitizer_syscall_pre_impl_fstatfs@Base 15 + __sanitizer_syscall_pre_impl_fsync@Base 15 + __sanitizer_syscall_pre_impl_ftruncate@Base 15 + __sanitizer_syscall_pre_impl_futex@Base 15 + __sanitizer_syscall_pre_impl_futimesat@Base 15 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_get_robust_list@Base 15 + __sanitizer_syscall_pre_impl_getcpu@Base 15 + __sanitizer_syscall_pre_impl_getcwd@Base 15 + __sanitizer_syscall_pre_impl_getdents64@Base 15 + __sanitizer_syscall_pre_impl_getdents@Base 15 + __sanitizer_syscall_pre_impl_getegid16@Base 15 + __sanitizer_syscall_pre_impl_getegid@Base 15 + __sanitizer_syscall_pre_impl_geteuid16@Base 15 + __sanitizer_syscall_pre_impl_geteuid@Base 15 + __sanitizer_syscall_pre_impl_getgid16@Base 15 + __sanitizer_syscall_pre_impl_getgid@Base 15 + __sanitizer_syscall_pre_impl_getgroups16@Base 15 + __sanitizer_syscall_pre_impl_getgroups@Base 15 + __sanitizer_syscall_pre_impl_gethostname@Base 15 + __sanitizer_syscall_pre_impl_getitimer@Base 15 + __sanitizer_syscall_pre_impl_getpeername@Base 15 + __sanitizer_syscall_pre_impl_getpgid@Base 15 + __sanitizer_syscall_pre_impl_getpgrp@Base 15 + __sanitizer_syscall_pre_impl_getpid@Base 15 + __sanitizer_syscall_pre_impl_getppid@Base 15 + __sanitizer_syscall_pre_impl_getpriority@Base 15 + __sanitizer_syscall_pre_impl_getrandom@Base 15 + __sanitizer_syscall_pre_impl_getresgid16@Base 15 + __sanitizer_syscall_pre_impl_getresgid@Base 15 + __sanitizer_syscall_pre_impl_getresuid16@Base 15 + __sanitizer_syscall_pre_impl_getresuid@Base 15 + __sanitizer_syscall_pre_impl_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_getrusage@Base 15 + __sanitizer_syscall_pre_impl_getsid@Base 15 + __sanitizer_syscall_pre_impl_getsockname@Base 15 + __sanitizer_syscall_pre_impl_getsockopt@Base 15 + __sanitizer_syscall_pre_impl_gettid@Base 15 + __sanitizer_syscall_pre_impl_gettimeofday@Base 15 + __sanitizer_syscall_pre_impl_getuid16@Base 15 + __sanitizer_syscall_pre_impl_getuid@Base 15 + __sanitizer_syscall_pre_impl_getxattr@Base 15 + __sanitizer_syscall_pre_impl_init_module@Base 15 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 + __sanitizer_syscall_pre_impl_inotify_init1@Base 15 + __sanitizer_syscall_pre_impl_inotify_init@Base 15 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 + __sanitizer_syscall_pre_impl_io_cancel@Base 15 + __sanitizer_syscall_pre_impl_io_destroy@Base 15 + __sanitizer_syscall_pre_impl_io_getevents@Base 15 + __sanitizer_syscall_pre_impl_io_setup@Base 15 + __sanitizer_syscall_pre_impl_io_submit@Base 15 + __sanitizer_syscall_pre_impl_ioctl@Base 15 + __sanitizer_syscall_pre_impl_ioperm@Base 15 + __sanitizer_syscall_pre_impl_ioprio_get@Base 15 + __sanitizer_syscall_pre_impl_ioprio_set@Base 15 + __sanitizer_syscall_pre_impl_ipc@Base 15 + __sanitizer_syscall_pre_impl_kexec_load@Base 15 + __sanitizer_syscall_pre_impl_keyctl@Base 15 + __sanitizer_syscall_pre_impl_kill@Base 15 + __sanitizer_syscall_pre_impl_lchown16@Base 15 + __sanitizer_syscall_pre_impl_lchown@Base 15 + __sanitizer_syscall_pre_impl_lgetxattr@Base 15 + __sanitizer_syscall_pre_impl_link@Base 15 + __sanitizer_syscall_pre_impl_linkat@Base 15 + __sanitizer_syscall_pre_impl_listen@Base 15 + __sanitizer_syscall_pre_impl_listxattr@Base 15 + __sanitizer_syscall_pre_impl_llistxattr@Base 15 + __sanitizer_syscall_pre_impl_llseek@Base 15 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 + __sanitizer_syscall_pre_impl_lremovexattr@Base 15 + __sanitizer_syscall_pre_impl_lseek@Base 15 + __sanitizer_syscall_pre_impl_lsetxattr@Base 15 + __sanitizer_syscall_pre_impl_lstat64@Base 15 + __sanitizer_syscall_pre_impl_lstat@Base 15 + __sanitizer_syscall_pre_impl_madvise@Base 15 + __sanitizer_syscall_pre_impl_mbind@Base 15 + __sanitizer_syscall_pre_impl_migrate_pages@Base 15 + __sanitizer_syscall_pre_impl_mincore@Base 15 + __sanitizer_syscall_pre_impl_mkdir@Base 15 + __sanitizer_syscall_pre_impl_mkdirat@Base 15 + __sanitizer_syscall_pre_impl_mknod@Base 15 + __sanitizer_syscall_pre_impl_mknodat@Base 15 + __sanitizer_syscall_pre_impl_mlock@Base 15 + __sanitizer_syscall_pre_impl_mlockall@Base 15 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 + __sanitizer_syscall_pre_impl_mount@Base 15 + __sanitizer_syscall_pre_impl_move_pages@Base 15 + __sanitizer_syscall_pre_impl_mprotect@Base 15 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 + __sanitizer_syscall_pre_impl_mq_notify@Base 15 + __sanitizer_syscall_pre_impl_mq_open@Base 15 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 + __sanitizer_syscall_pre_impl_mq_unlink@Base 15 + __sanitizer_syscall_pre_impl_mremap@Base 15 + __sanitizer_syscall_pre_impl_msgctl@Base 15 + __sanitizer_syscall_pre_impl_msgget@Base 15 + __sanitizer_syscall_pre_impl_msgrcv@Base 15 + __sanitizer_syscall_pre_impl_msgsnd@Base 15 + __sanitizer_syscall_pre_impl_msync@Base 15 + __sanitizer_syscall_pre_impl_munlock@Base 15 + __sanitizer_syscall_pre_impl_munlockall@Base 15 + __sanitizer_syscall_pre_impl_munmap@Base 15 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 + __sanitizer_syscall_pre_impl_nanosleep@Base 15 + __sanitizer_syscall_pre_impl_newfstat@Base 15 + __sanitizer_syscall_pre_impl_newfstatat@Base 15 + __sanitizer_syscall_pre_impl_newlstat@Base 15 + __sanitizer_syscall_pre_impl_newstat@Base 15 + __sanitizer_syscall_pre_impl_newuname@Base 15 + __sanitizer_syscall_pre_impl_ni_syscall@Base 15 + __sanitizer_syscall_pre_impl_nice@Base 15 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 + __sanitizer_syscall_pre_impl_old_mmap@Base 15 + __sanitizer_syscall_pre_impl_old_readdir@Base 15 + __sanitizer_syscall_pre_impl_old_select@Base 15 + __sanitizer_syscall_pre_impl_oldumount@Base 15 + __sanitizer_syscall_pre_impl_olduname@Base 15 + __sanitizer_syscall_pre_impl_open@Base 15 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 + __sanitizer_syscall_pre_impl_openat@Base 15 + __sanitizer_syscall_pre_impl_pause@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 + __sanitizer_syscall_pre_impl_perf_event_open@Base 15 + __sanitizer_syscall_pre_impl_personality@Base 15 + __sanitizer_syscall_pre_impl_pipe2@Base 15 + __sanitizer_syscall_pre_impl_pipe@Base 15 + __sanitizer_syscall_pre_impl_pivot_root@Base 15 + __sanitizer_syscall_pre_impl_poll@Base 15 + __sanitizer_syscall_pre_impl_ppoll@Base 15 + __sanitizer_syscall_pre_impl_pread64@Base 15 + __sanitizer_syscall_pre_impl_preadv@Base 15 + __sanitizer_syscall_pre_impl_prlimit64@Base 15 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 + __sanitizer_syscall_pre_impl_pselect6@Base 15 + __sanitizer_syscall_pre_impl_ptrace@Base 15 + __sanitizer_syscall_pre_impl_pwrite64@Base 15 + __sanitizer_syscall_pre_impl_pwritev@Base 15 + __sanitizer_syscall_pre_impl_quotactl@Base 15 + __sanitizer_syscall_pre_impl_read@Base 15 + __sanitizer_syscall_pre_impl_readlink@Base 15 + __sanitizer_syscall_pre_impl_readlinkat@Base 15 + __sanitizer_syscall_pre_impl_readv@Base 15 + __sanitizer_syscall_pre_impl_reboot@Base 15 + __sanitizer_syscall_pre_impl_recv@Base 15 + __sanitizer_syscall_pre_impl_recvfrom@Base 15 + __sanitizer_syscall_pre_impl_recvmmsg@Base 15 + __sanitizer_syscall_pre_impl_recvmsg@Base 15 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 + __sanitizer_syscall_pre_impl_removexattr@Base 15 + __sanitizer_syscall_pre_impl_rename@Base 15 + __sanitizer_syscall_pre_impl_renameat@Base 15 + __sanitizer_syscall_pre_impl_request_key@Base 15 + __sanitizer_syscall_pre_impl_restart_syscall@Base 15 + __sanitizer_syscall_pre_impl_rmdir@Base 15 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_getparam@Base 15 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 + __sanitizer_syscall_pre_impl_sched_setparam@Base 15 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 + __sanitizer_syscall_pre_impl_sched_yield@Base 15 + __sanitizer_syscall_pre_impl_select@Base 15 + __sanitizer_syscall_pre_impl_semctl@Base 15 + __sanitizer_syscall_pre_impl_semget@Base 15 + __sanitizer_syscall_pre_impl_semop@Base 15 + __sanitizer_syscall_pre_impl_semtimedop@Base 15 + __sanitizer_syscall_pre_impl_send@Base 15 + __sanitizer_syscall_pre_impl_sendfile64@Base 15 + __sanitizer_syscall_pre_impl_sendfile@Base 15 + __sanitizer_syscall_pre_impl_sendmmsg@Base 15 + __sanitizer_syscall_pre_impl_sendmsg@Base 15 + __sanitizer_syscall_pre_impl_sendto@Base 15 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 + __sanitizer_syscall_pre_impl_set_robust_list@Base 15 + __sanitizer_syscall_pre_impl_set_tid_address@Base 15 + __sanitizer_syscall_pre_impl_setdomainname@Base 15 + __sanitizer_syscall_pre_impl_setfsgid16@Base 15 + __sanitizer_syscall_pre_impl_setfsgid@Base 15 + __sanitizer_syscall_pre_impl_setfsuid16@Base 15 + __sanitizer_syscall_pre_impl_setfsuid@Base 15 + __sanitizer_syscall_pre_impl_setgid16@Base 15 + __sanitizer_syscall_pre_impl_setgid@Base 15 + __sanitizer_syscall_pre_impl_setgroups16@Base 15 + __sanitizer_syscall_pre_impl_setgroups@Base 15 + __sanitizer_syscall_pre_impl_sethostname@Base 15 + __sanitizer_syscall_pre_impl_setitimer@Base 15 + __sanitizer_syscall_pre_impl_setns@Base 15 + __sanitizer_syscall_pre_impl_setpgid@Base 15 + __sanitizer_syscall_pre_impl_setpriority@Base 15 + __sanitizer_syscall_pre_impl_setregid16@Base 15 + __sanitizer_syscall_pre_impl_setregid@Base 15 + __sanitizer_syscall_pre_impl_setresgid16@Base 15 + __sanitizer_syscall_pre_impl_setresgid@Base 15 + __sanitizer_syscall_pre_impl_setresuid16@Base 15 + __sanitizer_syscall_pre_impl_setresuid@Base 15 + __sanitizer_syscall_pre_impl_setreuid16@Base 15 + __sanitizer_syscall_pre_impl_setreuid@Base 15 + __sanitizer_syscall_pre_impl_setrlimit@Base 15 + __sanitizer_syscall_pre_impl_setsid@Base 15 + __sanitizer_syscall_pre_impl_setsockopt@Base 15 + __sanitizer_syscall_pre_impl_settimeofday@Base 15 + __sanitizer_syscall_pre_impl_setuid16@Base 15 + __sanitizer_syscall_pre_impl_setuid@Base 15 + __sanitizer_syscall_pre_impl_setxattr@Base 15 + __sanitizer_syscall_pre_impl_sgetmask@Base 15 + __sanitizer_syscall_pre_impl_shmat@Base 15 + __sanitizer_syscall_pre_impl_shmctl@Base 15 + __sanitizer_syscall_pre_impl_shmdt@Base 15 + __sanitizer_syscall_pre_impl_shmget@Base 15 + __sanitizer_syscall_pre_impl_shutdown@Base 15 + __sanitizer_syscall_pre_impl_sigaction@Base 15 + __sanitizer_syscall_pre_impl_sigaltstack@Base 15 + __sanitizer_syscall_pre_impl_signal@Base 15 + __sanitizer_syscall_pre_impl_signalfd4@Base 15 + __sanitizer_syscall_pre_impl_signalfd@Base 15 + __sanitizer_syscall_pre_impl_sigpending@Base 15 + __sanitizer_syscall_pre_impl_sigprocmask@Base 15 + __sanitizer_syscall_pre_impl_socket@Base 15 + __sanitizer_syscall_pre_impl_socketcall@Base 15 + __sanitizer_syscall_pre_impl_socketpair@Base 15 + __sanitizer_syscall_pre_impl_splice@Base 15 + __sanitizer_syscall_pre_impl_spu_create@Base 15 + __sanitizer_syscall_pre_impl_spu_run@Base 15 + __sanitizer_syscall_pre_impl_ssetmask@Base 15 + __sanitizer_syscall_pre_impl_stat64@Base 15 + __sanitizer_syscall_pre_impl_stat@Base 15 + __sanitizer_syscall_pre_impl_statfs64@Base 15 + __sanitizer_syscall_pre_impl_statfs@Base 15 + __sanitizer_syscall_pre_impl_stime@Base 15 + __sanitizer_syscall_pre_impl_swapoff@Base 15 + __sanitizer_syscall_pre_impl_swapon@Base 15 + __sanitizer_syscall_pre_impl_symlink@Base 15 + __sanitizer_syscall_pre_impl_symlinkat@Base 15 + __sanitizer_syscall_pre_impl_sync@Base 15 + __sanitizer_syscall_pre_impl_syncfs@Base 15 + __sanitizer_syscall_pre_impl_sysctl@Base 15 + __sanitizer_syscall_pre_impl_sysfs@Base 15 + __sanitizer_syscall_pre_impl_sysinfo@Base 15 + __sanitizer_syscall_pre_impl_syslog@Base 15 + __sanitizer_syscall_pre_impl_tee@Base 15 + __sanitizer_syscall_pre_impl_tgkill@Base 15 + __sanitizer_syscall_pre_impl_time@Base 15 + __sanitizer_syscall_pre_impl_timer_create@Base 15 + __sanitizer_syscall_pre_impl_timer_delete@Base 15 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 + __sanitizer_syscall_pre_impl_timer_gettime@Base 15 + __sanitizer_syscall_pre_impl_timer_settime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_create@Base 15 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 + __sanitizer_syscall_pre_impl_times@Base 15 + __sanitizer_syscall_pre_impl_tkill@Base 15 + __sanitizer_syscall_pre_impl_truncate@Base 15 + __sanitizer_syscall_pre_impl_umask@Base 15 + __sanitizer_syscall_pre_impl_umount@Base 15 + __sanitizer_syscall_pre_impl_uname@Base 15 + __sanitizer_syscall_pre_impl_unlink@Base 15 + __sanitizer_syscall_pre_impl_unlinkat@Base 15 + __sanitizer_syscall_pre_impl_unshare@Base 15 + __sanitizer_syscall_pre_impl_uselib@Base 15 + __sanitizer_syscall_pre_impl_ustat@Base 15 + __sanitizer_syscall_pre_impl_utime@Base 15 + __sanitizer_syscall_pre_impl_utimensat@Base 15 + __sanitizer_syscall_pre_impl_utimes@Base 15 + __sanitizer_syscall_pre_impl_vfork@Base 15 + __sanitizer_syscall_pre_impl_vhangup@Base 15 + __sanitizer_syscall_pre_impl_vmsplice@Base 15 + __sanitizer_syscall_pre_impl_wait4@Base 15 + __sanitizer_syscall_pre_impl_waitid@Base 15 + __sanitizer_syscall_pre_impl_waitpid@Base 15 + __sanitizer_syscall_pre_impl_write@Base 15 + __sanitizer_syscall_pre_impl_writev@Base 15 + __sanitizer_unaligned_load16@Base 15 + __sanitizer_unaligned_load32@Base 15 + __sanitizer_unaligned_load64@Base 15 + __sanitizer_unaligned_store16@Base 15 + __sanitizer_unaligned_store32@Base 15 + __sanitizer_unaligned_store64@Base 15 + __sanitizer_verify_contiguous_container@Base 15 + __sanitizer_verify_double_ended_contiguous_container@Base 15 + __sanitizer_weak_hook_memcmp@Base 15 + __sanitizer_weak_hook_memmem@Base 15 + __sanitizer_weak_hook_strcasecmp@Base 15 + __sanitizer_weak_hook_strcasestr@Base 15 + __sanitizer_weak_hook_strcmp@Base 15 + __sanitizer_weak_hook_strncasecmp@Base 15 + __sanitizer_weak_hook_strncmp@Base 15 + __sanitizer_weak_hook_strstr@Base 15 + __snprintf_chk@Base 15 + __sprintf_chk@Base 15 + __strdup@Base 15 + __strndup@Base 15 + __strxfrm_l@Base 15 + __tls_get_addr@Base 15 + __uflow@Base 15 + __underflow@Base 15 + __vsnprintf_chk@Base 15 + __vsprintf_chk@Base 15 + __wcsxfrm_l@Base 15 + __woverflow@Base 15 + __wuflow@Base 15 + __wunderflow@Base 15 + __xpg_strerror_r@Base 15 + __xstat64@Base 15 + __xstat@Base 15 + _exit@Base 15 + _longjmp@Base 15 + _obstack_begin@Base 15 + _obstack_begin_1@Base 15 + _obstack_newchunk@Base 15 + accept4@Base 15 + accept@Base 15 + aligned_alloc@Base 15 + argp_parse@Base 15 + asctime@Base 15 + asctime_r@Base 15 + asprintf@Base 15 + atoi@Base 15 + atol@Base 15 + atoll@Base 15 + backtrace@Base 15 + backtrace_symbols@Base 15 + bcmp@Base 15 + bsearch@Base 15 + bzero@Base 15 + calloc@Base 15 + canonicalize_file_name@Base 15 + capget@Base 15 + capset@Base 15 + cfree@Base 15 + clock_getcpuclockid@Base 15 + clock_getres@Base 15 + clock_gettime@Base 15 + clock_settime@Base 15 + confstr@Base 15 + ctermid@Base 15 + ctime@Base 15 + ctime_r@Base 15 + dlclose@Base 15 + dlopen@Base 15 + dn_comp@Base 15 + dn_expand@Base 15 + drand48_r@Base 15 + endgrent@Base 15 + endpwent@Base 15 + ether_aton@Base 15 + ether_aton_r@Base 15 + ether_hostton@Base 15 + ether_line@Base 15 + ether_ntoa@Base 15 + ether_ntoa_r@Base 15 + ether_ntohost@Base 15 + eventfd_read@Base 15 + eventfd_write@Base 15 + fclose@Base 15 + fdopen@Base 15 + fflush@Base 15 + fgetgrent@Base 15 + fgetgrent_r@Base 15 + fgetpwent@Base 15 + fgetpwent_r@Base 15 + fgets@Base 15 + fgetxattr@Base 15 + flistxattr@Base 15 + fmemopen@Base 15 + fopen64@Base 15 + fopen@Base 15 + fopencookie@Base 15 + fprintf@Base 15 + fputs@Base 15 + fread@Base 15 + free@Base 15 + freopen64@Base 15 + freopen@Base 15 + frexp@Base 15 + frexpf@Base 15 + frexpl@Base 15 + fscanf@Base 15 + fstatfs64@Base 15 + fstatfs@Base 15 + fstatvfs64@Base 15 + fstatvfs@Base 15 + ftime@Base 15 + fwrite@Base 15 + get_current_dir_name@Base 15 + getaddrinfo@Base 15 + getcwd@Base 15 + getdelim@Base 15 + getentropy@Base 15 + getgrent@Base 15 + getgrent_r@Base 15 + getgrgid@Base 15 + getgrgid_r@Base 15 + getgrnam@Base 15 + getgrnam_r@Base 15 + getgrouplist@Base 15 + getgroups@Base 15 + gethostbyaddr@Base 15 + gethostbyaddr_r@Base 15 + gethostbyname2@Base 15 + gethostbyname2_r@Base 15 + gethostbyname@Base 15 + gethostbyname_r@Base 15 + gethostent@Base 15 + gethostent_r@Base 15 + getifaddrs@Base 15 + getitimer@Base 15 + getline@Base 15 + getloadavg@Base 15 + getmntent@Base 15 + getmntent_r@Base 15 + getnameinfo@Base 15 + getnetbyaddr@Base 15 + getnetbyname@Base 15 + getnetent@Base 15 + getpass@Base 15 + getpeername@Base 15 + getprotobyname@Base 15 + getprotobyname_r@Base 15 + getprotobynumber@Base 15 + getprotobynumber_r@Base 15 + getprotoent@Base 15 + getprotoent_r@Base 15 + getpwent@Base 15 + getpwent_r@Base 15 + getpwnam@Base 15 + getpwnam_r@Base 15 + getpwuid@Base 15 + getpwuid_r@Base 15 + getrandom@Base 15 + getresgid@Base 15 + getresuid@Base 15 + getsockname@Base 15 + getsockopt@Base 15 + getusershell@Base 15 + getutent@Base 15 + getutid@Base 15 + getutline@Base 15 + getutxent@Base 15 + getutxid@Base 15 + getutxline@Base 15 + getxattr@Base 15 + glob64@Base 15 + glob@Base 15 + gmtime@Base 15 + gmtime_r@Base 15 + iconv@Base 15 + if_indextoname@Base 15 + if_nametoindex@Base 15 + index@Base 15 + inet_aton@Base 15 + inet_ntop@Base 15 + inet_pton@Base 15 + initgroups@Base 15 + ioctl@Base 15 + lgamma@Base 15 + lgamma_r@Base 15 + lgammaf@Base 15 + lgammaf_r@Base 15 + lgammal@Base 15 + lgammal_r@Base 15 + lgetxattr@Base 15 + listxattr@Base 15 + llistxattr@Base 15 + localtime@Base 15 + localtime_r@Base 15 + longjmp@Base 15 + lrand48_r@Base 15 + lstat64@Base 15 + lstat@Base 15 + makecontext@Base 15 + mallinfo@Base 15 + malloc@Base 15 + malloc_stats@Base 15 + malloc_usable_size@Base 15 + mallopt@Base 15 + mbsnrtowcs@Base 15 + mbsrtowcs@Base 15 + mbstowcs@Base 15 + mcheck@Base 15 + mcheck_pedantic@Base 15 + memalign@Base 15 + memchr@Base 15 + memcmp@Base 15 + memcpy@Base 15 + memmem@Base 15 + memmove@Base 15 + memrchr@Base 15 + memset@Base 15 + mincore@Base 15 + mktime@Base 15 + mlock@Base 15 + mlockall@Base 15 + mmap64@Base 15 + mmap@Base 15 + modf@Base 15 + modff@Base 15 + modfl@Base 15 + mprobe@Base 15 + mprotect@Base 15 + msgrcv@Base 15 + msgsnd@Base 15 + munlock@Base 15 + munlockall@Base 15 + munmap@Base 15 + name_to_handle_at@Base 15 + open_by_handle_at@Base 15 + open_memstream@Base 15 + open_wmemstream@Base 15 + opendir@Base 15 + pclose@Base 15 + poll@Base 15 + popen@Base 15 + posix_memalign@Base 15 + posix_spawn@Base 15 + posix_spawnp@Base 15 + ppoll@Base 15 + prctl@Base 15 + pread64@Base 15 + pread@Base 15 + preadv2@Base 15 + preadv64@Base 15 + preadv@Base 15 + printf@Base 15 + process_vm_readv@Base 15 + process_vm_writev@Base 15 + pthread_attr_getaffinity_np@Base 15 + pthread_attr_getdetachstate@Base 15 + pthread_attr_getguardsize@Base 15 + pthread_attr_getinheritsched@Base 15 + pthread_attr_getschedparam@Base 15 + pthread_attr_getschedpolicy@Base 15 + pthread_attr_getscope@Base 15 + pthread_attr_getstack@Base 15 + pthread_attr_getstacksize@Base 15 + pthread_barrierattr_getpshared@Base 15 + pthread_condattr_getclock@Base 15 + pthread_condattr_getpshared@Base 15 + pthread_create@Base 15 + pthread_detach@Base 15 + pthread_exit@Base 15 + pthread_getaffinity_np@Base 15 + pthread_getcpuclockid@Base 15 + pthread_getname_np@Base 15 + pthread_getschedparam@Base 15 + pthread_join@Base 15 + pthread_mutexattr_getprioceiling@Base 15 + pthread_mutexattr_getprotocol@Base 15 + pthread_mutexattr_getpshared@Base 15 + pthread_mutexattr_getrobust@Base 15 + pthread_mutexattr_getrobust_np@Base 15 + pthread_mutexattr_gettype@Base 15 + pthread_rwlockattr_getkind_np@Base 15 + pthread_rwlockattr_getpshared@Base 15 + pthread_setcancelstate@Base 15 + pthread_setcanceltype@Base 15 + pthread_setname_np@Base 15 + pthread_sigmask@Base 15 + pthread_timedjoin_np@Base 15 + pthread_tryjoin_np@Base 15 + ptrace@Base 15 + ptsname@Base 15 + ptsname_r@Base 15 + puts@Base 15 + pututxline@Base 15 + pvalloc@Base 15 + pwrite64@Base 15 + pwrite@Base 15 + pwritev2@Base 15 + pwritev64@Base 15 + pwritev@Base 15 + qsort@Base 15 + qsort_r@Base 15 + rand_r@Base 15 + random_r@Base 15 + read@Base 15 + readdir64@Base 15 + readdir64_r@Base 15 + readdir@Base 15 + readdir_r@Base 15 + readlink@Base 15 + readlinkat@Base 15 + readv@Base 15 + realloc@Base 15 + reallocarray@Base 15 + realpath@Base 15 + recv@Base 15 + recvfrom@Base 15 + recvmmsg@Base 15 + recvmsg@Base 15 + regcomp@Base 15 + regerror@Base 15 + regexec@Base 15 + regfree@Base 15 + remquo@Base 15 + remquof@Base 15 + remquol@Base 15 + scandir64@Base 15 + scandir@Base 15 + scanf@Base 15 + sched_getaffinity@Base 15 + sched_getparam@Base 15 + sem_destroy@Base 15 + sem_getvalue@Base 15 + sem_init@Base 15 + sem_open@Base 15 + sem_post@Base 15 + sem_timedwait@Base 15 + sem_trywait@Base 15 + sem_unlink@Base 15 + sem_wait@Base 15 + send@Base 15 + sendmmsg@Base 15 + sendmsg@Base 15 + sendto@Base 15 + setbuf@Base 15 + setbuffer@Base 15 + setgrent@Base 15 + setitimer@Base 15 + setlinebuf@Base 15 + setlocale@Base 15 + setpwent@Base 15 + setvbuf@Base 15 + sigaction@Base 15 + sigaltstack@Base 15 + sigandset@Base 15 + sigemptyset@Base 15 + sigfillset@Base 15 + siglongjmp@Base 15 + signal@Base 15 + sigorset@Base 15 + sigpending@Base 15 + sigprocmask@Base 15 + sigtimedwait@Base 15 + sigwait@Base 15 + sigwaitinfo@Base 15 + sincos@Base 15 + sincosf@Base 15 + sincosl@Base 15 + snprintf@Base 15 + sprintf@Base 15 + sscanf@Base 15 + stat64@Base 15 + stat@Base 15 + statfs64@Base 15 + statfs@Base 15 + statvfs64@Base 15 + statvfs@Base 15 + strcasecmp@Base 15 + strcasestr@Base 15 + strcat@Base 15 + strchr@Base 15 + strchrnul@Base 15 + strcmp@Base 15 + strcpy@Base 15 + strcspn@Base 15 + strdup@Base 15 + strerror@Base 15 + strerror_r@Base 15 + strlen@Base 15 + strncasecmp@Base 15 + strncat@Base 15 + strncmp@Base 15 + strncpy@Base 15 + strndup@Base 15 + strnlen@Base 15 + strpbrk@Base 15 + strptime@Base 15 + strrchr@Base 15 + strspn@Base 15 + strstr@Base 15 + strtoimax@Base 15 + strtok@Base 15 + strtol@Base 15 + strtoll@Base 15 + strtoumax@Base 15 + strxfrm@Base 15 + strxfrm_l@Base 15 + swapcontext@Base 15 + sysinfo@Base 15 + tcgetattr@Base 15 + tempnam@Base 15 + textdomain@Base 15 + time@Base 15 + timerfd_gettime@Base 15 + timerfd_settime@Base 15 + times@Base 15 + tmpnam@Base 15 + tmpnam_r@Base 15 + tsearch@Base 15 + ttyname@Base 15 + ttyname_r@Base 15 + uname@Base 15 + valloc@Base 15 + vasprintf@Base 15 + vfork@Base 15 + vfprintf@Base 15 + vfscanf@Base 15 + vprintf@Base 15 + vscanf@Base 15 + vsnprintf@Base 15 + vsprintf@Base 15 + vsscanf@Base 15 + wait3@Base 15 + wait4@Base 15 + wait@Base 15 + waitid@Base 15 + waitpid@Base 15 + wcrtomb@Base 15 + wcscat@Base 15 + wcsdup@Base 15 + wcslen@Base 15 + wcsncat@Base 15 + wcsnlen@Base 15 + wcsnrtombs@Base 15 + wcsrtombs@Base 15 + wcstombs@Base 15 + wcsxfrm@Base 15 + wcsxfrm_l@Base 15 + wctomb@Base 15 + wordexp@Base 15 + write@Base 15 + writev@Base 15 + xdr_bool@Base 15 + xdr_bytes@Base 15 + xdr_char@Base 15 + xdr_destroy@Base 15 + xdr_double@Base 15 + xdr_enum@Base 15 + xdr_float@Base 15 + xdr_hyper@Base 15 + xdr_int16_t@Base 15 + xdr_int32_t@Base 15 + xdr_int64_t@Base 15 + xdr_int8_t@Base 15 + xdr_int@Base 15 + xdr_long@Base 15 + xdr_longlong_t@Base 15 + xdr_quad_t@Base 15 + xdr_short@Base 15 + xdr_string@Base 15 + xdr_u_char@Base 15 + xdr_u_hyper@Base 15 + xdr_u_int@Base 15 + xdr_u_long@Base 15 + xdr_u_longlong_t@Base 15 + xdr_u_quad_t@Base 15 + xdr_u_short@Base 15 + xdr_uint16_t@Base 15 + xdr_uint32_t@Base 15 + xdr_uint64_t@Base 15 + xdr_uint8_t@Base 15 + xdrmem_create@Base 15 + xdrrec_create@Base 15 + xdrstdio_create@Base 15 diff --git a/locale-gen b/locale-gen new file mode 100755 index 0000000..f07fa55 --- /dev/null +++ b/locale-gen @@ -0,0 +1,51 @@ +#!/bin/sh + +# generate locales that the libstdc++ testsuite depends on + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +[ -n "$USE_CPUS" ] || USE_CPUS=1 + +umask 022 + +echo "Generating locales..." +xargs -L 1 -P $USE_CPUS -I{} \ + sh -c ' + set {}; locale=$1; charset=$2 + case $locale in \#*) exit;; esac + [ -n "$locale" -a -n "$charset" ] || exit + echo " `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..." + if [ -f $LOCPATH/$locale ]; then + input=$locale + else + input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"` + fi + localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias + ' <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " " + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +builddir="$1" +shift +[ $# -eq 0 ] || usage + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +declare -A stamps + +find_logs() +{ + for f in $(find $builddir -name '*.log' \ + ! -name config.log \ + ! -path '*/ada/acats?/tests/*.log' \ + ! -path '*/libbacktrace/*.log') + do + if [ ! -v stamps[$f] ]; then + stamps[$f]=$(date -u -r $f '+%s') + fi + done +} + +# wait for test startups +sleep 30 +find_logs + +# activity in the main log file +sleep 10 +st_logfile=$(date -u -r $logfile '+%s') + +sleep 10 + +while true; do + find_logs + sleep 10 + stamp=$(date -u -r $logfile '+%s') + if [ $stamp -gt $st_logfile ]; then + # there is still action in the primary logfile. do nothing. + st_logfile=$stamp + else + activity=0 + for log in "${!stamps[@]}"; do + [ -f $log ] || continue + stamp=$(date -u -r $log '+%s') + if [ $stamp -gt ${stamps[$log]} ]; then + if [ $activity -eq 0 ]; then + echo + fi + echo "[$(date -u -r $log '+%T')] $log: $message" + tail -3 $log + activity=$(expr $activity + 1) + stamps[$log]=$stamp + fi + done + if [ $activity -gt 0 ]; then + # already emitted messages above + echo + else + # nothing changed in the other log files. maybe a timeout ... + : + fi + fi + sleep $timeout +done + +exit 0 diff --git a/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff b/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff new file mode 100644 index 0000000..e886a14 --- /dev/null +++ b/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff @@ -0,0 +1,1681 @@ +PR ada/114065, patches v15 + +In the hope to reduce the rebasing work, +when a whole file can be kept unchanged in Debian, + * files specific to other systems can remain broken + * cal.c can remain, it is disabled in Makefile.rtl + * declarations of obsolete but unused time types or constants +the changes affecting it are removed from this patch. + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -760,6 +760,7 @@ GNATRTL_NONTASKING_OBJS= \ + s-string$(objext) \ + s-ststop$(objext) \ + s-tasloc$(objext) \ ++ s-c_time$(objext) \ + s-traceb$(objext) \ + s-traent$(objext) \ + s-trasym$(objext) \ +@@ -1422,7 +1423,6 @@ ifeq ($(strip $(filter-out arm% aarch64 + a-intnam.ads Clock_Id, tp => TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_CPU_Time (To_Duration (TS)); ++ return To_CPU_Time (System.C_Time.To_Duration (TS)); + end Clock; + + -------------------------- +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.adb +@@ -93,15 +93,6 @@ package body System.OS_Interface is + return 0; + end pthread_setschedparam; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -113,28 +104,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads +@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.OS_Locks; +-with System.Parameters; + + package System.OS_Interface is + pragma Preelaborate; +@@ -210,9 +210,7 @@ package System.OS_Interface is + Time_Slice_Supported : constant Boolean := True; + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + +- type timespec is private; +- +- function nanosleep (rqtp, rmtp : access timespec) return int; ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + + type clockid_t is new int; +@@ -221,21 +219,15 @@ package System.OS_Interface is + -- From: /usr/include/time.h + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) ++ tp : access C_Time.timespec) + return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + -- From: /usr/include/unistd.h + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -487,7 +479,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + Relative_Timed_Wait : constant Boolean := False; +@@ -656,15 +648,6 @@ private + + type pid_t is new int; + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : long; +- end record; +- pragma Convention (C, timespec); +- + -- From: /usr/include/pthread/pthreadtypes.h: + -- typedef struct __pthread_attr pthread_attr_t; + -- /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr... +--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.OS_Locks; +-with System.Parameters; + + package System.OS_Interface is + pragma Preelaborate; +@@ -205,9 +205,7 @@ package System.OS_Interface is + Time_Slice_Supported : constant Boolean := True; + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + +- type timespec is private; +- +- function nanosleep (rqtp, rmtp : access timespec) return int; ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + + type clockid_t is new int; +@@ -215,21 +213,15 @@ package System.OS_Interface is + + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) ++ tp : access C_Time.timespec) + return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + function sysconf (name : int) return long; + pragma Import (C, sysconf); + +@@ -430,7 +422,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + -------------------------- +@@ -602,15 +594,6 @@ private + + type pid_t is new int; + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : long; +- end record; +- pragma Convention (C, timespec); +- + type pthread_attr_t is record + detachstate : int; + schedpolicy : int; +--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads +@@ -42,6 +42,7 @@ with Ada.Unchecked_Conversion; + + with Interfaces.C; + ++with System.C_Time; + with System.Linux; + with System.OS_Constants; + with System.OS_Locks; +@@ -54,8 +55,6 @@ package System.OS_Interface is + + pragma Linker_Options ("-lpthread"); + +- use type System.Linux.time_t; +- + subtype int is Interfaces.C.int; + subtype char is Interfaces.C.char; + subtype short is Interfaces.C.short; +@@ -229,26 +228,17 @@ package System.OS_Interface is + -- Time -- + ---------- + +- subtype time_t is System.Linux.time_t; +- subtype timespec is System.Linux.timespec; +- subtype timeval is System.Linux.timeval; + subtype clockid_t is System.Linux.clockid_t; + + function clock_gettime +- (clock_id : clockid_t; tp : access timespec) return int; ++ (clock_id : clockid_t; tp : access C_Time.timespec) return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + function clock_getres + (clock_id : clockid_t; +- res : access timespec) return int; ++ res : access C_Time.timespec) return int; + pragma Import (C, clock_getres, "clock_getres"); + +- function To_Duration (TS : timespec) return Duration; +- pragma Inline (To_Duration); +- +- function To_Timespec (D : Duration) return timespec; +- pragma Inline (To_Timespec); +- + function sysconf (name : int) return long; + pragma Import (C, sysconf); + +@@ -457,7 +447,7 @@ package System.OS_Interface is + function pthread_cond_timedwait + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; +- abstime : access timespec) return int; ++ abstime : access C_Time.timespec) return int; + pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); + + -------------------------- +--- a/src/gcc/ada/libgnarl/s-osinte__posix.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__posix.adb +@@ -58,15 +58,6 @@ package body System.OS_Interface is + null; + end pthread_init; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -78,28 +69,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-osinte__x32.adb ++++ b/src/gcc/ada/libgnarl/s-osinte__x32.adb +@@ -59,15 +59,6 @@ package body System.OS_Interface is + null; + end pthread_init; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (TS : timespec) return Duration is +- begin +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +- end To_Duration; +- + ------------------------ + -- To_Target_Priority -- + ------------------------ +@@ -79,28 +70,4 @@ package body System.OS_Interface is + return Interfaces.C.int (Prio); + end To_Target_Priority; + +- ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return timespec'(tv_sec => S, +- tv_nsec => Long_Long_Integer (F * 10#1#E9)); +- end To_Timespec; +- + end System.OS_Interface; +--- a/src/gcc/ada/libgnarl/s-tpopmo.adb ++++ b/src/gcc/ada/libgnarl/s-tpopmo.adb +@@ -31,6 +31,8 @@ + + -- This is the Monotonic version of this package for Posix and Linux targets. + ++with System.C_Time; ++ + separate (System.Task_Primitives.Operations) + package body Monotonic is + +@@ -54,14 +56,14 @@ package body Monotonic is + --------------------- + + function Monotonic_Clock return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : Interfaces.C.int; + begin + Result := clock_gettime + (clock_id => OSC.CLOCK_RT_Ada, tp => TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_Duration (TS); ++ return C_Time.To_Duration (TS); + end Monotonic_Clock; + + ------------------- +@@ -69,14 +71,14 @@ package body Monotonic is + ------------------- + + function RT_Resolution return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : Interfaces.C.int; + + begin + Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access); + pragma Assert (Result = 0); + +- return To_Duration (TS); ++ return C_Time.To_Duration (TS); + end RT_Resolution; + + ---------------------- +@@ -150,7 +152,7 @@ package body Monotonic is + Abs_Time : Duration; + P_Abs_Time : Duration; + +- Request : aliased timespec; ++ Request : aliased C_Time.timespec; + Result : Interfaces.C.int; + Exit_Outer : Boolean := False; + +@@ -184,7 +186,7 @@ package body Monotonic is + end if; + pragma Warnings (On); + +- Request := To_Timespec (P_Abs_Time); ++ Request := C_Time.To_Timespec (P_Abs_Time); + + Inner : loop + exit Outer +@@ -236,7 +238,7 @@ package body Monotonic is + Check_Time : Duration; + Abs_Time : Duration; + P_Abs_Time : Duration; +- Request : aliased timespec; ++ Request : aliased C_Time.timespec; + + Result : Interfaces.C.int; + Exit_Outer : Boolean := False; +@@ -271,7 +273,7 @@ package body Monotonic is + end if; + pragma Warnings (On); + +- Request := To_Timespec (P_Abs_Time); ++ Request := C_Time.To_Timespec (P_Abs_Time); + + Inner : loop + exit Outer +--- a/src/gcc/ada/libgnat/g-calend.adb ++++ b/src/gcc/ada/libgnat/g-calend.adb +@@ -29,11 +29,8 @@ + -- -- + ------------------------------------------------------------------------------ + +-with Interfaces.C.Extensions; +- + package body GNAT.Calendar is + use Ada.Calendar; +- use Interfaces; + + ----------------- + -- Day_In_Year -- +@@ -328,61 +325,6 @@ package body GNAT.Calendar is + Time_Zone => 0); + end Time_Of_At_Locale; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (T : not null access timeval) return Duration is +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access C.Extensions.long_long; +- usec : not null access C.long); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased C.Extensions.long_long; +- usec : aliased C.long; +- +- begin +- timeval_to_duration (T, sec'Access, usec'Access); +- pragma Annotate (CodePeer, Modified, sec); +- pragma Annotate (CodePeer, Modified, usec); +- +- return Duration (sec) + Duration (usec) / Micro; +- end To_Duration; +- +- ---------------- +- -- To_Timeval -- +- ---------------- +- +- function To_Timeval (D : Duration) return timeval is +- +- procedure duration_to_timeval +- (Sec : C.Extensions.long_long; +- Usec : C.long; +- T : not null access timeval); +- pragma Import (C, duration_to_timeval, "__gnat_duration_to_timeval"); +- +- Micro : constant := 10**6; +- Result : aliased timeval; +- sec : C.Extensions.long_long; +- usec : C.long; +- +- begin +- if D = 0.0 then +- sec := 0; +- usec := 0; +- else +- sec := C.Extensions.long_long (D - 0.5); +- usec := C.long ((D - Duration (sec)) * Micro - 0.5); +- end if; +- +- duration_to_timeval (sec, usec, Result'Access); +- +- return Result; +- end To_Timeval; +- + ------------------ + -- Week_In_Year -- + ------------------ +--- a/src/gcc/ada/libgnat/g-calend.ads ++++ b/src/gcc/ada/libgnat/g-calend.ads +@@ -40,7 +40,7 @@ + -- Day_Of_Week, Day_In_Year and Week_In_Year. + + with Ada.Calendar.Formatting; +-with Interfaces.C; ++with System.C_Time; + + package GNAT.Calendar is + +@@ -145,24 +145,19 @@ package GNAT.Calendar is + -- Return the week number as defined in ISO 8601 along with the year in + -- which the week occurs. + +- -- C timeval conversion ++ subtype timeval is System.C_Time.timeval; ++ -- Deprecated. Please use C_Time directly. + +- -- C timeval represent a duration (used in Select for example). This +- -- structure is composed of a number of seconds and a number of micro +- -- seconds. The timeval structure is not exposed here because its +- -- definition is target dependent. Interface to C programs is done via a +- -- pointer to timeval structure. +- +- type timeval is private; +- +- function To_Duration (T : not null access timeval) return Duration; +- function To_Timeval (D : Duration) return timeval; ++ function To_Duration (T : not null access timeval) ++ return System.C_Time.Non_Negative_Duration ++ is (System.C_Time.To_Duration (T.all)); ++ -- Deprecated. Please use C_Time directly. ++ ++ function To_Timeval (D : System.C_Time.Non_Negative_Duration) return timeval ++ renames System.C_Time.To_Timeval; ++ -- Deprecated. Please use C_Time directly. + + private +- -- This is a dummy declaration that should be the largest possible timeval +- -- structure of all supported targets. +- +- type timeval is array (1 .. 3) of Interfaces.C.long; + + function Julian_Day + (Year : Ada.Calendar.Year_Number; +--- a/src/gcc/ada/libgnat/g-socket.adb ++++ b/src/gcc/ada/libgnat/g-socket.adb +@@ -45,6 +45,7 @@ pragma Warnings (Off, GNAT.Sockets.Linke + with GNAT.Sockets.Poll; + + with System; use System; ++with System.C_Time; + with System.Communication; use System.Communication; + with System.CRTL; use System.CRTL; + with System.Task_Lock; +@@ -179,13 +180,6 @@ package body GNAT.Sockets is + function Value (S : System.Address) return String; + -- Same as Interfaces.C.Strings.Value but taking a System.Address + +- function To_Timeval (Val : Timeval_Duration) return Timeval; +- -- Separate Val in seconds and microseconds +- +- function To_Duration (Val : Timeval) return Timeval_Duration; +- -- Reconstruct a Duration value from a Timeval record (seconds and +- -- microseconds). +- + function Dedot (Value : String) return String + is (if Value /= "" and then Value (Value'Last) = '.' + then Value (Value'First .. Value'Last - 1) +@@ -528,7 +522,7 @@ package body GNAT.Sockets is + Res : C.int; + Last : C.int; + RSig : Socket_Type := No_Socket; +- TVal : aliased Timeval; ++ TVal : aliased System.C_Time.timeval; + TPtr : Timeval_Access; + + begin +@@ -543,7 +537,7 @@ package body GNAT.Sockets is + if Timeout = Forever then + TPtr := null; + else +- TVal := To_Timeval (Timeout); ++ TVal := System.C_Time.To_Timeval (Timeout); + TPtr := TVal'Unchecked_Access; + end if; + +@@ -1423,7 +1417,7 @@ package body GNAT.Sockets is + U4 : aliased C.unsigned; + V1 : aliased C.unsigned_char; + VS : aliased C.char_array (1 .. NS); -- for devices name +- VT : aliased Timeval; ++ VT : aliased System.C_Time.timeval; + Len : aliased C.int; + Add : System.Address; + Res : C.int; +@@ -1596,8 +1590,10 @@ package body GNAT.Sockets is + Opt.Timeout := Duration (U4) / 1000; + end if; + ++ elsif System.C_Time.In_Duration (VT) then ++ Opt.Timeout := System.C_Time.To_Duration (VT); + else +- Opt.Timeout := To_Duration (VT); ++ Opt.Timeout := Forever; + end if; + + when Bind_To_Device => +@@ -2633,7 +2629,7 @@ package body GNAT.Sockets is + (1 .. (if Option.Name = Bind_To_Device + then C.size_t (ASU.Length (Option.Device) + 1) + else 0)); +- VT : aliased Timeval; ++ VT : aliased System.C_Time.timeval; + Len : C.int; + Add : System.Address := Null_Address; + Res : C.int; +@@ -2767,7 +2763,7 @@ package body GNAT.Sockets is + end if; + + else +- VT := To_Timeval (Option.Timeout); ++ VT := System.C_Time.To_Timeval (Option.Timeout); + Len := VT'Size / 8; + Add := VT'Address; + end if; +@@ -2865,33 +2861,6 @@ package body GNAT.Sockets is + return Integer (Socket); + end To_C; + +- ----------------- +- -- To_Duration -- +- ----------------- +- +- function To_Duration (Val : Timeval) return Timeval_Duration is +- Max_D : constant Long_Long_Integer := Long_Long_Integer (Forever - 0.5); +- Tv_sec_64 : constant Boolean := SOSC.SIZEOF_tv_sec = 8; +- -- Need to separate this condition into the constant declaration to +- -- avoid GNAT warning about "always true" or "always false". +- begin +- if Tv_sec_64 then +- -- Check for possible Duration overflow when Tv_Sec field is 64 bit +- -- integer. +- +- if Val.Tv_Sec > time_t (Max_D) +- or else +- (Val.Tv_Sec = time_t (Max_D) +- and then +- Val.Tv_Usec > suseconds_t ((Forever - Duration (Max_D)) * 1E6)) +- then +- return Forever; +- end if; +- end if; +- +- return Duration (Val.Tv_Sec) + Duration (Val.Tv_Usec) * 1.0E-6; +- end To_Duration; +- + ------------------- + -- To_Host_Entry -- + ------------------- +@@ -3041,36 +3010,6 @@ package body GNAT.Sockets is + return HN.Name (1 .. HN.Length); + end To_String; + +- ---------------- +- -- To_Timeval -- +- ---------------- +- +- function To_Timeval (Val : Timeval_Duration) return Timeval is +- S : time_t; +- uS : suseconds_t; +- +- begin +- -- If zero, set result as zero (otherwise it gets rounded down to -1) +- +- if Val = 0.0 then +- S := 0; +- uS := 0; +- +- -- Normal case where we do round down +- +- else +- S := time_t (Val - 0.5); +- uS := suseconds_t (1_000_000 * (Val - Selector_Duration (S)) - 0.5); +- +- if uS = -1 then +- -- It happen on integer duration +- uS := 0; +- end if; +- end if; +- +- return (S, uS); +- end To_Timeval; +- + ----------- + -- Value -- + ----------- +--- a/src/gcc/ada/libgnat/g-socthi.adb ++++ b/src/gcc/ada/libgnat/g-socthi.adb +@@ -40,6 +40,8 @@ with GNAT.Task_Lock; + + with Interfaces.C; use Interfaces.C; + ++with System.C_Time; ++ + package body GNAT.Sockets.Thin is + + Non_Blocking_Sockets : aliased Fd_Set; +@@ -215,7 +217,7 @@ package body GNAT.Sockets.Thin is + declare -- unreachable if Thread_Blocking_IO is statically True + pragma Warnings (On, "unreachable code"); + WSet : aliased Fd_Set; +- Now : aliased Timeval; ++ Now : aliased System.C_Time.timeval; + + begin + Reset_Socket_Set (WSet'Access); +--- a/src/gcc/ada/libgnat/g-sothco.ads ++++ b/src/gcc/ada/libgnat/g-sothco.ads +@@ -34,7 +34,7 @@ + + with Ada.Unchecked_Conversion; + with Interfaces.C.Strings; +-with System.Parameters; ++with System.C_Time; + + package GNAT.Sockets.Thin_Common is + +@@ -44,31 +44,13 @@ package GNAT.Sockets.Thin_Common is + Success : constant C.int := 0; + Failure : constant C.int := -1; + +- type time_t is +- range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- for time_t'Size use System.Parameters.time_t_bits; +- pragma Convention (C, time_t); +- +- type suseconds_t is +- range -2 ** (8 * SOSC.SIZEOF_tv_usec - 1) +- .. 2 ** (8 * SOSC.SIZEOF_tv_usec - 1) - 1; +- for suseconds_t'Size use 8 * SOSC.SIZEOF_tv_usec; +- pragma Convention (C, suseconds_t); +- +- type Timeval is record +- Tv_Sec : time_t; +- Tv_Usec : suseconds_t; +- end record; +- pragma Convention (C, Timeval); +- +- type Timeval_Access is access all Timeval; ++ type Timeval_Access is access all System.C_Time.timeval; + pragma Convention (C, Timeval_Access); + + type socklen_t is mod 2 ** (8 * SOSC.SIZEOF_socklen_t); + for socklen_t'Size use (8 * SOSC.SIZEOF_socklen_t); + +- Immediat : constant Timeval := (0, 0); ++ Immediat : System.C_Time.timeval renames System.C_Time.Timeval_Zero; + + ------------------------------------------- + -- Mapping tables to low level constants -- +--- a/src/gcc/ada/libgnat/g-spogwa.adb ++++ b/src/gcc/ada/libgnat/g-spogwa.adb +@@ -29,7 +29,7 @@ + -- -- + ------------------------------------------------------------------------------ + +-with GNAT.Sockets.Thin_Common; ++with System.C_Time; + + procedure GNAT.Sockets.Poll.G_Wait + (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer) +@@ -41,11 +41,11 @@ is + readfds : access FD_Set_Type; + writefds : access FD_Set_Type; + exceptfds : access FD_Set_Type; +- timeout : access Thin_Common.Timeval) return Integer ++ timeout : access System.C_Time.timeval) return Integer + with Import => True, Convention => Stdcall, External_Name => "select"; + +- Timeout_V : aliased Thin_Common.Timeval; +- Timeout_A : access Thin_Common.Timeval; ++ Timeout_V : aliased System.C_Time.timeval; ++ Timeout_A : access System.C_Time.timeval; + + Rfds : aliased FD_Set_Type; + Rcount : Natural := 0; +@@ -63,8 +63,7 @@ begin + + if Timeout >= 0 then + Timeout_A := Timeout_V'Access; +- Timeout_V.Tv_Sec := Thin_Common.time_t (Timeout / 1000); +- Timeout_V.Tv_Usec := Thin_Common.suseconds_t (Timeout rem 1000 * 1000); ++ Timeout_V := System.C_Time.Milliseconds_To_Timeval (Timeout); + end if; + + Reset_Socket_Set (Rfds); +--- /dev/null ++++ b/src/gcc/ada/libgnat/s-c_time.adb +@@ -0,0 +1,248 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . C _ T I M E -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package body System.C_Time is ++ ++ -- Two Duration representations are described in targparm.ads. ++ -- Size Delta Last = (2**(Size - 1) - 1) * Delta ++ -- 32 0.02 42_949_672.94 ++ -- 64 0.000_000_001 9_223_372_036.854_775_807 ++ ++ -- The overflows listed in comments must raise Constraint_Error. ++ pragma Unsuppress (Overflow_Check); ++ ++ ----------------- ++ -- In_Duration -- ++ ----------------- ++ ++ function In_Duration (T : timeval) return Boolean is ++ ++ -- Mimic To_Timeval (Duration'Last), except that ++ -- * this computation happens at compile time ++ -- * Sec may be far above MAX_tv_sec ++ -- * on 64 bits, Usec is truncated instead of rounded up ++ Sec : constant := (if Duration'Size = 64 ++ then (2**63 - 1) / 1_000_000_000 ++ else (2**31 - 1) / 50); ++ Usec : constant := (if Duration'Size = 64 ++ then (2**63 - 1) mod 1_000_000_000 / 1_000 ++ else (2**31 - 1) mod 50 * 20_000); ++ ++ pragma Warnings (Off, "condition is always"); ++ Dur_Covers_Tv_Sec : constant Boolean := OS_Constants.MAX_tv_sec < Sec; ++ pragma Warnings (On, "condition is always"); ++ ++ -- When Duration'Size = 64 and time_t'Size = 32, the compiler ++ -- complains that Sec does not fit in time_t, hence cannot be ++ -- compared with T.tv_sec. But then Dur_Covers_Tv_Sec is True ++ -- and the following comparisons are skipped. ++ Maybe_Sec : constant := (if Dur_Covers_Tv_Sec then 1 else Sec); ++ begin ++ return Dur_Covers_Tv_Sec ++ or else T.tv_sec < Maybe_Sec ++ or else (T.tv_sec = Maybe_Sec and then T.tv_usec <= Usec); ++ end In_Duration; ++ ++ ----------------------------- ++ -- Milliseconds_To_Timeval -- ++ ----------------------------- ++ ++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval is ++ use Interfaces.C; ++ Q : constant int range 0 .. int'Last / 1_000 := M / 1_000; ++ R : constant int range 0 .. 999 := M mod 1_000; ++ begin ++ return (tv_sec => time_t (Q), ++ tv_usec => 1_000 * usec_t (R)); ++ end Milliseconds_To_Timeval; ++ ++ ----------------------------- ++ -- Nanoseconds_To_Timespec -- ++ ----------------------------- ++ ++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec is ++ use Interfaces.C; ++ Q : constant int range 0 .. int'Last / 10**9 := N / 10**9; ++ R : constant int range 0 .. 999_999_999 := N mod 10**9; ++ begin ++ return (tv_sec => time_t (Q), ++ tv_nsec => nsec_t (R)); ++ end Nanoseconds_To_Timespec; ++ ++ ----------------- ++ -- To_Duration -- ++ ----------------- ++ ++ function To_Duration (T : timeval) return Non_Negative_Duration is ++ Usec : usec_t range 0 .. 1_009_999; ++ Frac : Duration range 0.0 .. 1.0; ++ begin ++ if Duration'Size = 64 then ++ Usec := T.tv_usec; ++ else ++ -- Fix the rounding (999_999.0 / 1_000_000 = 0.98) ++ -- with a bias of half Duration'Small = 10 ms. ++ Usec := T.tv_usec + 10_000; ++ end if; ++ Frac := Duration (Usec) / 1_000_000; ++ ++ return Duration (T.tv_sec) + Frac; ++ -- Both the conversion and the addition may overflow. ++ end To_Duration; ++ ++ function To_Duration (T : timespec) return Non_Negative_Duration is ++ Frac : Duration range 0.0 .. 1.0; ++ begin ++ if Duration'Size = 64 then ++ Frac := Duration (T.tv_nsec) / 1_000_000_000; ++ else ++ -- Avoid an overflow (Duration'Last < 999_999_999). ++ -- Fix the rounding (999_999_999.0 / 1_000_000_000 = 0.98) ++ -- with a bias of half Duration'Small = 10 ms. ++ Frac := Duration (T.tv_nsec / 10_000_000 + 1) / 100; ++ end if; ++ ++ return Duration (T.tv_sec) + Frac; ++ -- Both the conversion and the addition may overflow. ++ end To_Duration; ++ ++ function To_Duration (tv_sec : Tv_Sec_Long; ++ tv_nsec : Tv_Nsec_Long) ++ return Non_Negative_Duration is ++ begin ++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), ++ tv_nsec => nsec_t (tv_nsec))); ++ end To_Duration; ++ ++ function To_Duration (tv_sec : Tv_Sec_Long_Long; ++ tv_nsec : Tv_Nsec_Long) ++ return Non_Negative_Duration is ++ begin ++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), ++ tv_nsec => nsec_t (tv_nsec))); ++ end To_Duration; ++ ++ ------------------------ ++ -- To_Struct_Timespec -- ++ ------------------------ ++ ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long; ++ tv_nsec : out Tv_Nsec_Long) is ++ T : constant timespec := To_Timespec (D); ++ begin ++ tv_sec := Tv_Sec_Long (T.tv_sec); -- May overflow Interfaces.C.long. ++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); ++ end To_Struct_Timespec; ++ ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long_Long; ++ tv_nsec : out Tv_Nsec_Long) is ++ T : constant timespec := To_Timespec (D); ++ begin ++ tv_sec := Tv_Sec_Long_Long (T.tv_sec); ++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); ++ end To_Struct_Timespec; ++ ++ ----------------- ++ -- To_Timespec -- ++ ----------------- ++ ++ function To_Timespec (T : timeval) return timespec is ++ begin ++ return (tv_sec => T.tv_sec, ++ tv_nsec => 1_000 * nsec_t (T.tv_usec)); ++ end To_Timespec; ++ ++ function To_Timespec (D : Non_Negative_Duration) return timespec is ++ -- See To_Timeval. ++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; ++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); ++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); ++ Nsec : nsec_t range -500_000_000 .. 500_000_000; ++ begin ++ if Duration'Size = 64 then ++ Nsec := nsec_t (1_000_000_000 * Frac); ++ else ++ -- Duration'Last < 500_000_000 so there is an overflow issue, ++ -- easy to solve because Frac has few significative digits. ++ Nsec := 20_000_000 * nsec_t (50 * Frac); ++ end if; ++ if Nsec < 0 then ++ return (tv_sec => Sec, tv_nsec => Nsec + 1_000_000_000); ++ else ++ return (tv_sec => Sec + 1, tv_nsec => Nsec); ++ end if; ++ end To_Timespec; ++ ++ ----------------- ++ -- To_Timeval -- ++ ----------------- ++ ++ function To_Timeval (D : Non_Negative_Duration) return timeval is ++ ++ -- Most comments also apply to the timespec variant. ++ ++ -- Sec := time_t (D); ++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); ++ -- fails when D is ++ -- Duration'Last (Sec is rounded up and Duration (Sec) overflows) ++ -- 0.9 (Sec is rounded up and Usec < 0) ++ ++ -- Sec := time_t (D - 0.5); ++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); ++ -- leads to Usec = 1_000_000 when D is ++ -- 0.0 (Sec is rounded down) ++ -- 0.999_999_999 (Usec is rounded up) (not an issue with timespec) ++ ++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; ++ -- Converting D - 1 avoids overflows and simplifies roundings. ++ ++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); ++ -- The conversion of Dm1 may overflow if time_t has 32 bits. ++ ++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); ++ -- The conversion back is always possible, Sec <= Duration'Last - 0.5. ++ ++ Usec : constant usec_t range -500_000 .. 500_000 ++ := usec_t (1_000_000 * Frac); ++ begin ++ -- Add the second substracted at the beginning, in a way fixing ++ -- the Usec interval if necessary. ++ -- In both cases, tv_sec may exceed MAX_tv_sec. ++ if Usec < 0 then ++ return (tv_sec => Sec, tv_usec => Usec + 1_000_000); ++ else ++ return (tv_sec => Sec + 1, tv_usec => Usec); ++ end if; ++ end To_Timeval; ++ ++end System.C_Time; +--- /dev/null ++++ b/src/gcc/ada/libgnat/s-c_time.ads +@@ -0,0 +1,135 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . C _ T I M E -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This package provides the timeval, timespec C types and conversions. ++-- It hides all details about time_t, suseconds_t. ++ ++with Interfaces.C; ++private with System.OS_Constants; ++ ++package System.C_Time ++ with Pure ++is ++ ++ -- These C structs represent non negative durations with different ++ -- accuracies and maximal values. ++ type timespec is private; -- accurate to 1 nanosecond ++ type timeval is private; -- accurate to 1 microsecond ++ ++ -- Duration is accurate to either 1 nanosecond or 20 milliseconds. ++ subtype Non_Negative_Duration is Duration range 0.0 .. Duration'Last; ++ ++ -- All conversions round if the target type is less accurate than ++ -- the source type, away from zero if the source value is midway ++ -- between two values of the target type. ++ -- They raise Constraint_Error when the value, after rounding, ++ -- exceeds the last value of the target type. ++ ++ function To_Duration (T : timespec) return Non_Negative_Duration; ++ function To_Duration (T : timeval) return Non_Negative_Duration; ++ ++ function To_Timespec (D : Non_Negative_Duration) return timespec; ++ function To_Timeval (D : Non_Negative_Duration) return timeval; ++ ++ Timeval_Zero : constant timeval; ++ -- g-sothco.ads ++ ++ function In_Duration (T : timeval) return Boolean with Inline; ++ -- True if computing To_Duration (T) is safe, ++ -- False if Constraint Error would be raised. ++ -- g-socket.adb: ++ ++ subtype Non_Negative_Int is ++ Interfaces.C.int range 0 .. Interfaces.C.int'Last; ++ ++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval ++ with Inline; ++ -- g-spogwa.adb ++ ++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec ++ with Inline; ++ function To_Timespec (T : timeval) return timespec with Inline; ++ -- s-osinte__darwin.adb ++ ++ -- These functions are provided for backward compatibility, ++ -- but lead to non portable interfaces with C. ++ -- Tv_sec and tv_nsec do not match the long int type on x32, ++ -- or on 32 bits ARM with a 2038-compatible GNU libc. ++ subtype Tv_Sec_Long_Long is Interfaces.C.long_long ++ range 0 .. Interfaces.C.long_long'Last; ++ subtype Tv_Sec_Long is Interfaces.C.long range 0 .. Interfaces.C.long'Last; ++ subtype Tv_Nsec_Long is Interfaces.C.long range 0 .. 999_999_999; ++ function To_Duration (tv_sec : Tv_Sec_Long; ++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration ++ with Inline; ++ function To_Duration (tv_sec : Tv_Sec_Long_Long; ++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration ++ with Inline; ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long; ++ tv_nsec : out Tv_Nsec_Long) with Inline; ++ procedure To_Struct_Timespec (D : Non_Negative_Duration; ++ tv_sec : out Tv_Sec_Long_Long; ++ tv_nsec : out Tv_Nsec_Long) with Inline; ++ -- a-calcon.ads ++ ++private ++ ++ type time_t is range -2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_sec * 8; ++ ++ type usec_t is range -2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_usec * 8; ++ -- Larger than the suseconds_t C type on ARM 32 bits with GNU libc ++ -- when __TIME_BITS=64. ++ ++ type nsec_t is range -2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) .. ++ 2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) - 1 ++ with Convention => C, Size => OS_Constants.SIZEOF_tv_nsec * 8; ++ -- Larger than the signed long int C type on x32. ++ ++ type timeval is record ++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds ++ tv_usec : usec_t range 0 .. 999_999; -- microseconds ++ end record ++ with Convention => C; ++ ++ type timespec is record ++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds ++ tv_nsec : nsec_t range 0 .. 999_999_999; -- nanoseconds ++ end record ++ with Convention => C; ++ ++ Timeval_Zero : constant timeval := (tv_sec => 0, tv_usec => 0); ++ ++end System.C_Time; +--- a/src/gcc/ada/libgnat/s-optide.adb ++++ b/src/gcc/ada/libgnat/s-optide.adb +@@ -36,8 +36,8 @@ procedure Timed_Delay + (Time : Duration; + Mode : Integer) + is +- Request : aliased timespec; +- Remaind : aliased timespec; ++ Request : aliased C_Time.timespec; ++ Remaind : aliased C_Time.timespec; + Rel_Time : Duration; + Abs_Time : Duration; + Base_Time : constant Duration := Clock; +@@ -71,7 +71,7 @@ begin + end if; + pragma Warnings (On); + +- Request := To_Timespec (Time_Chunk); ++ Request := C_Time.To_Timespec (Time_Chunk); + Result := nanosleep (Request'Access, Remaind'Access); + + Check_Time := Clock; +--- a/src/gcc/ada/libgnat/s-osprim__posix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb +@@ -30,7 +30,7 @@ + ------------------------------------------------------------------------------ + + -- This version is for POSIX-like operating systems +-with System.Parameters; ++with System.C_Time; + + package body System.OS_Primitives is + +@@ -39,16 +39,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -57,27 +49,12 @@ package body System.OS_Primitives is + + function Clock return Duration is + +- type timeval is array (1 .. 3) of Long_Integer; +- -- The timeval array is sized to contain Long_Long_Integer sec and +- -- Long_Integer usec. If Long_Long_Integer'Size = Long_Integer'Size then +- -- it will be overly large but that will not effect the implementation +- -- since it is not accessed directly. +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access Long_Long_Integer; +- usec : not null access Long_Integer); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased Long_Long_Integer; +- usec : aliased Long_Integer; +- TV : aliased timeval; ++ TV : aliased C_Time.timeval; + Result : Integer; + pragma Unreferenced (Result); + + function gettimeofday +- (Tv : access timeval; ++ (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -91,38 +68,10 @@ package body System.OS_Primitives is + -- value is never checked. + + Result := gettimeofday (TV'Access, System.Null_Address); +- timeval_to_duration (TV'Access, sec'Access, usec'Access); +- return Duration (sec) + Duration (usec) / Micro; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb +@@ -31,9 +31,10 @@ + + -- This version is for POSIX.1-2008-like operating systems + ++with System.C_Time; + with System.CRTL; + with System.OS_Constants; +-with System.Parameters; ++ + package body System.OS_Primitives is + + subtype int is System.CRTL.int; +@@ -42,16 +43,8 @@ package body System.OS_Primitives is + -- we don't want to depend on any package. Consider removing these + -- declarations in System.OS_Interface and move these ones to the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -59,7 +52,7 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- TS : aliased timespec; ++ TS : aliased C_Time.timespec; + Result : int; + + type clockid_t is new int; +@@ -68,43 +61,16 @@ package body System.OS_Primitives is + + function clock_gettime + (clock_id : clockid_t; +- tp : access timespec) return int; ++ tp : access C_Time.timespec) return int; + pragma Import (C, clock_gettime, "clock_gettime"); + + begin + Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); + pragma Assert (Result = 0); +- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++ return C_Time.To_Duration (TS); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +--- a/src/gcc/ada/libgnat/s-osprim__unix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__unix.adb +@@ -32,6 +32,8 @@ + -- This version uses gettimeofday and select + -- This file is suitable for OpenNT, Dec Unix and SCO UnixWare. + ++with System.C_Time; ++ + package body System.OS_Primitives is + + -- ??? These definitions are duplicated from System.OS_Interface +@@ -39,14 +41,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type struct_timeval is record +- tv_sec : Integer; +- tv_usec : Integer; +- end record; +- pragma Convention (C, struct_timeval); +- + procedure gettimeofday +- (tv : not null access struct_timeval; ++ (tv : not null access C_Time.timeval; + tz : Address := Null_Address); + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -55,7 +51,7 @@ package body System.OS_Primitives is + readfds, + writefds, + exceptfds : Address := Null_Address; +- timeout : not null access struct_timeval); ++ timeout : not null access C_Time.timeval); + pragma Import (C, C_select, "select"); + + ----------- +@@ -63,11 +59,11 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- TV : aliased struct_timeval; ++ TV : aliased C_Time.timeval; + + begin + gettimeofday (TV'Access); +- return Duration (TV.tv_sec) + Duration (TV.tv_usec) / 10#1#E6; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +@@ -82,7 +78,7 @@ package body System.OS_Primitives is + Abs_Time : Duration; + Base_Time : constant Duration := Clock; + Check_Time : Duration := Base_Time; +- timeval : aliased struct_timeval; ++ timeval : aliased C_Time.timeval; + + begin + if Mode = Relative then +@@ -95,14 +91,7 @@ package body System.OS_Primitives is + + if Rel_Time > 0.0 then + loop +- timeval.tv_sec := Integer (Rel_Time); +- +- if Duration (timeval.tv_sec) > Rel_Time then +- timeval.tv_sec := timeval.tv_sec - 1; +- end if; +- +- timeval.tv_usec := +- Integer ((Rel_Time - Duration (timeval.tv_sec)) * 10#1#E6); ++ timeval := C_Time.To_Timeval (Rel_Time); + + C_select (timeout => timeval'Unchecked_Access); + Check_Time := Clock; +--- a/src/gcc/ada/libgnat/s-osprim__x32.adb ++++ b/src/gcc/ada/libgnat/s-osprim__x32.adb +@@ -31,7 +31,7 @@ + + -- This version is for Linux/x32 + +-with System.Parameters; ++with System.C_Time; + + package body System.OS_Primitives is + +@@ -40,16 +40,8 @@ package body System.OS_Primitives is + -- these declarations in System.OS_Interface and move these ones in + -- the spec. + +- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) +- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; +- +- type timespec is record +- tv_sec : time_t; +- tv_nsec : Long_Long_Integer; +- end record; +- pragma Convention (C, timespec); +- +- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; + pragma Import (C, nanosleep, "nanosleep"); + + ----------- +@@ -57,23 +49,12 @@ package body System.OS_Primitives is + ----------- + + function Clock return Duration is +- type timeval is array (1 .. 2) of Long_Long_Integer; +- +- procedure timeval_to_duration +- (T : not null access timeval; +- sec : not null access Long_Integer; +- usec : not null access Long_Integer); +- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); +- +- Micro : constant := 10**6; +- sec : aliased Long_Integer; +- usec : aliased Long_Integer; +- TV : aliased timeval; ++ TV : aliased C_Time.timeval; + Result : Integer; + pragma Unreferenced (Result); + + function gettimeofday +- (Tv : access timeval; ++ (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; + pragma Import (C, gettimeofday, "gettimeofday"); + +@@ -87,38 +68,10 @@ package body System.OS_Primitives is + -- value is never checked. + + Result := gettimeofday (TV'Access, System.Null_Address); +- timeval_to_duration (TV'Access, sec'Access, usec'Access); +- return Duration (sec) + Duration (usec) / Micro; ++ return C_Time.To_Duration (TV); + end Clock; + + ----------------- +- -- To_Timespec -- +- ----------------- +- +- function To_Timespec (D : Duration) return timespec; +- +- function To_Timespec (D : Duration) return timespec is +- S : time_t; +- F : Duration; +- +- begin +- S := time_t (Long_Long_Integer (D)); +- F := D - Duration (S); +- +- -- If F has negative value due to a round-up, adjust for positive F +- -- value. +- +- if F < 0.0 then +- S := S - 1; +- F := F + 1.0; +- end if; +- +- return +- timespec'(tv_sec => S, +- tv_nsec => Long_Long_Integer (F * 10#1#E9)); +- end To_Timespec; +- +- ----------------- + -- Timed_Delay -- + ----------------- + +@@ -126,8 +79,8 @@ package body System.OS_Primitives is + (Time : Duration; + Mode : Integer) + is +- Request : aliased timespec; +- Remaind : aliased timespec; ++ Request : aliased C_Time.timespec; ++ Remaind : aliased C_Time.timespec; + Rel_Time : Duration; + Abs_Time : Duration; + Base_Time : constant Duration := Clock; +@@ -147,7 +100,7 @@ package body System.OS_Primitives is + + if Rel_Time > 0.0 then + loop +- Request := To_Timespec (Rel_Time); ++ Request := C_Time.To_Timespec (Rel_Time); + Result := nanosleep (Request'Access, Remaind'Access); + Check_Time := Clock; + +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1764,6 +1764,17 @@ CND(SIZEOF_tv_usec, "tv_usec") + #endif + CNS(MAX_tv_sec, "") + } ++ ++{ ++ struct timespec ts; ++/* ++ -- Sizes (in bytes) of the components of struct timespec. ++ -- The tv_sec field is the same than in struct timeval. ++*/ ++#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) ++CND(SIZEOF_tv_nsec, "tv_nsec"); ++} ++ + /* + + -- Sizes of various data types diff --git a/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff b/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff new file mode 100644 index 0000000..7c7bbd3 --- /dev/null +++ b/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff @@ -0,0 +1,249 @@ +PR ada/114065, patches v15 + +--- a/src/gcc/ada/libgnarl/a-exetim__posix.adb ++++ b/src/gcc/ada/libgnarl/a-exetim__posix.adb +@@ -35,6 +35,7 @@ with Ada.Task_Identification; use Ada.T + with Ada.Unchecked_Conversion; + + with System.C_Time; ++with System.OS_Constants; + with System.Tasking; + with System.OS_Interface; use System.OS_Interface; + with System.Task_Primitives.Operations; use System.Task_Primitives.Operations; +@@ -115,7 +116,8 @@ package body Ada.Execution_Time is + (clock_id : Interfaces.C.int; + tp : access System.C_Time.timespec) + return Interfaces.C.int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, ++ System.OS_Constants.Y2038_clock_gettime); + -- Function from the POSIX.1b Realtime Extensions library + + function pthread_getcpuclockid +--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads +@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; + with Interfaces.C; + + with System.C_Time; ++with System.OS_Constants; + with System.OS_Locks; + + package System.OS_Interface is +@@ -211,7 +212,7 @@ package System.OS_Interface is + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + + function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + type clockid_t is new int; + CLOCK_REALTIME : constant clockid_t := 0; +@@ -221,12 +222,12 @@ package System.OS_Interface is + (clock_id : clockid_t; + tp : access C_Time.timespec) + return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + -- From: /usr/include/unistd.h + function sysconf (name : int) return long; +@@ -480,7 +481,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + Relative_Timed_Wait : constant Boolean := False; + -- pthread_cond_timedwait requires an absolute delay time +--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; + with Interfaces.C; + + with System.C_Time; ++with System.OS_Constants; + with System.OS_Locks; + + package System.OS_Interface is +@@ -206,7 +207,7 @@ package System.OS_Interface is + -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) + + function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + type clockid_t is new int; + CLOCK_REALTIME : constant clockid_t := 0; +@@ -215,12 +216,12 @@ package System.OS_Interface is + (clock_id : clockid_t; + tp : access C_Time.timespec) + return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -423,7 +424,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + -------------------------- + -- POSIX.1c Section 13 -- +--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads +@@ -232,12 +232,12 @@ package System.OS_Interface is + + function clock_gettime + (clock_id : clockid_t; tp : access C_Time.timespec) return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + function clock_getres + (clock_id : clockid_t; + res : access C_Time.timespec) return int; +- pragma Import (C, clock_getres, "clock_getres"); ++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); + + function sysconf (name : int) return long; + pragma Import (C, sysconf); +@@ -448,7 +448,8 @@ package System.OS_Interface is + (cond : access pthread_cond_t; + mutex : access pthread_mutex_t; + abstime : access C_Time.timespec) return int; +- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ pragma Import (C, pthread_cond_timedwait, ++ OS_Constants.Y2038_pthread_cond_timedwait); + + -------------------------- + -- POSIX.1c Section 13 -- +--- a/src/gcc/ada/libgnat/g-spogwa.adb ++++ b/src/gcc/ada/libgnat/g-spogwa.adb +@@ -42,7 +42,8 @@ is + writefds : access FD_Set_Type; + exceptfds : access FD_Set_Type; + timeout : access System.C_Time.timeval) return Integer +- with Import => True, Convention => Stdcall, External_Name => "select"; ++ with Import => True, Convention => Stdcall, ++ External_Name => System.OS_Constants.Y2038_select; + + Timeout_V : aliased System.C_Time.timeval; + Timeout_A : access System.C_Time.timeval; +--- a/src/gcc/ada/libgnat/s-osprim__posix.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb +@@ -31,6 +31,7 @@ + + -- This version is for POSIX-like operating systems + with System.C_Time; ++with System.OS_Constants; + + package body System.OS_Primitives is + +@@ -41,7 +42,7 @@ package body System.OS_Primitives is + + function nanosleep (rqtp, rmtp : not null access C_Time.timespec) + return Integer; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + ----------- + -- Clock -- +@@ -56,7 +57,7 @@ package body System.OS_Primitives is + function gettimeofday + (Tv : access C_Time.timeval; + Tz : System.Address := System.Null_Address) return Integer; +- pragma Import (C, gettimeofday, "gettimeofday"); ++ pragma Import (C, gettimeofday, OS_Constants.Y2038_gettimeofday); + + begin + -- The return codes for gettimeofday are as follows (from man pages): +--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb +@@ -45,7 +45,7 @@ package body System.OS_Primitives is + + function nanosleep (rqtp, rmtp : not null access C_Time.timespec) + return Integer; +- pragma Import (C, nanosleep, "nanosleep"); ++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); + + ----------- + -- Clock -- +@@ -62,7 +62,7 @@ package body System.OS_Primitives is + function clock_gettime + (clock_id : clockid_t; + tp : access C_Time.timespec) return int; +- pragma Import (C, clock_gettime, "clock_gettime"); ++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); + + begin + Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1777,6 +1777,49 @@ CND(SIZEOF_tv_nsec, "tv_nsec"); + + /* + ++ -- On 32 bits architectures, glibc and musl also support representing time ++ -- types on 64 bits. The usual names are reserved symbols for the 32 bits ++ -- function for backwards compatibility, so distinct symbols are necessary ++ -- for the current version. In other contexts, define Y2038_foo as "foo" ++ -- so that other files may safely Import with External_Name => Y2038_foo. ++*/ ++#if defined(__USE_TIME64_REDIRECTS) || (__TIMESIZE == 32 && __USE_TIME_BITS64) ++/* glibc */ ++# define Y2038_clock_getres "__clock_getres64" ++# define Y2038_clock_gettime "__clock_gettime64" ++# define Y2038_gettimeofday "__gettimeofday64" ++# define Y2038_nanosleep "__nanosleep64" ++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait64" ++# define Y2038_pthread_cond_wait "__pthread_cond_wait64" ++# define Y2038_select "__select64" ++#elif defined(_REDIR_TIME64) ++/* musl */ ++# define Y2038_clock_getres "__clock_getres_time64" ++# define Y2038_clock_gettime "__clock_gettime64" ++# define Y2038_gettimeofday "__gettimeofday_time64" ++# define Y2038_nanosleep "__nanosleep_time64" ++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait_time64" ++# define Y2038_pthread_cond_wait "__pthread_cond_wait_time64" ++# define Y2038_select "__select_time64" ++#else ++# define Y2038_clock_getres "clock_getres" ++# define Y2038_clock_gettime "clock_gettime" ++# define Y2038_gettimeofday "gettimeofday" ++# define Y2038_nanosleep "nanosleep" ++# define Y2038_pthread_cond_timedwait "pthread_cond_timedwait" ++# define Y2038_pthread_cond_wait "pthread_cond_wait" ++# define Y2038_select "select" ++#endif ++CST(Y2038_clock_getres, "") ++CST(Y2038_clock_gettime, "") ++CST(Y2038_gettimeofday, "") ++CST(Y2038_nanosleep, "") ++CST(Y2038_pthread_cond_timedwait, "") ++CST(Y2038_pthread_cond_wait, "") ++CST(Y2038_select, "") ++ ++/* ++ + -- Sizes of various data types + */ + diff --git a/patches/D-22464.diff b/patches/D-22464.diff new file mode 100644 index 0000000..2b02545 --- /dev/null +++ b/patches/D-22464.diff @@ -0,0 +1,35 @@ +--- a/src/gcc/d/dmd/globals.d ++++ b/src/gcc/d/dmd/globals.d +@@ -301,7 +301,7 @@ extern (C++) struct Global + Array!(const(char)*) filePath; /// Array of char*'s which form the file import lookup path + + private enum string _version = import("VERSION"); +- char[26] datetime; /// string returned by ctime() ++ char[26] datetime; /// string returned by asctime() + CompileEnv compileEnv; + + Param params; /// command line parameters +@@ -415,15 +415,19 @@ extern (C++) struct Global + import core.stdc.stdlib : getenv; + + time_t ct; ++ const(char)* p; + // https://issues.dlang.org/show_bug.cgi?id=20444 +- if (auto p = getenv("SOURCE_DATE_EPOCH")) ++ if (auto epoch = getenv("SOURCE_DATE_EPOCH")) + { +- if (!ct.parseDigits(p[0 .. strlen(p)])) +- errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", p); ++ if (!ct.parseDigits(epoch[0 .. strlen(epoch)])) ++ errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", epoch); ++ p = asctime(gmtime(&ct)); + } + else ++ { + core.stdc.time.time(&ct); +- const p = ctime(&ct); ++ p = ctime(&ct); // asctime(localtime(&ct)) ++ } + assert(p); + datetime[] = p[0 .. 26]; + diff --git a/patches/ada-armel-libatomic.diff b/patches/ada-armel-libatomic.diff new file mode 100644 index 0000000..8094f19 --- /dev/null +++ b/patches/ada-armel-libatomic.diff @@ -0,0 +1,79 @@ +Description: link libgnarl with libatomic on armel + On other architectures, the library is ignored thanks to --as-needed. + . + Seen with 14-20240429-1: + cd rts; [bla]/./gcc/xgcc [bla] -shared [bla] -o libgnarl-14.so [bla] + /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_compare_exchange_8' + /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_load_8' + . + Libatomic becomes an artificial dependency for Ada in Makefile.def, + so a better solution is welcome. + . + Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} + at build time, but we do not want to Build-Depend: guile. + # export QUILT_PATCHES=debian/patches + # quilt pop $this.diff + # quilt add src/Makefile.in + # (cd src && autogen Makefile.def) + # quilt refresh --no-timestamps --no-index -pab + # quilt push -a + . + The issue is hidden without -Wl,--no-allow-shlib-undefined. + (ada-gnattools-cross.diff adds checking options to LDFLAGS, + then adds LDFLAGS to the command line). +Bug-Debian: https://bugs.debian.org/861734 +Author: Matthias Klose +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -2530,7 +2530,7 @@ ifeq ($(strip $(filter-out arm% linux-gn + EXTRA_GNATRTL_TASKING_OBJS=s-linux.o + EH_MECHANISM=-arm + THREADSLIB = -lpthread +- MISCLIB = -ldl ++ MISCLIB = ../../../$(target_alias)/libatomic/.libs/libatomic.so -ldl + GNATLIB_SHARED = gnatlib-shared-dual + GMEM_LIB = gmemlib + LIBRARY_VERSION := $(LIB_VERSION) +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -418,6 +418,8 @@ dependencies = { module=all-target-libad + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + ++dependencies = { module=all-target-libada; on=all-target-libatomic; }; ++ + // Depending on the specific configuration, the LTO plugin will either use the + // generic libiberty build or the specific build for linker plugins. + dependencies = { module=all-lto-plugin; on=all-libiberty; }; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -69199,6 +69199,9 @@ configure-m4: stage_last + @endif gcc-bootstrap + + @if gcc-bootstrap ++@unless target-libatomic-bootstrap ++all-target-libada: maybe-all-target-libatomic ++@endunless target-libatomic-bootstrap + @unless target-zlib-bootstrap + configure-target-fastjar: maybe-configure-target-zlib + @endunless target-zlib-bootstrap +@@ -69234,6 +69237,7 @@ configure-target-libgo: maybe-all-target + @unless gcc-bootstrap + all-target-libada: maybe-all-gcc + all-gnattools: maybe-all-target-libstdc++-v3 ++all-target-libada: maybe-all-target-libatomic + configure-libcc1: maybe-configure-gcc + all-libcc1: maybe-all-gcc + all-c++tools: maybe-all-gcc +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -727,6 +727,7 @@ gnatlib-shared-default: + $(GNATRTL_TASKING_OBJS) \ + $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(hyphen)$(LIBRARY_VERSION).so \ ++ $(MISCLIB) \ + $(THREADSLIB) + cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(soext) diff --git a/patches/ada-gcc-name.diff b/patches/ada-gcc-name.diff new file mode 100644 index 0000000..6a7731f --- /dev/null +++ b/patches/ada-gcc-name.diff @@ -0,0 +1,240 @@ +Description: always call gcc with an explicit target and version + When gnat tools call each other, they should use the same prefix + and/or suffix in order to ensure the same target and version. + . + Let gnatchop call Osint.Program_Name instead of duplicating it. + This part may be of interest in GCC. + . + On Debian, the TARGET-TOOL-VERSION commands are always available, so + Osint.Program_Name simply prepends Sdefault.Target_Name and appends + Gnatvsn.Library_Version, independently of the current program name. + . + Log for bug 903694 carries regression tests for both bugs. + Also see pr79724. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87777 +Bug-Debian: https://bugs.debian.org/814977 +Bug-Debian: https://bugs.debian.org/814978 +Bug-Debian: https://bugs.debian.org/856274 +Bug-Debian: https://bugs.debian.org/881938 +Bug-Debian: https://bugs.debian.org/903694 +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Svante Signell +Author: YunQiang Su + +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -144,14 +144,9 @@ package Osint is + -- path) in Name_Buffer, with the length in Name_Len. + + function Program_Name (Nam : String; Prog : String) return String_Access; +- -- In the native compilation case, creates a string containing Nam. In the +- -- cross compilation case, looks at the prefix of the current program being +- -- run and prepends it to Nam. For instance if the program being run is +- -- -gnatmake and Nam is "gcc", the returned value will be a pointer +- -- to "-gcc". This function clobbers Name_Buffer and Name_Len. +- -- Also looks at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the +- -- default name of the current program being executed, e.g. "gnatmake", +- -- "gnatlink". ++ -- On Debian, this function ignores Prog and returns ++ -- Sdefault.Target_Name - Nam - Gnatvsn.Library_Version ++ -- with the final slash removed from Target_Name. + + procedure Write_Program_Name; + -- Writes name of program as invoked to the current output (normally +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -2258,46 +2258,15 @@ package body Osint is + ------------------ + + function Program_Name (Nam : String; Prog : String) return String_Access is +- End_Of_Prefix : Natural := 0; +- Start_Of_Prefix : Positive := 1; +- Start_Of_Suffix : Positive; ++ pragma Unreferenced (Prog); ++ Prefix : Types.String_Ptr := Sdefault.Target_Name; ++ Result : constant System.OS_Lib.String_Access := new String' ++ (Prefix.all (Prefix'First .. Prefix'Last - 1) & '-' & Nam & '-' ++ & Gnatvsn.Library_Version); + + begin +- -- Get the name of the current program being executed +- +- Find_Program_Name; +- +- -- Find the target prefix if any, for the cross compilation case. +- -- For instance in "powerpc-elf-gcc" the target prefix is +- -- "powerpc-elf-" +- -- Ditto for suffix, e.g. in "gcc-4.1", the suffix is "-4.1" +- +- for J in reverse 1 .. Name_Len loop +- if Is_Directory_Separator (Name_Buffer (J)) +- or else Name_Buffer (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. Name_Len - Prog'Length + 1 loop +- if Name_Buffer (J .. J + Prog'Length - 1) = Prog then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- +- Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; +- +- -- Create the new program name +- +- return new String' +- (Name_Buffer (Start_Of_Prefix .. End_Of_Prefix) +- & Nam +- & Name_Buffer (Start_Of_Suffix .. Name_Len)); ++ Types.Free (Prefix); ++ return Result; + end Program_Name; + + ------------------------------ +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -36,6 +36,7 @@ with GNAT.OS_Lib; use GNA + with GNAT.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ procedure Gnatchop is + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := null; + -- May be modified by switch --GCC= + +- Gcc_Set : Boolean := False; +- -- True if a switch --GCC= is used +- + Gnat_Cmd : String_Access; + -- Command to execute the GNAT compiler + +@@ -222,12 +220,6 @@ procedure Gnatchop is + Integer'Image + (Maximum_File_Name_Length); + +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access; +- -- Locate executable for given program name. This takes into account +- -- the target-prefix of the current command, if Look_For_Prefix is True. +- + subtype EOL_Length is Natural range 0 .. 2; + -- Possible lengths of end of line sequence + +@@ -492,76 +484,6 @@ procedure Gnatchop is + Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; + end Is_Duplicated; + +- ----------------------- +- -- Locate_Executable -- +- ----------------------- +- +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access +- is +- Gnatchop_Str : constant String := "gnatchop"; +- Current_Command : constant String := Normalize_Pathname (Command_Name); +- End_Of_Prefix : Natural; +- Start_Of_Prefix : Positive; +- Start_Of_Suffix : Positive; +- Result : String_Access; +- +- begin +- Start_Of_Prefix := Current_Command'First; +- Start_Of_Suffix := Current_Command'Last + 1; +- End_Of_Prefix := Start_Of_Prefix - 1; +- +- if Look_For_Prefix then +- +- -- Find Start_Of_Prefix +- +- for J in reverse Current_Command'Range loop +- if Current_Command (J) = '/' or else +- Current_Command (J) = Directory_Separator or else +- Current_Command (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. +- Current_Command'Last - Gnatchop_Str'Length + 1 +- loop +- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = +- Gnatchop_Str +- then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- end if; +- +- if End_Of_Prefix > Current_Command'First then +- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; +- end if; +- +- declare +- Command : constant String := +- Current_Command (Start_Of_Prefix .. End_Of_Prefix) +- & Program_Name +- & Current_Command (Start_Of_Suffix .. +- Current_Command'Last); +- begin +- Result := Locate_Exec_On_Path (Command); +- +- if Result = null then +- Error_Msg +- (Command & ": installation problem, executable not found"); +- end if; +- end; +- +- return Result; +- end Locate_Executable; +- + --------------- + -- Parse_EOL -- + --------------- +@@ -1088,8 +1010,8 @@ procedure Gnatchop is + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1767,9 +1689,13 @@ begin + + -- Check presence of required executables + +- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); ++ if Gcc = null then ++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); ++ end if; ++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); + + if Gnat_Cmd = null then ++ Error_Msg (Gcc.all & ": installation problem, executable not found"); + goto No_Files_Written; + end if; + diff --git a/patches/ada-gnat-name.diff b/patches/ada-gnat-name.diff new file mode 100644 index 0000000..3e83705 --- /dev/null +++ b/patches/ada-gnat-name.diff @@ -0,0 +1,178 @@ +# DP: allow override of build and host gnat compilers + +Allow the Debian build system to select the Ada compiler producing + * source generators for the build machine + * gnat tools for the host machine + +In Makefile.tpl (hence .in), chunk 1 modifies HOST_EXPORTS and chunk 3 +modifies EXTRA_TARGET_FLAGS. + +When gcc/ada/{Make-generated,/gcc-interface/Makefile}.in are modified, +ada-verbose.diff must be refreshed. + +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120106 +Bug-Debian: https://bugs.debian.org/1078144 + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -206,6 +206,7 @@ HOST_EXPORTS = \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ + GM2="$(GM2)"; export GM2; \ ++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -380,6 +381,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -1043,6 +1045,7 @@ EXTRA_TARGET_FLAGS = \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ ++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -209,6 +209,7 @@ HOST_EXPORTS = \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ + GM2="$(GM2)"; export GM2; \ ++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -383,6 +384,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -799,6 +801,7 @@ EXTRA_TARGET_FLAGS = \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ ++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1453,6 +1453,7 @@ if test "${build}" != "${host}" ; then + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} ++ GNATMAKE_FOR_BUILD=${GNATMAKE_FOR_BUILD-gnatmake} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} + LD_FOR_BUILD=${LD_FOR_BUILD-ld} + NM_FOR_BUILD=${NM_FOR_BUILD-nm} +@@ -1468,6 +1469,7 @@ else + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" ++ GNATMAKE_FOR_BUILD="\$(GNATMAKE)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" + LD_FOR_BUILD="\$(LD)" + NM_FOR_BUILD="\$(NM)" +@@ -3910,6 +3912,7 @@ AC_SUBST(DSYMUTIL_FOR_BUILD) + AC_SUBST(GFORTRAN_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) + AC_SUBST(GDC_FOR_BUILD) ++AC_SUBST(GNATMAKE_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) + AC_SUBST(LD_FOR_BUILD) + AC_SUBST(NM_FOR_BUILD) +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g + ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true + ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + $(MKDIR) ada/gen_il +- cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main ++ cd ada/gen_il; $(GNATMAKE_FOR_BUILD) -g $(GEN_IL_FLAGS) gen_il-main + # Ignore errors to work around finalization issues in older compilers + - cd ada/gen_il; ./gen_il-main + $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads +@@ -39,14 +39,14 @@ ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + # would cause bootstrapping with older compilers to fail. You can call it by + # hand, as a sanity check that these files are legal. + ada/seinfo_tables.o: ada/seinfo_tables.ads ada/seinfo_tables.adb +- cd ada ; gnatmake $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX ++ cd ada ; $(GNATMAKE_FOR_BUILD) $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX + + ada/snames.h ada/snames.ads ada/snames.adb : ada/stamp-snames ; @true + ada/stamp-snames : ada/snames.ads-tmpl ada/snames.adb-tmpl ada/snames.h-tmpl ada/xsnamest.adb ada/xutil.ads ada/xutil.adb + -$(MKDIR) ada/bldtools/snamest + $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) + $(CP) $^ ada/bldtools/snamest +- cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest ++ cd ada/bldtools/snamest && $(GNATMAKE_FOR_BUILD) xsnamest && ./xsnamest + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake xoscons) ++ (cd ./bldtools/oscons ; $(GNATMAKE_FOR_BUILD) xoscons) + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -33,7 +33,8 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ + # Nonstandard autoconf-set variables. + LN_S=@LN_S@ + target_noncanonical=@target_noncanonical@ +-host_noncanonical=@host_noncanonical@ ++GNATMAKE=@GNATMAKE@ ++GNATBIND=@GNATBIND@ + + # Variables for the user (or the top level) to override. + exeext = @EXEEXT@ +@@ -122,17 +123,11 @@ TOOLS_FLAGS_TO_PASS_RE= \ + "TOOLSCASE=cross" + + # Variables for gnattools, cross +-ifeq ($(build), $(host)) +- GNATMAKE_FOR_HOST=gnatmake +- GNATLINK_FOR_HOST=gnatlink +- GNATBIND_FOR_HOST=gnatbind +- GNATLS_FOR_HOST=gnatls +-else +- GNATMAKE_FOR_HOST=$(host_noncanonical)-gnatmake +- GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink +- GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind +- GNATLS_FOR_HOST=$(host_noncanonical)-gnatls +-endif ++# See configure.ac for what "cross" means here. ++GNATMAKE_FOR_HOST=$(GNATMAKE) ++GNATLINK_FOR_HOST=$(subst gnatmake,gnatlink,$(GNATMAKE)) ++GNATBIND_FOR_HOST=$(GNATBIND) ++GNATLS_FOR_HOST=$(subst gnatmake,gnatls,$(GNATMAKE)) + + # Put the host RTS dir first in the PATH to hide the default runtime + # files that are among the sources +--- a/src/gnattools/configure.ac ++++ b/src/gnattools/configure.ac +@@ -45,7 +45,7 @@ AC_CANONICAL_BUILD + AC_CANONICAL_HOST + AC_CANONICAL_TARGET + +-ACX_NONCANONICAL_HOST ++ACX_PROG_GNAT + ACX_NONCANONICAL_TARGET + + # Need to pass this down for now :-P diff --git a/patches/ada-gnattools-cross.diff b/patches/ada-gnattools-cross.diff new file mode 100644 index 0000000..12896ea --- /dev/null +++ b/patches/ada-gnattools-cross.diff @@ -0,0 +1,228 @@ +TODO: Check that the part removing the dependency from stamp-gnatlib1 +to stamp-gnatlib2 is not necessary anymore with gcc-9. + +* Link tools dynamically. +* Prevent direct embedding of libada objects: + Mark ALI files as read-only, remove objects after the build. + A solution keeping the objects would be more intrusive. +* Rebuild gnatbind/make/link with themselves. + This removes unneeded objects inherited from the hardcoded bootstrap list. + The same thing would be useful for gnat1drv, but is less easy. +* TOOLS_ALREADY_COMPILED lists LIBGNAT objects that + gcc/ada/gcc-interface/Makefile should not rebuild. +* Link libgnat/gnarl with LDFLAGS. +* Link libgnarl with an explicit path to a shared object. + This prevents undefined symbols or unwanted usage of host libgnat. +* Compile with -gnatn for efficiency. + Double-check the link since Debian moves some symbols. +* set LD_LIBRARY_PATH so that rebuilt tools can be executed. + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -2041,6 +2041,11 @@ ifeq ($(strip $(filter-out s390% linux%, + endif + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # HP/PA HP-UX 11 + ifeq ($(SELECTED_PAIRS),PAIRS_NONE) + ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),) +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -516,6 +516,20 @@ gnatlink-re: ../stamp-tools gnatmake-re + --LINK="$(GCC_LINK)" $(TOOLS_LIBS) + $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) + ++gnatbind-re: ../stamp-tools gnatmake-re gnatlink-re ++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatbind --GCC="$(CC) $(ALL_ADAFLAGS)" ++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatbind ++ $(GNATLINK) -v gnatbind -o ../../gnatbind$(exeext) \ ++ --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS) ++ ++# When driven by gnattools/Makefile for a native build, ++# TOOLS_ALREADY_COMPILED will list objects in the target standard Ada ++# libraries, that Make should avoid rebuilding. ++# We cannot use recursive variables to avoid an infinite loop, ++# so we must put this after definition of EXTRA_GNATMAKE_OBJS. ++GNATLINK_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATLINK_OBJS)) ++GNATMAKE_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATMAKE_OBJS)) ++ + # Needs to be built with CC=gcc + # Since the RTL should be built with the latest compiler, remove the + # stamp target in the parent directory whenever gnat1 is rebuilt +@@ -643,7 +657,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib + $(OSCONS_EXTRACT) ; \ + ../bldtools/oscons/xoscons s-oscons) + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads + test -f $(RTSDIR)/s-oscons.ads || exit 1 + # C files + $(MAKE) -C $(RTSDIR) \ +@@ -675,18 +689,30 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../ + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) + endif + $(CHMOD) a-wx $(RTSDIR)/*.ali ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(RM) $(RTSDIR)/*.o + touch ../stamp-gnatlib-$(RTSDIR) + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. + gnatlib-shared-default: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- LN_S="$(LN_S)" \ +- gnatlib ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) + $(RM) $(RTSDIR)/libgna*$(soext) + cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +@@ -697,8 +723,10 @@ gnatlib-shared-default: + cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ + -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(LDFLAGS) \ + $(GNATRTL_TASKING_OBJS) \ + $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ libgnat$(hyphen)$(LIBRARY_VERSION).so \ + $(THREADSLIB) + cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + libgnat$(soext) +@@ -714,6 +742,10 @@ gnatlib-shared-default: + $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl_pic$(arext) + ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(CHMOD) a-wx $(RTSDIR)/*.ali ++ $(RM) $(RTSDIR)/*.o ++ + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -723,11 +755,8 @@ gnatlib-shared-dual: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib-shared-default +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(MV) $(RTSDIR)/libgnat_pic$(arext) . +- $(MV) $(RTSDIR)/libgnarl_pic$(arext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -735,10 +764,7 @@ gnatlib-shared-dual: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) +- $(MV) libgnat_pic$(arext) $(RTSDIR) +- $(MV) libgnarl_pic$(arext) $(RTSDIR) ++ gnatlib-shared-default + + # Remove all the object files. They cannot be reused because they have + # been generated for the static library and the shared library will be +@@ -757,9 +783,8 @@ gnatlib-shared-dual-win32: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib-shared-win32 +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -767,8 +792,7 @@ gnatlib-shared-dual-win32: + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + LN_S="$(LN_S)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-win32 + + # ??? we need to add the option to support auto-import of arrays/records to + # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -78,16 +78,23 @@ CXX_LFLAGS = \ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + ++rtsdir := $(abspath ../gcc/ada/rts) ++ + # Variables for gnattools, native + TOOLS_FLAGS_TO_PASS_NATIVE= \ + "CC=../../xgcc -B../../" \ + "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS) $(PICFLAG)" \ +- "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ ++ "ADAFLAGS=$(ADAFLAGS) -gnatn" \ + "ADA_CFLAGS=$(ADA_CFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ ++ "ADA_INCLUDES=-I- -nostdinc -I$(rtsdir) $(ADA_INCLUDES_FOR_SUBDIR)" \ ++ "TOOLS_ALREADY_COMPILED=$(foreach d, $(rtsdir), \ ++ $(patsubst $(d)/%.ali,%.o, $(wildcard $(d)/*.ali)))" \ ++ 'LIBGNAT=$(rtsdir)/libgnat-$$(LIB_VERSION).so' \ ++ "GNATBIND_FLAGS=-nostdlib -x" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ +@@ -197,6 +204,10 @@ $(GCC_DIR)/stamp-tools: + # to be able to build gnatmake without a version of gnatmake around. Once + # everything has been compiled once, gnatmake can be recompiled with itself + # (see target regnattools) ++gnattools-native: export LD_LIBRARY_PATH := \ ++ $(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(rtsdir) ++# Useful even for 1st pass, as ../../gnatmake may already be ++# dynamically linked in case this target has already been invoked. + gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +@@ -205,6 +216,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools ++# The hard-coded object lists for gnatbind/make/link contain unneeded ++# objects. Use the fresh tools to recompute dependencies. ++# A separate Make run avoids race conditions between gnatmakes ++# building the same object for common-tools and gnat*-re. ++# (parallelism is already forbidden between gnat*-re targets) ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding diff --git a/patches/ada-lib-info-source-date-epoch.diff b/patches/ada-lib-info-source-date-epoch.diff new file mode 100644 index 0000000..9f27cfb --- /dev/null +++ b/patches/ada-lib-info-source-date-epoch.diff @@ -0,0 +1,121 @@ +Description: set ALI timestamps from SOURCE_DATE_EPOCH if available. + When the SOURCE_DATE_EPOCH environment variable is set, + replace timestamps more recent than its value with its value + when writing Ada Library Information (ALI) files. + This allow reproducible builds from generated or patched Ada sources. + https://reproducible-builds.org/specs/source-date-epoch/ + . + Also see debian/ada/test_ada_source_date_epoch.sh. +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -64,6 +64,10 @@ package body Osint is + -- Used in Locate_File as a fake directory when Name is already an + -- absolute path. + ++ Source_Date_Epoch : OS_Time := Invalid_Time; ++ -- Set at startup by the Initialize procedure. ++ -- See the specification of the File_Time_Stamp functions. ++ + ------------------------------------- + -- Use of Name_Find and Name_Enter -- + ------------------------------------- +@@ -1125,8 +1129,14 @@ package body Osint is + is + function Internal (N : C_File_Name; A : System.Address) return OS_Time; + pragma Import (C, Internal, "__gnat_file_time_name_attr"); ++ T : OS_Time := Internal (Name, Attr.all'Address); + begin +- return Internal (Name, Attr.all'Address); ++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time ++ and then Source_Date_Epoch < T ++ then ++ T := Source_Date_Epoch; ++ end if; ++ return T; + end File_Time_Stamp; + + function File_Time_Stamp +@@ -1149,6 +1159,7 @@ package body Osint is + ---------------- + + function File_Stamp (Name : File_Name_Type) return Time_Stamp_Type is ++ T : OS_Time; + begin + if Name = No_File then + return Empty_Time_Stamp; +@@ -1160,9 +1171,13 @@ package body Osint is + -- not exist, and OS_Time_To_GNAT_Time will convert this value to + -- Empty_Time_Stamp. Therefore we do not need to first test whether + -- the file actually exists, which saves a system call. +- +- return OS_Time_To_GNAT_Time +- (File_Time_Stamp (Name_Buffer (1 .. Name_Len))); ++ T := File_Time_Stamp (Name_Buffer (1 .. Name_Len)); ++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time ++ and then Source_Date_Epoch < T ++ then ++ T := Source_Date_Epoch; ++ end if; ++ return OS_Time_To_GNAT_Time (T); + end File_Stamp; + + function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type is +@@ -3213,4 +3228,34 @@ begin + Osint.Initialize; + end Initialization; + ++ -- When the SOURCE_DATE_EPOCH the environment variable is not empty, ++ -- only contains decimal digits and represents a value lower than 2**63, ++ -- set Source_Date_Epoch to this value. ++ Set_Source_Date_Epoch : declare ++ Env_Var : String_Access := Getenv ("SOURCE_DATE_EPOCH"); ++ Epoch : Long_Long_Integer range 0 .. Long_Long_Integer'Last := 0; ++ Index : Integer range Env_Var.all'First .. Env_Var.all'Last + 1 ++ := Env_Var.all'First; ++ Digit : Long_Long_Integer; ++ begin ++ if Index <= Env_Var.all'Last then ++ -- Calling System.Val_LLI breaks the bootstrap sequence. ++ loop ++ Digit := Character'Pos (Env_Var.all (Index)) - Character'Pos ('0'); ++ exit when Digit not in 0 .. 9; ++ exit when Long_Long_Integer'Last - Digit < Epoch; ++ Epoch := Epoch + Digit; ++ if Index = Env_Var.all'Last then ++ Source_Date_Epoch := To_Ada (Epoch); ++ exit; ++ end if; ++ Index := Index + 1; ++ -- The division is computed once at build time. ++ exit when Long_Long_Integer'Last / 10 < Epoch; ++ Epoch := Epoch * 10; ++ end loop; ++ end if; ++ Free (Env_Var); ++ end Set_Source_Date_Epoch; ++ + end Osint; +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -195,6 +195,7 @@ package Osint is + -- information in order to locate it. If the source file cannot be opened, + -- or Name = No_File, and all blank time stamp is returned (this is not an + -- error situation). ++ -- Handles SOURCE_DATE_EPOCH like File_Time_Stamp functions below. + + function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type; + -- Same as above for a path name +@@ -302,6 +303,11 @@ package Osint is + (Name : Path_Name_Type; + Attr : access File_Attributes) return Time_Stamp_Type; + -- Return the time stamp of the file ++ -- If the SOURCE_DATE_EPOCH environment variable exists and represents ++ -- an OS_Type value, any more recent file time stamp is truncated. ++ -- This ensures that gnat1 writes deterministic .ali files even in ++ -- the presence of patched or generated sources. See ++ -- https://reproducible-builds.org/specs/source-date-epoch. + + function Is_Readable_File + (Name : C_File_Name; diff --git a/patches/ada-link-lib.diff b/patches/ada-link-lib.diff new file mode 100644 index 0000000..62624f1 --- /dev/null +++ b/patches/ada-link-lib.diff @@ -0,0 +1,168 @@ +Description: adapt libgnat build for Debian + Don't include a runtime link path (-rpath), when linking binaries. + . + Build the shared libraries on hppa-linux (see #786692 below). + TODO: ask the reporter (no porterbox) to attempt a rebuild without this + chunk, now that we diverge less from upstream. + . + Instead of building libada as a target library only, build it as + both a host and, if different, target library. + . + Compile with -gnatn for efficiency. + Double-check the link since Debian moves some symbols. + . + Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} + at build time, but we do not want to Build-Depend: guile. + # export QUILT_PATCHES=debian/patches + # quilt pop $this.diff + # quilt add src/Makefile.in + # (cd src && autogen Makefile.def) + # quilt refresh --no-timestamps --no-index -pab + # quilt push -a +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786692 +Forwarded: not-needed +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Matthias Klose + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -44,7 +44,7 @@ if test "x$cross_compiling/$build/$host" + fi + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/link.c ++++ b/src/gcc/ada/link.c +@@ -107,9 +107,9 @@ const char *__gnat_default_libgcc_subdir + || defined (__NetBSD__) || defined (__OpenBSD__) \ + || defined (__QNX__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +@@ -129,9 +129,9 @@ const char *__gnat_default_libgcc_subdir + + #elif defined (__linux__) || defined (__GLIBC__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -79,10 +79,11 @@ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /, + # by recursive make invocations in gcc/ada/Makefile.in + LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ +- "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ +- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ + "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ + "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG)" \ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -414,6 +414,7 @@ dependencies = { module=all-libcpp; on=a + + dependencies = { module=all-fixincludes; on=all-libiberty; }; + ++dependencies = { module=all-target-libada; on=all-gcc; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -69229,6 +69229,7 @@ configure-target-libgo: maybe-all-target + @endif gcc-bootstrap + + @unless gcc-bootstrap ++all-target-libada: maybe-all-gcc + all-gnattools: maybe-all-target-libstdc++-v3 + configure-libcc1: maybe-configure-gcc + all-libcc1: maybe-all-gcc +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -143,6 +143,11 @@ host_libs="gettext libiberty opcodes bfd + # If --enable-gold is used, "gold" may replace "ld". + host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools" + ++case "${target}" in ++ hppa64-*linux*) ;; ++ *) target_libiberty="target-libiberty";; ++esac ++ + # these libraries are built for the target environment, and are built after + # the host libraries and the host tools (which may be a cross compiler) + # Note that libiberty is not a target library. +@@ -163,6 +168,7 @@ target_libraries="target-libgcc \ + target-libobjc \ + target-libgcobol \ + target-libada \ ++ ${target_libiberty} \ + target-libgm2 \ + target-libgo \ + target-libgrust \ +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -43,7 +43,7 @@ RMDIR = rm -rf + + + # Extra flags to pass to recursive makes. +-COMMON_ADAFLAGS= -gnatpg ++COMMON_ADAFLAGS= -gnatpgn + ifeq ($(TREECHECKING),) + CHECKING_ADAFLAGS= + else +@@ -267,7 +267,9 @@ GCC_LINKERFLAGS = $(filter-out -Werror - + GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS)) + else + # Strip -Werror during linking for the LTO bootstrap +-GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) ++GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) \ ++ -Wl,--no-allow-shlib-undefined -Wl,--no-copy-dt-needed-entries \ ++ -Wl,--no-undefined + GCC_LDFLAGS = $(LDFLAGS) + endif + +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -115,6 +115,7 @@ proc gnat_target_compile { source dest t + global TOOL_OPTIONS + global gnat_target_current + global TEST_ALWAYS_FLAGS ++ global ld_library_path + + # dg-require-effective-target tests must be compiled as C. + if [ string match "*.c" $source ] then { +@@ -144,6 +145,11 @@ proc gnat_target_compile { source dest t + # Always log so compilations can be repeated manually. + verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" + verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" ++ ++ if { ! [ string match "*/libada/adalib*" $ld_library_path ] } { ++ append ld_library_path ":$rtsdir/adalib" ++ set_ld_library_path_env_vars ++ } + } + + lappend options "compiler=$GNAT_UNDER_TEST -q -f" diff --git a/patches/ada-perl-shebang.diff b/patches/ada-perl-shebang.diff new file mode 100644 index 0000000..ea930b1 --- /dev/null +++ b/patches/ada-perl-shebang.diff @@ -0,0 +1,10 @@ +# DP: Fix perl shebang for the gnathtml binary. + +--- a/src/gcc/ada/gnathtml.pl ++++ b/src/gcc/ada/gnathtml.pl +@@ -1,4 +1,4 @@ +-#! /usr/bin/env perl ++#! /usr/bin/perl + + #----------------------------------------------------------------------------- + #- -- diff --git a/patches/ada-sjlj.diff b/patches/ada-sjlj.diff new file mode 100644 index 0000000..a63a6da --- /dev/null +++ b/patches/ada-sjlj.diff @@ -0,0 +1,498 @@ +Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} +at build time, but we do not want to Build-Depend: guile. +# export QUILT_PATCHES=debian/patches +# quilt pop $this.diff +# quilt add src/Makefile.in +# (cd src && autogen Makefile.def) +# quilt refresh --no-timestamps --no-index -pab +# quilt push -a + +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,204 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++# Default target; must be first. ++all: gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++ ++.PHONY: all ++ ++## Multilib support variables. ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++ ++# Standard autoconf-set variables. ++SHELL = @SHELL@ ++srcdir = @srcdir@ ++libdir = @libdir@ ++build = @build@ ++target = @target@ ++prefix = @prefix@ ++ ++# Nonstandard autoconf-set variables. ++enable_shared = @enable_shared@ ++ ++LN_S=@LN_S@ ++AWK=@AWK@ ++ ++ifeq (cp -p,$(LN_S)) ++LN_S_RECURSIVE = cp -pR ++else ++LN_S_RECURSIVE = $(LN_S) ++endif ++ ++# Variables for the user (or the top level) to override. ++objext=.o ++THREAD_KIND=native ++TRACE=no ++LDFLAGS= ++ ++# The tedious process of getting CFLAGS right. ++CFLAGS=-g ++PICFLAG = @PICFLAG@ ++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc ++GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) ++ ++# exeext should not be used because it's the *host* exeext. We're building ++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus ++# definitions just in case something slips through the safety net provided ++# by recursive make invocations in gcc/ada/Makefile.in ++LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ ++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++ "THREAD_KIND=$(THREAD_KIND)" \ ++ "TRACE=$(TRACE)" \ ++ "MULTISUBDIR=$(MULTISUBDIR)" \ ++ "libsubdir=$(libsubdir)" \ ++ "objext=$(objext)" \ ++ "prefix=$(prefix)" \ ++ "exeext=.exeext.should.not.be.used " \ ++ 'CC=the.host.compiler.should.not.be.needed' \ ++ "GCC_FOR_TARGET=$(CC)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "RTSDIR=rts-sjlj" ++ ++# Rules to build gnatlib. ++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool ++gnatlib: gnatlib-sjlj ++ ++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ ++ && touch stamp-libada ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ ++ && touch stamp-libada-sjlj ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++osconstool: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons ++ ++install-gnatlib: $(GCC_DIR)/ada/Makefile ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ ++# Check uninstalled version. ++check: ++ ++# Check installed version. ++installcheck: ++ ++# Build info (none here). ++info: ++ ++# Build DVI (none here). ++dvi: ++ ++# Build PDF (none here). ++pdf: ++ ++# Build html (none here). ++html: ++ ++# Build TAGS (none here). ++TAGS: ++ ++.PHONY: check installcheck info dvi pdf html ++ ++# Installation rules. ++install: install-gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++ ++install-strip: install ++ ++install-info: ++ ++install-pdf: ++ ++install-html: ++ ++.PHONY: install install-strip install-info install-pdf install-html ++ ++# Cleaning rules. ++mostlyclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++ ++clean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++ ++distclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++ $(RM) Makefile config.status config.log ++ ++maintainer-clean: ++ ++.PHONY: mostlyclean clean distclean maintainer-clean ++ ++# Rules for rebuilding this Makefile. ++Makefile: $(srcdir)/Makefile.in config.status ++ CONFIG_FILES=$@ ; \ ++ CONFIG_HEADERS= ; \ ++ $(SHELL) ./config.status ++ ++config.status: $(srcdir)/configure ++ $(SHELL) ./config.status --recheck ++ ++AUTOCONF = autoconf ++configure_deps = \ ++ $(srcdir)/configure.ac \ ++ $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/multi.m4 \ ++ $(srcdir)/../config/override.m4 \ ++ $(srcdir)/../config/picflag.m4 \ ++ $(srcdir)/../config/unwind_ipinfo.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,156 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++sinclude(../config/acx.m4) ++sinclude(../config/multi.m4) ++sinclude(../config/override.m4) ++sinclude(../config/picflag.m4) ++sinclude(../config/unwind_ipinfo.m4) ++ ++AC_INIT ++AC_PREREQ([2.64]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Determine the host, build, and target systems ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++target_alias=${target_alias-$host_alias} ++ ++# Determine the noncanonical target name, for directory use. ++ACX_NONCANONICAL_TARGET ++ ++# Determine the target- and build-specific subdirectories ++GCC_TOPLEV_SUBDIRS ++ ++# Command-line options. ++# Very limited version of AC_MAINTAINER_MODE. ++AC_ARG_ENABLE([maintainer-mode], ++ [AC_HELP_STRING([--enable-maintainer-mode], ++ [enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer])], ++ [case ${enable_maintainer_mode} in ++ yes) MAINT='' ;; ++ no) MAINT='#' ;; ++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; ++ esac ++ maintainer_mode=${enableval}], ++ [MAINT='#']) ++AC_SUBST([MAINT])dnl ++ ++AM_ENABLE_MULTILIB(, ..) ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++#TODO: toolexeclibdir is currently disregarded ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AC_ARG_ENABLE([shared], ++[AC_HELP_STRING([--disable-shared], ++ [don't provide a shared libgnat])], ++[ ++case $enable_shared in ++ yes | no) ;; ++ *) ++ enable_shared=no ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," ++ for pkg in $enableval; do ++ case $pkg in ++ ada | libada) ++ enable_shared=yes ;; ++ esac ++ done ++ IFS="$ac_save_ifs" ++ ;; ++esac ++], [enable_shared=yes]) ++AC_SUBST([enable_shared]) ++ ++GCC_PICFLAG ++AC_SUBST([PICFLAG]) ++ ++# These must be passed down, or are needed by gcc/libgcc.mvars ++AC_PROG_AWK ++AC_PROG_LN_S ++ ++# Determine what to build for 'gnatlib' ++if test ${enable_shared} = yes; then ++ default_gnatlib_target="gnatlib-shared" ++else ++ default_gnatlib_target="gnatlib-plain" ++fi ++AC_SUBST([default_gnatlib_target]) ++ ++# Check for _Unwind_GetIPInfo ++GCC_CHECK_UNWIND_GETIPINFO ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++else ++ have_getipinfo= ++fi ++AC_SUBST([have_getipinfo]) ++ ++# Check for ++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) ++AC_SUBST([have_capability]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -194,6 +194,7 @@ target_modules = { module= libgnatvsn; n + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libada-sjlj; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -394,6 +395,7 @@ dependencies = { module=all-libcpp; on=a + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-target-libada; on=all-gcc; }; ++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + dependencies = { module=all-gnattools; on=all-target-libgnat_util; }; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -167,6 +167,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnat_util \ + target-libgo \ +@@ -454,7 +455,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs target-libgnat_util gnattools" ++ noconfigdirs="$noconfigdirs target-libgnat_util gnattools target-libada-sjlj" + fi + + AC_ARG_ENABLE(libssp, +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -193,7 +193,7 @@ GNAT_SRC=$(fsrcpfx)ada + + # Multilib handling + MULTISUBDIR = +-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) ++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) + + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky +@@ -561,6 +561,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads + ++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR) ++# Create the directory before deleting it, in case the directory is ++# a list of directories (as it may be on VMS). This ensures we are ++# deleting the right one. ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ for file in $(RTSDIR)/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \ ++ done ++ # This copy must be done preserving the date on the original file. ++ for file in $(RTSDIR)/*.ad?; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \ ++ done ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads ++ + ../stamp-gnatlib2-$(RTSDIR): + $(RM) $(RTSDIR)/s-*.ali + $(RM) $(RTSDIR)/s-*$(objext) +@@ -826,6 +846,7 @@ gnatlib-shared: + gnatlib-sjlj: + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ ++ RTSDIR="$(RTSDIR)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + ../stamp-gnatlib1-$(RTSDIR) +@@ -835,6 +856,7 @@ gnatlib-sjlj: + $(RTSDIR)/system.ads > $(RTSDIR)/s.ads + $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads + $(MAKE) $(FLAGS_TO_PASS) \ ++ RTSDIR="$(RTSDIR)" \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -889,6 +911,8 @@ b_gnatm.o : b_gnatm.adb + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -43,8 +43,8 @@ if test "x$cross_compiling/$build/$host" + lang_requires="c c++" + fi + +-target_libs="target-libada target-libgnat_util" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnat_util target-libada-sjlj" ++lang_dirs="libada gnattools libada-sjlj" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -837,6 +837,7 @@ ada.install-common: + + install-gnatlib: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) + + install-gnatlib-obj: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj diff --git a/patches/ada-tv_nsec-size.diff b/patches/ada-tv_nsec-size.diff new file mode 100644 index 0000000..77dc244 --- /dev/null +++ b/patches/ada-tv_nsec-size.diff @@ -0,0 +1,17 @@ +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1769,9 +1769,12 @@ CNS(MAX_tv_sec, "") + struct timespec ts; + /* + -- Sizes (in bytes) of the components of struct timespec. +- -- The tv_sec field is the same than in struct timeval. ++ -- The tv_sec component is the same size as in struct timeval. ++ -- In order to avoid the endian issues in the glibc __timespec64 ++ -- struct, we use the same size for the tv_nsec component as the ++ -- tv_sec component. + */ +-#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) ++#define SIZEOF_tv_nsec (sizeof (ts.tv_sec)) + CND(SIZEOF_tv_nsec, "tv_nsec"); + } + diff --git a/patches/ada-verbose.diff b/patches/ada-verbose.diff new file mode 100644 index 0000000..cb3cacf --- /dev/null +++ b/patches/ada-verbose.diff @@ -0,0 +1,37 @@ +Description: Display subprocess command lines when building Ada. + The log can be a page longer if it helps debugging. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87778 +Applied-Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=940bc09b446f4876563b0986231724121b33193d +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g + ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true + ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* + $(MKDIR) ada/gen_il +- cd ada/gen_il; gnatmake -q -g $(GEN_IL_FLAGS) gen_il-main ++ cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main + # Ignore errors to work around finalization issues in older compilers + - cd ada/gen_il; ./gen_il-main + $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads +@@ -46,7 +46,7 @@ ada/stamp-snames : ada/snames.ads-tmpl a + -$(MKDIR) ada/bldtools/snamest + $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) + $(CP) $^ ada/bldtools/snamest +- cd ada/bldtools/snamest && gnatmake -q xsnamest && ./xsnamest ++ cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb + $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake -q xoscons) ++ (cd ./bldtools/oscons ; gnatmake xoscons) + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s diff --git a/patches/algol68-doc.diff b/patches/algol68-doc.diff new file mode 100644 index 0000000..3382f97 --- /dev/null +++ b/patches/algol68-doc.diff @@ -0,0 +1,143 @@ +git diff --src-prefix=a/src/ --dst-prefix=b/src/ master..a68 | grep -E -v '^(diff|index|new)' + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2965,6 +2994,7 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ + || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ ++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/algol68/algol68-target.def \ + ); then \ + echo >&2 ; \ + echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. + * C++ ABI:: Controlling C++ ABI changes. + * D Language and ABI:: Controlling D ABI changes. + * Rust Language and ABI:: Controlling Rust ABI changes. ++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -11352,6 +11353,23 @@ Similar to @code{TARGET_RUST_CPU_INFO}, but is used for configuration info + relating to the target operating system. + @end deftypefn + ++@node ALGOL 68 Language and ABI ++@section ALGOL 68 ABI parameters ++@cindex parameters, ALGOL 68 abi ++ ++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_CPU_INFO (void) ++Declare all environmental CPU info and features relating to the target CPU ++using the function @code{algol68_add_target_info}, which takes a string ++representing the feature key and a string representing the feature value. ++Configuration pairs predefined by this hook apply to all files that are being ++compiled. ++@end deftypefn ++ ++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_OS_INFO (void) ++Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info ++relating to the target operating system. ++@end deftypefn ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. + * C++ ABI:: Controlling C++ ABI changes. + * D Language and ABI:: Controlling D ABI changes. + * Rust Language and ABI:: Controlling Rust ABI changes. ++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -7278,6 +7279,14 @@ floating-point support; they are not included in this mechanism. + + @hook TARGET_RUST_OS_INFO + ++@node ALGOL 68 Language and ABI ++@section ALGOL 68 ABI parameters ++@cindex parameters, ALGOL 68 abi ++ ++@hook TARGET_ALGOL68_CPU_INFO ++ ++@hook TARGET_ALGOL68_OS_INFO ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -2100,13 +2100,13 @@ their runtime libraries should be built. For a list of valid values for + grep ^language= */config-lang.in + @end smallexample + Currently, you can use any of the following: +-@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, ++@code{all}, @code{default}, @code{ada}, @code{algol68}, @code{c}, @code{c++}, + @code{cobol}, @code{d}, @code{fortran}, @code{go}, @code{jit}, + @code{lto}, @code{m2}, @code{objc}, @code{obj-c++}. + Building the Ada compiler has special requirements, see below. + If you do not pass this flag, or specify the option @code{default}, then the + default languages available in the @file{gcc} sub-tree will be configured. +-Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. ++Algol 68, Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. + LTO is not a + default language, but is built by default because @option{--enable-lto} is + enabled by default. The other languages are default languages. If +@@ -2899,6 +2899,41 @@ In order to avoid shell and @command{make} quoting issues for complex + overrides, you can pass a setting for @env{CONFIG_SITE} and set + variables in the site file. + ++@subheading Algol 68-Specific Options ++ ++The following options apply to the build of the Algol 68 runtime library. ++ ++@table @code ++@item --enable-algol68-gc ++Specify that an additional variant of the GNU Algol 68 runtime library ++is built, using an external build of the Boehm-Demers-Weiser garbage ++collector (@uref{https://www.hboehm.info/gc/}). ++ ++This library needs to be available for each multilib variant, unless ++configured with @option{--enable-objc-gc=@samp{auto}} in which case ++the build of the additional runtime library is skipped when not ++available and the build continues. ++ ++@item --with-target-bdw-gc=@var{list} ++@itemx --with-target-bdw-gc-include=@var{list} ++@itemx --with-target-bdw-gc-lib=@var{list} ++Specify search directories for the garbage collector header files and ++libraries. @var{list} is a comma separated list of key value pairs of the ++form @samp{@var{multilibdir}=@var{path}}, where the default multilib key ++is named as @samp{.} (dot), or is omitted (e.g.@: ++@samp{--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32}). ++ ++The options @option{--with-target-bdw-gc-include} and ++@option{--with-target-bdw-gc-lib} must always be specified together ++for each multilib variant and they take precedence over ++@option{--with-target-bdw-gc}. If @option{--with-target-bdw-gc-include} ++is missing values for a multilib, then the value for the default ++multilib is used (e.g.@: @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include} ++@samp{--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32}). ++If none of these options are specified, the library is assumed in ++default locations. ++@end table ++ + @subheading Objective-C-Specific Options + + The following options apply to the build of the Objective-C runtime library. +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -91,6 +91,9 @@ The Decimal Float support library. + @item libffi + The @code{libffi} library, used as part of the Go runtime library. + ++@item libga68 ++The Algol 68 runtime library. ++ + @item libgcc + The GCC runtime library. + diff --git a/patches/algol68-link-dynamic.diff b/patches/algol68-link-dynamic.diff new file mode 100644 index 0000000..a65c070 --- /dev/null +++ b/patches/algol68-link-dynamic.diff @@ -0,0 +1,13 @@ +# DP: Link libga68 dynamically. + +--- a/src/gcc/algol68/a68spec.cc ++++ b/src/gcc/algol68/a68spec.cc +@@ -32,7 +32,7 @@ + LIBGA68_DYNAMIC + }; + +-static enum libga68_link_mode libga68_link = LIBGA68_STATIC; ++static enum libga68_link_mode libga68_link = LIBGA68_DYNAMIC; + + /* This bit is set if we saw a `-xfoo' language specification. */ + #define LANGSPEC (1 << 1) diff --git a/patches/algol68-sparc.diff b/patches/algol68-sparc.diff new file mode 100644 index 0000000..3745f45 --- /dev/null +++ b/patches/algol68-sparc.diff @@ -0,0 +1,20 @@ +--- a/src/gcc/algol68/a68-exports.cc ++++ b/src/gcc/algol68/a68-exports.cc +@@ -22,6 +22,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + #include "tree.h" + #include "target.h" + #include "tm_p.h" +--- a/src/gcc/algol68/a68-imports.cc ++++ b/src/gcc/algol68/a68-imports.cc +@@ -31,6 +31,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + #include "tree.h" + #include "target.h" + #include "tm_p.h" diff --git a/patches/algol68.diff b/patches/algol68.diff new file mode 100644 index 0000000..8ee0a0f --- /dev/null +++ b/patches/algol68.diff @@ -0,0 +1,83798 @@ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -205,6 +205,7 @@ target_modules = { module= zlib; bootstrap=true; }; + target_modules = { module= rda; }; + target_modules = { module= libada; }; + target_modules = { module= libgm2; lib_path=.libs; }; ++target_modules = { module= libga68; lib_path=.libs; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; }; +@@ -676,6 +677,7 @@ dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgo + dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; + dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; + dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; }; ++dependencies = { module=configure-target-libga68; on=all-target-libstdc++-v3; }; + // parallel_list.o and parallel_settings.o depend on omp.h, which is + // generated by the libgomp configure. Unfortunately, due to the use of + // recursive make, we can't be that specific. +@@ -734,6 +736,8 @@ languages = { language=jit; gcc-check-target=check-jit; }; + languages = { language=rust; gcc-check-target=check-rust; }; + languages = { language=cobol; gcc-check-target=check-cobol; + lib-check-target=check-target-libgcobol; }; ++languages = { language=algol68; gcc-check-target=check-algol68; ++ lib-check-target=check-target-libga68; }; + + // Toplevel bootstrap + bootstrap_stage = { id=1 ; }; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -276,6 +276,11 @@ POSTSTAGE1_HOST_EXPORTS = \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ ++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ ++ export GA68; \ ++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ + GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ + -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ +@@ -308,6 +313,7 @@ BASE_TARGET_EXPORTS = \ + CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ ++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ + GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ +@@ -377,6 +383,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ ++GA68_FOR_BUILD = @GA68_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ +@@ -439,6 +446,7 @@ STRIP = @STRIP@ + WINDRES = @WINDRES@ + WINDMC = @WINDMC@ + ++GA68 = @GA68@ + GDC = @GDC@ + GNATBIND = @GNATBIND@ + GNATMAKE = @GNATMAKE@ +@@ -449,6 +457,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GA68FLAGS = @GA68FLAGS@ + GDCFLAGS = @GDCFLAGS@ + GM2FLAGS = $(CFLAGS) + +@@ -676,6 +685,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ ++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ + GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +@@ -705,6 +715,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GM2FLAGS_FOR_TARGET = -O2 -g + GOCFLAGS_FOR_TARGET = -O2 -g ++GA68FLAGS_FOR_TARGET = -O2 -g + GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +@@ -730,7 +741,7 @@ all: + + # This is the list of directories that may be needed in RPATH_ENVVAR + # so that programs built for the target machine work. +-TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) ++TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libga68)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) + + @if target-libstdc++-v3 + TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: +@@ -756,6 +767,10 @@ TARGET_LIB_PATH_libphobos = $$r/$(TARGET_SUBDIR)/libphobos/src/.libs: + TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs: + @endif target-libgm2 + ++@if target-libga68 ++TARGET_LIB_PATH_libga68 = $$r/$(TARGET_SUBDIR)/libga68/.libs: ++@endif target-libga68 ++ + @if target-libgomp + TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs: + @endif target-libgomp +@@ -976,6 +991,7 @@ EXTRA_HOST_FLAGS = \ + 'DSYMUTIL=$(DSYMUTIL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GA68=$(GA68)' \ + 'GDC=$(GDC)' \ + 'GM2=$(GM2)' \ + 'LD=$(LD)' \ +@@ -1004,6 +1020,7 @@ STAGE1_FLAGS_TO_PASS = \ + POSTSTAGE1_FLAGS_TO_PASS = \ + CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ ++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ + GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ + GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ + GNATBIND="$${GNATBIND}" \ +@@ -1039,6 +1056,7 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ +@@ -1160,6 +1178,7 @@ configure-target: \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ + maybe-configure-target-libgm2 \ ++ maybe-configure-target-libga68 \ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic \ +@@ -1360,6 +1379,7 @@ all-target: maybe-all-target-zlib + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgm2 ++all-target: maybe-all-target-libga68 + @if target-libgomp-no-bootstrap + all-target: maybe-all-target-libgomp + @endif target-libgomp-no-bootstrap +@@ -1463,6 +1483,7 @@ info-target: maybe-info-target-zlib + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgm2 ++info-target: maybe-info-target-libga68 + info-target: maybe-info-target-libgomp + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1557,6 +1578,7 @@ dvi-target: maybe-dvi-target-zlib + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgm2 ++dvi-target: maybe-dvi-target-libga68 + dvi-target: maybe-dvi-target-libgomp + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1651,6 +1673,7 @@ pdf-target: maybe-pdf-target-zlib + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgm2 ++pdf-target: maybe-pdf-target-libga68 + pdf-target: maybe-pdf-target-libgomp + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1745,6 +1768,7 @@ html-target: maybe-html-target-zlib + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgm2 ++html-target: maybe-html-target-libga68 + html-target: maybe-html-target-libgomp + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1839,6 +1863,7 @@ TAGS-target: maybe-TAGS-target-zlib + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgm2 ++TAGS-target: maybe-TAGS-target-libga68 + TAGS-target: maybe-TAGS-target-libgomp + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1933,6 +1958,7 @@ install-info-target: maybe-install-info-target-zlib + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgm2 ++install-info-target: maybe-install-info-target-libga68 + install-info-target: maybe-install-info-target-libgomp + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -2027,6 +2053,7 @@ install-dvi-target: maybe-install-dvi-target-zlib + install-dvi-target: maybe-install-dvi-target-rda + install-dvi-target: maybe-install-dvi-target-libada + install-dvi-target: maybe-install-dvi-target-libgm2 ++install-dvi-target: maybe-install-dvi-target-libga68 + install-dvi-target: maybe-install-dvi-target-libgomp + install-dvi-target: maybe-install-dvi-target-libitm + install-dvi-target: maybe-install-dvi-target-libatomic +@@ -2121,6 +2148,7 @@ install-pdf-target: maybe-install-pdf-target-zlib + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgm2 ++install-pdf-target: maybe-install-pdf-target-libga68 + install-pdf-target: maybe-install-pdf-target-libgomp + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -2215,6 +2243,7 @@ install-html-target: maybe-install-html-target-zlib + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgm2 ++install-html-target: maybe-install-html-target-libga68 + install-html-target: maybe-install-html-target-libgomp + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -2309,6 +2338,7 @@ installcheck-target: maybe-installcheck-target-zlib + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgm2 ++installcheck-target: maybe-installcheck-target-libga68 + installcheck-target: maybe-installcheck-target-libgomp + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -2403,6 +2433,7 @@ mostlyclean-target: maybe-mostlyclean-target-zlib + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgm2 ++mostlyclean-target: maybe-mostlyclean-target-libga68 + mostlyclean-target: maybe-mostlyclean-target-libgomp + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2497,6 +2528,7 @@ clean-target: maybe-clean-target-zlib + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgm2 ++clean-target: maybe-clean-target-libga68 + clean-target: maybe-clean-target-libgomp + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2591,6 +2623,7 @@ distclean-target: maybe-distclean-target-zlib + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgm2 ++distclean-target: maybe-distclean-target-libga68 + distclean-target: maybe-distclean-target-libgomp + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2685,6 +2718,7 @@ maintainer-clean-target: maybe-maintainer-clean-target-zlib + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgm2 ++maintainer-clean-target: maybe-maintainer-clean-target-libga68 + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2837,6 +2871,7 @@ check-target: \ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgm2 \ ++ maybe-check-target-libga68 \ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic \ +@@ -3035,6 +3070,7 @@ install-target: \ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgm2 \ ++ maybe-install-target-libga68 \ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic \ +@@ -3149,6 +3185,7 @@ install-strip-target: \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ + maybe-install-strip-target-libgm2 \ ++ maybe-install-strip-target-libga68 \ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic \ +@@ -60200,6 +60237,491 @@ maintainer-clean-target-libgm2: + + + ++.PHONY: configure-target-libga68 maybe-configure-target-libga68 ++maybe-configure-target-libga68: ++@if gcc-bootstrap ++configure-target-libga68: stage_current ++@endif gcc-bootstrap ++@if target-libga68 ++maybe-configure-target-libga68: configure-target-libga68 ++configure-target-libga68: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libga68..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libga68/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libga68/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libga68/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libga68/Makefile; \ ++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libga68/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libga68; \ ++ cd "$(TARGET_SUBDIR)/libga68" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libga68/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libga68; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) \ ++ $$s/$$module_srcdir/configure \ ++ --srcdir=$${topdir}/$$module_srcdir \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} \ ++ || exit 1 ++@endif target-libga68 ++ ++ ++ ++ ++ ++.PHONY: all-target-libga68 maybe-all-target-libga68 ++maybe-all-target-libga68: ++@if gcc-bootstrap ++all-target-libga68: stage_current ++@endif gcc-bootstrap ++@if target-libga68 ++TARGET-target-libga68=all ++maybe-all-target-libga68: all-target-libga68 ++all-target-libga68: configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libga68)) ++@endif target-libga68 ++ ++ ++ ++ ++ ++.PHONY: check-target-libga68 maybe-check-target-libga68 ++maybe-check-target-libga68: ++@if target-libga68 ++maybe-check-target-libga68: check-target-libga68 ++ ++check-target-libga68: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libga68 ++ ++.PHONY: install-target-libga68 maybe-install-target-libga68 ++maybe-install-target-libga68: ++@if target-libga68 ++maybe-install-target-libga68: install-target-libga68 ++ ++install-target-libga68: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libga68 ++ ++.PHONY: install-strip-target-libga68 maybe-install-strip-target-libga68 ++maybe-install-strip-target-libga68: ++@if target-libga68 ++maybe-install-strip-target-libga68: install-strip-target-libga68 ++ ++install-strip-target-libga68: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libga68 ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libga68 info-target-libga68 ++maybe-info-target-libga68: ++@if target-libga68 ++maybe-info-target-libga68: info-target-libga68 ++ ++info-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ info) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-dvi-target-libga68 dvi-target-libga68 ++maybe-dvi-target-libga68: ++@if target-libga68 ++maybe-dvi-target-libga68: dvi-target-libga68 ++ ++dvi-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ dvi) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-pdf-target-libga68 pdf-target-libga68 ++maybe-pdf-target-libga68: ++@if target-libga68 ++maybe-pdf-target-libga68: pdf-target-libga68 ++ ++pdf-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-html-target-libga68 html-target-libga68 ++maybe-html-target-libga68: ++@if target-libga68 ++maybe-html-target-libga68: html-target-libga68 ++ ++html-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ html) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-TAGS-target-libga68 TAGS-target-libga68 ++maybe-TAGS-target-libga68: ++@if target-libga68 ++maybe-TAGS-target-libga68: TAGS-target-libga68 ++ ++TAGS-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ TAGS) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-info-target-libga68 install-info-target-libga68 ++maybe-install-info-target-libga68: ++@if target-libga68 ++maybe-install-info-target-libga68: install-info-target-libga68 ++ ++install-info-target-libga68: \ ++ configure-target-libga68 \ ++ info-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-info) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-dvi-target-libga68 install-dvi-target-libga68 ++maybe-install-dvi-target-libga68: ++@if target-libga68 ++maybe-install-dvi-target-libga68: install-dvi-target-libga68 ++ ++install-dvi-target-libga68: \ ++ configure-target-libga68 \ ++ dvi-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-dvi in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-dvi) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-pdf-target-libga68 install-pdf-target-libga68 ++maybe-install-pdf-target-libga68: ++@if target-libga68 ++maybe-install-pdf-target-libga68: install-pdf-target-libga68 ++ ++install-pdf-target-libga68: \ ++ configure-target-libga68 \ ++ pdf-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-install-html-target-libga68 install-html-target-libga68 ++maybe-install-html-target-libga68: ++@if target-libga68 ++maybe-install-html-target-libga68: install-html-target-libga68 ++ ++install-html-target-libga68: \ ++ configure-target-libga68 \ ++ html-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-installcheck-target-libga68 installcheck-target-libga68 ++maybe-installcheck-target-libga68: ++@if target-libga68 ++maybe-installcheck-target-libga68: installcheck-target-libga68 ++ ++installcheck-target-libga68: \ ++ configure-target-libga68 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ installcheck) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-mostlyclean-target-libga68 mostlyclean-target-libga68 ++maybe-mostlyclean-target-libga68: ++@if target-libga68 ++maybe-mostlyclean-target-libga68: mostlyclean-target-libga68 ++ ++mostlyclean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-clean-target-libga68 clean-target-libga68 ++maybe-clean-target-libga68: ++@if target-libga68 ++maybe-clean-target-libga68: clean-target-libga68 ++ ++clean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-distclean-target-libga68 distclean-target-libga68 ++maybe-distclean-target-libga68: ++@if target-libga68 ++maybe-distclean-target-libga68: distclean-target-libga68 ++ ++distclean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++.PHONY: maybe-maintainer-clean-target-libga68 maintainer-clean-target-libga68 ++maybe-maintainer-clean-target-libga68: ++@if target-libga68 ++maybe-maintainer-clean-target-libga68: maintainer-clean-target-libga68 ++ ++maintainer-clean-target-libga68: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libga68"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libga68 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libga68 ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -64335,6 +64857,14 @@ check-gcc-cobol: gcc-site.exp + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-cobol); + check-cobol: check-gcc-cobol check-target-libgcobol + ++.PHONY: check-gcc-algol68 check-algol68 ++check-gcc-algol68: gcc-site.exp ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-algol68); ++check-algol68: check-gcc-algol68 check-target-libga68 ++ + + # The gcc part of install-no-fixedincludes, which relies on an intimate + # knowledge of how a number of gcc internal targets (inter)operate. Delegate. +@@ -67876,6 +68406,7 @@ configure-stageautofeedback-target-zlib: maybe-all-stageautofeedback-gcc + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgm2: stage_last ++configure-target-libga68: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc + configure-stage3-target-libgomp: maybe-all-stage3-gcc +@@ -67920,6 +68451,7 @@ configure-target-zlib: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgm2: maybe-all-gcc ++configure-target-libga68: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -69220,6 +69752,9 @@ all-target-libgm2: maybe-all-target-libatomic + @unless target-libstdc++-v3-bootstrap + configure-target-libgrust: maybe-all-target-libstdc++-v3 + @endunless target-libstdc++-v3-bootstrap ++@unless target-libstdc++-v3-bootstrap ++configure-target-libga68: maybe-all-target-libstdc++-v3 ++@endunless target-libstdc++-v3-bootstrap + @unless target-libbacktrace-bootstrap + configure-target-libgfortran: maybe-all-target-libbacktrace + @endunless target-libbacktrace-bootstrap +@@ -69281,6 +69816,7 @@ all-target-libgo: maybe-all-target-libatomic + configure-target-libgm2: maybe-all-target-libstdc++-v3 + all-target-libgm2: maybe-all-target-libatomic + configure-target-libgrust: maybe-all-target-libstdc++-v3 ++configure-target-libga68: maybe-all-target-libstdc++-v3 + configure-target-newlib: maybe-all-binutils + configure-target-newlib: maybe-all-ld + configure-target-libgfortran: maybe-all-target-libbacktrace +@@ -69387,6 +69923,7 @@ configure-target-zlib: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgm2: maybe-all-target-libgcc ++configure-target-libga68: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -69433,6 +69970,8 @@ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libga68: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -279,6 +279,11 @@ POSTSTAGE1_HOST_EXPORTS = \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ + $(POSTSTAGE1_CXX_EXPORT) \ + $(LTO_EXPORTS) \ ++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ ++ export GA68; \ ++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ + GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ + -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ + -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ +@@ -311,6 +316,7 @@ BASE_TARGET_EXPORTS = \ + CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ ++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ + GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ +@@ -380,6 +386,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ ++GA68_FOR_BUILD = @GA68_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ + GM2_FOR_BUILD = @GM2_FOR_BUILD@ +@@ -442,6 +449,7 @@ STRIP = @STRIP@ + WINDRES = @WINDRES@ + WINDMC = @WINDMC@ + ++GA68 = @GA68@ + GDC = @GDC@ + GNATBIND = @GNATBIND@ + GNATMAKE = @GNATMAKE@ +@@ -452,6 +460,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GA68FLAGS = @GA68FLAGS@ + GDCFLAGS = @GDCFLAGS@ + GM2FLAGS = $(CFLAGS) + +@@ -599,6 +608,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ ++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ + GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +@@ -628,6 +638,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GM2FLAGS_FOR_TARGET = -O2 -g + GOCFLAGS_FOR_TARGET = -O2 -g ++GA68FLAGS_FOR_TARGET = -O2 -g + GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +@@ -732,6 +743,7 @@ EXTRA_HOST_FLAGS = \ + 'DSYMUTIL=$(DSYMUTIL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GA68=$(GA68)' \ + 'GDC=$(GDC)' \ + 'GM2=$(GM2)' \ + 'LD=$(LD)' \ +@@ -760,6 +772,7 @@ STAGE1_FLAGS_TO_PASS = \ + POSTSTAGE1_FLAGS_TO_PASS = \ + CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ + CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ ++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ + GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ + GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ + GNATBIND="$${GNATBIND}" \ +@@ -795,6 +808,7 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ +--- a/src/config/acx.m4 ++++ b/src/config/acx.m4 +@@ -434,6 +434,12 @@ else + have_cargo=no + fi]) + ++# Test for Algol 68 ++AC_DEFUN([ACX_PROG_GA68], ++[AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) ++AC_REQUIRE([AC_PROG_CC]) ++AC_CHECK_TOOL(GA68, ga68, no)]) ++ + # Test for D. + AC_DEFUN([ACX_PROG_GDC], + [AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) +--- a/src/configure ++++ b/src/configure +@@ -616,6 +616,7 @@ AR_FOR_TARGET + GM2_FOR_TARGET + GDC_FOR_TARGET + GOC_FOR_TARGET ++GA68_FOR_TARGET + GFORTRAN_FOR_TARGET + GCC_FOR_TARGET + CXX_FOR_TARGET +@@ -624,6 +625,7 @@ RANLIB_PLUGIN_OPTION + AR_PLUGIN_OPTION + PKG_CONFIG_PATH + GDCFLAGS ++GA68FLAGS + READELF + OTOOL + OBJDUMP +@@ -655,6 +657,7 @@ LD_FOR_BUILD + LDFLAGS_FOR_BUILD + GDC_FOR_BUILD + GOC_FOR_BUILD ++GA68_FOR_BUILD + GFORTRAN_FOR_BUILD + DSYMUTIL_FOR_BUILD + DLLTOOL_FOR_BUILD +@@ -718,6 +721,7 @@ HAVE_CXX14 + do_compare + CARGO + GDC ++GA68 + GNATMAKE + GNATBIND + ac_ct_CXX +@@ -818,6 +822,7 @@ enable_libquadmath + enable_libquadmath_support + enable_libada + enable_libgm2 ++enable_libga68 + enable_libssp + enable_libstdcxx + enable_bootstrap +@@ -848,6 +853,7 @@ enable_host_shared + enable_libgdiagnostics + enable_stage1_languages + enable_objc_gc ++enable_algol68_gc + with_target_bdw_gc + with_target_bdw_gc_include + with_target_bdw_gc_lib +@@ -895,6 +901,7 @@ CC_FOR_TARGET + CXX_FOR_TARGET + GCC_FOR_TARGET + GFORTRAN_FOR_TARGET ++GA68_FOR_TARGET + GOC_FOR_TARGET + GDC_FOR_TARGET + GM2_FOR_TARGET +@@ -1564,6 +1571,7 @@ Optional Features: + disable libquadmath support for Fortran + --enable-libada build libada directory + --enable-libgm2 build libgm2 directory ++ --enable-libga68 build libga68 directory + --enable-libssp build libssp directory + --disable-libstdcxx do not build libstdc++-v3 directory + --enable-bootstrap enable bootstrapping [yes if native build] +@@ -1587,6 +1595,8 @@ Optional Features: + Mostly useful for compiler development + --enable-objc-gc enable use of Boehm's garbage collector with the GNU + Objective-C runtime ++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU ++ Algol runtime + --enable-vtable-verify Enable vtable verification feature + --enable-serial-[{host,target,build}-]configure + force sequential configuration of sub-packages for +@@ -1699,6 +1709,8 @@ Some influential environment variables: + GCC for the target + GFORTRAN_FOR_TARGET + GFORTRAN for the target ++ GA68_FOR_TARGET ++ GA68 for the target + GOC_FOR_TARGET + GOC for the target + GDC_FOR_TARGET +@@ -2866,6 +2878,7 @@ target_libraries="target-libgcc \ + target-libgcobol \ + target-libada \ + target-libgm2 \ ++ target-libga68 \ + target-libgo \ + target-libgrust \ + target-libphobos \ +@@ -3269,6 +3282,14 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then + noconfigdirs="$noconfigdirs gm2tools" + fi + ++# Check whether --enable-libga68 was given. ++if test "${enable_libga68+set}" = set; then : ++ enableval=$enable_libga68; ENABLE_LIBGA68=$enableval ++else ++ ENABLE_LIBGA68=yes ++fi ++ ++ + # Check whether --enable-libssp was given. + if test "${enable_libssp+set}" = set; then : + enableval=$enable_libssp; ENABLE_LIBSSP=$enableval +@@ -4247,6 +4268,7 @@ if test "${build}" != "${host}" ; then + CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} ++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} +@@ -4262,6 +4284,7 @@ else + CXX_FOR_BUILD="\$(CXX)" + DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" ++ GA68_FOR_BUILD="\$(GA68)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" +@@ -5782,6 +5805,100 @@ fi + + + ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ga68", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ga68; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68"; then ++ ac_cv_prog_GA68="$GA68" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68="${ac_tool_prefix}ga68" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68=$ac_cv_prog_GA68 ++if test -n "$GA68"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68" >&5 ++$as_echo "$GA68" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_GA68"; then ++ ac_ct_GA68=$GA68 ++ # Extract the first word of "ga68", so it can be a program name with args. ++set dummy ga68; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_GA68+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_GA68"; then ++ ac_cv_prog_ac_ct_GA68="$ac_ct_GA68" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_GA68="ga68" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_GA68=$ac_cv_prog_ac_ct_GA68 ++if test -n "$ac_ct_GA68"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GA68" >&5 ++$as_echo "$ac_ct_GA68" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_GA68" = x; then ++ GA68="no" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ GA68=$ac_ct_GA68 ++ fi ++else ++ GA68="$ac_cv_prog_GA68" ++fi ++ ++ ++ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gdc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gdc; ac_word=$2 +@@ -10328,6 +10445,11 @@ if test "${enable_objc_gc+set}" = set; then : + enableval=$enable_objc_gc; + fi + ++# Check whether --enable-algol68-gc was given. ++if test "${enable_algol68_gc+set}" = set; then : ++ enableval=$enable_algol68_gc; ++fi ++ + + # Check whether --with-target-bdw-gc was given. + if test "${with_target_bdw_gc+set}" = set; then : +@@ -10347,22 +10469,23 @@ if test "${with_target_bdw_gc_lib+set}" = set; then : + fi + + +-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 ++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in ++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 + $as_echo_n "checking for bdw garbage collector... " >&6; } +- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 + $as_echo "using bdw-gc in default locations" >&6; } +- else +- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +- as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 +- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +- as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 + else +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 + $as_echo "using paths configured with --with-target-bdw-gc options" >&6; } ++ fi + fi +- fi + esac + + # Disable libitm, libsanitizer, libvtv if we're not building C++ +@@ -11683,6 +11806,7 @@ done + + + ++ + + # Generate default definitions for YACC, M4, LEX and other programs that run + # on the build machine. These are used if the Makefile can't locate these +@@ -14202,6 +14326,9 @@ fi + + + ++GA68FLAGS=${GA68FLAGS-${CFLAGS}} ++ ++ + GDCFLAGS=${GDCFLAGS-${CFLAGS}} + + +@@ -15003,6 +15130,167 @@ fi + + + ++if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET=$GA68_FOR_TARGET ++elif test -n "$ac_cv_prog_GA68_FOR_TARGET"; then ++ GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++fi ++ ++if test -n "$ac_cv_prog_GA68_FOR_TARGET"; then ++ for ncn_progname in ga68; do ++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test -n "$with_build_time_tools"; then ++ for ncn_progname in ga68; do ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5 ++$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; } ++ if test -x $with_build_time_tools/${ncn_progname}; then ++ ac_cv_prog_GA68_FOR_TARGET=$with_build_time_tools/${ncn_progname} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ break ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ fi ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET"; then ++ for ncn_progname in ga68; do ++ if test -n "$ncn_target_tool_prefix"; then ++ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++ if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test $build = $target ; then ++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. ++set dummy ${ncn_progname}; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$GA68_FOR_TARGET"; then ++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET ++if test -n "$GA68_FOR_TARGET"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 ++$as_echo "$GA68_FOR_TARGET" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++ test -n "$ac_cv_prog_GA68_FOR_TARGET" && break ++ done ++fi ++ ++if test -z "$ac_cv_prog_GA68_FOR_TARGET" ; then ++ set dummy ga68 ++ if test $build = $target ; then ++ GA68_FOR_TARGET="$2" ++ else ++ GA68_FOR_TARGET="${ncn_target_tool_prefix}$2" ++ fi ++else ++ GA68_FOR_TARGET="$ac_cv_prog_GA68_FOR_TARGET" ++fi ++ ++ ++ + if test -n "$GOC_FOR_TARGET"; then + ac_cv_prog_GOC_FOR_TARGET=$GOC_FOR_TARGET + elif test -n "$ac_cv_prog_GOC_FOR_TARGET"; then +@@ -19469,6 +19757,51 @@ $as_echo "pre-installed" >&6; } + fi + fi + ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ga68" >&5 ++$as_echo_n "checking where to find the target ga68... " >&6; } ++if test "x${build}" != "x${host}" ; then ++ if expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then ++ # We already found the complete path ++ ac_dir=`dirname $GA68_FOR_TARGET` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 ++$as_echo "pre-installed in $ac_dir" >&6; } ++ else ++ # Canadian cross, just use what we found ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 ++$as_echo "pre-installed" >&6; } ++ fi ++else ++ ok=yes ++ case " ${configdirs} " in ++ *" gcc "*) ;; ++ *) ok=no ;; ++ esac ++ case ,${enable_languages}, in ++ *,algol68,*) ;; ++ *) ok=no ;; ++ esac ++ if test $ok = yes; then ++ # An in-tree tool is available and we can use it ++ GA68_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5 ++$as_echo "just compiled" >&6; } ++ elif expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then ++ # We already found the complete path ++ ac_dir=`dirname $GA68_FOR_TARGET` ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 ++$as_echo "pre-installed in $ac_dir" >&6; } ++ elif test "x$target" = "x$host"; then ++ # We can use an host tool ++ GA68_FOR_TARGET='$(GA68)' ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5 ++$as_echo "host tool" >&6; } ++ else ++ # We need a cross tool ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 ++$as_echo "pre-installed" >&6; } ++ fi ++fi ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gdc" >&5 + $as_echo_n "checking where to find the target gdc... " >&6; } + if test "x${build}" != "x${host}" ; then +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -164,6 +164,7 @@ target_libraries="target-libgcc \ + target-libgcobol \ + target-libada \ + target-libgm2 \ ++ target-libga68 \ + target-libgo \ + target-libgrust \ + target-libphobos \ +@@ -512,6 +513,11 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then + noconfigdirs="$noconfigdirs gm2tools" + fi + ++AC_ARG_ENABLE(libga68, ++[AS_HELP_STRING([--enable-libga68], [build libga68 directory])], ++ENABLE_LIBGA68=$enableval, ++ENABLE_LIBGA68=yes) ++ + AC_ARG_ENABLE(libssp, + [AS_HELP_STRING([--enable-libssp], [build libssp directory])], + ENABLE_LIBSSP=$enableval, +@@ -1445,6 +1451,7 @@ if test "${build}" != "${host}" ; then + CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} ++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} +@@ -1460,6 +1467,7 @@ else + CXX_FOR_BUILD="\$(CXX)" + DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" ++ GA68_FOR_BUILD="\$(GA68)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" +@@ -1513,6 +1521,7 @@ int main() {}])], + fi + + ACX_PROG_GNAT ++ACX_PROG_GA68 + ACX_PROG_GDC + ACX_PROG_CARGO + ACX_PROG_CMP_IGNORE_INITIAL +@@ -2637,6 +2646,10 @@ AC_ARG_ENABLE(objc-gc, + [AS_HELP_STRING([--enable-objc-gc], + [enable use of Boehm's garbage collector with the + GNU Objective-C runtime])]) ++AC_ARG_ENABLE(algol68-gc, ++[AS_HELP_STRING([--enable-algol68-gc], ++ [enable use of Boehm's garbage collector with the ++ GNU Algol runtime])]) + AC_ARG_WITH([target-bdw-gc], + [AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], + [specify prefix directory for installed bdw-gc package. +@@ -2649,21 +2662,22 @@ AC_ARG_WITH([target-bdw-gc-lib], + [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], + [specify directories for installed bdw-gc library])]) + +-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) +- AC_MSG_CHECKING([for bdw garbage collector]) +- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +- dnl no bdw-gw options, assume default locations +- AC_MSG_RESULT([using bdw-gc in default locations]) +- else +- dnl bdw-gw options, first error checking, complete checking in libobjc +- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +- AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) +- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +- AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in ++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) ++ AC_MSG_CHECKING([for bdw garbage collector]) ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ dnl no bdw-gw options, assume default locations ++ AC_MSG_RESULT([using bdw-gc in default locations]) + else +- AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ dnl bdw-gw options, first error checking, complete checking in libobjc and libga68 ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++ else ++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ fi + fi +- fi + esac + + # Disable libitm, libsanitizer, libvtv if we're not building C++ +@@ -3902,6 +3916,7 @@ AC_SUBST(CXX_FOR_BUILD) + AC_SUBST(DLLTOOL_FOR_BUILD) + AC_SUBST(DSYMUTIL_FOR_BUILD) + AC_SUBST(GFORTRAN_FOR_BUILD) ++AC_SUBST(GA68_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) + AC_SUBST(GDC_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) +@@ -3996,6 +4011,9 @@ AC_SUBST(CC) + AC_SUBST(CXX) + AC_SUBST(CFLAGS) + AC_SUBST(CXXFLAGS) ++AC_SUBST(GA68) ++AC_SUBST(GA68FLAGS) ++GA68FLAGS=${GA68FLAGS-${CFLAGS}} + AC_SUBST(GDC) + AC_SUBST(GDCFLAGS) + GDCFLAGS=${GDCFLAGS-${CFLAGS}} +@@ -4032,6 +4050,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc) + NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx) + NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) + NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) ++NCN_STRICT_CHECK_TARGET_TOOLS(GA68_FOR_TARGET, ga68) + NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo) + NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc) + NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2) +@@ -4083,6 +4102,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN, + [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) + GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC, + [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go) ++GCC_TARGET_TOOL(ga68, GA68_FOR_TARGET, GA68, ++ [gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/], algol68) + GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC, + [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d) + GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2, +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -615,6 +615,8 @@ tm_d_file_list=@tm_d_file_list@ + tm_d_include_list=@tm_d_include_list@ + tm_rust_file_list=@tm_rust_file_list@ + tm_rust_include_list=@tm_rust_include_list@ ++tm_algol68_file_list=@tm_algol68_file_list@ ++tm_algol68_include_list=@tm_algol68_include_list@ + build_xm_file_list=@build_xm_file_list@ + build_xm_include_list=@build_xm_include_list@ + build_xm_defines=@build_xm_defines@ +@@ -919,6 +921,7 @@ TCONFIG_H = tconfig.h $(xm_file_list) + TM_P_H = tm_p.h $(tm_p_file_list) $(TREE_H) + TM_D_H = tm_d.h $(tm_d_file_list) + TM_RUST_H = tm_rust.h $(tm_rust_file_list) ++TM_ALGOL68_H = tm_algol68.h $(tm_algol68_file_list) + GTM_H = tm.h $(tm_file_list) insn-constants.h + TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) + +@@ -978,11 +981,13 @@ C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h + COMMON_TARGET_DEF = common/common-target.def target-hooks-macros.h + D_TARGET_DEF = d/d-target.def target-hooks-macros.h + RUST_TARGET_DEF = rust/rust-target.def target-hooks-macros.h ++ALGOL68_TARGET_DEF = algol68/algol68-target.def target-hooks-macros.h + TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h + C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF) + COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF) + D_TARGET_H = d/d-target.h $(D_TARGET_DEF) + RUST_TARGET_H = rust/rust-target.h $(RUST_TARGET_DEF) ++ALGOL68_TARGET_H = algol68/algol68-target.h $(ALGOL68_TARGET_DEF) + MACHMODE_H = machmode.h mode-classes.def + HOOKS_H = hooks.h + HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) +@@ -1303,6 +1308,9 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@ + # Target specific, Rust specific object file + RUST_TARGET_OBJS=@rust_target_objs@ + ++# Target specific, Algol68 specific object file ++ALGOL68_TARGET_OBJS=@algol68_target_objs@ ++ + # Object files for gcc many-languages driver. + GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o + +@@ -2082,6 +2090,7 @@ tm.h: cs-tm.h ; @true + tm_p.h: cs-tm_p.h ; @true + tm_d.h: cs-tm_d.h ; @true + tm_rust.h: cs-tm_rust.h ; @true ++tm_algol68.h: cs-tm_algol68.h; @true + + cs-config.h: Makefile + TARGET_CPU_DEFAULT="" \ +@@ -2121,6 +2130,11 @@ cs-tm_rust.h: Makefile + HEADERS="$(tm_rust_include_list)" DEFINES="" \ + $(SHELL) $(srcdir)/mkconfig.sh tm_rust.h + ++cs-tm_algol68.h: Makefile ++ TARGET_CPU_DEFAULT="" \ ++ HEADERS="$(tm_algol68_include_list)" DEFINES="" \ ++ $(SHELL) $(srcdir)/mkconfig.sh tm_algol68.h ++ + # Don't automatically run autoconf, since configure.ac might be accidentally + # newer than configure. Also, this writes into the source directory which + # might be on a read-only file system. If configured for maintainer mode +@@ -2594,6 +2608,12 @@ default-rust.o: config/default-rust.cc + $(COMPILE) $< + $(POSTCOMPILE) + ++# Files used by the Algol68 language front end. ++ ++default-algol68.o: config/default-algol68.cc ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + # Language-independent files. + + DRIVER_DEFINES = \ +@@ -2940,6 +2960,15 @@ s-rust-target-hooks-def-h: build/genhooks$(build_exeext) + rust/rust-target-hooks-def.h + $(STAMP) s-rust-target-hooks-def-h + ++algol68/algol68-target-hooks-def.h: s-algol68-target-hooks-def-h; @true ++ ++s-algol68-target-hooks-def-h: build/genhooks$(build_exeext) ++ $(RUN_GEN) build/genhooks$(build_exeext) "Algol68 Target Hook" \ ++ > tmp-algol68-target-hooks-def.h ++ $(SHELL) $(srcdir)/../move-if-change tmp-algol68-target-hooks-def.h \ ++ algol68/algol68-target-hooks-def.h ++ $(STAMP) s-algol68-target-hooks-def-h ++ + # check if someone mistakenly only changed tm.texi. + # We use a different pathname here to avoid a circular dependency. + s-tm-texi: $(srcdir)/doc/../doc/tm.texi +@@ -3148,6 +3178,7 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \ + gimple-match-auto.h generic-match-auto.h \ + c-family/c-target-hooks-def.h d/d-target-hooks-def.h \ + $(TM_RUST_H) rust/rust-target-hooks-def.h \ ++ $(TM_ALGOL68_H) algol68/algol68-target-hooks-def.h \ + case-cfn-macros.h \ + cfn-operators.pd omp-device-properties.h + +@@ -3282,8 +3313,8 @@ build/genrecog.o : genrecog.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ + $(HASH_TABLE_H) inchash.h + build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \ +- $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) $(BCONFIG_H) \ +- $(SYSTEM_H) errors.h ++ $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) \ ++ $(ALGOL68_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h + build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ +@@ -3832,7 +3863,8 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES) + .PHONY: regenerate-opt-urls + OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \ + $(build_htmldir)/gdc/Option-Index.html \ +- $(build_htmldir)/gfortran/Option-Index.html ++ $(build_htmldir)/gfortran/Option-Index.html \ ++ $(build_htmldir)/ga68/Option-Index.html + $(OPT_URLS_HTML_DEPS): %/Option-Index.html: %/index.html + + regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS) +--- /dev/null ++++ b/src/gcc/algol68/Make-lang.in +@@ -0,0 +1,287 @@ ++# Make-lang.in -- Top level -*- makefile -*- fragment for GCC Algol 68 ++# frontend. ++ ++# Copyright (C) 2025 Free Software Foundation, Inc. ++ ++# This file is NOT part of GCC. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# This file provides the language dependent support in the main Makefile. ++ ++.PHONY: algol68 ++ ++# Installation name. ++ ++A68_INSTALL_NAME = $(shell echo ga68|sed '$(program_transform_name)') ++A68_TARGET_INSTALL_NAME = $(target_noncanonical)-$(shell echo ga68|sed '$(program_transform_name)') ++ ++# General hooks ++ ++algol68: a681$(exeext) ++algol68.serial = a681$(exeext) ++ ++.PHONY: algol68 ++ ++# Use maximal warnings for this front end. ++algol68-warn = $(STRICT_WARN) ++ ++# First the driver, ga68. ++ ++GA68_OBJS = \ ++ $(GCC_OBJS) \ ++ algol68/a68spec.o \ ++ $(END) ++ ++a68spec.o: $(srcdir)/algol68/a68spec.cc $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \ ++ $(CONFIG_H) opts.h ++ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ ++ $(INCLUDES) $(srcdir)/algol68/a68spec.cc ++ ++ga68$(exeext): $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) ++ +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ ++ $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ ++ $(EXTRA_GCC_LIBS) $(LIBS) ++ ++# Now the compiler proper, a681. ++ ++ALGOL68_OBJS = algol68/a68-lang.o \ ++ algol68/a68-unistr.o \ ++ algol68/a68-moids-diagnostics.o \ ++ algol68/a68-moids-misc.o \ ++ algol68/a68-moids-to-string.o \ ++ algol68/a68-postulates.o \ ++ algol68/a68-diagnostics.o \ ++ algol68/a68-exports.o \ ++ algol68/a68-imports.o \ ++ algol68/a68-parser.o \ ++ algol68/a68-parser-keywords.o \ ++ algol68/a68-parser-bottom-up.o \ ++ algol68/a68-parser-brackets.o \ ++ algol68/a68-parser-debug.o \ ++ algol68/a68-parser-extract.o \ ++ algol68/a68-parser-modes.o \ ++ algol68/a68-parser-moids-check.o \ ++ algol68/a68-parser-moids-coerce.o \ ++ algol68/a68-parser-moids-equivalence.o \ ++ algol68/a68-parser-pragmat.o \ ++ algol68/a68-parser-scanner.o \ ++ algol68/a68-parser-scope.o \ ++ algol68/a68-parser-serial-dsa.o \ ++ algol68/a68-parser-taxes.o \ ++ algol68/a68-parser-top-down.o \ ++ algol68/a68-parser-victal.o \ ++ algol68/a68-parser-prelude.o \ ++ algol68/a68-low.o \ ++ algol68/a68-low-builtins.o \ ++ algol68/a68-low-clauses.o \ ++ algol68/a68-low-coercions.o \ ++ algol68/a68-low-decls.o \ ++ algol68/a68-low-generator.o \ ++ algol68/a68-low-misc.o \ ++ algol68/a68-low-moids.o \ ++ algol68/a68-low-multiples.o \ ++ algol68/a68-low-refs.o \ ++ algol68/a68-low-procs.o \ ++ algol68/a68-low-structs.o \ ++ algol68/a68-low-chars.o \ ++ algol68/a68-low-strings.o \ ++ algol68/a68-low-ints.o \ ++ algol68/a68-low-bools.o \ ++ algol68/a68-low-reals.o \ ++ algol68/a68-low-complex.o \ ++ algol68/a68-low-bits.o \ ++ algol68/a68-low-posix.o \ ++ algol68/a68-low-prelude.o \ ++ algol68/a68-low-ranges.o \ ++ algol68/a68-low-runtime.o \ ++ algol68/a68-low-unions.o \ ++ algol68/a68-low-units.o \ ++ $(END) ++ ++ALGOL68_ALL_OBJS = $(ALGOL68_OBJS) $(ALGOL68_TARGET_OBJS) ++ ++algol68_OBJS = $(ALGOL68_ALL_OBJS) algol68/a68spec.o ++ ++a681$(exeext): $(ALGOL68_ALL_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(algol68.prev) ++ @$(call LINK_PROGRESS,$(INDEX.algol68),start) ++ +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ ++ $(ALGOL68_OBJS) attribs.o $(BACKEND) $(LIBS) $(A681_LIBS) $(BACKENDLIBS) ++ @$(call LINK_PROGRESS,$(INDEX.algol68),end) ++ ++algol68/tfspec.o: $(srcdir)/algol68/tfspec.c \ ++ $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CONFIG_H) $(TREE_H) ++ ++# Documentation. ++ ++A68_MANUAL_FILES = ++ ++A68_MANUAL_FILES = \ ++ algol68/ga68.texi \ ++ $(gcc_docdir)/include/fdl.texi \ ++ $(gcc_docdir)/include/gpl_v3.texi \ ++ $(gcc_docdir)/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++A68_INT_MANUAL_FILES = \ ++ algol68/ga68-internals.texi \ ++ $(gcc_docdir)/include/fdl.texi \ ++ $(gcc_docdir)/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++A68_TEXI_FILES = $(A68_MANUAL_FILES) $(A68_INT_MANUAL_FILES) ++ ++doc/ga68.info: $(A68_MANUAL_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f doc/ga68.info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ else true; fi ++ ++doc/ga68-internals.info: $(A68_INT_MANUAL_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f doc/ga68-internals.info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ else true; fi ++ ++doc/ga68.dvi: $(A68_MANUAL_FILES) ++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68-internals.dvi: $(A68_INT_MANUAL_FILES) ++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68.pdf: $(A68_MANUAL_FILES) ++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< ++ ++doc/ga68-internals.pdf: $(A68_INT_MANUAL_FILES) ++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< ++ ++$(build_htmldir)/ga68/index.html: $(A68_MANUAL_FILES) ++ $(mkinstalldirs) $(@D) ++ rm -f $(@D)/* ++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ ++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< ++ ++$(build_htmldir)/ga68-internals/index.html: $(A68_INT_MANUAL_FILES) ++ $(mkinstalldirs) $(@D) ++ rm -f $(@D)/* ++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ ++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< ++ ++.INTERMEDIATE: ga68.pod ++ ++ga68.pod: algol68/ga68.texi ++ -$(TEXI2POD) -D ga68 < $< > $@ ++ ++# Build hooks. ++ ++algol68.srcextra: ++ ++algol68.all.cross: ga68$(exeext) ++algol68.start.encap: ga68$(exeect) ++algol68.rest.encap: ++algol68.info: doc/ga68.info doc/ga68-internals.info ++algol68.dvi: doc/ga68.dvi doc/ga68-internals.dvi ++algol68.pdf: doc/ga68.pdf doc/ga68-internals.pdf ++algol68.install-pdf: ++algol68.html: $(build_htmldir)/ga68/index.html $(build_htmldir)/ga68-internals/index.html ++algol68.man: doc/ga68.1 ++algol68.srcinfo: doc/ga68.info doc/ga68-internals.info ++ -cp -p $^ $(srcdir)/doc ++algol68.srcinfo: ++algol68.srcman: ++algol68.srcman: doc/ga68.1 ++ -cp -p $^ $(srcdir)/doc ++algol68.install-plugin: ++ ++algol68.tags: force ++ cd $(srcdir)/algol68; etags -o TAGS.sub *.c *.h; \ ++ etags --include TAGS.sub --include ../TAGS.sub ++ ++lang_checks += check-algol68 ++lang_checks_parallelized += check-algol68 ++check_algol68_parallelize = 10 ++ ++selftest-algol68: ++ ++# ++# Install hooks: ++ ++algol68.install-common: installdirs ++ -rm -f $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) ++ $(INSTALL_PROGRAM) ga68$(exeext) $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) ++ ++algol68.install-man: $(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext) ++ ++$(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext): doc/ga68.1 installdirs ++ -rm -f $@ ++ -$(INSTALL_DATA) $< $@ ++ -chmod a-x $@ ++ ++$(DESTDIR)$(man7dir)/%.7algol: doc/%.7algol installdirs ++ -rm -f $@ ++ -$(INSTALL_DATA) $< $@ ++ -chmod a-x $@ ++ ++algol68.install-info: $(DESTDIR)$(infodir)/ga68.info $(DESTDIR)$(infodir)/ga68-internals.info ++ ++algol68.install-html: $(build_htmldir)/ga68 $(build_htmldir)/ga68-internals ++ @$(NORMAL_INSTALL) ++ test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" ++ @for p in $(build_htmldir)/ga68; do \ ++ if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ ++ f=$(html__strip_dir) \ ++ if test -d "$$d$$p"; then \ ++ echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ ++ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ ++ else \ ++ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ ++ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ ++ fi; \ ++ done ++ ++algol68.uninstall: ++# ++# Clean hooks: ++# A lot of the ancillary files are deleted by the main makefile. ++# We just have to delete files specific to us. ++algol68.mostlyclean: ++ -rm -f algol68/*$(objext) algol68/xforward algol68/fflags ++ -rm -f algol68/*$(coverageexts) ++algol68.clean: algol68.mostlyclean ++algol68.distclean: ++ -rm -f algol68/Makefile algol68/Make-host algol68/Make-target ++ -rm -f algol68/config.status algol68/config.cache ++algol68.maintainer-clean: ++ -rm -f $(gcc_docdir)/*.7algol ++ ++# ++# Stage hooks: ++ ++algol68.stage1: stage1-start ++ -mv algol68/*$(objext) stage1/algol68 ++algol68.stage2: stage2-start ++ -mv algol68/*$(objext) stage2/algol68 ++algol68.stage3: stage3-start ++ -mv algol68/*$(objext) stage3/algol68 ++algol68.stage4: stage4-start ++ -mv algol68/*$(objext) stage4/algol68 ++algol68.stageprofile: stageprofile-start ++ -mv algol68/*$(objext) stageprofile/algol68 ++algol68.stagefeedback: stagefeedback-start ++ -mv algol68/*$(objext) stagefeedback/algol68 +--- /dev/null ++++ b/src/gcc/algol68/README +@@ -0,0 +1,130 @@ ++This is the GNU Algol 68 compiler. ++ ++This compiler implements the Algol 68 programming language ++(https://www.algol68-lang.org) as defined in the Revised Report, along ++with several GNU extensions to the language which are oriented to ++enhance its application in systems programming and to achieve a good ++integration in POSIX systems. ++ ++The parser component used in this front-end has been adapted from ++Algol 68 Genie, an Algol 68 interpreter written by Marcel van der ++Veer. It is worth noting that this parser is not your typical garden ++variety parser, as it is capable of effectively parsing the two-level ++grammar of Algol 68, which is no small task. Parsing Algol 68 is ++notoriously difficult, and without Marcel's careful work of many years ++this front-end would most probably not exist. It is also a beautiful ++implementation that is a delight to both read and work with. ++ ++The syntax tree built by the parser is lowered into a GENERIC tree by ++a lowering pass, which then invokes the gimplifier and hands the ++resulting gimple IR over to the rest of the compilation, down the ++rabbit hole all the way to optimized assembly code. ++ ++The compiler driver is called `ga68'. ++The compiler proper is called `a681'. ++ ++Programs built by this compiler make use of the libga68 run-time ++library. ++ ++Building ++======== ++ ++Configure and build GCC with: ++ ++ $ mkdir build-algol68 ++ $ cd build-algol68 ++ $ ../configure --enable-languages=algol68 ++ $ make ++ $ make install ++ ++Alternatively you can configure and build a non-bootstrapped compiler, ++which is much faster to build. But note that in this case you better ++pass some flags so the compiler gets built optimized, or the resulting ++compiler will be rather slow: ++ ++ $ mkdir build-algol68 ++ $ cd build-algol68 ++ $ ../configure --enable-languages=algol68 BOOT_CFLAGS="-O2 -g" \ ++ BOOT_CXXFLAGS="-O2 -g" \ ++ STAGE1_CFLAGS="-O2 -g" \ ++ STAGE1_CXXFLAGS="-O2 -g" ++ $ make ++ $ make install ++ ++Debugging ++========= ++ ++A few front-end specific options useful for debugging are: ++ ++ '-fa68-dump-ast' ++ Emits a textual representation of the parse tree as produced by the parser. ++ ++ '-fa68-dump-modes' ++ Emits a list of all parsed modes. ++ ++See the Developer Options section in the GNU Algol Compiler manual for ++more hacking related options. ++ ++Testing ++======= ++ ++Invoke the full testsuite from the build directory: ++ ++ $ make check-algol68 ++ ++You can pass -jN to run tests in parallel: ++ ++ $ make -jN check-algol68 ++ ++Invoke a subset of the testsuite. For example, to only run tests that ++involve compilation but not running: ++ ++ $ make check-algol68 RUNTESTFLAGS="compile.exp" ++ ++There are the following sets of tests: ++ ++ compile.exp - compilation tests ++ ++Invoke only a specific test: ++ ++ $ make check-algol68 RUNTESTFLAGS="--all compile.exp=bad-coercion-1.a68" ++ ++Test in both 32-bit and 64-bit in multilib arches: ++ ++ $ make check-algol68 RUNTESTFLAGS="--target_board=unix\{-m64,-m32\}" ++ ++Test that integration with the GCC GC is correct: ++ ++ $ make check-algol68 RUNTESTFLAGS="CFLAGS_FOR_TARGET='--param=ggc-min-expand=0 --param=ggc-min-heapsize=0'" ++ ++Logs (with corresponding commands) can be found in ++BUILD/gcc/testsuite/algol68/algol68.log. ++ ++See https://gcc.gnu.org/install/test.html for more details. ++ ++Useful Resources ++================ ++ ++- An Emacs mode for editing Algol 68 programs can be found at ++ https://git.sr.ht/~jemarch/a68-mode. It supports automatic ++ indentation, pretty-printing of bold tags, an auto-stropping minor ++ mode and other features. ++ ++- The Algol 68 Jargon File at https://jemarch.net/a68-jargon provides ++ a comprehensive list of definitions of many of the technical and ++ non-technical terms used in the context of Algol 68. ++ ++- The very formal Revised Report on the Algorithmic Language ALGOL 68 ++ can be found at [1]. ++ ++- The truly delightful Informal Introduction to ALGOL 68 by C.H ++ Lindsey and van der Meulen can be found at [2]. ++ ++Community ++========= ++ ++mailing list: algol68@gcc.gnu.org ++irc: irc.oftc.net - #gnualgol ++ ++[1] https://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB-600dpi.pdf ++[2] https://inria.hal.science/hal-03027689/file/Lindsey_van_der_Meulen-IItA68-Revised.pdf +--- /dev/null ++++ b/src/gcc/algol68/a68-diagnostics.cc +@@ -0,0 +1,381 @@ ++/* Error and warning routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted and expanded for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++ ++#include "a68.h" ++ ++/* ++ * Error handling routines. ++ */ ++ ++#define TABULATE(n) (8 * (n / 8 + 1) - n) ++ ++/* Severities handled by the DIAGNOSTIC function defined below. */ ++ ++#define A68_ERROR 0 ++#define A68_WARNING 1 ++#define A68_FATAL 2 ++#define A68_SCAN_ERROR 3 ++#define A68_INFORM 4 ++ ++/* Give a diagnostic message. */ ++ ++#if __GNUC__ >= 10 ++#pragma GCC diagnostic ignored "-Wsuggest-attribute=format" ++#endif ++ ++static bool ++diagnostic (int sev, int opt, ++ NODE_T *p, ++ LINE_T *line, ++ char *pos, ++ const char *loc_str, va_list args) ++{ ++ int res = 0; ++ MOID_T *moid = NO_MOID; ++ const char *t = loc_str; ++ obstack b; ++ ++ /* ++ * Synthesize diagnostic message. ++ * ++ * Legend for special symbols: ++ * * as first character, copy rest of string literally ++ * @ AST node ++ * A AST node attribute ++ * B keyword ++ * C context ++ * L line number ++ * M moid - if error mode return without giving a message ++ * O moid - operand ++ * S quoted symbol, when possible with typographical display features ++ * X expected attribute ++ * Y string literal. ++ * Z quoted string. */ ++ ++ static va_list argp; /* Note this is empty. */ ++ gcc_obstack_init (&b); ++ ++ if (t[0] == '*') ++ obstack_grow (&b, t + 1, strlen (t + 1)); ++ else ++ while (t[0] != '\0') ++ { ++ if (t[0] == '@') ++ { ++ const char *nt = a68_attribute_name (ATTRIBUTE (p)); ++ if (t != NO_TEXT) ++ obstack_grow (&b, nt, strlen (nt)); ++ else ++ obstack_grow (&b, "construct", strlen ("construct")); ++ } ++ else if (t[0] == 'A') ++ { ++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); ++ const char *nt = a68_attribute_name (att); ++ if (nt != NO_TEXT) ++ obstack_grow (&b, nt, strlen (nt)); ++ else ++ obstack_grow (&b, "construct", strlen ("construct")); ++ } ++ else if (t[0] == 'B') ++ { ++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); ++ KEYWORD_T *nt = a68_find_keyword_from_attribute (A68 (top_keyword), att); ++ if (nt != NO_KEYWORD) ++ { ++ const char *strop_keyword = a68_strop_keyword (TEXT (nt)); ++ ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, strop_keyword, strlen (strop_keyword)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_grow (&b, "keyword", strlen ("keyword")); ++ } ++ else if (t[0] == 'C') ++ { ++ int att = va_arg (args, int); ++ const char *sort = NULL; ++ ++ switch (att) ++ { ++ case NO_SORT: sort = "this"; break; ++ case SOFT: sort = "a soft"; break; ++ case WEAK: sort = "a weak"; break; ++ case MEEK: sort = "a meek"; break; ++ case FIRM: sort = "a meek"; break; ++ case STRONG: sort = "a strong"; break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ obstack_grow (&b, sort, strlen (sort)); ++ } ++ else if (t[0] == 'L') ++ { ++ LINE_T *a = va_arg (args, LINE_T *); ++ gcc_assert (a != NO_LINE); ++ if (NUMBER (a) == 0) ++ obstack_grow (&b, "in standard environment", ++ strlen ("in standard environment")); ++ else if (p != NO_NODE && NUMBER (a) == LINE_NUMBER (p)) ++ obstack_grow (&b, "in this line", strlen ("in this line")); ++ else ++ { ++ char d[10]; ++ if (snprintf (d, 10, "in line %d", NUMBER (a)) < 0) ++ gcc_unreachable (); ++ obstack_grow (&b, d, strlen (d)); ++ } ++ } ++ else if (t[0] == 'M') ++ { ++ const char *moidstr = NULL; ++ ++ moid = va_arg (args, MOID_T *); ++ if (moid == NO_MOID || moid == M_ERROR) ++ moid = M_UNDEFINED; ++ ++ if (IS (moid, SERIES_MODE)) ++ { ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ moidstr = a68_moid_to_string (MOID (PACK (moid)), ++ MOID_ERROR_WIDTH, p); ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ } ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else if (t[0] == 'O') ++ { ++ moid = va_arg (args, MOID_T *); ++ if (moid == NO_MOID || moid == M_ERROR) ++ moid = M_UNDEFINED; ++ if (moid == M_VOID) ++ obstack_grow (&b, "UNION (VOID, ..)", strlen ("UNION (VOID, ..)")); ++ else if (IS (moid, SERIES_MODE)) ++ { ++ const char *moidstr = NULL; ++ ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ moidstr = a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p); ++ else ++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ } ++ else ++ { ++ const char *moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); ++ obstack_grow (&b, moidstr, strlen (moidstr)); ++ } ++ } ++ else if (t[0] == 'S') ++ { ++ if (p != NO_NODE && NSYMBOL (p) != NO_TEXT) ++ { ++ const char *txt = NSYMBOL (p); ++ char *sym = NCHAR_IN_LINE (p); ++ int n = 0, size = (int) strlen (txt); ++ ++ obstack_grow (&b, "%<", 2); ++ if (txt[0] != sym[0] || (int) strlen (sym) < size) ++ obstack_grow (&b, txt, strlen (txt)); ++ else ++ { ++ while (n < size) ++ { ++ if (ISPRINT (sym[0])) ++ obstack_1grow (&b, sym[0]); ++ if (TOLOWER (txt[0]) == TOLOWER (sym[0])) ++ { ++ txt++; ++ n++; ++ } ++ sym++; ++ } ++ } ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_grow (&b, "symbol", strlen ("symbol")); ++ } ++ else if (t[0] == 'X') ++ { ++ enum a68_attribute att = (enum a68_attribute) (va_arg (args, int)); ++ const char *att_name = a68_attribute_name (att); ++ obstack_grow (&b, att_name, strlen (att_name)); ++ } ++ else if (t[0] == 'Y') ++ { ++ char *loc_string = va_arg (args, char *); ++ obstack_grow (&b, loc_string, strlen (loc_string)); ++ } ++ else if (t[0] == 'Z') ++ { ++ char *str = va_arg (args, char *); ++ obstack_grow (&b, "%<", 2); ++ obstack_grow (&b, str, strlen (str)); ++ obstack_grow (&b, "%>", 2); ++ } ++ else ++ obstack_1grow (&b, t[0]); ++ ++ t++; ++ } ++ ++ obstack_1grow (&b, '\0'); ++ char *format = (char *) obstack_finish (&b); ++ ++ /* Construct a diagnostic message. */ ++ if (sev == A68_WARNING) ++ WARNING_COUNT (&A68_JOB)++; ++ else if (sev != A68_INFORM) ++ ERROR_COUNT (&A68_JOB)++; ++ ++ /* Emit the corresponding GCC diagnostic at the proper location. */ ++ location_t loc = UNKNOWN_LOCATION; ++ ++ if (p != NO_NODE) ++ loc = a68_get_node_location (p); ++ else if (line != NO_LINE) ++ { ++ if (pos == NO_TEXT) ++ pos = STRING (line); ++ loc = a68_get_line_location (line, pos); ++ } ++ ++ /* Prepare rich location and diagnostics. */ ++ rich_location rich_loc (line_table, loc); ++ diagnostic_info diagnostic; ++ diagnostic_t kind; ++ ++ switch (sev) ++ { ++ case A68_FATAL: ++ kind = DK_FATAL; ++ break; ++ case A68_INFORM: ++ kind = DK_NOTE; ++ break; ++ case A68_WARNING: ++ kind = DK_WARNING; ++ break; ++ case A68_SCAN_ERROR: ++ case A68_ERROR: ++ kind = DK_ERROR; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ diagnostic_set_info (&diagnostic, format, ++ &argp, ++ &rich_loc, kind); ++ if (opt != 0) ++ diagnostic.option_id = opt; ++ res = diagnostic_report_diagnostic (global_dc, &diagnostic); ++ ++ if (sev == A68_SCAN_ERROR) ++ exit (FATAL_EXIT_CODE); ++ return res; ++} ++ ++/* Give an intelligible error and exit. A line is provided rather than a ++ node so this can be used at scanning time. */ ++ ++void ++a68_scan_error (LINE_T * u, char *v, const char *txt, ...) ++{ ++ va_list args; ++ ++ va_start (args, txt); ++ diagnostic (A68_SCAN_ERROR, 0, NO_NODE, u, v, txt, args); ++ va_end (args); ++} ++ ++/* Report a compilation error. */ ++ ++void ++a68_error (NODE_T *p, const char *loc_str, ...) ++{ ++ va_list args; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_ERROR, 0, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++} ++ ++/* Report a compilation error in a node's pragmat. */ ++ ++void ++a68_error_in_pragmat (NODE_T *p, size_t off, ++ const char *loc_str, ...) ++{ ++ va_list args; ++ ++ LINE_T *line = NPRAGMAT_LINE (p); ++ char *pos = NPRAGMAT_CHAR_IN_LINE (p) + off; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_ERROR, 0, NO_NODE, line, pos, loc_str, args); ++ va_end (args); ++ a68_inform (p, "pragmat applies to this construct"); ++} ++ ++/* Report a compilation warning. ++ This function returns a boolean indicating whether a warning was ++ emitted. */ ++ ++bool ++a68_warning (NODE_T *p, int opt, ++ const char *loc_str, ...) ++{ ++ bool res; ++ va_list args; ++ ++ va_start (args, loc_str); ++ res = diagnostic (A68_WARNING, opt, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++ return res; ++} ++ ++/* Report a compilation note. */ ++ ++void ++a68_inform (NODE_T *p, const char *loc_str, ...) ++{ ++ va_list args; ++ ++ va_start (args, loc_str); ++ diagnostic (A68_INFORM, 0, p, NO_LINE, NO_TEXT, loc_str, args); ++ va_end (args); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-exports.cc +@@ -0,0 +1,598 @@ ++/* Exporting Algol 68 module interfaces. ++ Copyright (C) 2025 Jose E. Marchesi. ++ Copyright (C) 2010-2025 Free Software Foundation, Inc. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "target.h" ++#include "tm_p.h" ++#include "simple-object.h" ++#include "varasm.h" ++#include "intl.h" ++#include "output.h" /* for assemble_string */ ++#include "common/common-target.h" ++#include "dwarf2asm.h" ++ ++#include ++ ++#include "a68.h" ++ ++#ifndef TARGET_AIX_OS ++#define TARGET_AIX_OS 0 ++#endif ++ ++/* The size of the target's pointer type. */ ++#ifndef PTR_SIZE ++#define PTR_SIZE (POINTER_SIZE / BITS_PER_UNIT) ++#endif ++ ++/* Create a new module interface, initially with no modes and no ++ extracts. MODULE_NAME is the name of the module as it is accessed at the ++ source level, which corresponds to a bold word. */ ++ ++MOIF_T * ++a68_moif_new (const char *module_name) ++{ ++ MOIF_T *moif = ggc_cleared_alloc (); ++ ++ VERSION (moif) = GA68_EXPORTS_VERSION; ++ NAME (moif) = (module_name == NULL ? NULL : ggc_strdup (module_name)); ++ PRELUDE (moif) = NULL; ++ POSTLUDE (moif) = NULL; ++ vec_alloc (MODES (moif), 16); ++ vec_alloc (MODULES (moif), 16); ++ vec_alloc (IDENTIFIERS (moif), 16); ++ vec_alloc (INDICANTS (moif), 16); ++ vec_alloc (PRIOS (moif), 16); ++ vec_alloc (OPERATORS (moif), 16); ++ return moif; ++} ++ ++/* Add a new mode to a module interface. */ ++ ++static void ++a68_add_moid_to_moif (MOIF_T *moif, MOID_T *m) ++{ ++ if (! MODES(moif)->contains (m)) ++ vec_safe_push (MODES (moif), m); ++} ++ ++/* Add a new identifier extract to a module interface. */ ++ ++void ++a68_add_identifier_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = VARIABLE (tag); ++ EXTRACT_IN_PROC (e) = IN_PROC (tag); ++ ++ if (! IDENTIFIERS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (IDENTIFIERS (moif), e); ++ } ++} ++ ++/* Add a new mode indicant extract to a module interface. */ ++ ++static void ++a68_add_indicant_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Mode tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! INDICANTS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (INDICANTS (moif), e); ++ } ++} ++ ++/* Add a new module extract to a module interface. */ ++ ++static void ++a68_add_module_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Module tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! MODULES (moif)->contains (e)) ++ vec_safe_push (MODULES (moif), e); ++} ++ ++/* Add a new priority extract to a module interface. */ ++ ++static void ++a68_add_prio_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ /* Priority tags are not associated with declarations, so we have to do the ++ mangling here. */ ++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); ++ const char *tag_symbol = IDENTIFIER_POINTER (id); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = PRIO (tag); ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ ++ if (! PRIOS (moif)->contains (e)) ++ vec_safe_push (PRIOS (moif), e); ++} ++ ++/* Add a new operator extract to a module interface. */ ++ ++static void ++a68_add_operator_to_moif (MOIF_T *moif, TAG_T *tag) ++{ ++ EXTRACT_T *e = ggc_alloc (); ++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); ++ ++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; ++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); ++ EXTRACT_MODE (e) = MOID (tag); ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = EXTRACT_VARIABLE (tag); ++ /* There are no operatorvariable-declarations */ ++ gcc_assert (EXTRACT_VARIABLE (e) == false); ++ EXTRACT_IN_PROC (e) = IN_PROC (tag); ++ ++ if (! OPERATORS (moif)->contains (e)) ++ { ++ a68_add_moid_to_moif (moif, MOID (tag)); ++ vec_safe_push (OPERATORS (moif), e); ++ } ++} ++ ++/* Make the exports section the asm_out_file's new current section. */ ++ ++static void ++a68_switch_to_export_section (void) ++{ ++ static section *exports_sec; ++ ++ if (exports_sec == NULL) ++ { ++ gcc_assert (targetm_common.have_named_sections); ++#ifdef OBJECT_FORMAT_MACHO ++ exports_sec ++ = get_section (A68_EXPORT_SEGMENT_NAME "," A68_EXPORT_SECTION_NAME, ++ SECTION_DEBUG, NULL); ++#else ++ exports_sec = get_section (A68_EXPORT_SECTION_NAME, ++ TARGET_AIX_OS ? SECTION_EXCLUDE : SECTION_DEBUG, ++ NULL); ++#endif ++ } ++ ++ switch_to_section (exports_sec); ++} ++ ++/* Output a sized string. */ ++ ++static void ++a68_asm_output_string (const char *s, const char *comment) ++{ ++ dw2_asm_output_data (2, strlen (s) + 1, comment); ++ assemble_string (s, strlen (s) + 1); ++} ++ ++/* Output a mode to the exports section if it hasn't been emitted already. */ ++ ++static void ++a68_asm_output_mode (MOID_T *m, const char *module_label) ++{ ++ /* Do nothing if the mode has been already emitted and therefore there is ++ already a label to access it. */ ++ if (ASM_LABEL (m) != NULL) ++ return; ++ ++ /* Mode indicants are not emitted in the mode table, but as mode extracts in ++ the extracts table. Still we have to emit the named mode. */ ++ if (IS (m, INDICANT)) ++ m = MOID (NODE (m)); ++ ++ /* Collection of modes. */ ++ if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) ++ { ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ return; ++ } ++ ++ /* Ok we got a mode to output. */ ++ ++ /* First emit referred modes and sub-modes. Note how we have to create a ++ label for the mode and install it in the NODE_T in order to avoid infinite ++ recursion in case of ref-induced recursive mode definitions. */ ++ ++ static long int cnt; ++ static char label[100]; ++ ASM_GENERATE_INTERNAL_LABEL (label, "LM", cnt++); ++ ASM_LABEL (m) = ggc_strdup (label); ++ ++ if (IS_REF(m) || IS_FLEX (m)) ++ a68_asm_output_mode (SUB (m), module_label); ++ else if (m != M_STRING && IS_FLEXETY_ROW (m)) ++ a68_asm_output_mode (SUB (m), module_label); ++ else if (!IS_COMPLEX (m) && (IS_STRUCT (m) || IS_UNION (m))) ++ { ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ } ++ else if (IS (m, PROC_SYMBOL)) ++ { ++ a68_asm_output_mode (SUB (m), module_label); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ a68_asm_output_mode (MOID (p), module_label); ++ } ++ ++ /* No recursion below this point pls. */ ++ ++ /* Emit a label for this mode. */ ++ ASM_OUTPUT_LABEL (asm_out_file, ASM_LABEL (m)); ++ ++ /* Now emit assembly for the mode entry. */ ++ if (m == M_VOID) ++ dw2_asm_output_data (1, GA68_MODE_VOID, "void"); ++ else if (m == M_CHAR) ++ dw2_asm_output_data (1, GA68_MODE_CHAR, "char"); ++ else if (m == M_BOOL) ++ dw2_asm_output_data (1, GA68_MODE_BOOL, "bool"); ++ else if (m == M_STRING) ++ dw2_asm_output_data (1, GA68_MODE_STRING, "string"); ++ else if (IS_INTEGRAL (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_INT, "int"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_REAL (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_REAL, "real"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_BITS (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_BITS, "bits"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_BYTES (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_BYTES, "bytes"); ++ dw2_asm_output_data (1, DIM (m), "sizety"); ++ } ++ else if (IS_COMPLEX (m)) ++ { ++ /* Complex is a struct of two reals of the right sizety. */ ++ int dim = DIM (MOID (PACK (m))); ++ dw2_asm_output_data (1, GA68_MODE_CMPL, "compl"); ++ dw2_asm_output_data (1, dim, "sizety"); ++ } ++ else if (IS_REF (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_NAME, "ref"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "referred mode"); ++ } ++ else if (IS_FLEX (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_FLEX, "flex"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "flexible row mode"); ++ } ++ else if (IS_ROW (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_ROW, "row"); ++ dw2_asm_output_data (1, DIM (m), "dim"); ++ /* XXX for now emit zeroes as triplets. */ ++ for (int i = 0; i < DIM (m); ++i) ++ { ++ dw2_asm_output_data (PTR_SIZE, 0, "lb"); ++ dw2_asm_output_data (PTR_SIZE, 0, "ub"); ++ } ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "row of"); ++ } ++ else if (IS_STRUCT (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_STRUCT, "struct"); ++ dw2_asm_output_data (2, DIM (m), "nfields"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "field mode"); ++ if (TEXT (p) != NO_TEXT) ++ a68_asm_output_string (TEXT (p), "field name"); ++ else ++ a68_asm_output_string ("", "field name"); ++ } ++ } ++ else if (IS_UNION (m)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_UNION, "union"); ++ dw2_asm_output_data (2, DIM (m), "nmodes"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "united mode"); ++ } ++ else if (IS (m, PROC_SYMBOL)) ++ { ++ dw2_asm_output_data (1, GA68_MODE_PROC, "proc"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "ret mode"); ++ dw2_asm_output_data (1, DIM (m), "nargs"); ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "arg mode"); ++ if (TEXT (p) != NO_TEXT) ++ a68_asm_output_string (TEXT (p), "arg name"); ++ else ++ a68_asm_output_string ("", "arg name"); ++ } ++ } ++ else ++ dw2_asm_output_data (1, GA68_MODE_UNKNOWN, "unknown mode %s", ++ a68_moid_to_string (m, 80, NO_NODE, false)); ++} ++ ++/* Output an extract for a given tag to the extracts section. */ ++ ++static void ++a68_asm_output_extract (const char *module_label, int kind, ++ const char *symbol, MOID_T *mode, int prio, ++ bool variable, bool in_proc) ++{ ++ static char begin_label[100]; ++ static char end_label[100]; ++ static long int cnt; ++ ++ ASM_GENERATE_INTERNAL_LABEL (begin_label, "LEBL", cnt); ++ ASM_GENERATE_INTERNAL_LABEL (end_label, "LEEL", cnt); ++ cnt++; ++ ++ dw2_asm_output_delta (PTR_SIZE, end_label, begin_label, "extract size"); ++ ASM_OUTPUT_LABEL (asm_out_file, begin_label); ++ ++ bool encode_mdextra = false; ++ switch (kind) ++ { ++ case GA68_EXTRACT_MODU: ++ dw2_asm_output_data (1, GA68_EXTRACT_MODU, "module extract %s", symbol); ++ a68_asm_output_string (symbol, "module indication"); ++ break; ++ case GA68_EXTRACT_MODE: ++ dw2_asm_output_data (1, GA68_EXTRACT_MODE, "mode extract %s", symbol); ++ a68_asm_output_string (symbol, "mode indication"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ break; ++ case GA68_EXTRACT_IDEN: ++ dw2_asm_output_data (1, GA68_EXTRACT_IDEN, "identifier extract %s", symbol); ++ a68_asm_output_string (symbol, "name"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ encode_mdextra = true; ++ break; ++ case GA68_EXTRACT_PRIO: ++ dw2_asm_output_data (1, GA68_EXTRACT_PRIO, "prio extract %s", symbol); ++ a68_asm_output_string (symbol, "opname"); ++ dw2_asm_output_data (1, prio, "priority"); ++ break; ++ case GA68_EXTRACT_OPER: ++ dw2_asm_output_data (1, GA68_EXTRACT_OPER, "operator extract %s", symbol); ++ a68_asm_output_string (symbol, "opname"); ++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); ++ encode_mdextra = true; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ if (encode_mdextra) ++ { ++ dw2_asm_output_data (PTR_SIZE, 2, "mdextra size"); ++ dw2_asm_output_data (1, variable, "variable"); ++ dw2_asm_output_data (1, in_proc, "in_proc"); ++ } ++ else ++ dw2_asm_output_data (PTR_SIZE, 0, "mdextra size"); ++ ++ ASM_OUTPUT_LABEL (asm_out_file, end_label); ++} ++ ++/* Output a module interface. */ ++ ++static void ++a68_asm_output_moif (MOIF_T *moif) ++{ ++ a68_switch_to_export_section (); ++ ++ static char module_label[100]; ++ static long int moifcnt; ++ ASM_GENERATE_INTERNAL_LABEL (module_label, "LMOIF", moifcnt++); ++ ASM_OUTPUT_LABEL (asm_out_file, module_label); ++ ++ if (flag_debug_asm) ++ { ++ fputs (ASM_COMMENT_START " MODIF START ", asm_out_file); ++ fputs (NAME (moif), asm_out_file); ++ fputc ('\n', asm_out_file); ++ } ++ ++ dw2_asm_output_data (1, A68_EXPORT_MAGIC1, "magic1"); ++ dw2_asm_output_data (1, A68_EXPORT_MAGIC2, "magic2"); ++ dw2_asm_output_data (2, VERSION (moif), "exports version"); ++ a68_asm_output_string (NAME (moif), "module name"); ++ a68_asm_output_string (PRELUDE (moif) ? PRELUDE (moif) : "", "prelude symbol"); ++ a68_asm_output_string (POSTLUDE (moif) ? POSTLUDE (moif) : "", "postlude symbol"); ++ ++ /* Modes table. */ ++ static char modes_begin_label[100]; ++ static char modes_end_label[100]; ++ static long int modescnt; ++ ASM_GENERATE_INTERNAL_LABEL (modes_begin_label, "LMTL", modescnt++); ++ ASM_GENERATE_INTERNAL_LABEL (modes_end_label, "LMTL", modescnt++); ++ ++ if (flag_debug_asm) ++ fputs ("\t" ASM_COMMENT_START " modes table\n", asm_out_file); ++ dw2_asm_output_delta (PTR_SIZE, modes_end_label, modes_begin_label, ++ "modes size"); ++ ASM_OUTPUT_LABEL (asm_out_file, modes_begin_label); ++ for (MOID_T *m : MODES (moif)) ++ a68_asm_output_mode (m, module_label); ++ ASM_OUTPUT_LABEL (asm_out_file, modes_end_label); ++ ++ /* Extracts table. */ ++ static char extracts_begin_label[100]; ++ static char extracts_end_label[100]; ++ static long int extractscnt; ++ ASM_GENERATE_INTERNAL_LABEL (extracts_begin_label, "LETL", extractscnt++); ++ ASM_GENERATE_INTERNAL_LABEL (extracts_end_label, "LETL", extractscnt++); ++ ++ if (flag_debug_asm) ++ fputs ("\t" ASM_COMMENT_START " extracts table\n", asm_out_file); ++ dw2_asm_output_delta (PTR_SIZE, extracts_end_label, extracts_begin_label, ++ "extracts size"); ++ ASM_OUTPUT_LABEL (asm_out_file, extracts_begin_label); ++ for (EXTRACT_T *e : MODULES (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODU, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODE, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_IDEN, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : PRIOS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_PRIO, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ a68_asm_output_extract (module_label, GA68_EXTRACT_OPER, ++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), ++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); ++ ASM_OUTPUT_LABEL (asm_out_file, extracts_end_label); ++ ++ if (flag_debug_asm) ++ { ++ fputs (ASM_COMMENT_START " MODIF END ", asm_out_file); ++ fputs (NAME (moif), asm_out_file); ++ fputc ('\n', asm_out_file); ++ } ++} ++ ++/* Emit export information for the module definition in the parse tree P. */ ++ ++void ++a68_do_exports (NODE_T *p) ++{ ++ for (;p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ // XXX only do this if the defining module is to be ++ // exported. Accessed modules without PUB are not exported. */ ++ TAG_T *tag = a68_find_tag_global (TABLE (p), MODULE_SYMBOL, NSYMBOL (p)); ++ gcc_assert (tag != NO_TAG); ++ ++ if (EXPORTED (tag)) ++ { ++ tree module_id = a68_get_mangled_indicant (NSYMBOL (p)); ++ MOIF_T *moif = a68_moif_new (IDENTIFIER_POINTER (module_id)); ++ char *prelude = xasprintf ("%s__prelude", IDENTIFIER_POINTER (module_id)); ++ char *postlude = xasprintf ("%s__postlude", IDENTIFIER_POINTER (module_id)); ++ PRELUDE (moif) = ggc_strdup (prelude); ++ POSTLUDE (moif) = ggc_strdup (postlude); ++ free (prelude); ++ free (postlude); ++ ++ NODE_T *module_text = NEXT (NEXT (p)); ++ gcc_assert (IS (module_text, MODULE_TEXT)); ++ NODE_T *def_part = (IS (SUB (module_text), REVELATION_PART) ++ ? NEXT_SUB (module_text) ++ : SUB (module_text)); ++ gcc_assert (IS (def_part, DEF_PART)); ++ TABLE_T *table = TABLE (SUB (def_part)); ++ gcc_assert (PUBLIC_RANGE (table)); ++ ++ for (TAG_T *t = MODULES (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_module_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = INDICANTS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_indicant_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = IDENTIFIERS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_identifier_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = PRIO (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_prio_to_moif (moif, t); ++ } ++ ++ for (TAG_T *t = OPERATORS (table); t != NO_TAG; FORWARD (t)) ++ { ++ if (PUBLICIZED (t)) ++ a68_add_operator_to_moif (moif, t); ++ } ++ ++ a68_asm_output_moif (moif); ++ if (flag_a68_dump_moif) ++ a68_dump_moif (moif); ++ } ++ } ++ else ++ a68_do_exports (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-imports.cc +@@ -0,0 +1,1263 @@ ++/* Importing Algol 68 module interfaces. ++ Copyright (C) 2025 Jose E. Marchesi. ++ Copyright (C) 2010-2025 Free Software Foundation, Inc. ++ ++ Written by Jose E. Marchesi. ++ ++ The following utility functions have been adapted from the Go front-end: ++ ++ a68_open_packet ++ a68_try_packet_in_directory ++ a68_try_suffixes ++ a68_find_export_data ++ a68_find_object_export_data ++ a68_read_export_data ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "target.h" ++#include "tm_p.h" ++#include "simple-object.h" ++#include "varasm.h" ++#include "intl.h" ++#include "common/common-target.h" ++#include "dwarf2asm.h" ++ ++#include ++ ++#include "a68.h" ++ ++/* Read exports from an object file. ++ ++ FD is a file descriptor open for reading. ++ ++ OFFSET is the offset within the file where the object file starts; this will ++ be 0 except when reading an archive. ++ ++ On success this returns NULL and sets *PBUF to a buffer allocated using ++ malloc, of size *PLEN, holding the export data. ++ ++ If the data is not found this returns NULL and sets *PBUF to NULL and *PLEN ++ to 0. ++ ++ If some error occurs, this returns an error message and sets *PERR to an ++ errno value or 0 if there is no relevant errno. */ ++ ++static const char * ++a68_read_export_data (int fd, uint64_t offset, char **pbuf, size_t *plen, ++ int *perr) ++{ ++ simple_object_read *sobj; ++ const char *errmsg; ++ off_t sec_offset; ++ off_t sec_length; ++ int found; ++ char *buf; ++ ssize_t c; ++ ++ *pbuf = NULL; ++ *plen = 0; ++ ++ sobj = simple_object_start_read (fd, offset, A68_EXPORT_SEGMENT_NAME, ++ &errmsg, perr); ++ if (sobj == NULL) ++ { ++ /* If we get an error here, just pretend that we didn't find any ++ export data. This is the right thing to do if the error is ++ that the file was not recognized as an object file. This ++ will ignore file I/O errors, but it's not too big a deal ++ because we will wind up giving some other error later. */ ++ return NULL; ++ } ++ ++ found = simple_object_find_section (sobj, A68_EXPORT_SECTION_NAME, ++ &sec_offset, &sec_length, ++ &errmsg, perr); ++ simple_object_release_read (sobj); ++ if (!found) ++ return errmsg; ++ ++ if (lseek (fd, offset + sec_offset, SEEK_SET) < 0) ++ { ++ *perr = errno; ++ return _("lseek failed while reading export data"); ++ } ++ ++ buf = XNEWVEC (char, sec_length); ++ if (buf == NULL) ++ { ++ *perr = errno; ++ return _("memory allocation failed while reading export data"); ++ } ++ ++ c = read (fd, buf, sec_length); ++ if (c < 0) ++ { ++ *perr = errno; ++ free (buf); ++ return _("read failed while reading export data"); ++ } ++ ++ if (c < sec_length) ++ { ++ free (buf); ++ return _("short read while reading export data"); ++ } ++ ++ *pbuf = buf; ++ *plen = sec_length; ++ return NULL; ++} ++ ++/* Look for export data in an object file. */ ++ ++static char * ++a68_find_object_export_data (const std::string& filename, ++ int fd, uint64_t offset, size_t *psize) ++{ ++ char *buf; ++ size_t len; ++ int err; ++ ++ const char *errmsg = a68_read_export_data (fd, offset, &buf, &len, &err); ++ if (errmsg != NULL) ++ { ++ if (err == 0) ++ a68_error (NO_NODE, "Z: Z", filename.c_str (), errmsg); ++ else ++ a68_error (NO_NODE, "Z: Z: Z", filename.c_str(), errmsg, ++ xstrerror(err)); ++ return NULL; ++ } ++ ++ *psize = len; ++ return buf; ++} ++ ++/* Look for export data in the file descriptor FD. */ ++ ++static char * ++a68_find_export_data (const std::string &filename, int fd, size_t *psize) ++{ ++ /* See if we can read this as an object file. */ ++ char *exports = a68_find_object_export_data (filename, fd, 0, psize); ++ if (exports != NULL) ++ return exports; ++ ++ if (lseek (fd, 0, SEEK_SET) < 0) ++ { ++ a68_error (NO_NODE, "lseek Z failed", filename.c_str ()); ++ return NULL; ++ } ++ ++ char buf[A68_EXPORT_MAGIC_LEN]; ++ ssize_t c = ::read(fd, buf, A68_EXPORT_MAGIC_LEN); ++ if (c < A68_EXPORT_MAGIC_LEN) ++ return NULL; ++ ++ /* Check for a file containing nothing but Algol 68 export data. */ ++ if (buf[0] == '\x0a' && buf[1] == '\xad') ++ { ++ /* XXX read whole file. */ ++ return exports; ++ } ++ ++#if 0 ++ /* See if we can read this as an archive. */ ++ if (Import::is_archive_magic(buf)) ++ return Import::find_archive_export_data(filename, fd, location); ++#endif ++ ++ return NULL; ++ ++} ++ ++/* Given *PFILENAME, where *PFILENAME does not exist, try various suffixes. If ++ we find one, set *FILENAME to the one we found. Return the open file ++ descriptor. */ ++ ++static int ++a68_try_suffixes (std::string *pfilename) ++{ ++ std::string filename = *pfilename + ".m68"; ++ int fd = open (filename.c_str(), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ const char* basename = lbasename (pfilename->c_str()); ++ size_t basename_pos = basename - pfilename->c_str (); ++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".so"; ++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".a"; ++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ filename = *pfilename + ".o"; ++ fd = open (filename.c_str(), O_RDONLY | O_BINARY); ++ if (fd >= 0) ++ { ++ *pfilename = filename; ++ return fd; ++ } ++ ++ return -1; ++} ++ ++/* Try to find the export data for FILENAME. */ ++ ++static char * ++a68_try_packet_in_directory (const std::string &filename, size_t *psize) ++{ ++ std::string found_filename = filename; ++ int fd = open (found_filename.c_str(), O_RDONLY | O_BINARY); ++ ++ if (fd >= 0) ++ { ++ struct stat s; ++ if (fstat (fd, &s) >= 0 && S_ISDIR (s.st_mode)) ++ { ++ close (fd); ++ fd = -1; ++ errno = EISDIR; ++ } ++ } ++ ++ if (fd < 0) ++ { ++ if (errno != ENOENT && errno != EISDIR) ++ a68_warning (NO_NODE, 0, "cannot open file Z for imports", ++ filename.c_str ()); ++ ++ fd = a68_try_suffixes (&found_filename); ++ if (fd < 0) ++ return NULL; ++ } ++ ++ /* The export data may not be in this file. */ ++ char *exports = a68_find_export_data (found_filename, fd, psize); ++ if (exports != NULL) ++ return exports; ++ ++ close (fd); ++ ++ a68_error (NO_NODE, "file Z exists but does not contain any export data", ++ found_filename.c_str ()); ++ ++ return NULL; ++} ++ ++/* Find import data in FILENAME. ++ ++ This searches the file system for FILENAME, reads exports information from ++ it, and returns a pointer to the beginning of an allocated buffer with the ++ exports data, its size in *psize. It is up to the caller of this function ++ to release the buffer when it is no longer necessary. If the file is not ++ found, this function returns NULL. ++ ++ When FILENAME is not an absolute path and does not start with ./ or ../, we ++ use the search path provided by -I and -L options. ++ ++ When FILENAME does start with ./ or ../, we use RELATIVE_IMPORT_PATH as a ++ prefix. ++ ++ When FILENAME does not exist, we try modifying FILENAME to find the file. ++ We use the first of these which exists: ++ ++ - We append ".m68". ++ - We turn the base of FILENAME info libFILENAME.so. ++ - We turn the base of FILENAME into libFILENAME.a. ++ - We append ".o". ++ ++ When using a search path, we apply each of these transformations at each ++ entry on the search path before moving on to the next entry. If the file ++ exists, but does not contain Algol 68 export data, we stop; we do not keep ++ looking for another file with the same name later in the search path. */ ++ ++static char * ++a68_get_packet_exports (const std::string &filename, ++ const std::string &relative_import_path, ++ size_t *psize) ++{ ++ char *exports; ++ ++ bool is_local; ++ if (IS_ABSOLUTE_PATH (filename)) ++ is_local = true; ++ else if (filename[0] == '.' ++ && (filename[1] == '\0' || IS_DIR_SEPARATOR (filename[1]))) ++ is_local = true; ++ else if (filename[0] == '.' ++ && filename[1] == '.' ++ && (filename[2] == '\0' || IS_DIR_SEPARATOR (filename[2]))) ++ is_local = true; ++ else ++ is_local = false; ++ ++ std::string fn = filename; ++ if (is_local && !IS_ABSOLUTE_PATH (filename) ++ && !relative_import_path.empty ()) ++ { ++ if (fn == ".") ++ /* A special case. */ ++ fn = relative_import_path; ++ else if (fn[0] == '.' && fn[1] == '.' ++ && (fn[2] == '\0' || IS_DIR_SEPARATOR (fn[2]))) ++ { ++ /* We are going to join relative_import_path and fn, and it will look ++ like DIR/../PATH. BUt DIR does not necessarily exist in this ++ case, and if it doesn't the use of .. will fail although it ++ shouldn't. */ ++ size_t index; ++ for (index = relative_import_path.length () - 1; ++ index > 0 && !IS_DIR_SEPARATOR (relative_import_path[index]); ++ index--) ++ ; ++ if (index > 0) ++ fn = relative_import_path.substr (0, index) + fn.substr (2); ++ else ++ fn = relative_import_path + '/' + fn; ++ } ++ else ++ fn = relative_import_path + '/' + fn; ++ is_local = false; ++ } ++ ++ if (!is_local) ++ { ++ for (std::string path : A68_IMPORT_PATHS) ++ { ++ if (path.empty () && path[path.size () - 1] != '/') ++ path += '/'; ++ path += fn; ++ exports = a68_try_packet_in_directory (path, psize); ++ if (exports != NULL) ++ return exports; ++ } ++ } ++ ++ return a68_try_packet_in_directory (fn, psize); ++} ++ ++/* The size of the target's pointer type, in bytes. */ ++#ifndef PTR_SIZE ++#define PTR_SIZE ((int)(POINTER_SIZE / BITS_PER_UNIT)) ++#endif ++ ++/* Collection of decoding helper macros, to be exclusively used in the ++ a68_decode_* functions below. */ ++ ++#define DINT8(V) \ ++ do \ ++ { \ ++ if (pos + 1 > size) \ ++ goto decode_error; \ ++ (V) = (int8_t)data[pos++]; \ ++ } \ ++ while (0) ++ ++#define DUINT8(V) \ ++ do \ ++ { \ ++ if (pos + 1 > size) \ ++ goto decode_error; \ ++ (V) = (uint8_t)data[pos++]; \ ++ } \ ++ while (0) ++ ++#define DUINT16(V) \ ++ do \ ++ { \ ++ if (pos + 2 > size) \ ++ goto decode_error; \ ++ if (BYTES_BIG_ENDIAN) \ ++ (V) = ((uint8_t) data[pos] << 8) | (uint8_t) data[pos + 1]; \ ++ else \ ++ (V) = ((uint8_t) data[pos + 1] << 8) | (uint8_t) data[pos]; \ ++ pos += 2; \ ++ } \ ++ while (0) ++ ++#define DOFFSET(V) \ ++ do \ ++ { \ ++ if (pos + PTR_SIZE > size) \ ++ goto decode_error; \ ++ (V) = 0; \ ++ uint64_t ptr_bit_size = 8 * PTR_SIZE; \ ++ if (BYTES_BIG_ENDIAN) \ ++ { \ ++ for (int i = 0; i < PTR_SIZE; i++) \ ++ (V) = ((V) | ((uint8_t) data[pos + i] << (ptr_bit_size - (i * 8)))); \ ++ } \ ++ else \ ++ { \ ++ for (int i = 0; i < PTR_SIZE; i++) \ ++ (V) = ((V) | ((uint8_t) data[pos + i] << (i * 8))); \ ++ } \ ++ pos += PTR_SIZE; \ ++ } \ ++ while (0) ++ ++#define DSTR(V) \ ++ do \ ++ { \ ++ uint16_t len; \ ++ char *str = NULL; \ ++ DUINT16 (len); \ ++ if (pos + len > size) \ ++ goto decode_error; \ ++ if (len > 0) \ ++ { \ ++ str = (char *) xmalloc (len); \ ++ memcpy (str, data + pos, len); \ ++ pos += len; \ ++ } \ ++ (V) = str; \ ++ } \ ++ while (0) ++ ++/* Types to denote encoded modes. */ ++ ++struct encoded_triplet ++{ ++ uint64_t lb; ++ uint64_t ub; ++}; ++ ++struct encoded_field ++{ ++ uint64_t mode_offset; ++ char *name; ++}; ++ ++struct encoded_arg ++{ ++ uint64_t arg_mode_offset; ++ char *arg_name; ++}; ++ ++struct encoded_mode ++{ ++ MOID_T *moid; ++ uint64_t offset; ++ uint8_t kind; ++ int8_t sizety; ++ union ++ { ++ struct ++ { ++ uint64_t sub_offset; ++ } name; ++ ++ struct ++ { ++ uint8_t sub_offset; ++ } flex; ++ ++ struct ++ { ++ uint8_t ndims; ++ struct encoded_triplet *triplets; ++ uint64_t sub_offset; ++ } row; ++ ++ struct ++ { ++ uint16_t nfields; ++ struct encoded_field *fields; ++ } sct; ++ ++ struct ++ { ++ uint8_t nmodes; ++ uint64_t *modes; ++ } union_; ++ ++ struct ++ { ++ uint64_t ret_mode_offset; ++ uint8_t nargs; ++ struct encoded_arg *args; ++ } proc; ++ ++ } data; ++}; ++ ++/* Free the memory used by an encoded mode. */ ++ ++static void ++encoded_mode_free (struct encoded_mode *em) ++{ ++ switch (em->kind) ++ { ++ case GA68_MODE_ROW: ++ free (em->data.row.triplets); ++ break; ++ case GA68_MODE_STRUCT: ++ /* Note that the field names are installed in moids in ++ encoded_mode_to_moid, so we shoud not free them. */ ++ free (em->data.sct.fields); ++ break; ++ case GA68_MODE_UNION: ++ free (em->data.union_.modes); ++ break; ++ case GA68_MODE_PROC: ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ free (em->data.proc.args[i].arg_name); ++ free (em->data.proc.args); ++ break; ++ default: ++ break; ++ } ++ free (em); ++} ++ ++/* A collection of encoded modes indexed by offsets. */ ++ ++#define NO_OFFSET ((uint64_t) -1) ++ ++typedef hash_map, ++ struct encoded_mode *> encoded_modes_map_t; ++ ++/* Complete a encoded mode. */ ++ ++static MOID_T * ++complete_encoded_mode (encoded_modes_map_t &encoded_modes, uint64_t offset) ++{ ++ struct encoded_mode *em = *(encoded_modes.get (offset)); ++ MOID_T *sub; ++ PACK_T *pack; ++ ++ if (em->moid != NO_MOID) ++ return em->moid; ++ ++ switch (em->kind) ++ { ++ case GA68_MODE_VOID: em->moid = M_VOID; break; ++ case GA68_MODE_CHAR: em->moid = M_CHAR; break; ++ case GA68_MODE_BOOL: em->moid = M_BOOL; break; ++ case GA68_MODE_STRING: em->moid = M_FLEX_ROW_CHAR; break; ++ case GA68_MODE_INT: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_INT; break; ++ case 1: em->moid = M_LONG_INT; break; ++ case 2: em->moid = M_LONG_LONG_INT; break; ++ case -1: em->moid = M_SHORT_INT; break; ++ case -2: em->moid = M_SHORT_SHORT_INT; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_BITS: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_BITS; break; ++ case 1: em->moid = M_LONG_BITS; break; ++ case 2: em->moid = M_LONG_LONG_BITS; break; ++ case -1: em->moid = M_SHORT_BITS; break; ++ case -2: em->moid = M_SHORT_SHORT_BITS; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_BYTES: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_BYTES; break; ++ case 1: em->moid = M_LONG_BYTES; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_REAL: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_REAL; break; ++ case 1: em->moid = M_LONG_REAL; break; ++ case 2: em->moid = M_LONG_LONG_REAL; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_CMPL: ++ switch (em->sizety) ++ { ++ case 0: em->moid = M_COMPLEX; break; ++ case 1: em->moid = M_LONG_COMPLEX; break; ++ case 2: em->moid = M_LONG_LONG_COMPLEX; break; ++ default: ++ gcc_unreachable (); ++ } ++ break; ++ case GA68_MODE_NAME: ++ case GA68_MODE_FLEX: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (em->kind == GA68_MODE_NAME ? REF_SYMBOL : FLEX_SYMBOL, ++ 0, NO_NODE, M_ERROR, NO_PACK); ++ sub = complete_encoded_mode (encoded_modes, em->data.name.sub_offset); ++ if (sub == NO_MOID) ++ { ++ /* Free em->moid */ ++ return NO_MOID; ++ } ++ SUB (em->moid) = sub; ++ break; ++ case GA68_MODE_ROW: ++ /* XXX how to convey actual bounds. */ ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (ROW_SYMBOL, 0, NO_NODE, M_ERROR, NO_PACK); ++ sub = complete_encoded_mode (encoded_modes, em->data.row.sub_offset); ++ if (sub == NO_MOID) ++ { ++ /* Free em->moid */ ++ return NO_MOID; ++ } ++ SUB (em->moid) = sub; ++ DIM (em->moid) = em->data.row.ndims; ++ break; ++ case GA68_MODE_STRUCT: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (STRUCT_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) ++ { ++ /* Note we have to do this from last field to first field, because ++ a68_add_mode_to_pack prepends to the list. */ ++ uint16_t index = em->data.sct.nfields - 1 - i; ++ char *field_name = em->data.sct.fields[index].name; ++ MOID_T *field_moid = complete_encoded_mode (encoded_modes, ++ em->data.sct.fields[index].mode_offset); ++ if (field_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, field_moid, field_name, NO_NODE); ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ case GA68_MODE_UNION: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (UNION_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) ++ { ++ /* Union alternatives are internally stored in reverse order in the ++ pack. */ ++ uint16_t index = i; ++ MOID_T *united_moid = complete_encoded_mode (encoded_modes, ++ em->data.union_.modes[index]); ++ if (united_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, united_moid, NO_TEXT, NO_NODE); ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ case GA68_MODE_PROC: ++ /* For recursive declarations. */ ++ em->moid = a68_create_mode (PROC_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ pack = NO_PACK; ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ { ++ /* Note we have to do this from last argument mode to first argument ++ mode, because a68_add_mode_to_pack prepends to the list. */ ++ uint16_t index = em->data.proc.nargs - 1 - i; ++ char *arg_name = em->data.proc.args[index].arg_name; ++ MOID_T *arg_moid = complete_encoded_mode (encoded_modes, ++ em->data.proc.args[index].arg_mode_offset); ++ if (arg_moid == NO_MOID) ++ { ++ /* XXX free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ (void) a68_add_mode_to_pack (&pack, arg_moid, arg_name, NO_NODE); ++ } ++ SUB (em->moid) = complete_encoded_mode (encoded_modes, ++ em->data.proc.ret_mode_offset); ++ if (SUB (em->moid) == NO_MOID) ++ { ++ /* Free em->moid */ ++ em->moid = NO_MOID; ++ return NO_MOID; ++ } ++ DIM (em->moid) = a68_count_pack_members (pack); ++ PACK (em->moid) = pack; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ return em->moid; ++} ++ ++/* Dump the contents of an encoded_mode, for debugging purposes. */ ++ ++ATTRIBUTE_UNUSED static void ++dump_encoded_mode (struct encoded_mode *em) ++{ ++ printf ("[%" PRIu64 "] kind: %" PRIu8, em->offset, em->kind); ++ switch (em->kind) ++ { ++ case GA68_MODE_VOID: ++ printf (" void\n"); ++ break; ++ case GA68_MODE_CHAR: ++ printf (" char\n"); ++ break; ++ case GA68_MODE_BOOL: ++ printf (" bool\n"); ++ break; ++ case GA68_MODE_STRING: ++ printf (" basic\n"); ++ break; ++ case GA68_MODE_NAME: ++ printf (" name\n"); ++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); ++ break; ++ case GA68_MODE_STRUCT: ++ printf (" struct\n"); ++ printf (" nfields: %" PRIu16 "\n", em->data.sct.nfields); ++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) ++ printf (" %s : [%" PRIu64 "]\n", ++ em->data.sct.fields[i].name, em->data.sct.fields[i].mode_offset); ++ break; ++ case GA68_MODE_FLEX: ++ printf (" flex\n"); ++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); ++ break; ++ case GA68_MODE_UNION: ++ printf (" union\n"); ++ printf (" nmodes: %" PRIu8 "\n", em->data.union_.nmodes); ++ printf (" "); ++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) ++ printf (" [%" PRIu64 "]", em->data.union_.modes[i]); ++ printf ("\n"); ++ break; ++ case GA68_MODE_PROC: ++ printf (" proc\n"); ++ printf (" retmode: [%" PRIu64 "]\n", em->data.proc.ret_mode_offset); ++ printf (" nargs: %" PRIu8 "\n", em->data.proc.nargs); ++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) ++ printf (" %s : [%" PRIu64 "]\n", ++ em->data.proc.args[i].arg_name, ++ em->data.proc.args[i].arg_mode_offset); ++ break; ++ case GA68_MODE_ROW: ++ printf (" row\n"); ++ printf (" ndims: %" PRIu8 "\n", em->data.row.ndims); ++ for (uint8_t i = 0; i < em->data.row.ndims; i++) ++ { ++ printf (" lb: %" PRIu64 "\n", em->data.row.triplets[i].lb); ++ printf (" ub: %" PRIu64 "\n", em->data.row.triplets[i].ub); ++ } ++ printf (" sub: [%" PRIu64 "]\n", em->data.row.sub_offset); ++ break; ++ default: ++ break; ++ } ++} ++ ++/* Substitute any reference to mode M in T to R. */ ++ ++static void ++a68_replace_submode (MOID_T *t, MOID_T *m, MOID_T *r) ++{ ++ if (SUB (t) == m) ++ SUB (t) = r; ++ ++ for (PACK_T *p = PACK (t); p != NO_PACK; FORWARD (p)) ++ { ++ if (MOID (p) == m) ++ MOID (p) = r; ++ } ++} ++ ++/* Substitute mode M with mode R in all modes in MODES_LIST. ++ The entry for M in MODES_LIST is set to NO_MOID. */ ++ ++static void ++a68_replace_equivalent_mode (vec *mode_list, ++ MOID_T *m, MOID_T *r) ++{ ++ for (size_t i = 0; i < mode_list->length (); ++i) ++ { ++ if ((*mode_list)[i] == m) ++ (*mode_list)[i] = NO_MOID; ++ else if ((*mode_list)[i] != NO_MOID) ++ a68_replace_submode ((*mode_list)[i], m, r); ++ } ++} ++ ++/* Decode a modes table at DATA + POS. */ ++ ++static bool ++a68_decode_modes (MOIF_T *moif, encoded_modes_map_t &encoded_modes, ++ const char *data, size_t size, size_t pos, ++ size_t *ppos, const char **errstr) ++{ ++ bool siga; ++ uint8_t kind; ++ uint64_t mode_table_size, mode_table_end; ++ ++ /* Get the size of the modes table. */ ++ DOFFSET (mode_table_size); ++ mode_table_end = pos + mode_table_size; ++ ++ /* Decode all the mode entries and fill in encoded_modes. */ ++ while (pos < mode_table_end) ++ { ++ int8_t sizety; ++ uint8_t ndims, nmodes, nargs; ++ uint16_t nfields; ++ uint64_t mode_offset = pos; ++ uint64_t sub, ret_mode_offset; ++ struct encoded_mode *encoded_mode; ++ ++ DUINT8 (kind); ++ encoded_mode = (struct encoded_mode *) xmalloc (sizeof (struct encoded_mode)); ++ encoded_mode->moid = NO_MOID; ++ encoded_mode->offset = mode_offset; ++ encoded_mode->kind = kind; ++ encoded_mode->sizety = 0; ++ switch (kind) ++ { ++ case GA68_MODE_VOID: ++ case GA68_MODE_CHAR: ++ case GA68_MODE_BOOL: ++ case GA68_MODE_STRING: ++ break; ++ case GA68_MODE_INT: ++ case GA68_MODE_REAL: ++ case GA68_MODE_BITS: ++ case GA68_MODE_BYTES: ++ case GA68_MODE_CMPL: ++ DINT8 (sizety); ++ encoded_mode->sizety = sizety; ++ break; ++ case GA68_MODE_NAME: ++ DOFFSET (sub); ++ encoded_mode->data.name.sub_offset = sub; ++ break; ++ case GA68_MODE_FLEX: ++ DOFFSET (sub); ++ encoded_mode->data.flex.sub_offset = sub; ++ break; ++ case GA68_MODE_ROW: ++ DUINT8 (ndims); ++ encoded_mode->data.row.triplets ++ = (struct encoded_triplet *) xmalloc (sizeof (struct encoded_triplet) * ndims); ++ for (uint8_t i = 0; i < ndims; i++) ++ { ++ uint64_t lb, ub; ++ DOFFSET (lb); ++ DOFFSET (ub); ++ encoded_mode->data.row.triplets[i].lb = lb; ++ encoded_mode->data.row.triplets[i].ub = ub; ++ } ++ DOFFSET (sub); ++ encoded_mode->data.row.ndims = ndims; ++ encoded_mode->data.row.sub_offset = sub; ++ break; ++ case GA68_MODE_UNION: ++ DUINT16 (nmodes); ++ encoded_mode->data.union_.nmodes = nmodes; ++ encoded_mode->data.union_.modes ++ = (uint64_t *) xmalloc (sizeof (uint64_t) * nmodes); ++ for (uint8_t i = 0; i < nmodes; i++) ++ { ++ uint64_t mode; ++ DOFFSET (mode); ++ encoded_mode->data.union_.modes[i] = mode; ++ } ++ break; ++ case GA68_MODE_PROC: ++ DOFFSET (ret_mode_offset); ++ DUINT8 (nargs); ++ encoded_mode->data.proc.ret_mode_offset = ret_mode_offset; ++ encoded_mode->data.proc.nargs = nargs; ++ encoded_mode->data.proc.args ++ = (struct encoded_arg *) xmalloc (sizeof (struct encoded_arg) * nargs); ++ for (uint8_t i = 0; i < nargs; i++) ++ { ++ uint64_t arg_mode_offset; ++ char *arg_name; ++ DOFFSET (arg_mode_offset); ++ DSTR (arg_name); ++ encoded_mode->data.proc.args[i].arg_mode_offset = arg_mode_offset; ++ encoded_mode->data.proc.args[i].arg_name = arg_name; ++ } ++ break; ++ case GA68_MODE_STRUCT: ++ DUINT16 (nfields); ++ encoded_mode->data.sct.nfields = nfields; ++ encoded_mode->data.sct.fields ++ = (struct encoded_field *) xmalloc (sizeof (struct encoded_field) * nfields); ++ for (uint16_t i = 0; i < nfields; i++) ++ { ++ uint64_t mode_offset; ++ char *field_name; ++ DOFFSET (mode_offset); ++ DSTR (field_name); ++ encoded_mode->data.sct.fields[i].mode_offset = mode_offset; ++ encoded_mode->data.sct.fields[i].name = field_name; ++ } ++ break; ++ case GA68_MODE_UNKNOWN: ++ default: ++ *errstr = "invalid kind in mode"; ++ goto decode_error; ++ break; ++ } ++ ++ encoded_modes.put (mode_offset, encoded_mode); ++ } ++ ++ /* Sanity check. */ ++ if (pos != mode_table_end) ++ { ++ *errstr = "invalid mode table size"; ++ goto decode_error; ++ } ++ ++ /* Complete all encoded modes. ++ This operation must conform a transitive closure. */ ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ for (auto entry : encoded_modes) ++ { ++ uint64_t offset = entry.first; ++ struct encoded_mode *em = entry.second; ++ ++ if (em->moid == NO_MOID ++ && complete_encoded_mode (encoded_modes, offset) != NO_MOID) ++ siga = true; ++ } ++ } ++ ++ /* At this point all the encoded modes are complete and they are all ++ associated with moids. Put them in the moif. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ vec_safe_push (MODES (moif), em->moid); ++ } ++ ++ /* Next step is to see if equivalent modes the any of the modes in the moif ++ DIM already exist in the compiler's mode list. In that case, replace the ++ DIM moif's mode with the existing mode anywhere in the moif. */ ++ for (MOID_T *m : MODES (moif)) ++ { ++ MOID_T *r = a68_search_equivalent_mode (m); ++ if (r != NO_MOID) ++ { ++ a68_replace_equivalent_mode (MODES (moif), m, r); ++ ++ /* Update encoded_modes to reflect the replacement. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ if (em->moid == m) ++ em->moid = r; ++ } ++ } ++ } ++ ++ *errstr = NULL; ++ *ppos = pos; ++ return true; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "error decoding mode"; ++ return false; ++} ++ ++/* Decode an extracts table at DATA + POS. */ ++ ++static bool ++a68_decode_extracts (MOIF_T *moif, encoded_modes_map_t &encoded_modes, ++ const char *data, size_t size, size_t pos, ++ size_t *ppos, const char **errstr) ++{ ++ uint64_t extracts_table_size, extracts_table_end; ++ ++ /* Get the size of the extracts table. */ ++ DOFFSET (extracts_table_size); ++ extracts_table_end = pos + extracts_table_size; ++ ++ /* Decode all the extracts entries, adding them to MOIF as we go. */ ++ while (pos < extracts_table_end) ++ { ++ uint8_t marker, prio, variable, in_proc; ++ uint64_t extract_size, extract_end, mode_offset; ++ uint64_t mdextra_size; ++ char *name; ++ ++ EXTRACT_T *e = (EXTRACT_T *) ggc_cleared_alloc (); ++ ++ DOFFSET (extract_size); ++ extract_end = pos + extract_size; ++ ++ DUINT8 (marker); ++ switch (marker) ++ { ++ case GA68_EXTRACT_MODU: ++ DSTR (name); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in module extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (MODULES (moif), e); ++ break; ++ case GA68_EXTRACT_IDEN: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 2) ++ { ++ *errstr = "mdextra size should be 2 in iden extract"; ++ goto decode_error; ++ } ++ DUINT8 (variable); ++ DUINT8 (in_proc); ++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = variable; ++ EXTRACT_IN_PROC (e) = in_proc; ++ vec_safe_push (IDENTIFIERS (moif), e); ++ break; ++ case GA68_EXTRACT_MODE: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in indicant extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (INDICANTS (moif), e); ++ break; ++ case GA68_EXTRACT_PRIO: ++ DSTR (name); ++ DUINT8 (prio); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 0) ++ { ++ *errstr = "non-empty mdextra in prio extract"; ++ goto decode_error; ++ } ++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = NO_MOID; ++ EXTRACT_PRIO (e) = prio; ++ EXTRACT_VARIABLE (e) = false; ++ EXTRACT_IN_PROC (e) = false; ++ vec_safe_push (PRIOS (moif), e); ++ break; ++ case GA68_EXTRACT_OPER: ++ DSTR (name); ++ DOFFSET (mode_offset); ++ DOFFSET (mdextra_size); ++ if (mdextra_size != 2) ++ { ++ *errstr = "mdextra size should be 2 in oper extract"; ++ goto decode_error; ++ } ++ DUINT8 (variable); ++ DUINT8 (in_proc); ++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; ++ EXTRACT_SYMBOL (e) = ggc_strdup (name); ++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; ++ EXTRACT_PRIO (e) = 0; ++ EXTRACT_VARIABLE (e) = variable; ++ EXTRACT_IN_PROC (e) = in_proc; ++ vec_safe_push (OPERATORS (moif), e); ++ break; ++ default: ++ *errstr = "invalid marker in extract"; ++ goto decode_error; ++ break; ++ } ++ ++ /* Sanity check. */ ++ if (pos != extract_end) ++ { ++ *errstr = "invalid extract size"; ++ goto decode_error; ++ } ++ } ++ ++ /* Sanity check. */ ++ if (pos != extracts_table_end) ++ { ++ *errstr = "invalid extracts table size"; ++ goto decode_error; ++ } ++ ++ *errstr = NULL; ++ *ppos = pos; ++ return true; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "error decoding extract"; ++ return false; ++} ++ ++/* Decode the given exports data into a moif. If there is a decoding error ++ then put an explicative mssage in *ERRSTR and return NULL. */ ++ ++static MOIF_T * ++a68_decode_moif (const char *data, size_t size, const char **errstr) ++{ ++ size_t pos = 0; ++ MOIF_T *moif = a68_moif_new (NULL /* name */); ++ encoded_modes_map_t encoded_modes (16); ++ ++ uint8_t magic1, magic2; ++ uint16_t version; ++ char *name, *prelude, *postlude; ++ ++ DUINT8 (magic1); ++ DUINT8 (magic2); ++ if (magic1 != A68_EXPORT_MAGIC1 || magic2 != A68_EXPORT_MAGIC2) ++ { ++ *errstr = "invalid magic number"; ++ goto decode_error; ++ } ++ ++ DUINT16 (version); ++ if (version != 1) ++ { ++ *errstr = "invalid a68 exports version"; ++ goto decode_error; ++ } ++ ++ DSTR (name); ++ DSTR (prelude); ++ DSTR (postlude); ++ NAME (moif) = name; ++ PRELUDE (moif) = prelude; ++ POSTLUDE (moif) = postlude; ++ ++ /* Decode the modes table. ++ This installs the resulting moids in MOIF. */ ++ if (!a68_decode_modes (moif, encoded_modes, data, size, pos, &pos, errstr)) ++ goto decode_error; ++ ++ /* Decode the extracts table. ++ This installs the resulting tags in MOIF. */ ++ if (!a68_decode_extracts (moif, encoded_modes, data, size, pos, &pos, errstr)) ++ goto decode_error; ++ ++ /* We don't need the encoded modes anymore. */ ++ for (auto entry : encoded_modes) ++ { ++ struct encoded_mode *em = entry.second; ++ encoded_mode_free (em); ++ } ++ ++ /* Got some juicy exports for youuuuuu... */ ++ return moif; ++ decode_error: ++ if (*errstr == NULL) ++ *errstr = "premature end of data"; ++ return NULL; ++} ++ ++/* Get a moif with the exports for module named MODULE. If no exports can be ++ found then return NULL. */ ++ ++MOIF_T * ++a68_open_packet (const char *module) ++{ ++ /* Look in the modules location maps to see if there is an entry for MODULE. ++ If there is one, use the specified filename. Otherwise canonicalize the ++ module name to a file name. */ ++ char *filename; ++ const char **pfilename = A68_MODULE_FILES->get (module); ++ if (pfilename == NULL) ++ { ++ /* Turn the module indicant in MODULE to lower-case. */ ++ filename = (char *) alloca (strlen (module) + 1); ++ size_t i = 0; ++ for (; i < strlen (module); i++) ++ filename[i] = TOLOWER (module[i]); ++ filename[i] = '\0'; ++ } ++ else ++ { ++ size_t len = strlen (*pfilename) + 1; ++ filename = (char *) alloca (len); ++ memcpy (filename, *pfilename, len); ++ } ++ ++ /* Try to read exports data in a buffer. */ ++ char *exports_data; ++ size_t exports_data_size; ++ exports_data = a68_get_packet_exports (std::string (filename), ++ std::string ("."), ++ &exports_data_size); ++ if (exports_data == NULL) ++ return NULL; ++ ++ /* Got some data. Parse it into a moif. */ ++ const char *errstr = NULL; ++ MOIF_T *moif = a68_decode_moif (exports_data, exports_data_size, &errstr); ++ return moif; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-lang.cc +@@ -0,0 +1,755 @@ ++/* Language-dependent hooks for Algol 68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "toplev.h" ++#include "langhooks.h" ++#include "langhooks-def.h" ++#include "target.h" ++#include "stringpool.h" ++#include "debug.h" ++#include "diagnostic.h" ++#include "opts.h" ++#include "machmode.h" ++#include "stor-layout.h" /* For layout_type */ ++#include "vec.h" ++ ++#include "a68.h" ++ ++/* Global state for the Algol 68 front end. */ ++ ++A68_T a68_common; ++ ++/* Types expected by gcc's garbage collector. ++ These types exist to allow language front-ends to ++ add extra information in gcc's parse tree data structure. */ ++ ++struct GTY(()) lang_type ++{ ++ MOID_T * moid; ++}; ++ ++struct GTY(()) lang_decl ++{ ++ NODE_T * node; ++}; ++ ++/* Language-specific identifier information. This must include a ++ tree_identifier. */ ++struct GTY(()) lang_identifier ++{ ++ struct tree_identifier common; ++}; ++ ++ ++struct GTY(()) language_function ++{ ++ int dummy; ++}; ++ ++/* The Algol68 frontend Type AST for GCC type NODE. */ ++#define TYPE_LANG_FRONTEND(NODE) \ ++ (TYPE_LANG_SPECIFIC (NODE) \ ++ ? TYPE_LANG_SPECIFIC (NODE)->type : NULL) ++ ++/* The resulting tree type. */ ++ ++union GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"), ++ chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), " ++ "TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN " ++ "(&%h.generic)) : NULL"))) lang_tree_node ++{ ++ union tree_node GTY((tag ("0"), ++ desc ("tree_node_structure (&%h)"))) generic; ++ struct lang_identifier GTY ((tag ("1"))) identifier; ++}; ++ ++/* Allocate and return a lang specific structure for type tree nodes. */ ++ ++struct lang_type * ++a68_build_lang_type (MOID_T *moid) ++{ ++ tree ctype = CTYPE (moid); ++ struct lang_type *lt = ctype ? TYPE_LANG_SPECIFIC (ctype) : NULL; ++ ++ if (lt == NULL) ++ lt = (struct lang_type *) ggc_cleared_alloc (); ++ if (lt->moid == NULL) ++ lt->moid = moid; ++ return lt; ++} ++ ++/* Allocate and return a lang specific structure for decl tree nodes. */ ++ ++struct lang_decl * ++a68_build_lang_decl (NODE_T *node) ++{ ++ tree cdecl = CDECL (node); ++ struct lang_decl *ld = cdecl ? DECL_LANG_SPECIFIC (cdecl) : NULL; ++ ++ if (ld == NULL) ++ ld = (struct lang_decl *) ggc_cleared_alloc (); ++ if (ld->node == NULL) ++ ld->node = node; ++ return ld; ++} ++ ++/* Get the front-end mode associated with the given TYPE. If no mode is ++ associated then this function returns NO_MODE. */ ++ ++MOID_T * ++a68_type_moid (tree type) ++{ ++ gcc_assert (TYPE_LANG_SPECIFIC (type) != NULL ++ && TYPE_LANG_SPECIFIC (type)->moid != NO_MOID); ++ return TYPE_LANG_SPECIFIC (type)->moid; ++} ++ ++/* Build the type trees in a68_global_trees. */ ++ ++static void ++a68_build_a68_type_nodes (void) ++{ ++ /* VOID */ ++ a68_void_type = make_node (RECORD_TYPE); ++ TYPE_NAME (a68_void_type) = get_identifier ("void%"); ++ TYPE_FIELDS (a68_void_type) = NULL_TREE; ++ TYPE_READONLY (a68_void_type) = 1; ++ TYPE_CXX_ODR_P (a68_void_type) = 1; ++ layout_type (a68_void_type); ++ ++ /* BOOL */ ++ a68_bool_type = boolean_type_node; ++ ++ /* CHAR */ ++ a68_char_type = uint32_type_node; ++ ++ /* SHORT SHORT INT ++ SHORT INT ++ INT */ ++ a68_short_short_int_type = signed_char_type_node; ++ a68_short_int_type = short_integer_type_node; ++ a68_int_type = integer_type_node; ++ ++ /* LONG INT */ ++ if (int_size_in_bytes (long_integer_type_node) ++ > int_size_in_bytes (a68_int_type)) ++ a68_long_int_type = long_integer_type_node; ++ else if (int_size_in_bytes (long_long_integer_type_node) ++ > int_size_in_bytes (a68_int_type)) ++ a68_long_int_type = long_long_integer_type_node; ++ else ++ a68_long_int_type = a68_int_type; ++ ++ /* LONG LONG INT */ ++ if (int_size_in_bytes (long_integer_type_node) ++ > int_size_in_bytes (a68_long_int_type)) ++ a68_long_long_int_type = long_integer_type_node; ++ else if (int_size_in_bytes (long_long_integer_type_node) ++ > int_size_in_bytes (a68_long_int_type)) ++ a68_long_long_int_type = long_long_integer_type_node; ++ else ++ a68_long_long_int_type = a68_long_int_type; ++ ++ /* SHORT SHORT BITS ++ SHORT BITS ++ BITS */ ++ a68_short_short_bits_type = unsigned_char_type_node; ++ a68_short_bits_type = short_unsigned_type_node; ++ a68_bits_type = unsigned_type_node; ++ ++ /* LONG BITS */ ++ if (int_size_in_bytes (long_unsigned_type_node) ++ > int_size_in_bytes (a68_bits_type)) ++ a68_long_bits_type = long_unsigned_type_node; ++ else if (int_size_in_bytes (long_long_unsigned_type_node) ++ > int_size_in_bytes (a68_bits_type)) ++ a68_long_bits_type = long_long_unsigned_type_node; ++ else ++ a68_long_bits_type = a68_bits_type; ++ ++ /* LONG LONG BITS */ ++ if (int_size_in_bytes (long_unsigned_type_node) ++ > int_size_in_bytes (a68_long_bits_type)) ++ a68_long_long_bits_type = long_unsigned_type_node; ++ else if (int_size_in_bytes (long_long_unsigned_type_node) ++ > int_size_in_bytes (a68_long_bits_type)) ++ a68_long_long_bits_type = long_long_unsigned_type_node; ++ else ++ a68_long_long_bits_type = a68_long_bits_type; ++ ++ /* BYTES ++ LONG BYTES */ ++ a68_bytes_type = unsigned_type_node; ++ a68_long_bytes_type = long_unsigned_type_node; ++ ++ /* REAL ++ LONG REAL ++ LONG LONG REAL */ ++ a68_real_type = float_type_node; ++ a68_long_real_type = double_type_node; ++ a68_long_long_real_type = long_double_type_node; ++} ++ ++/* Language hooks data structures. This is the main interface between ++ the GCC front-end and the GCC middle-end/back-end. A list of ++ language hooks can be found in langhooks.h. */ ++ ++#undef LANG_HOOKS_NAME ++#define LANG_HOOKS_NAME "GNU Algol 68" ++ ++/* LANG_HOOKS_INIT gets called to initialize the front-end. ++ Invoked after option handling. */ ++ ++static bool ++a68_init (void) ++{ ++ build_common_tree_nodes (false); ++ targetm.init_builtins (); ++ a68_build_a68_type_nodes (); ++ build_common_builtin_nodes (); ++ a68_install_builtins (); ++ ++ /* Initialize binding contexts. */ ++ a68_init_ranges (); ++ ++ /* Set the type of size_t. */ ++ if (TYPE_MODE (long_unsigned_type_node) == ptr_mode) ++ size_type_node = long_unsigned_type_node; ++ else if (TYPE_MODE (long_long_unsigned_type_node) == ptr_mode) ++ size_type_node = long_long_unsigned_type_node; ++ else ++ size_type_node = long_unsigned_type_node; ++ ++ /* Create an empty module files map. */ ++ A68_MODULE_FILES = hash_map::create_ggc (16); ++ A68_MODULE_FILES->empty (); ++ ++ return true; ++} ++ ++#undef LANG_HOOKS_INIT ++#define LANG_HOOKS_INIT a68_init ++ ++/* LANG_HOOKS_OPTION_LANG_MASK */ ++ ++static unsigned int ++a68_option_lang_mask (void) ++{ ++ return CL_Algol68; ++} ++ ++#undef LANG_HOOKS_OPTION_LANG_MASK ++#define LANG_HOOKS_OPTION_LANG_MASK a68_option_lang_mask ++ ++ ++/* Return a data type that has machine mode MODE. If the mode is an ++ integer, then UNSIGNEDP selects between signed and unsigned types. */ ++ ++static tree ++a68_type_for_mode (enum machine_mode mode, int unsignedp) ++{ ++ if (mode == QImode) ++ return unsignedp ? a68_short_short_bits_type :a68_short_short_int_type; ++ ++ if (mode == HImode) ++ return unsignedp ? a68_short_bits_type : a68_short_int_type; ++ ++ if (mode == SImode) ++ return unsignedp ? a68_bits_type : a68_int_type; ++ ++ if (mode == DImode) ++ return unsignedp ? a68_long_bits_type : a68_long_int_type; ++ ++ if (mode == TYPE_MODE (a68_long_long_bits_type)) ++ return unsignedp ? a68_long_long_bits_type : a68_long_long_int_type; ++ ++ if (mode == TYPE_MODE (a68_real_type)) ++ return a68_real_type; ++ ++ if (mode == TYPE_MODE (a68_long_real_type)) ++ return a68_long_real_type; ++ ++ if (mode == TYPE_MODE (a68_long_long_real_type)) ++ return a68_long_long_real_type; ++ ++ if (mode == TYPE_MODE (build_pointer_type (char_type_node))) ++ return build_pointer_type (char_type_node); ++ ++ if (mode == TYPE_MODE (build_pointer_type (integer_type_node))) ++ return build_pointer_type (integer_type_node); ++ ++ for (int i = 0; i < NUM_INT_N_ENTS; i ++) ++ { ++ if (int_n_enabled_p[i] && mode == int_n_data[i].m) ++ { ++ if (unsignedp) ++ return int_n_trees[i].unsigned_type; ++ else ++ return int_n_trees[i].signed_type; ++ } ++ } ++ ++ return 0; ++} ++ ++#undef LANG_HOOKS_TYPE_FOR_MODE ++#define LANG_HOOKS_TYPE_FOR_MODE a68_type_for_mode ++ ++ ++/* Return an integer type with BITS bits of precision, ++ that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */ ++ ++static tree ++a68_type_for_size (unsigned int bits, int unsignedp) ++{ ++ if (unsignedp) ++ { ++ if (bits <= TYPE_PRECISION (a68_short_short_bits_type)) ++ return a68_short_short_bits_type; ++ if (bits <= TYPE_PRECISION (a68_short_bits_type)) ++ return a68_short_bits_type; ++ if (bits <= TYPE_PRECISION (a68_bits_type)) ++ return a68_bits_type; ++ if (bits <= TYPE_PRECISION (a68_long_bits_type)) ++ return a68_long_bits_type; ++ if (bits <= TYPE_PRECISION (a68_long_long_bits_type)) ++ return a68_long_long_bits_type; ++ } ++ else ++ { ++ if (bits <= TYPE_PRECISION (a68_short_short_int_type)) ++ return a68_short_short_int_type; ++ if (bits <= TYPE_PRECISION (a68_short_int_type)) ++ return a68_short_int_type; ++ if (bits <= TYPE_PRECISION (a68_int_type)) ++ return a68_int_type; ++ if (bits <= TYPE_PRECISION (a68_long_int_type)) ++ return a68_long_int_type; ++ if (bits <= TYPE_PRECISION (a68_long_long_int_type)) ++ return a68_long_long_int_type; ++ } ++ ++ for (int i = 0; i < NUM_INT_N_ENTS; ++i) ++ { ++ if (int_n_enabled_p[i] && bits == int_n_data[i].bitsize) ++ { ++ if (unsignedp) ++ return int_n_trees[i].unsigned_type; ++ else ++ return int_n_trees[i].signed_type; ++ } ++ } ++ ++ return 0; ++} ++ ++#undef LANG_HOOKS_TYPE_FOR_SIZE ++#define LANG_HOOKS_TYPE_FOR_SIZE a68_type_for_size ++ ++ ++/* Implements the lang_hooks.decls.global_bindings_p routine for Algol 68. ++ Return true if we are in the global binding level. */ ++ ++static bool ++a68_global_bindings_p (void) ++{ ++ return (current_function_decl == NULL_TREE); ++} ++ ++#undef LANG_HOOKS_GLOBAL_BINDINGS_P ++#define LANG_HOOKS_GLOBAL_BINDINGS_P a68_global_bindings_p ++ ++/* Implements the lang_hooks.decls.getdecls routine. ++ Return the list of declarations of the current level. */ ++ ++static tree ++a68_getdecls (void) ++{ ++ return a68_range_names (); ++} ++ ++#undef LANG_HOOKS_GETDECLS ++#define LANG_HOOKS_GETDECLS a68_getdecls ++ ++/* Return A68_GLOBAL_CONTEXT, but create it first if need be. */ ++ ++static tree ++get_global_context (void) ++{ ++ if (!A68_GLOBAL_CONTEXT) ++ { ++ A68_GLOBAL_CONTEXT = build_translation_unit_decl (NULL_TREE); ++ debug_hooks->register_main_translation_unit (A68_GLOBAL_CONTEXT); ++ } ++ ++ return A68_GLOBAL_CONTEXT; ++} ++ ++/* Implements the lang_hooks.decls.pushdecl routine. ++ Record DECL as belonging to the current lexical scope. */ ++ ++static tree ++pushdecl (tree decl) ++{ ++ /* Set the context of the decl. If current_function_decl did not help in ++ determining the context, use global scope. */ ++ if (!DECL_CONTEXT (decl)) ++ { ++ if (current_function_decl) ++ DECL_CONTEXT (decl) = current_function_decl; ++ else ++ DECL_CONTEXT (decl) = get_global_context (); ++ } ++ ++ /* Put decls on list in reverse order. */ ++ if (TREE_STATIC (decl) || a68_global_bindings_p ()) ++ vec_safe_push (A68_GLOBAL_DECLARATIONS, decl); ++ else ++ a68_add_decl (decl); ++ ++ return decl; ++} ++ ++#undef LANG_HOOKS_PUSHDECL ++#define LANG_HOOKS_PUSHDECL pushdecl ++ ++/* Implements the lang_hooks.init_options routine for language Algol 68. This ++ initializes the global state for the frontend before calling the option ++ handlers. */ ++ ++static void ++a68_init_options (unsigned int argc ATTRIBUTE_UNUSED, ++ cl_decoded_option *decoded_options ATTRIBUTE_UNUSED) ++{ ++ /* Nothing to do here for now. */ ++} ++ ++#undef LANG_HOOKS_INIT_OPTIONS ++#define LANG_HOOKS_INIT_OPTIONS a68_init_options ++ ++ ++/* Handle -fcheck= option. */ ++ ++static void ++a68_handle_runtime_check_option (const char *arg) ++{ ++ int pos = 0; ++ ++ while (*arg) ++ { ++ /* We accept entries like -fcheck=nil,,bounds and -fcheck=,all. */ ++ while (*arg == ',') ++ arg++; ++ ++ while (arg[pos] && arg[pos] != ',') ++ pos++; ++ ++ /* Process an option flag in the -fcheck= specification. ++ ++ "all" means enable all run-time checks. ++ "none" means disable all run-time checks. ++ ++ Options are processed from left to right, with increase ++ precedende. */ ++ ++ if (strncmp (arg, "all", pos) == 0) ++ { ++ OPTION_NIL_CHECKING (&A68_JOB) = true; ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ } ++ else if (strncmp (arg, "none", pos) == 0) ++ { ++ OPTION_NIL_CHECKING (&A68_JOB) = false; ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; ++ } ++ else if (strncmp (arg, "nil", pos) == 0) ++ OPTION_NIL_CHECKING (&A68_JOB) = true; ++ else if (strncmp (arg, "no-nil", pos) == 0) ++ OPTION_NIL_CHECKING (&A68_JOB) = false; ++ else if (strncmp (arg, "bounds", pos) == 0) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ else if (strncmp (arg, "no-bounds", pos) == 0) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; ++ else ++ fatal_error (UNKNOWN_LOCATION, ++ "Argument to %<-fcheck%> is not valid: %s", arg); ++ ++ /* Process next flag. */ ++ arg += pos; ++ pos = 0; ++ } ++} ++ ++/* Handle Algol 68 specific options. Return false if we didn't do ++ anything. */ ++ ++static bool ++a68_handle_option (size_t scode, ++ const char *arg, ++ HOST_WIDE_INT value ATTRIBUTE_UNUSED, ++ int kind ATTRIBUTE_UNUSED, ++ location_t loc ATTRIBUTE_UNUSED, ++ const cl_option_handlers *handlers ATTRIBUTE_UNUSED) ++{ ++ opt_code code = (opt_code) scode; ++ ++ switch (code) ++ { ++ case OPT_std_algol68: ++ OPTION_STRICT (&A68_JOB) = 1; ++ break; ++ case OPT_fbrackets: ++ OPTION_BRACKETS (&A68_JOB) = flag_brackets; ++ break; ++ case OPT_fassert: ++ OPTION_ASSERT (&A68_JOB) = flag_assert; ++ break; ++ case OPT_fcheck_: ++ a68_handle_runtime_check_option (arg); ++ break; ++ case OPT_fstropping_: ++ if (value == 0) ++ OPTION_STROPPING (&A68_JOB) = UPPER_STROPPING; ++ else ++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; ++ break; ++ case OPT_I: ++ vec_safe_push (A68_INCLUDE_PATHS, arg); ++ vec_safe_push (A68_IMPORT_PATHS, arg); ++ break; ++ case OPT_L: ++ vec_safe_push (A68_IMPORT_PATHS, arg); ++ break; ++ default: ++ break; ++ } ++ ++ return true; ++} ++ ++#undef LANG_HOOKS_HANDLE_OPTION ++#define LANG_HOOKS_HANDLE_OPTION a68_handle_option ++ ++/* LANG_HOOKS_INIT_OPTIONS_STRUCT is called so the front-end can ++ change some default values in the compiler's option structure. */ ++ ++static void ++a68_init_options_struct (struct gcc_options *opts) ++{ ++ /* Operations are always wrapping in algol68, even on signed ++ integer. */ ++ opts->x_flag_wrapv = 1; ++ /* Do not warn for voiding by default. */ ++ opts->x_warn_algol68_voiding = 0; ++ /* Do not warn for usage of Algol 68 extensions by default. */ ++ opts->x_warn_algol68_extensions = 0; ++ /* Do not warn for potential scope violations by default. */ ++ opts->x_warn_algol68_scope = 0; ++ /* Do not warn for hidden declarations by default. */ ++ opts->x_warn_algol68_hidden_declarations = 0; ++ /* Enable assertions by default. */ ++ OPTION_ASSERT (&A68_JOB) = 1; ++ /* Disable run-time nil checking by default. */ ++ OPTION_NIL_CHECKING (&A68_JOB) = 0; ++ /* Enable run-time bounds checking by default. */ ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = 1; ++ opts->x_flag_assert = 1; ++ /* Allow GNU extensions by default. */ ++ OPTION_STRICT (&A68_JOB) = 0; ++ /* The default stropping regime is SUPPER. */ ++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; ++} ++ ++#undef LANG_HOOKS_INIT_OPTIONS_STRUCT ++#define LANG_HOOKS_INIT_OPTIONS_STRUCT a68_init_options_struct ++ ++/* Deal with any options that imply the turning on/off of features. FILENAME ++ is the main input file passed on the command line. */ ++ ++static bool ++a68_post_options (const char **filename ATTRIBUTE_UNUSED) ++{ ++ /* -fbounds-check is equivalent to -fcheck=bounds */ ++ if (flag_bounds_check) ++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; ++ ++ return false; ++} ++ ++#undef LANG_HOOKS_POST_OPTIONS ++#define LANG_HOOKS_POST_OPTIONS a68_post_options ++ ++/* LANG_HOOKS_PARSE_FILE is called to parse the input files. ++ ++ The input file names are available in the global variables ++ in_fnames and num_in_fnames, and this function is required to ++ create a complete parse tree from them in a global var, then ++ return. */ ++ ++MOIF_T *moif; ++ ++static void ++a68_parse_file (void) ++{ ++ if (num_in_fnames != 1) ++ fatal_error (UNKNOWN_LOCATION, ++ "exactly one source file must be specified on the command line"); ++ ++ /* Run the Mailloux parser. */ ++ a68_parser (in_fnames[0]); ++ ++ if (ERROR_COUNT (&A68_JOB) > 0) ++ goto had_errors; ++ ++ /* Generate dumps if so requested. */ ++ if (flag_a68_dump_modes) ++ a68_dump_modes (TOP_MOID (&A68_JOB)); ++ if (flag_a68_dump_ast) ++ a68_dump_parse_tree (TOP_NODE (&A68_JOB)); ++ ++ /* Lower modes to GENERIC. */ ++ a68_lower_moids (TOP_MOID (&A68_JOB)); ++ /* Lower the particular program. */ ++ a68_lower_top_tree (TOP_NODE (&A68_JOB)); ++ ++ if (ERROR_COUNT (&A68_JOB) > 0) ++ goto had_errors; ++ ++ /* Emit exports information for any compiled module in this packet. Note ++ this must be done after the low pass. */ ++ a68_do_exports (TOP_NODE (&A68_JOB)); ++ ++ /* Process all file scopes in this compilation, and the external_scope, ++ through wrapup_global_declarations. */ ++ for (unsigned int i = 0; i < vec_safe_length (A68_GLOBAL_DECLARATIONS); i++) ++ { ++ tree decl = vec_safe_address (A68_GLOBAL_DECLARATIONS)[i]; ++ wrapup_global_declarations (&decl, 1); ++ } ++ ++ had_errors: ++ errorcount += ERROR_COUNT (&A68_JOB); ++} ++ ++#undef LANG_HOOKS_PARSE_FILE ++#define LANG_HOOKS_PARSE_FILE a68_parse_file ++ ++/* This hook is called for every GENERIC tree that gets gimplified. ++ Its purpose is to gimplify language specific trees. ++ ++ At the moment we are not supporting any Algol 68 specific tree, so ++ we just return FALSE. */ ++ ++static int ++a68_gimplify_expr (tree *expr_p ATTRIBUTE_UNUSED, ++ gimple_seq *pre_p ATTRIBUTE_UNUSED, ++ gimple_seq *post_p ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++#undef LANG_HOOKS_GIMPLIFY_EXPR ++#define LANG_HOOKS_GIMPLIFY_EXPR a68_gimplify_expr ++ ++/* This function shall return the printable name of the language. */ ++ ++static const char * ++a68_printable_name (tree decl, int kind ATTRIBUTE_UNUSED) ++{ ++ tree decl_name = DECL_NAME (decl); ++ ++ if (decl_name == NULL_TREE) ++ return ""; ++ else ++ return IDENTIFIER_POINTER (decl_name); ++} ++ ++#undef LANG_HOOKS_DECL_PRINTABLE_NAME ++#define LANG_HOOKS_DECL_PRINTABLE_NAME a68_printable_name ++ ++ ++/* Return true if a warning should be given about option OPTION, which is for ++ the wrong language, false if it should be quietly ignored. */ ++ ++static bool ++a68_complain_wrong_lang_p (const struct cl_option *option ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++#undef LANG_HOOKS_COMPLAIN_WRONG_LANG_P ++#define LANG_HOOKS_COMPLAIN_WRONG_LANG_P a68_complain_wrong_lang_p ++ ++/* Create an expression whose value is that of EXPR, ++ converted to type TYPE. The TREE_TYPE of the value ++ is always TYPE. This function implements all reasonable ++ conversions; callers should filter out those that are ++ not permitted by the language being compiled. ++ ++ Note that this function is not used outside the front-end. This front-end ++ doesn't currently use it at all. */ ++ ++tree convert (tree type ATTRIBUTE_UNUSED, ++ tree expr ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ ++/* Implements the lang_hooks.types_compatible_p routine for Algol 68. ++ Compares two types for equivalence in Algol 68. ++ This routine should only return 1 if it is sure, even though the frontend ++ should have already ensured that all types are compatible before handing ++ over the parsed ASTs to the code generator. */ ++ ++static int ++a68_types_compatible_p (tree x, tree y) ++{ ++ MOID_T *mode_x = a68_type_moid (x); ++ MOID_T *mode_y = a68_type_moid (y); ++ ++ if (mode_x != NO_MOID && mode_y != NO_MOID) ++ return a68_is_equal_modes (mode_x, mode_y, SAFE_DEFLEXING); ++ ++ return false; ++} ++ ++#undef LANG_HOOKS_TYPES_COMPATIBLE_P ++#define LANG_HOOKS_TYPES_COMPATIBLE_P a68_types_compatible_p ++ ++/* Get a value for the SARIF v2.1.0 "artifact.sourceLanguage" property. Algol ++ 68 is not yet listed in SARIF v2.1.0 Appendix J, but if/when it does, it ++ will likely use this string. */ ++ ++const char * ++a68_get_sarif_source_language (const char *) ++{ ++ return "algol68"; ++} ++ ++#undef LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE ++#define LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE a68_get_sarif_source_language ++ ++/* Expands all LANG_HOOKS_x o GCC. */ ++struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; ++ ++#include "gt-algol68-a68-lang.h" ++#include "gtype-algol68.h" +--- /dev/null ++++ b/src/gcc/algol68/a68-low-bits.cc +@@ -0,0 +1,297 @@ ++/* Lowering routines for all things related to BITS values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP for the given BITS mode. */ ++ ++tree ++a68_get_bits_skip_tree (MOID_T *m) ++{ ++ tree type; ++ ++ if (m == M_BITS) ++ type = a68_bits_type; ++ else if (m == M_LONG_BITS) ++ type = a68_long_bits_type; ++ else if (m == M_LONG_LONG_BITS) ++ type = a68_long_long_bits_type; ++ else if (m == M_SHORT_BITS) ++ type = a68_short_bits_type; ++ else if (m == M_SHORT_SHORT_BITS) ++ type = a68_short_short_bits_type; ++ else ++ gcc_unreachable (); ++ ++ return build_int_cst (type, 0); ++} ++ ++/* Given a BITS type, compute the number of bits that fit in a value of that ++ type. The result is an INT. */ ++ ++tree ++a68_bits_width (tree type) ++{ ++ return fold_convert (a68_int_type, TYPE_SIZE (type)); ++} ++ ++/* Given a BITS type, compute the maximum value that can be expressed with that ++ type. */ ++ ++tree ++a68_bits_maxbits (tree type) ++{ ++ return fold_convert (type, TYPE_MAX_VALUE (type)); ++} ++ ++/* Given a SIZETY INT value VAL, compute and return a SIZETY BITS reflecting ++ its constituent bits. ++ ++ In strict Algol 68 the BIN of a negative value is BITS (SKIP). ++ ++ In GNU 68 the BIN of a negative value is the constituent bits of the two's ++ complement of the value. */ ++ ++tree ++a68_bits_bin (MOID_T *m, tree val) ++{ ++ tree type = CTYPE (m); ++ ++ if (OPTION_STRICT (&A68_JOB)) ++ return a68_get_bits_skip_tree (m); ++ else ++ return fold_convert (type, val); ++} ++ ++/* Given a SIZETY BITS value BITS, compute and return the corresponding SIZETY ++ INT. ++ ++ In strict Algol 68 the ABS of a BITS value reflecting a bit pattern that ++ would correspond a negative integral value is INT (SKIP). ++ ++ In GNU 68 the ABS of a BITS value reflecting a bit pattern that would ++ correspond a negative integral value is that negative integral value. */ ++ ++tree ++a68_bits_abs (MOID_T *m, tree bits) ++{ ++ tree type = CTYPE (m); ++ ++ if (OPTION_STRICT (&A68_JOB)) ++ { ++ tree integral_val = save_expr (fold_convert (type, bits)); ++ return fold_build3 (COND_EXPR, ++ type, ++ fold_build2 (LT_EXPR, type, integral_val, ++ build_int_cst (type, 0)), ++ a68_get_int_skip_tree (m), ++ integral_val); ++ } ++ else ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, shorten it into a SIZETY BITS whose tree ++ type is TYPE. */ ++ ++tree ++a68_bits_shorten (tree type, tree bits) ++{ ++ /* This will truncate at the left, which is what is intended. */ ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, length it into a SIZETY BITS whose tree type ++ is TYPE. */ ++ ++tree ++a68_bits_leng (tree type, tree bits) ++{ ++ /* This will add zeroes to the left, which is what is intended. */ ++ return fold_convert (type, bits); ++} ++ ++/* Given a SIZETY BITS value BITS, compute and return a new SIZETY BITS whose ++ bits are the logical negation of the bits of BITS. */ ++ ++tree ++a68_bits_not (tree bits) ++{ ++ return fold_build1 (BIT_NOT_EXPR, TREE_TYPE (bits), bits); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the `and' of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_and (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_AND_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the inclusive-or of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_ior (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new ++ SIZETY BITS whose bits are the exclusive-or of the bits of BITS1 and ++ BITS2. */ ++ ++tree ++a68_bits_xor (tree bits1, tree bits2) ++{ ++ return fold_build2 (BIT_XOR_EXPR, TREE_TYPE (bits1), bits1, bits2); ++} ++ ++/* Given a position POS of mode INT and a BITS of mode SIZETY BITS, return a ++ BOOL reflecting the state of the bit occupying the position POS in BITS. ++ ++ If POS is out of range a run-time error is emitted. */ ++ ++tree ++a68_bits_elem (NODE_T *p, tree pos, tree bits) ++{ ++ pos = save_expr (pos); ++ tree one = build_int_cst (TREE_TYPE (bits), 1); ++ ++ tree shift = fold_build2 (MINUS_EXPR, bitsizetype, ++ TYPE_SIZE (TREE_TYPE (bits)), ++ fold_convert (bitsizetype, pos)); ++ tree elem = fold_build2 (EQ_EXPR, ++ a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, ++ TREE_TYPE (bits), ++ fold_build2 (RSHIFT_EXPR, ++ TREE_TYPE (bits), ++ bits, shift), ++ one), ++ one); ++ ++ /* Do bounds checking if requested. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_BITSBOUNDSERROR, ++ void_type_node, 3, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, pos)); ++ tree check = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GT_EXPR, integer_type_node, ++ pos, fold_convert (TREE_TYPE (pos), integer_zero_node)), ++ fold_build2 (LE_EXPR, integer_type_node, ++ fold_convert (bitsizetype, pos), ++ TYPE_SIZE (TREE_TYPE (bits)))); ++ ++ check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ check, ++ fold_build2 (COMPOUND_EXPR, a68_bool_type, ++ call, boolean_false_node)); ++ elem = fold_build2 (COMPOUND_EXPR, a68_bool_type, ++ check, elem); ++ } ++ ++ return elem; ++} ++ ++/* Given two SIZETY BITS values BITS1 and BITS2, return a BOOL value indicating ++ whether all the bits set in BITS1 are also set in BITS2. */ ++ ++tree ++a68_bits_subset (tree bits1, tree bits2) ++{ ++ /* We compute this operation with `A | B == B' as specified by the Report */ ++ bits2 = save_expr (bits2); ++ return fold_build2 (EQ_EXPR, a68_bool_type, ++ fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2), ++ bits2); ++} ++ ++/* Rotate the bits in BITS SHIFT bits to the left if SHIFT is positive, or ABS ++ (SHIFT) bits to the right if SHIFT is negative. ++ ++ A run-time error is raised if the count overflows the BITS value. */ ++ ++tree ++a68_bits_shift (tree shift, tree bits) ++{ ++ shift = save_expr (shift); ++ bits = save_expr (bits); ++ return fold_build3 (COND_EXPR, ++ TREE_TYPE (bits), ++ fold_build2 (GE_EXPR, TREE_TYPE (shift), ++ shift, build_int_cst (TREE_TYPE (shift), 0)), ++ fold_build2 (LSHIFT_EXPR, TREE_TYPE (bits), ++ bits, shift), ++ fold_build2 (RSHIFT_EXPR, TREE_TYPE (bits), ++ bits, ++ fold_build1 (ABS_EXPR, TREE_TYPE (shift), shift))); ++} ++ ++/* Given two bits values, build an expression that calculates whether A = B. */ ++ ++tree ++a68_bits_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two bits values, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_bits_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-bools.cc +@@ -0,0 +1,77 @@ ++/* Lowering routines for all things related to BOOL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP of a BOOL mode. */ ++ ++tree ++a68_get_bool_skip_tree (void) ++{ ++ return build_int_cst (a68_bool_type, 0); ++} ++ ++/* The absolute value of a BOOL is a non-zero INT for TRUE and zero for ++ FALSE. */ ++ ++tree ++a68_bool_abs (tree val) ++{ ++ return fold_convert (a68_int_type, val); ++} ++ ++/* Given two boolean values, build an expression that calculates whether A = B. */ ++ ++tree ++a68_bool_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two boolean values, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_bool_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-builtins.cc +@@ -0,0 +1,533 @@ ++/* GCC built-ins support for Algol 68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Define a built-in function. */ ++ ++static void ++local_define_builtin (const char *name, tree type, enum built_in_function code, ++ const char *library_name, int ecf_flags) ++{ ++ tree decl; ++ ++ decl = add_builtin_function (name, type, code, BUILT_IN_NORMAL, ++ library_name, NULL_TREE); ++ set_call_expr_flags (decl, ecf_flags); ++ set_builtin_decl (code, decl, true); ++} ++ ++/* Install the GCC built-ins so the front-end can use them. */ ++ ++void ++a68_install_builtins (void) ++{ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDF)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iroundf", ftype, BUILT_IN_IROUNDF, ++ "iroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDF)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lroundf", ftype, BUILT_IN_LROUNDF, ++ "lroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDF)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llroundf", ftype, BUILT_IN_LLROUNDF, ++ "llroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUND)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iround", ftype, BUILT_IN_IROUND, ++ "iround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUND)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lround", ftype, BUILT_IN_LROUND, ++ "lround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUND)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llround", ftype, BUILT_IN_LLROUND, ++ "llround", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDL)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_iroundl", ftype, BUILT_IN_IROUNDL, ++ "iroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDL)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lroundl", ftype, BUILT_IN_LROUNDL, ++ "lroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDL)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llroundl", ftype, BUILT_IN_LLROUNDL, ++ "llroundl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORF)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloorf", ftype, BUILT_IN_IFLOORF, ++ "ifloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORF)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloorf", ftype, BUILT_IN_LFLOORF, ++ "lfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORF)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloorf", ftype, BUILT_IN_LLFLOORF, ++ "llfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOOR)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloor", ftype, BUILT_IN_IFLOOR, ++ "ifloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOOR)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloor", ftype, BUILT_IN_LFLOOR, ++ "lfloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOOR)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloor", ftype, BUILT_IN_LLFLOOR, ++ "llfloor", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORL)) ++ { ++ tree ftype = build_function_type_list (integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_ifloorl", ftype, BUILT_IN_IFLOORL, ++ "ifloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORL)) ++ { ++ tree ftype = build_function_type_list (long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_lfloorl", ftype, BUILT_IN_LFLOORL, ++ "lfloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORL)) ++ { ++ tree ftype = build_function_type_list (long_long_integer_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_llfloorl", ftype, BUILT_IN_LLFLOORL, ++ "llfloorl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, ++ float_type_node, float_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powf", ftype, BUILT_IN_POWF, ++ "powf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWIF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, ++ float_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powif", ftype, BUILT_IN_POWIF, ++ "powif", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POW)) ++ { ++ tree ftype = build_function_type_list (double_type_node, ++ double_type_node, double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_pow", ftype, BUILT_IN_POW, ++ "pow", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWI)) ++ { ++ tree ftype = build_function_type_list (double_type_node, ++ double_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powi", ftype, BUILT_IN_POWI, ++ "powi", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powl", ftype, BUILT_IN_POWL, ++ "powl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_POWIL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, integer_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_powil", ftype, BUILT_IN_POWIL, ++ "powil", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_CALLOC)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ size_type_node, size_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_calloc", ftype, BUILT_IN_CALLOC, ++ "calloc", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_MEMCPY)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ ptr_type_node, const_ptr_type_node, size_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_memcpy", ftype, BUILT_IN_MEMSET, ++ "memcpy", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_MEMSET)) ++ { ++ tree ftype = build_function_type_list (ptr_type_node, ++ ptr_type_node, integer_type_node, size_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_memset", ftype, BUILT_IN_MEMSET, ++ "memset", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sqrtf", ftype, BUILT_IN_SQRTF, ++ "sqrtf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRT)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sqrt", ftype, BUILT_IN_SQRT, ++ "sqrt", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_sqrtl", ftype, BUILT_IN_SQRTL, ++ "sqrtl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TANF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_tanf", ftype, BUILT_IN_TANF, ++ "tanf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TAN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_tan", ftype, BUILT_IN_TAN, ++ "tan", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_TANL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_tanl", ftype, BUILT_IN_TANL, ++ "tanl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SINF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sinf", ftype, BUILT_IN_SINF, ++ "sinf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SIN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_sin", ftype, BUILT_IN_SIN, ++ "sin", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_SINL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_sinl", ftype, BUILT_IN_SINL, ++ "sinl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COSF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_cosf", ftype, BUILT_IN_COSF, ++ "cosf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COS)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_cos", ftype, BUILT_IN_COS, ++ "cos", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_COSL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_cosl", ftype, BUILT_IN_COSL, ++ "cosl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_acosf", ftype, BUILT_IN_ACOSF, ++ "acosf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOS)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_acos", ftype, BUILT_IN_ACOS, ++ "acos", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_acosl", ftype, BUILT_IN_ACOSL, ++ "acosl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASINF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_asinf", ftype, BUILT_IN_ASINF, ++ "asinf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASIN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_asin", ftype, BUILT_IN_ASIN, ++ "asin", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ASINL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_asinl", ftype, BUILT_IN_ASINL, ++ "asinl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATANF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_atanf", ftype, BUILT_IN_ATANF, ++ "atanf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATAN)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_atan", ftype, BUILT_IN_ATAN, ++ "atan", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_ATANL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_atanl", ftype, BUILT_IN_ATANL, ++ "atanl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOGF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_logf", ftype, BUILT_IN_LOGF, ++ "logf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log", ftype, BUILT_IN_LOG, ++ "log", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOGL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_logl", ftype, BUILT_IN_LOGL, ++ "logl", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10F)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log10f", ftype, BUILT_IN_LOG10F, ++ "log10f", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_log10", ftype, BUILT_IN_LOG10, ++ "log10", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10L)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_log10l", ftype, BUILT_IN_LOG10L, ++ "log10l", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXPF)) ++ { ++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_expf", ftype, BUILT_IN_EXPF, ++ "expf", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXP)) ++ { ++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); ++ local_define_builtin ("__builtin_exp", ftype, BUILT_IN_EXP, ++ "exp", ECF_NOTHROW | ECF_LEAF); ++ } ++ ++ if (!builtin_decl_explicit_p (BUILT_IN_EXPL)) ++ { ++ tree ftype = build_function_type_list (long_double_type_node, ++ long_double_type_node, ++ NULL_TREE); ++ local_define_builtin ("__builtin_expl", ftype, BUILT_IN_EXPL, ++ "expl", ECF_NOTHROW | ECF_LEAF); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-chars.cc +@@ -0,0 +1,170 @@ ++/* Lowering routines for all things related to STRINGs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP of a CHAR mode. */ ++ ++tree ++a68_get_char_skip_tree (void) ++{ ++ return build_int_cst (a68_char_type, ' '); ++} ++ ++/* Return the maximum valid character code that can be stored in a CHAR. */ ++tree ++a68_char_max (void) ++{ ++ /* 0x10FFFF is the maximum valid code point in Unicode. */ ++ return build_int_cst (a68_char_type, 0x10FFFF); ++} ++ ++/* Given an integral value, if it denotes a char code build the corresponding ++ CHAR. Otherwise raise a run-time error. */ ++ ++tree ++a68_char_repr (NODE_T *p, tree val) ++{ ++ /* UCS-4 (UTF-32) encodes the Unicode code points using the identity ++ function. Valid code points are in the ranges [U+0000,U+D7FF] and ++ [U+E000,U+10FFFF]. */ ++ ++ tree c = save_expr (val); ++ tree val_type = TREE_TYPE (val); ++ ++ /* (c >= 0 && c < 0xd800) */ ++ tree range1 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GE_EXPR, integer_type_node, ++ c, fold_convert (val_type, integer_zero_node)), ++ fold_build2 (LT_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0xd800))); ++ /* (c >= 0xe000 && c < 0x110000) */ ++ tree range2 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, ++ fold_build2 (GE_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0xe000)), ++ fold_build2 (LT_EXPR, integer_type_node, ++ c, build_int_cst (val_type, 0x110000))); ++ tree notvalid = fold_build1 (TRUTH_NOT_EXPR, ++ integer_type_node, ++ fold_build2 (TRUTH_OR_EXPR, integer_type_node, ++ range1, range2)); ++ ++ /* Call to the runtime run-time error handler. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_INVALIDCHARERROR, ++ void_type_node, 3, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (a68_int_type, c)); ++ ++ /* Return the REPR of the given integer value, or raise run-time error. */ ++ return fold_build2 (COMPOUND_EXPR, a68_char_type, ++ fold_build3 (COND_EXPR, integer_type_node, ++ notvalid, ++ call, integer_zero_node), ++ fold_convert (a68_char_type, c)); ++} ++ ++/* the ABS of a CHAR is an INT containing an unique value for each permissable ++ char value. */ ++ ++tree ++a68_char_abs (tree val) ++{ ++ return fold_convert (a68_int_type, val); ++} ++ ++/* Given two characters, build an expression that calculates whether A = B. */ ++ ++tree ++a68_char_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates whether A /= ++ B. */ ++ ++tree ++a68_char_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A < B. */ ++ ++tree ++a68_char_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_char_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A > B. */ ++ ++tree ++a68_char_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two characters, build an expression that calculates ++ whether A >= B. */ ++ ++tree ++a68_char_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-clauses.cc +@@ -0,0 +1,1480 @@ ++/* Lower clauses to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Given a serial_clause node P, return whether it performs dynamic stack ++ allocations. ++ ++ This function allocates for the fact that the bottom-up parser generates ++ successively nested serial clauses like ++ ++ SERIAL_CLAUSE ++ SERIAL_CLAUSE ++ ... ++ ++ the outer of which corresponds to a single serial clause in the source code, ++ but it is the inner ones annotated by the dsa pass. */ ++ ++static bool ++serial_clause_dsa (NODE_T *p) ++{ ++ NODE_T *s = NEXT (SUB (p)); ++ ++ for (s = p; SUB (s) && IS (s, SERIAL_CLAUSE); s = SUB (s)) ++ { ++ if (DYNAMIC_STACK_ALLOCS (s)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Lower one or more labels. ++ ++ label : defining identifier, colon symbol; ++ label, defining identifier, colon symbol; ++ ++ A label lowers into a LABEL_EXPR and the declaration of a LABEL_DECL in the ++ current block and bind. Lists of labels get returned in nested compound ++ expressions. */ ++ ++tree ++a68_lower_label (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree expr = NULL_TREE; ++ ++ if (IS (SUB (p), LABEL)) ++ expr = a68_lower_tree (SUB (p), ctx); ++ ++ NODE_T *defining_identifier; ++ ++ if (IS (SUB (p), DEFINING_IDENTIFIER)) ++ defining_identifier = SUB (p); ++ else ++ { ++ gcc_assert (IS (NEXT (SUB (p)), DEFINING_IDENTIFIER)); ++ defining_identifier = NEXT (SUB (p)); ++ } ++ ++ /* Create LABEL_DECL if necessary. */ ++ tree label_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (label_decl == NULL_TREE) ++ { ++ label_decl = build_decl (a68_get_node_location (defining_identifier), ++ LABEL_DECL, ++ a68_get_mangled_identifier (NSYMBOL (defining_identifier)), ++ void_type_node); ++ TAX_TREE_DECL (TAX (defining_identifier)) = label_decl; ++ } ++ ++ a68_add_decl (label_decl); ++ ++ /* Return the accummulated LABEL_EXPRs. */ ++ tree label_expr = build1 (LABEL_EXPR, void_type_node, label_decl); ++ if (expr) ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ void_type_node, ++ expr, label_expr); ++ else ++ return label_expr; ++} ++ ++/* Lower a labeled unit. ++ ++ labeled unit : label, unit. ++ ++ Lower the label, then the unit. Return them in a compound expression. */ ++ ++tree ++a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree label_expr = a68_lower_tree (SUB (p), ctx); ++ tree unit_expr = a68_lower_tree (NEXT (SUB (p)), ctx); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (unit_expr), ++ label_expr, unit_expr); ++} ++ ++/* Lower a completer. ++ ++ exit_symbol ++ ++ This handler replaces the last expression in stmt_list with a statement ++ assigning it to the clause result of the current serial clause, then jump to ++ the exit label of the current serial clause. Note that a completer is a ++ separator so stmt_list contains at least one expression at this point. Note ++ that a completer can only appear inside a serial clause. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_completer (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ a68_add_completer (); ++ return NULL_TREE; ++} ++ ++/* Lower an initialiser series. ++ ++ Parse tree: ++ ++ initialiser series : serial clause, semi symbol, declaration list; ++ initialiser series, declaration list; ++ initialiser series, semi symbol, unit; ++ initialiser series, semi symbol, labeled unit; ++ initialiser series, semi symbol, declaration list. ++ ++ GENERIC: ++ ++ Traverse subtree adding units and labels to STMT_LIST, and declarations to ++ BLOCK. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) ++ { ++ if (!IS (s, SEMI_SYMBOL)) ++ a68_add_stmt (a68_lower_tree (s, ctx)); ++ } ++ return NULL_TREE; ++} ++ ++/* Lower a serial clause. ++ ++ serial clause : labeled unit; ++ unit; ++ serial clause, semi symbol, unit; ++ serial clause, exit symbol, labeled unit; ++ serial clause, semi_symbol, declaration list; ++ initialiser series, semi symbol, unit; ++ initialiser series, semi symbol, labeled unit. ++ ++ Ranges: ++ ++ serial-clause ++ ------------- R1 ++ ++ See the function body to see the lowering actions. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), SERIAL_CLAUSE)) ++ { ++ /* Traverse down for side-effects. */ ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ if (IS (NEXT (SUB (p)), EXIT_SYMBOL)) ++ { ++ /* Traverse the completer for side-effects. This turns the last ++ expression in the current statements list into an assignment. */ ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ /* Now append the result of the labeled unit to the current ++ statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ /* Append the result of either the unit or the declarations list in ++ the current statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ } ++ else if (IS (SUB (p), INITIALISER_SERIES)) ++ { ++ /* Traverse down for side-effects. */ ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ /* Append the result of either the unit or the declarations list in the ++ current statements list. */ ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ /* Append the result of either the unit or labeled unit in the current ++ statements list. */ ++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a loop clause. ++ ++ loop clause : for part, from part, by part, to part, while part, alt do part; ++ for part, from part, by part, while part, alt do part; ++ for part, from part, while part, alt do part; ++ for part, by part, to part, while part, alt do part; ++ for part, by part, to part, while part, alt do part; ++ for part, by part, while part, alt do part; ++ for part, while part, alt do part; ++ for part, from part, by part, to part, alt do part; ++ for part, from part, by part, alt do part; ++ for part, from part, alt do part; ++ for part, by part, to part, alt do part; ++ for part, by part, alt do part; ++ for part, to part, alt do part, ++ for part, alt do part; ++ from part, by part, to part, while part, alt do part; ++ from part, by part, while aprt, alt do part; ++ from part, to part, while aprt, alt do part; ++ from part, while part, alt do part; ++ from part, by part, to part, alt do part; ++ from part, by part, alt do part; ++ from part, to part, alt do part; ++ from part, alt do part; ++ by part, to part, while part, alt do part; ++ by part, while part, alt do part; ++ by part, to part, alt do part; ++ by part, alt do part; ++ to part, while part, alt do part; ++ to part, alt do part; ++ while part, alt do part; ++ do part. ++*/ ++ ++tree ++a68_lower_loop_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ NODE_T *s = SUB (p); ++ bool while_part = false; ++ bool has_iterator = false; ++ tree iterator = NULL_TREE; ++ tree while_condition = NULL_TREE; ++ tree do_part = NULL_TREE; ++ tree from_part = NULL_TREE; ++ tree by_part = NULL_TREE; ++ tree to_part = NULL_TREE; ++ tree overflow = NULL_TREE; ++ NODE_T *iterator_defining_identifier = NO_NODE; ++ ++ if (IS (s, FOR_PART)) ++ { ++ /* Get the defining identifier. */ ++ iterator_defining_identifier = NEXT (SUB (s)); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, FROM_PART)) ++ { ++ /* Lower the unit. */ ++ from_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, BY_PART)) ++ { ++ /* Lower the unit. */ ++ by_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (IS (s, TO_PART)) ++ { ++ /* Lower the unit. */ ++ to_part = a68_lower_tree (NEXT (SUB (s)), ctx); ++ has_iterator = true; ++ FORWARD (s); ++ } ++ ++ if (has_iterator) ++ { ++ /* Introduce a range that spans until the end of the loop clause. */ ++ a68_push_range (M_VOID); ++ ++ /* Compute some defaults for not specified loop parts. Note that to_part ++ defaults to max_int or min_int depending on the signedness of ++ by_part. */ ++ if (from_part == NULL_TREE) ++ from_part = integer_one_node; ++ if (by_part == NULL_TREE) ++ by_part = integer_one_node; ++ if (to_part == NULL_TREE) ++ { ++ to_part = fold_build3 (COND_EXPR, ++ a68_bool_type, ++ fold_build2 (LT_EXPR, a68_int_type, by_part, ++ build_int_cst (a68_int_type, 0)), ++ a68_int_minval (a68_int_type), ++ a68_int_maxval (a68_int_type)); ++ } ++ ++ /* If the user has specified an explicit iterator in the form of a ++ defining-identifier in a for-part, use it as the name in the iterator ++ declaration and install the resulting declaration in the taxes table ++ in order for applied identifiers in the rest of the loop to find it. ++ Otherwise, the iterator is not directly accessible by the ++ programmer. */ ++ const char *iterator_name = (iterator_defining_identifier == NO_NODE ++ ? "iterator%" ++ : NSYMBOL (iterator_defining_identifier)); ++ iterator = a68_lower_tmpvar (iterator_name, a68_int_type, from_part); ++ if (iterator_defining_identifier != NO_NODE) ++ TAX_TREE_DECL (TAX (iterator_defining_identifier)) = iterator; ++ ++ /* The from_part and to_part expressions shall be evaluated once and once ++ only. The expression for from_part is evaluated only once in the ++ initialization expression for iterator% above, but we need to put ++ to_part in a temporary since it is used in the loop body. */ ++ to_part = a68_lower_tmpvar ("to_part%", TREE_TYPE (to_part), to_part); ++ ++ /* We need to detect overflow/underflow of the iterator. */ ++ overflow = a68_lower_tmpvar ("overflow%", boolean_type_node, ++ boolean_false_node); ++ } ++ ++ if (IS (s, WHILE_PART)) ++ { ++ while_part = true; ++ /* Introduce a range that spans until the end of the loop clause. */ ++ a68_push_range (M_VOID); ++ /* Process the enquiry clause, which yields a BOOL. */ ++ a68_push_stmt_list (M_BOOL); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ while_condition = a68_pop_stmt_list (); ++ FORWARD (s); ++ } ++ ++ /* DO part. */ ++ gcc_assert (IS (s, ALT_DO_PART) || IS (s, DO_PART)); ++ ++ /* Build the loop's body. */ ++ a68_push_range (NULL); ++ { ++ /* First lower the loop exit condition. */ ++ if (has_iterator || while_part) ++ { ++ tree exit_condition = NULL_TREE; ++ /* IF overflow OREL (by_part < 0 THEN iterator < to_part ELSE iterator > to_part) FI */ ++ if (has_iterator) ++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, boolean_type_node, ++ overflow, ++ fold_build3 (COND_EXPR, ++ a68_bool_type, ++ fold_build2 (LT_EXPR, a68_int_type, by_part, ++ build_int_cst (a68_int_type, 0)), ++ fold_build2 (LT_EXPR, a68_int_type, ++ iterator, to_part), ++ fold_build2 (GT_EXPR, a68_int_type, ++ iterator, to_part))); ++ /* NOT while_condition */ ++ if (while_part) ++ { ++ tree while_exit_condition = fold_build1 (TRUTH_NOT_EXPR, ++ a68_bool_type, ++ while_condition); ++ if (has_iterator) ++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, a68_bool_type, ++ exit_condition, while_exit_condition); ++ else ++ exit_condition = while_exit_condition; ++ } ++ ++ if (exit_condition != NULL_TREE) ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, exit_condition)); ++ } ++ ++ /* Serial clauses in DO .. OD do not yield any value. */ ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (M_VOID, dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ do_part = a68_pop_serial_clause_range (); ++ a68_add_stmt (do_part); ++ ++ if (has_iterator) ++ { ++ /* Increment the iterator by BY_PART. Detect overflow. ++ Given a + b = sum, overflows = ((~((a) ^ (b)) & ((a) ^ (sum))) < 0) ++ See OVERFLOW_SUM_SIGN in double-int.cc for an explanation ++ of this formula. ++ */ ++ tree type = TREE_TYPE (iterator); ++ tree a = iterator; ++ tree b = save_expr (by_part); ++ tree sum = fold_build2 (PLUS_EXPR, type, a, b); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, boolean_type_node, ++ overflow, ++ fold_build2 (LT_EXPR, boolean_type_node, ++ fold_build2 (BIT_AND_EXPR, type, ++ fold_build1 (BIT_NOT_EXPR, type, ++ fold_build2 (BIT_XOR_EXPR, type, ++ a, b)), ++ fold_build2 (BIT_XOR_EXPR, type, ++ a, sum)), ++ build_int_cst (a68_int_type, 0)))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, iterator, sum)); ++ } ++ } ++ tree loop_body = a68_pop_range (); ++ ++ /* Finally build the LOOP_EXPR and exit the introduced ranges. */ ++ tree loop_clause = fold_build1_loc (a68_get_node_location (p), ++ LOOP_EXPR, a68_void_type, loop_body); ++ if (while_part) ++ { ++ a68_add_stmt (loop_clause); ++ loop_clause = a68_pop_range (); ++ } ++ if (has_iterator) ++ { ++ a68_add_stmt (loop_clause); ++ loop_clause = a68_pop_range (); ++ } ++ ++ return loop_clause; ++} ++ ++/* Lower a conformity clause. ++ ++ conformity clause : case part, conformity in part, out part, esac symbol; ++ case part, conformity in part, esac symbol; ++ case part, conformity in part, conformity ouse part; ++ open part, conformity choice, choice, close symbol; ++ open part, conformity choice, close symbol; ++ open part, conformity choice, brief conformity ouse part. ++ ++ conformity choice : then bar symbol, specified unit list; ++ then bar symbol, specified unit. ++ ++ specified unit list : specified unit list, comma symbol, specified unit; ++ specified unit list, specified unit. ++ ++ specified unit : specifier, colon symbol, unit. ++ ++ specifier : open symbol, declarer, identifier, close symbol; ++ open symbol, declarer, close symbol; ++ open symbol, void symbol, close symbol. ++*/ ++ ++static void ++lower_unite_case_unit (NODE_T *p, ++ tree enquiry, MOID_T *enquiry_mode, ++ tree result, tree exit_label, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, SPECIFIER)) ++ { ++ MOID_T *spec_moid = MOID (NEXT (SUB (p))); ++ NODE_T *spec_identifier = NEXT (NEXT (SUB (p))); ++ NODE_T *spec_unit = NEXT (NEXT (p)); ++ const char *specifier_identifier_name = NULL; ++ if (IS (spec_identifier, IDENTIFIER)) ++ specifier_identifier_name = NSYMBOL (spec_identifier); ++ ++ tree overhead = a68_union_overhead (enquiry); ++ tree spec_value = NULL_TREE; ++ tree entry_selected = NULL_TREE; ++ if (IS_UNION (spec_moid)) ++ { ++ /* The spec_moid is an united mode, which must be unitable to the ++ enquiry_mode. */ ++ gcc_assert (a68_is_unitable (spec_moid, enquiry_mode, ++ SAFE_DEFLEXING)); ++ ++ /* Build the entry_selected expression. ++ ++ For each mode in spec_moid, determine the corresponding index ++ in enquiry_mode and add a check for it to the expression. */ ++ for (PACK_T *pack = PACK (spec_moid); pack != NO_PACK; FORWARD (pack)) ++ { ++ int index = a68_united_mode_index (enquiry_mode, MOID (pack)); ++ tree expr = fold_build2 (EQ_EXPR, ++ boolean_type_node, ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), index)); ++ if (entry_selected == NULL_TREE) ++ entry_selected = expr; ++ else ++ entry_selected = fold_build2 (TRUTH_OR_EXPR, ++ boolean_type_node, ++ entry_selected, ++ expr); ++ } ++ ++ /* The spec_value is an union of mode spec_moid, with the ++ overhead translated from enquiry_mode. */ ++ tree spec_overhead ++ = a68_union_translate_overhead (enquiry_mode, overhead, spec_moid); ++ a68_push_range (spec_moid); ++ spec_value = a68_lower_tmpvar ("spec_value%", ++ CTYPE (spec_moid), ++ a68_get_skip_tree (spec_moid)); ++ a68_add_stmt (a68_union_set_overhead (spec_value, spec_overhead)); ++ tree from_cunion = a68_union_cunion (enquiry); ++ tree to_cunion = a68_union_cunion (spec_value); ++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (to_cunion)), ++ to_cunion), ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (from_cunion)), ++ from_cunion), ++ size_in_bytes (TREE_TYPE (to_cunion)))); ++ a68_add_stmt (spec_value); ++ spec_value = a68_pop_range (); ++ } ++ else ++ { ++ int index = a68_united_mode_index (enquiry_mode, spec_moid); ++ spec_value = a68_union_alternative (enquiry, index); ++ entry_selected = fold_build2 (EQ_EXPR, ++ TREE_TYPE (overhead), ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), index)); ++ } ++ ++ a68_push_range (M_VOID); ++ { ++ /* If the enquiry value is ascribed to an identifier in the case ++ entry then create a suitable declaration and turn the identifier ++ into a defining identifier. */ ++ if (specifier_identifier_name) ++ { ++ tree united_value = a68_lower_tmpvar (specifier_identifier_name, ++ CTYPE (spec_moid), spec_value); ++ TAX_TREE_DECL (TAX (spec_identifier)) = united_value; ++ } ++ ++ /* Set result% to the lowering of the unit and jump to the end of ++ the enquiry clause. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_lower_tree (spec_unit, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, ++ void_type_node, ++ exit_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF index = overhead THEN process entry FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ entry_selected, ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ ++ FORWARD (p); /* Skip specifier. */ ++ FORWARD (p); /* Skip unit. */ ++ /* The unit is skipped in the for loop post-action. */ ++ } ++ else ++ lower_unite_case_unit (SUB (p), ++ enquiry, enquiry_mode, ++ result, exit_label, ctx); ++ } ++} ++ ++tree ++a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *conformity_clause_mode = MOID (p); ++ ++ /* CASE or OUSE. */ ++ NODE_T *s = SUB (p); ++ NODE_T *enquiry_node = NEXT (SUB (s)); ++ MOID_T *enquiry_mode = MOID (SUB (s)); ++ ++ /* Push a binding environment for the enquiry clause. */ ++ a68_push_range (conformity_clause_mode); ++ ++ /* Process the enquiry clause and put the resulting value in enquiry%. */ ++ a68_push_stmt_list (enquiry_mode); ++ (void) a68_lower_tree (enquiry_node, ctx); ++ tree enquiry = a68_lower_tmpvar ("enquiry%", ++ CTYPE (enquiry_mode), ++ a68_pop_stmt_list ()); ++ ++ /* Create a decl for result%. */ ++ tree result = a68_lower_tmpvar ("result%", ++ CTYPE (conformity_clause_mode), ++ a68_get_skip_tree (conformity_clause_mode)); ++ ++ /* Create an exit label. */ ++ tree exit_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("exit_label%"), ++ void_type_node); ++ DECL_CONTEXT (exit_label) = a68_range_context (); ++ a68_add_decl (exit_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); ++ ++ /* IN. */ ++ FORWARD (s); ++ lower_unite_case_unit (NEXT (SUB (s)), ++ enquiry, enquiry_mode, ++ result, exit_label, ctx); ++ ++ /* OUT. */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case OUT_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (conformity_clause_mode, dsa && local); ++ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_pop_serial_clause_range ())); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case ESAC_SYMBOL: ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_get_skip_tree (conformity_clause_mode))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ default: ++ /* Recurse. ++ ++ Note that the parser guarantees that the embedded CASE clause is a ++ conformity clause, and that its mode is the same than the containing ++ clause, but it doesn't annotate the mode in the tree node so we have ++ to do it here. */ ++ MOID (s) = conformity_clause_mode; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_lower_conformity_clause (s, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ ++ /* ESAC */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); ++ a68_add_stmt (result); ++ return a68_pop_range (); ++} ++ ++/* Lower a case clause. ++ ++ case clause : open part, case choice clause, choice, close symbol; ++ open part, case choice clause, close symbol; ++ open part, case shoice clause, brief ouse part; ++ case part, case in part, out part, esac symbol; ++ case part, case in part, esac symbol; ++ case part, case in part, case ouse part; ++*/ ++ ++static void ++lower_int_case_unit (NODE_T *p, ++ tree enquiry, MOID_T *enquiry_mode, ++ tree result, tree exit_label, int *count, ++ LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ a68_push_range (M_VOID); ++ { ++ /* Set result% to the lowering of the unit and jump to the end of ++ the enquiry clause. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_lower_tree (p, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, ++ void_type_node, ++ exit_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF count = enquiry THEN process entry FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ fold_build2 (EQ_EXPR, ++ TREE_TYPE (enquiry), ++ enquiry, ++ build_int_cst (TREE_TYPE (enquiry), *count)), ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ *count += 1; ++ } ++ else ++ lower_int_case_unit (SUB (p), ++ enquiry, enquiry_mode, ++ result, exit_label, count, ctx); ++ } ++} ++ ++tree ++a68_lower_case_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ MOID_T *case_clause_mode = MOID (p); ++ ++ /* CASE or OUSE */ ++ NODE_T *s = SUB (p); ++ NODE_T *enquiry_node = NEXT (SUB (s)); ++ MOID_T *enquiry_mode = M_INT; ++ ++ /* Push a bingding environment fo the case clause. */ ++ a68_push_range (case_clause_mode); ++ ++ /* Process the enquiry clause and put the result value in enquiry%. */ ++ a68_push_stmt_list (enquiry_mode); ++ (void) a68_lower_tree (enquiry_node, ctx); ++ tree enquiry = a68_lower_tmpvar ("enquiry%", ++ CTYPE (enquiry_mode), ++ a68_pop_stmt_list ()); ++ /* Create a decl for result%. */ ++ tree result = a68_lower_tmpvar ("result%", ++ CTYPE (case_clause_mode), ++ a68_get_skip_tree (case_clause_mode)); ++ ++ /* Create an exit label. */ ++ tree exit_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("exit_label%"), ++ void_type_node); ++ DECL_CONTEXT (exit_label) = a68_range_context (); ++ a68_add_decl (exit_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); ++ ++ /* IN. */ ++ FORWARD (s); ++ int count = 1; ++ lower_int_case_unit (NEXT (SUB (s)), ++ enquiry, enquiry_mode, ++ result, exit_label, &count, ctx); ++ ++ /* OUT. */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case OUT_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (case_clause_mode, dsa && local); ++ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), ++ result, a68_pop_serial_clause_range ())); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case ESAC_SYMBOL: ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_get_skip_tree (case_clause_mode))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ default: ++ /* Recurse. ++ ++ Note that the parser guarantees that the embedded CASE clause has the ++ same mode than the containing clause, but it doesn't annotate the OUSE ++ node with its mode so we have to do it here. */ ++ MOID (s) = case_clause_mode; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (result), ++ result, ++ a68_lower_case_clause (s, ctx))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); ++ break; ++ } ++ ++ /* ESAC */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); ++ a68_add_stmt (result); ++ return a68_pop_range (); ++} ++ ++/* Lower an enquiry clause. ++ ++ enquiry clause : unit; ++ enquiry clause, semi symbol, unit; ++ enquiry clause, comma symbol, unit; ++ initialiser series, semi symbol, unit. ++ ++ The units and declarations in the enquiry clause get lowered into ++ expressions and declaration nodes which are added to the current serial ++ clause. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to travese on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), UNIT)) ++ { ++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); ++ } ++ else if (IS (SUB (p), ENQUIRY_CLAUSE)) ++ { ++ (void) a68_lower_tree (SUB (p), ctx); ++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ else ++ { ++ gcc_assert (IS (SUB (p), INITIALISER_SERIES)); ++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); ++ (void) a68_lower_tree (SUB (p), ctx); ++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a conditional clause. ++ ++ conditional clause : open part, choice, choice, close symbol; ++ open part, choice, close symbol; ++ open part, choice, brief elif part; ++ if part, then part, else part, fi symbol; ++ if part, then part, elif part; ++ if part, then part, fi symbol. ++ ++ if part : if symbol, enquiry clause; ++ if symbol, initialiser series. ++ ++ then part : then symbol, serial clause; ++ then symbol, initialiser series. ++ ++ elif part : elif if part, then part, else part, fi symbol; ++ elif if part, then part, fi symbol; ++ elif if part, then part, elif part. ++ ++ else part : else symbol, serial clause; ++ else symbol, initialiser series. ++ ++ elif if part : elif symbol, enquiry clause. ++ ++ open part : open symbol, enquiry clause. ++ ++ choice : then bar symbol, serial clause; ++ then bar symbol initialiser series. ++ ++ brief elif part : else open part, choice, choice, close symbol; ++ else open part, choice, close symbol; ++ else open part, choice, bief elif part. ++ ++ else open part : else bar symbol, enquiry clause; ++ else bar symbol, initialiser series. ++ ++ Ranges: ++ ++ IF enquiry-clause THEN expr ELSE expr FI ++ --- R2 ---- R3 ++ ---------------------------------------- R1 ++ ++ The conditional clause lowers into: ++ ++ BIND_EXPR ++ BIND_EXPR_VARS -> delcls in enquiry clause. ++ BIND_EXPR_BODY ++ STMT_LIST ++ enquiry% = ...; ++ COND_EXPR (enquiry%, then_expr, else_expr) */ ++ ++tree ++a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree then_expr = NULL_TREE; ++ tree else_expr = NULL_TREE; ++ ++ MOID_T *conditional_clause_mode = MOID (p); ++ MOID_T *effective_rows_mode = NO_MOID; ++ bool is_rows = false; ++ ++ /* Push a binding environment for the conditional. */ ++ a68_push_range (is_rows ? effective_rows_mode : conditional_clause_mode); ++ ++ /* Create a decl for %enquiry and add it to the bind's declaration chain. */ ++ tree enquiry_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ a68_bool_type); ++ char *enquiry_name = xasprintf ("enquiry%d%%", DECL_UID(enquiry_decl)); ++ DECL_NAME (enquiry_decl) = get_identifier (enquiry_name); ++ free (enquiry_name); ++ DECL_INITIAL (enquiry_decl) = a68_get_skip_tree (M_BOOL); ++ a68_add_decl (enquiry_decl); ++ ++ /* Add a DECL_EXPR for enquiry_decl% */ ++ a68_add_stmt (fold_build1 (DECL_EXPR, a68_bool_type, enquiry_decl)); ++ ++ /* IF or ELIF part. */ ++ NODE_T *s = SUB (p); ++ ++ /* Process the enquiry clause. */ ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ ++ /* Assignation enquiry% = .. expr .. ++ Note that since no completers are allowed in enquiry clauses, ++ the last statement in the statement list has to be the unit ++ yielding the boolean value. */ ++ tree_stmt_iterator si = tsi_last (a68_range_stmt_list ()); ++ gcc_assert (TREE_TYPE (tsi_stmt (si)) != void_type_node); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, a68_bool_type, enquiry_decl, tsi_stmt (si))); ++ tsi_delink (&si); ++ ++ /* THEN part. */ ++ FORWARD (s); ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, ++ dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ then_expr = a68_pop_serial_clause_range (); ++ ++ /* ELSE part */ ++ FORWARD (s); ++ switch (ATTRIBUTE (s)) ++ { ++ case CHOICE: ++ case ELSE_PART: ++ { ++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); ++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; ++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, ++ dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); ++ else_expr = a68_pop_serial_clause_range (); ++ break; ++ } ++ case CLOSE_SYMBOL: ++ case FI_SYMBOL: ++ { ++ else_expr = a68_get_skip_tree (is_rows ? effective_rows_mode : conditional_clause_mode); ++ break; ++ } ++ default: ++ { ++ /* ELIF part. Recurse. */ ++ MOID (s) = conditional_clause_mode; ++ else_expr = a68_lower_conditional_clause (s, ctx); ++ } ++ } ++ ++ /* Build the conditional clause's COND_EXPR. */ ++ a68_add_stmt (fold_build3_loc (a68_get_node_location (p), ++ COND_EXPR, ++ CTYPE (is_rows ? effective_rows_mode : conditional_clause_mode), ++ enquiry_decl, ++ then_expr, else_expr)); ++ ++ return a68_pop_range (); ++} ++ ++/* Lower a comma separated list of zero, two, or more units ++ ++ unit list : unit list, comma symbol, unit; ++ unit list, unit. ++ ++ The list of units lowers into appending the units into the current ++ statements list. ++ ++ This function always returns NULL_TREE, so the traversing code shall always ++ be careful to traverse on these nodes explicitly and ignore the returned ++ value. */ ++ ++tree ++a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), UNIT_LIST)) ++ (void) a68_lower_tree (SUB (p), ctx); ++ ++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) ++ { ++ if (IS (s, UNIT)) ++ a68_add_stmt (a68_lower_tree (s, ctx)); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a collateral clause. ++ ++ collateral clause : open symbol, unit list, close symbol; ++ open symbol, close symbol; ++ begin symbol, unit list, end symbol; ++ begin symbol, end symbol. ++ ++ An empty collateral clause lowers into EMPTY. */ ++ ++tree ++a68_lower_collateral_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ bool clause_is_empty = (ATTRIBUTE (NEXT (SUB (p))) != UNIT_LIST); ++ MOID_T *mode = MOID (p); ++ ++ /* Lower the constituent units into a statements list. */ ++ a68_push_stmt_list (mode); ++ if (!clause_is_empty) ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree units = a68_pop_stmt_list (); ++ ++ /* The collateral clause lowers to different constructions depending on its ++ nature. */ ++ if (mode == M_VOID) ++ { ++ /* A VOID-collateral-clause lowers into a STMT_LIST containing all ++ the units. Since there cannot be declarations in a collateral ++ clause, there is no need to introduce a new binding scope. Note ++ that for now we are not really elaborating collaterally, but ++ sequentially. */ ++ return units; ++ } ++ else if (IS_FLEXETY_ROW (mode) || mode == M_STRING) ++ { ++ if (mode == M_STRING) ++ mode = M_FLEX_ROW_CHAR; ++ ++ /* This is a row display. It lowers to a multiple. */ ++ tree row_type = CTYPE (mode); ++ size_t dim = DIM (DEFLEX (mode)); ++ ++ if (clause_is_empty) ++ { ++ /* The clause is empty. This lowers into a multiple with DIM ++ dimension, each dimension having bounds of 1:0, and no ++ elements. */ ++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); ++ tree multiple_elements = build_int_cst (element_pointer_type, 0); ++ tree multiple_elements_size = size_zero_node; ++ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (size_t d = 0; d < dim; ++d) ++ { ++ lower_bounds[d] = ssize_one_node; ++ upper_bounds[d] = ssize_zero_node; ++ } ++ ++ tree row = a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ lower_bounds, upper_bounds); ++ TREE_CONSTANT (row) = 1; ++ free (lower_bounds); ++ free (upper_bounds); ++ return row; ++ } ++ ++ if (dim == 1) ++ { ++ /* Create a constructor with the multiple's elements. */ ++ vec *ve = NULL; ++ int num_units = 0; ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ { ++ tree unit = tsi_stmt (si); ++ if (A68_TYPE_HAS_ROWS_P (TREE_TYPE (unit))) ++ unit = a68_low_dup (unit); ++ CONSTRUCTOR_APPEND_ELT (ve, size_int (num_units), unit); ++ num_units += 1; ++ } ++ ++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); ++ tree array_constructor_type = build_array_type (TREE_TYPE (element_pointer_type), ++ build_index_type (size_int (num_units - 1))); ++ tree array_constructor = build_constructor (array_constructor_type, ve); ++ tree multiple_elements = fold_build1 (ADDR_EXPR, ++ element_pointer_type, ++ array_constructor); ++ tree elements_type = TREE_TYPE (element_pointer_type); ++ tree multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (num_units), ++ size_in_bytes (elements_type)); ++ tree lower_bound = fold_convert (ssizetype, size_one_node); ++ tree upper_bound = ssize_int (num_units); ++ tree row = a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ &lower_bound, &upper_bound); ++ return row; ++ } ++ else ++ { ++ gcc_assert (dim > 1); ++ ++ /* The units in the collateral clause are multiples, whose elements ++ are to be copied consecutively in a new multiple. The descriptor ++ of this multiple is constructed as follows: ++ ++ The first dimension is: ++ ++ - The lower bound is 1. ++ - The upper bound is the number of sub-multiples processed ++ here. ++ - The stride is the number of elements in each sub-multiple ++ multiplied by the element size. ++ ++ Subsequent dimensions are taken from the first inner multiple. ++ All descriptors of the inner multiples shall be equal. This is ++ checked at run-time, and in case of discrepancy a run-time error ++ is emitted. ++ ++ Let's see an example. Suppose in the stmt-list we have: ++ ++ (1, 2, 3) ++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {1, 2, 3}} ++ (4, 5, 6) ++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {4, 5, 6}} ++ ++ The resulting multiple would be: ++ ++ ((1, 2, 3), (4, 5, 6)) ++ {triplets: {{lb: 1 ub: 2 stride: 3S}, {lb: 1 ub: 3 stride: 1S}} ++ elements: {1, 2, 3, 4, 5, 6}} */ ++ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ size_t num_units = 0; ++ ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ num_units++; ++ ++ a68_push_range (mode); ++ ++ /* Process each sub-multiple. The first sub-multiple establishes the ++ bounds that all subsequent sub-multiples shall match. */ ++ tree multiple_elements = NULL_TREE; ++ tree multiple_elements_size = NULL_TREE; ++ tree sub_multiple = NULL_TREE; ++ // tree sub_multiple_lb = NULL_TREE; ++ // tree sub_multiple_ub = NULL_TREE; ++ // tree sub_multiple_stride = NULL_TREE; ++ tree index = a68_lower_tmpvar ("index%", sizetype, size_zero_node); ++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) ++ { ++ if (sub_multiple == NULL) ++ sub_multiple = a68_lower_tmpvar ("sub_multiple%", ++ TREE_TYPE (tsi_stmt (si)), ++ tsi_stmt (si)); ++ else ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (tsi_stmt (si)), ++ sub_multiple, ++ tsi_stmt (si))); ++ ++ if (si == tsi_start (units)) ++ { ++#if 0 ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ /* The first sub-multiple establishes the bounds that all ++ subsequent sub-multiples shall match. */ ++ sub_multiple_lb = a68_lower_tmpvar ("sub_multiple_lb%", ++ ssizetype, ++ a68_multiple_lower_bound (sub_multiple, ++ ssize_zero_node)); ++ sub_multiple_ub = a68_lower_tmpvar ("sub_multiple_ub%", ++ ssizetype, ++ a68_multiple_upper_bound (sub_multiple, ++ ssize_zero_node)); ++ sub_multiple_stride = a68_lower_tmpvar ("sub_multiple_stride%", ++ sizetype, ++ a68_multiple_stride (sub_multiple, ++ size_zero_node)); ++#endif ++ /* Now we have enough information to calculate the size of ++ the elements of the new multiple and allocate ++ multiple_elements. */ ++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); ++ tree elements_pointer_type = TREE_TYPE (sub_multiple_elements); ++ tree elements_type = TREE_TYPE (elements_pointer_type); ++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (num_units), ++ size_in_bytes (elements_type)); ++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ multiple_elements_size, ++ a68_multiple_num_elems (sub_multiple)); ++ multiple_elements = a68_lower_tmpvar ("multiple_elements%", ++ elements_pointer_type, ++ a68_lower_alloca (elements_type, ++ multiple_elements_size)); ++ ++ /* We can also now calculate the bounds of the new multiple. ++ The top-level triplet has lower bound 1, upper bound is ++ num_units, and stride is the number of elements in each ++ sub-multiple multiplied by the element size. Bounds for ++ the subsequent DIM-1 dimensions are copied from the ++ sub-multiple's descriptor. */ ++ lower_bounds[0] = fold_convert (ssizetype, size_one_node); ++ upper_bounds[0] = ssize_int (num_units); ++ for (size_t d = 1; d < dim; ++d) ++ { ++ lower_bounds[d] = a68_multiple_lower_bound (sub_multiple, ++ ssize_int (d - 1)); ++ upper_bounds[d] = a68_multiple_upper_bound (sub_multiple, ++ ssize_int (d - 1)); ++ } ++ } ++ else ++ { ++ /* Check bounds of this sub-multiple. Note that this is ++ always done at run-time, since the interpretation of a row ++ display depens on the target type, whether it is a row row ++ or a row of rows, for example. */ ++ // XXX use sub_multiple_lb, sub_multiple_ub and sub_multiple_stride ++ } ++ ++ /* Copy the elements of a copy of the sub-multiple in the ++ elements of the multiple. */ ++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); ++ // XXX should we make a copy of the sub_multiple_elements here? ++ // We DO need to iterate slicing, because of strides: if ++ // the sub_multiple is a trimmer. ++ sub_multiple_elements = sub_multiple_elements; ++ tree sub_multiple_elements_type = TREE_TYPE (sub_multiple_elements); ++ tree sub_multiple_num_elems = a68_multiple_num_elems (sub_multiple); ++ tree sub_multiple_element_type = TREE_TYPE (sub_multiple_elements_type); ++ tree sub_multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, ++ sub_multiple_num_elems, ++ size_in_bytes (sub_multiple_element_type)); ++ ++ /* memcpy (multiple_elements[index], sub_multiple_elements) */ ++ a68_add_stmt (a68_lower_memcpy (fold_build2 (POINTER_PLUS_EXPR, ++ sub_multiple_elements_type, ++ multiple_elements, ++ index), ++ sub_multiple_elements, ++ sub_multiple_elements_size)); ++ /* index += sub_multiple_elements_size */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, ++ index, ++ fold_build2 (PLUS_EXPR, sizetype, ++ index, sub_multiple_elements_size))); ++ } ++ ++ tree multiple = a68_lower_tmpvar ("multiple%", ++ row_type, ++ a68_row_value (row_type, dim, ++ multiple_elements, ++ multiple_elements_size, ++ lower_bounds, upper_bounds)); ++ free (lower_bounds); ++ free (upper_bounds); ++ ++ /* Yield the multiple. */ ++ a68_add_stmt (multiple); ++ return a68_pop_range (); ++ } ++ } ++ else if (IS_STRUCT (mode)) ++ { ++ /* This is a struct display. There are as many units in the clause as ++ fields in the struct type. Build a constructor with the values for ++ the fields. */ ++ vec *ve = NULL; ++ tree_stmt_iterator si = tsi_start (units); ++ for (tree f = TYPE_FIELDS (CTYPE (mode)); f; f = DECL_CHAIN (f)) ++ { ++ tree v = tsi_stmt (si); ++ gcc_assert (v != NULL_TREE); ++ v = a68_consolidate_ref (a68_type_moid (TREE_TYPE (f)) ,v); ++ CONSTRUCTOR_APPEND_ELT (ve, f, v); ++ tsi_next (&si); ++ } ++ tree ctor = build_constructor (CTYPE (mode), ve); ++ return ctor; ++ } ++ else ++ gcc_unreachable (); ++} ++ ++/* Lower a parallel clause. ++ ++ parallel clause : par symbol, collateral clause. ++*/ ++ ++tree ++a68_lower_parallel_clause (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* XXX For now treat like a VOID collateral clause. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower a closed clause. ++ ++ closed clause : open symbol, serial clause, close symbol; ++ open symbol, initialiser series, close symbol; ++ begin symbol, serial clause, end symbol; ++ begin symbol, initialiser series, end symbol; ++ ++ This function returns a BIND_EXPR. */ ++ ++tree ++a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Determine the mode of the closed clause. */ ++ MOID_T *clause_mode = MOID (p); ++ gcc_assert (clause_mode != NO_MOID); ++ gcc_assert (CTYPE (clause_mode) != NULL_TREE); ++ ++ /* Lower the enclosed serial clause. ++ ++ Note that a serial clause can be nested right inside another, and in that ++ case the range we are pushing corresponds to all of them, so we have to ++ keep this into account when determining whether using a DSA serial ++ range. */ ++ ++ bool dsa = serial_clause_dsa (NEXT (SUB (p))); ++ bool local = NON_LOCAL (NEXT (SUB (p))) == NO_TABLE; ++ a68_push_serial_clause_range (clause_mode, dsa && local); ++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_pop_serial_clause_range (); ++} ++ ++/* Lower an access clause. ++ ++ access clause : access symbol, joined module indication sequence, ++ enclosed clause. ++*/ ++ ++tree ++a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *controlled_clause = NEXT (NEXT_SUB (p)); ++ ++ a68_push_range (MOID (p)); ++ ++ /* Call preludes of all ACCESSed modules. */ ++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, MODULE_INDICANT)) ++ { ++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); ++ gcc_assert (tag != NO_TAG); ++ MOIF_T *moif = MOIF (tag); ++ gcc_assert (moif != NO_MOIF); ++ const char *prelude = PRELUDE (moif); ++ ++ tree prelude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (prelude), ++ build_function_type_list (void_type_node, ++ void_type_node, ++ NULL_TREE)); ++ DECL_EXTERNAL (prelude_decl) = 1; ++ TREE_PUBLIC (prelude_decl) = 1; ++ a68_add_decl (prelude_decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), ++ prelude_decl, 0)); ++ } ++ } ++ ++ /* Now the controlled clause. */ ++ tree controlled_clause_tree = a68_lower_tree (controlled_clause, ctx); ++ tree tmp = a68_lower_tmpvar ("accessed_clause_result%", ++ TREE_TYPE (controlled_clause_tree), ++ controlled_clause_tree); ++ ++ /* Call postludes of all ACCESSed modules. */ ++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, MODULE_INDICANT)) ++ { ++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); ++ gcc_assert (tag != NO_TAG); ++ MOIF_T *moif = MOIF (tag); ++ gcc_assert (moif != NO_MOIF); ++ const char *postlude = POSTLUDE (moif); ++ ++ tree postlude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (postlude), ++ build_function_type_list (void_type_node, ++ void_type_node, ++ NULL_TREE)); ++ DECL_EXTERNAL (postlude_decl) = 1; ++ TREE_PUBLIC (postlude_decl) = 1; ++ a68_add_decl (postlude_decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), ++ postlude_decl, 0)); ++ } ++ } ++ ++ a68_add_stmt (tmp); ++ return a68_pop_range (); ++} ++ ++tree a68_lower_access_clauses (NODE_T *p, LOW_CTX_T ctx); ++ ++/* Lower an enclosed clause. ++ ++ enclosed clause : parallel clause; closed clause; ++ collateral clause; conditional clause; ++ case clause; conformity clause; ++ loop clause ; access clause. ++*/ ++ ++tree ++a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-coercions.cc +@@ -0,0 +1,471 @@ ++/* Lower Algol 68 coercions to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower a dereferencing coercion. */ ++tree ++a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_low_deref (a68_lower_tree (SUB (p), ctx), SUB (p)); ++} ++ ++/* Lower an uniting coercion. */ ++ ++tree ++a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree coercend_tree = a68_lower_tree (SUB (p), ctx); ++ ++ if (MOID (p) == M_ROWS) ++ { ++ /* ROWS is a mode to which any ROW mode can be strongly coerced. It is ++ used as the mode of the second operand of the ELEMS, LWB and UPB ++ operators. The coercion is expressed in the parse tree via uniting. ++ This results in replacing the multiple with a "rows" value that ++ contains dimension and bounds information. */ ++ if (A68_ROW_TYPE_P (TREE_TYPE (coercend_tree))) ++ return a68_rows_value (coercend_tree); ++ else if (A68_UNION_TYPE_P (TREE_TYPE (coercend_tree))) ++ { ++ /* coercend_tree is expanded more than once below. */ ++ coercend_tree = save_expr (coercend_tree); ++ ++ /* Union of row modes. We should create a rows value for the currently ++ selected value. */ ++ a68_push_range (M_ROWS); ++ tree done_label = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ get_identifier ("done_label%"), ++ void_type_node); ++ DECL_CONTEXT (done_label) = a68_range_context (); ++ a68_add_decl (done_label); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (done_label), done_label)); ++ tree rows = a68_lower_tmpvar ("rows%", CTYPE (M_ROWS), ++ a68_get_skip_tree (M_ROWS)); ++ tree coercend_overhead = a68_union_overhead (coercend_tree); ++ tree overhead = a68_lower_tmpvar ("overhead%", TREE_TYPE (coercend_overhead), ++ coercend_overhead); ++ int field_index = 0; ++ for (tree field = TYPE_FIELDS (TREE_TYPE (a68_union_cunion (coercend_tree))); ++ field; ++ field = DECL_CHAIN (field)) ++ { ++ a68_push_range (M_VOID); ++ { ++ /* Set rows% to the rows value computed from coercend_tree.FIELD, ++ which is of some multiple type. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (M_ROWS), ++ rows, ++ a68_rows_value (a68_union_alternative (coercend_tree, ++ field_index)))); ++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, done_label)); ++ a68_add_stmt (a68_get_skip_tree (M_VOID)); ++ } ++ tree process_entry = a68_pop_range (); ++ ++ /* IF overhead = field_index THEN rows% = rows_from_multiple FI */ ++ a68_add_stmt (fold_build3 (COND_EXPR, ++ a68_void_type, ++ fold_build2 (EQ_EXPR, ++ TREE_TYPE (overhead), ++ overhead, ++ build_int_cst (TREE_TYPE (overhead), field_index)), ++ process_entry, ++ a68_get_skip_tree (M_VOID))); ++ field_index += 1; ++ } ++ ++ /* This should not be reached. Emit run-time error. */ ++ { ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_UNREACHABLE, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ a68_add_stmt (call); ++ } ++ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, done_label)); ++ a68_add_stmt (rows); ++ return a68_pop_range (); ++ } ++ else ++ { ++ debug_tree (TREE_TYPE (coercend_tree)); ++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (coercend_tree))); ++ return coercend_tree; ++ } ++ } ++ else if (IS_UNION (MOID (SUB (p)))) ++ { ++ /* We have to extract the value of the coercend union. */ ++ a68_push_range (MOID (p)); ++ { ++ MOID_T *coercend_mode = MOID (SUB (p)); ++ MOID_T *coercee_mode = MOID (p); ++ ++ /* Temporaries for the coercend's components. */ ++ tree coercend = a68_lower_tmpvar ("coercend%", TREE_TYPE (coercend_tree), coercend_tree); ++ tree cval = a68_union_cunion (coercend); ++ tree coverhead = a68_union_overhead (coercend); ++ tree coercend_value = a68_lower_tmpvar ("coercend_value%", TREE_TYPE (cval), cval); ++ tree coercend_overhead = a68_lower_tmpvar ("coercend_overhead%", sizetype, coverhead); ++ ++ /* Create the coercee. */ ++ tree coercee = a68_lower_tmpvar ("coercee%", ++ CTYPE (MOID (p)), ++ a68_get_skip_tree (MOID (p))); ++ tree coercee_value = a68_union_cunion (coercee); ++ ++ /* First translate overhead. This is crude, but it works. */ ++ int idx = 0; ++ tree coercee_overhead = size_zero_node; ++ while (EQUIVALENT (coercend_mode) != NO_MOID) ++ coercend_mode = EQUIVALENT (coercend_mode); ++ for (PACK_T *pack = PACK (coercend_mode); pack != NO_PACK; FORWARD (pack)) ++ { ++ coercee_overhead = fold_build3 (COND_EXPR, ++ sizetype, ++ fold_build2 (EQ_EXPR, ++ sizetype, ++ coercend_overhead, ++ size_int (idx)), ++ size_int (a68_united_mode_index (coercee_mode, MOID (pack))), ++ coercee_overhead); ++ idx++; ++ } ++ a68_add_stmt (a68_union_set_overhead (coercee, coercee_overhead)); ++ ++ /* Now copy over the value. This of course relies on the fact the ++ value of the coercend is smaller or of the same size than the value ++ of the built union. */ ++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (coercee_value)), ++ coercee_value), ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (coercend_value)), ++ coercend_value), ++ size_in_bytes (TREE_TYPE (coercend_value)))); ++ a68_add_stmt (coercee); ++ } ++ return a68_pop_range (); ++ } ++ else ++ { ++ /* Produce a united mode one of whose component modes is the mode of the ++ coercend. */ ++ return a68_union_value (MOID (p), coercend_tree, MOID (SUB (p))); ++ } ++} ++ ++/* Lower a rowing coercion. */ ++ ++tree ++a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *mode = MOID (p); ++ bool did_deref = false; ++ ++ /* If the primary is a REF, we need to dereference it to get the referred ++ value. */ ++ tree primary = NULL_TREE; ++ tree orig_primary = NULL_TREE; ++ MOID_T *target_mode = NO_MOID; ++ if (IS_REF (mode)) ++ { ++ gcc_assert (IS_REF (MOID (SUB (p)))); ++ did_deref = true; ++ target_mode = SUB (mode); ++ ++ a68_push_range (mode); ++ /* Note that we have to consolidate because we need a pointer to compare ++ to NIL below. */ ++ orig_primary = a68_lower_tmpvar ("orig_primary%", ++ CTYPE (MOID (SUB (p))), ++ a68_consolidate_ref (MOID (SUB (p)), ++ a68_lower_tree (SUB (p), ctx))); ++ primary = a68_low_deref (orig_primary, SUB (p)); ++ } ++ else ++ { ++ target_mode = mode; ++ primary = a68_lower_tree (SUB (p), ctx); ++ /* The primary gets expanded more than once below. */ ++ primary = save_expr (primary); ++ } ++ ++ /* Perform the rowing in the primary. */ ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree rowed_primary = NULL_TREE; ++ if (DIM (DEFLEX (target_mode)) >= 2) ++ { ++ /* []A -> [,]A */ ++ ++ /* First determine the number of dimensions of the resulting ++ multiple. */ ++ tree primary_dimensions = a68_multiple_dimensions (primary); ++ gcc_assert (TREE_CODE (primary_dimensions) == INTEGER_CST); ++ int dim = tree_to_shwi (primary_dimensions) + 1; ++ ++ /* Compute bounds. */ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ ++ lower_bounds[0] = ssize_one_node; ++ upper_bounds[0] = ssize_one_node; ++ for (int d = 1; d < dim; ++d) ++ { ++ lower_bounds[d] = a68_multiple_lower_bound (primary, ssize_int (d - 1)); ++ upper_bounds[d] = a68_multiple_upper_bound (primary, ssize_int (d - 1)); ++ } ++ ++ rowed_primary = a68_row_value (CTYPE (target_mode), dim, ++ a68_multiple_elements (primary), ++ a68_multiple_elements_size (primary), ++ lower_bounds, upper_bounds); ++ free (lower_bounds); ++ free (upper_bounds); ++ } ++ else ++ { ++ /* A -> []A */ ++ tree row_type = CTYPE (target_mode); ++ tree lower_bound = ssize_one_node; ++ tree upper_bound = ssize_one_node; ++ tree elements = (did_deref ++ ? orig_primary ++ : fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (primary)), ++ build_constructor_va (build_array_type (TREE_TYPE (primary), ++ build_index_type (size_zero_node)), ++ 1, size_zero_node, primary))); ++ tree elements_type = a68_row_elements_type (row_type); ++ tree elements_size = size_in_bytes (elements_type); ++ rowed_primary = a68_row_value (row_type, 1, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ } ++ ++ /* Build a ref if we rowed a ref. */ ++ if (did_deref) ++ { ++ tree pointer_type = build_pointer_type (TREE_TYPE (rowed_primary)); ++ rowed_primary = fold_build1 (ADDR_EXPR, pointer_type, rowed_primary); ++ /* Rowing NIL yields NIL. */ ++ rowed_primary = fold_build3_loc (a68_get_node_location (p), ++ COND_EXPR, ++ pointer_type, ++ fold_build2 (EQ_EXPR, ++ pointer_type, ++ fold_convert (pointer_type, orig_primary), ++ build_int_cst (pointer_type, 0)), ++ build_int_cst (pointer_type, 0), ++ rowed_primary); ++ a68_add_stmt (rowed_primary); ++ rowed_primary = a68_pop_range (); ++ } ++ ++ return rowed_primary; ++} ++ ++/* Lower a widening coercion. ++ ++ Widening allows the following conversions of mode: ++ ++ LONGSETY INT to LONGSETY REAL ++ LONGSETY REAL to LONGSETY COMPL ++ LONGSETY BITS to []BOOL ++ LONGSETY BYTES to []CHAR */ ++ ++tree ++a68_lower_widening (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (MOID (p) == M_REAL ++ || MOID (p) == M_LONG_REAL ++ || MOID (p) == M_LONG_LONG_REAL) ++ { ++ return convert_to_real (CTYPE (MOID (p)), a68_lower_tree (SUB (p), ctx)); ++ } ++ if (MOID (p) == M_COMPLEX ++ || MOID (p) == M_LONG_COMPLEX ++ || MOID (p) == M_LONG_LONG_COMPLEX) ++ { ++ return a68_complex_widen_from_real (MOID (p), ++ a68_lower_tree (SUB (p), ctx)); ++ } ++ else if (MOID (p) == M_ROW_BOOL) ++ { ++ /* Widen a LONGSETY BITS to a row of BOOLs. */ ++ tree coercend = a68_lower_tree (SUB (p), ctx); ++ tree coercend_type = TREE_TYPE (coercend); ++ HOST_WIDE_INT bits_size = int_size_in_bytes (coercend_type); ++ gcc_assert (bits_size != -1); ++ bits_size = bits_size * 8; ++ ++ tree pointer_to_bool_type = build_pointer_type (a68_bool_type); ++ a68_push_range (M_ROW_BOOL); ++ /* First allocate space for the elements. */ ++ tree elements = a68_lower_tmpvar ("elements%", ++ pointer_to_bool_type, ++ a68_lower_alloca (a68_bool_type, ++ fold_build2 (MULT_EXPR, ++ sizetype, ++ size_int (bits_size), ++ size_in_bytes (a68_bool_type)))); ++ ++ /* Set the elements, each element is a BOOL which is TRUE if the ++ corresponding bit in the coercend is set, FALSE otherwise. */ ++ tree coercend_one_node = build_int_cst (coercend_type, 1); ++ coercend = save_expr (coercend); ++ for (HOST_WIDE_INT bit = 0; bit < bits_size; ++bit) ++ { ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ size_int (bit), size_in_bytes (a68_bool_type)); ++ tree bit_set = fold_convert (a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, coercend_type, ++ fold_build2 (RSHIFT_EXPR, coercend_type, ++ coercend, ++ build_int_cst (coercend_type, ++ bits_size - 1 - bit)), ++ coercend_one_node)); ++ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ a68_bool_type, ++ fold_build2 (MEM_REF, ++ a68_bool_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ pointer_to_bool_type, ++ elements, ++ offset), ++ fold_convert (pointer_to_bool_type, ++ integer_zero_node)), ++ bit_set)); ++ } ++ ++ /* Create multiple. */ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = ssize_int (bits_size); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (bits_size), ++ size_in_bytes (a68_bool_type)); ++ tree multiple = a68_row_value (CTYPE (M_ROW_BOOL), 1 /* dim */, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ a68_add_stmt (multiple); ++ return a68_pop_range (); ++ } ++ else ++ { ++ fatal_error (a68_get_node_location (p), ++ "cannot do widening from %s to %s", ++ a68_moid_to_string (MOID (SUB (p)), MOID_ERROR_WIDTH, SUB (p)), ++ a68_moid_to_string (MOID (p), MOID_ERROR_WIDTH, p)); ++ gcc_unreachable (); ++ } ++} ++ ++/* Lower a voiding coercion. ++ ++ The voiding lowers into a compound expression with the voided expression ++ (for side-effects) and returns EMPTY. */ ++ ++tree ++a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ a68_void_type, ++ a68_lower_tree (SUB (p), ctx), ++ a68_get_empty ()); ++} ++ ++/* Lower a proceduring coercion. ++ ++ proceduring : jump. ++ ++ In the Revised language only jump statements can be procedured. The ++ coercion results in a new function whose body is the jump instruction. */ ++ ++tree ++a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree jump = a68_lower_tree (SUB (p), ctx); ++ ++ tree procedured_goto = a68_make_anonymous_routine_decl (MOID (p)); ++ a68_add_decl (procedured_goto); ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (procedured_goto), ++ procedured_goto)); ++ announce_function (procedured_goto); ++ ++ a68_push_function_range (procedured_goto, CTYPE (SUB (MOID (p)))); ++ a68_pop_function_range (jump); ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (procedured_goto)), ++ procedured_goto); ++} ++ ++/* Lower a deproceduring coercion. ++ The deproceduring lowers into a call expression. */ ++ ++tree ++a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree func = a68_lower_tree (SUB (p), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (func))) ++ { ++ if (TREE_CODE (func) == ADDR_EXPR) ++ func = TREE_OPERAND (func, 0); ++ else ++ func = fold_build1 (INDIRECT_REF, ++ TREE_TYPE (TREE_TYPE (func)), ++ func); ++ } ++ ++ return build_call_expr_loc (a68_get_node_location (p), func, 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-complex.cc +@@ -0,0 +1,141 @@ ++/* Lowering routines for all things related to COMPL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Build a new COMPL value with real part RE and imaginary part IM, of mode ++ MODE. */ ++ ++tree ++a68_complex_i (MOID_T *mode, tree re, tree im) ++{ ++ tree compl_type = CTYPE (mode); ++ ++ tree re_field = TYPE_FIELDS (compl_type); ++ tree im_field = TREE_CHAIN (re_field); ++ return build_constructor_va (CTYPE (mode), 2, ++ re_field, re, ++ im_field, im); ++} ++ ++/* Given a COMPL value Z, get its real part. */ ++ ++tree ++a68_complex_re (tree z) ++{ ++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (re_field), ++ z, re_field, NULL_TREE); ++} ++ ++tree ++a68_complex_im (tree z) ++{ ++ tree im_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (z))); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (im_field), ++ z, im_field, NULL_TREE); ++} ++ ++/* Return the conjugate of the given complex Z of mode MODE. */ ++ ++tree ++a68_complex_conj (MOID_T *mode, tree z) ++{ ++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); ++ tree complex_type = build_complex_type (TREE_TYPE (re_field), false /* named */); ++ ++ z = save_expr (z); ++ tree complex = fold_build2 (COMPLEX_EXPR, complex_type, ++ a68_complex_re (z), a68_complex_im (z)); ++ tree conj = fold_build1 (CONJ_EXPR, TREE_TYPE (complex), complex); ++ ++ return a68_complex_i (mode, ++ fold_build1 (REALPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj), ++ fold_build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj)); ++} ++ ++/* Widen a real R to a complex of mode MODE. */ ++ ++tree ++a68_complex_widen_from_real (MOID_T *mode, tree r) ++{ ++ tree compl_type = CTYPE (mode); ++ gcc_assert (compl_type != NULL_TREE); ++ ++ /* Sanity check. */ ++ if (mode == M_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_real_type); ++ else if (mode == M_LONG_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_long_real_type); ++ else if (mode == M_LONG_LONG_COMPLEX) ++ gcc_assert (TREE_TYPE (r) == a68_long_long_real_type); ++ else ++ gcc_unreachable (); ++ ++ a68_push_range (mode); ++ tree res = a68_lower_tmpvar ("compl%", compl_type, ++ a68_get_skip_tree (mode)); ++ ++ /* Look for the "re" field. */ ++ tree field_id = a68_get_mangled_identifier ("re"); ++ tree field = NULL_TREE; ++ for (tree f = TYPE_FIELDS (compl_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field = f; ++ break; ++ } ++ } ++ gcc_assert (field != NULL_TREE); ++ ++ /* Set it to the given real value. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (r), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field), ++ res, field, ++ NULL_TREE), ++ r)); ++ a68_add_stmt (res); ++ return a68_pop_range (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-decls.cc +@@ -0,0 +1,696 @@ ++/* Lower mode, identity and variable declarations to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower one or more mode declarations. ++ ++ mode declaration : mode symbol, defining indicant, ++ equals symbol, declarer; ++ mode symbol, defining indicant, ++ equals symbol, void symbol; ++ mode declaration, comma symbol, ++ defining indicant, equals symbol, declarer; ++ mode declaration, comma symbol, ++ defining indicant, equals symbol, void symbol. ++ ++ Each mode declaration lowers into a TYPE_DECL, which are chained in the ++ current block. This function returns void_node. ++ ++ Note that the defining indicant is already annotated with the declared mode ++ so there is no need to go hunting for the declarer in the subtree. */ ++ ++tree ++a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *defining_indicant = NO_NODE; ++ ++ if (IS (SUB (p), MODE_DECLARATION)) ++ { ++ a68_lower_tree (SUB (p), ctx); ++ defining_indicant = NEXT (NEXT (SUB (p))); ++ } ++ else ++ { ++ gcc_assert (IS (SUB (p), MODE_SYMBOL)); ++ defining_indicant = NEXT (SUB (p)); ++ } ++ ++ /* Create a TYPE_DECL declaration for the defined mode and chain it in the ++ current block. */ ++ tree ctype = CTYPE (MOID (defining_indicant)); ++ tree decl_name = a68_get_mangled_indicant (NSYMBOL (defining_indicant), ++ ctx.module_definition_name); ++ tree decl = build_decl (a68_get_node_location (p), ++ TYPE_DECL, decl_name, ctype); ++ SET_DECL_ASSEMBLER_NAME (decl, decl_name); ++ TREE_PUBLIC (decl) = 1; ++ TYPE_CONTEXT (ctype) = DECL_CONTEXT (decl); ++ TYPE_NAME (ctype) = decl; ++ TYPE_STUB_DECL (ctype) = decl; ++ a68_add_decl (decl); ++ ++ return void_node; ++} ++ ++/* Lower one or more variable declarations. ++ ++ variable declaration : qualifier, declarer, defining identifier, ++ assign symbol, unit; ++ qualifier, declarer, defining identiifer; ++ qualifier, declarer, defining identifier; ++ declarer, defining identifier, assign symbol, unit; ++ declarer, defining identifier; ++ variable declaration, comma symbol, ++ defining identifier, assign symbol, unit; ++ variable declaration, comma symbol, ++ defining identifier; ++ ++ Each variable declaration lowers into a VAR_DECL, which are chained in the ++ current block. This function also returns an expression with code to ++ initialize the variable in case there is an initializer. ++ ++ If the variable declaration implies a LOC generator then the VAR_DECL for REF ++ AMODE declares a value of type CTYPE (AMODE). This is an optimization in ++ order to avoid indirect addressing. If the variable declaration implies a ++ HEAP generator, however, then the VAR_DECL declares a value of type pointer ++ to CTYPE (AMODE0. In this later case no optimization is possible and it has ++ exactly the same effect than an identity declaration `REF AMODE ++ defining_identifier = HEAP AMODE'. ++ ++ Note that the defining identifier is annotated with its mode, so there is no ++ need to go hunting for the declarer in the subtree. */ ++ ++tree ++a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *defining_identifier, *unit; ++ NODE_T *declarer = NO_NODE; ++ ++ tree sub_expr = NULL_TREE; ++ ++ if (IS (SUB (p), VARIABLE_DECLARATION)) ++ { ++ LOW_CTX_T new_ctx = ctx; ++ new_ctx.declarer = &declarer; ++ sub_expr = a68_lower_tree (SUB (p), new_ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), QUALIFIER)) ++ { ++ /* The qualifier determines what kind of generator is used in the ++ variable declaration. This is already annotated in the tax entry for ++ the definining identifier. */ ++ declarer = NEXT (SUB (p)); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), DECLARER)) ++ { ++ declarer = SUB (p); ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ /* Communicate declarer upward. */ ++ if (ctx.declarer != NULL) ++ *ctx.declarer = declarer; ++ ++ /* See if this variable declaration features an initializing unit. */ ++ if (NEXT (defining_identifier) != NO_NODE) ++ { ++ gcc_assert (NEXT (defining_identifier) ++ && IS (NEXT (defining_identifier), ASSIGN_SYMBOL) ++ && NEXT (NEXT (defining_identifier))); ++ unit = NEXT (NEXT (defining_identifier)); ++ } ++ else ++ unit = NO_NODE; ++ ++ /* If not done already by an applied identifier in lower_identifier, create a ++ declaration for the defined entity and chain it in the current block. The ++ declaration has an initial value of SKIP. */ ++ tree var_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (var_decl == NULL_TREE) ++ { ++ var_decl = a68_make_variable_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = var_decl; ++ } ++ ++ /* If the variable declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, var_decl); ++ else ++ a68_add_decl (var_decl); ++ ++ /* Add a decl_expr in the current range. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (var_decl), ++ var_decl)); ++ ++ tree expr = NULL_TREE; ++ ++ /* Allocate memory for the declared variables. ++ ++ This is done differently depending on the sample generator used in the ++ variable declaration, be it explicit or the default LOC. ++ ++ If the LOC generator is used and the value has no rows, it means it ++ doesnt' need a dynamic part and the var_decl created above is not a ++ pointer. So the memory has been allocated already and there is nothing ++ else to do at this point. ++ ++ If the HEAP generator is used, or if the generated value has rows, it ++ means the var_decl created above is a pointer. We need to run a generator ++ to get the memory with descriptors filled in. Note that we cannot set the ++ pointer as the initial of the var_decl because the bouns in the actual ++ declarer shall be elaborated at the point of the code where the ++ declaration appears, not at the beginning of its reach. Note that the ++ mode of the declarer will be always a REF, since this is a varaible ++ declaration: the referred mode is what we pass to the a68_low_generator. ++ ++ If the STATIC generator is used, the var_decl created above is not a ++ pointer. The static part of the value has been already allocated, and if ++ the value needs a dynamic part (i.e. if it has rows) then it is allocated ++ using the heap. Note how we allocate the whole value (including the ++ static part) and then we copy if over the var_decl. */ ++ ++ if (HEAP (TAX (defining_identifier)) == STATIC_SYMBOL) ++ { ++ if (HAS_ROWS (SUB (MOID (defining_identifier)))) ++ { ++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), ++ var_decl, ++ fold_build1 (INDIRECT_REF, ++ TREE_TYPE (var_decl), ++ a68_low_generator (declarer, ++ SUB (MOID (declarer)), ++ true /* heap */, ++ ctx))); ++ } ++ } ++ else ++ { ++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; ++ if (heap || HAS_ROWS (SUB (MOID (defining_identifier)))) ++ { ++ gcc_assert(IS_REF (MOID (declarer))); ++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), ++ var_decl, ++ a68_low_generator (declarer, ++ SUB (MOID (declarer)), ++ heap, ctx)); ++ } ++ } ++ ++ if (unit != NO_NODE) ++ { ++ tree rhs = a68_lower_tree (unit, ctx); ++ tree assignation = a68_low_assignation (p, ++ var_decl, MOID (defining_identifier), ++ rhs, MOID (unit)); ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (assignation), ++ expr, assignation); ++ else ++ expr = assignation; ++ } ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_expr != NULL_TREE) ++ { ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (var_decl), ++ sub_expr, ++ expr); ++ else ++ expr = sub_expr; ++ } ++ ++ return expr; ++} ++ ++/* Lower one or more identity declarations. ++ ++ identity declaration : declarer, defining identifier, ++ equals symbol, unit; ++ identity declaration, comma symbol, ++ defining identifier, equals symbol, unit; ++ ++ Each identity declaration lowers into a declaration. ++ ++ VAR_DECL with both TREE_CONSTANT and TREE_READONLY set. Note that we cannot ++ use CONST_DECL because of two reasons. First, CONST_DECL only works for ++ scalar modes. Second, since Algol 68 allows usage of identifiers before ++ they get declared, each declaration adds a declaration with a SKIP initial ++ value, and also an assignation of the value at the declaration point. This ++ function also returns an expression with code to initialize the declared ++ constant. */ ++ ++tree ++a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree unit_tree = NULL_TREE; ++ tree sub_expr = NULL_TREE; ++ ++ /* Note that the formal declarer in the construct is not used. This is ++ because it is already reflected in the mode of the identity ++ declaration. */ ++ ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), IDENTITY_DECLARATION)) ++ { ++ sub_expr = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), DECLARER)) ++ { ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ NODE_T *unit = NEXT (NEXT (defining_identifier)); ++ ++ /* If not done already by an applied identifier in lower_identifier, create a ++ declaration for the defined entity and chain it in the current block. The ++ declaration has an initial value of SKIP. */ ++ tree id_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (id_decl == NULL_TREE) ++ { ++ id_decl = a68_make_identity_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = id_decl; ++ } ++ ++ /* If the identity declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, id_decl); ++ else ++ a68_add_decl (id_decl); ++ ++ /* Prepare the DECL_EXPR. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (id_decl), ++ id_decl)); ++ ++ unit_tree = a68_lower_tree (unit, ctx); ++ unit_tree = a68_consolidate_ref (MOID (unit), unit_tree); ++ tree expr = a68_low_ascription (MOID (defining_identifier), ++ id_decl, unit_tree); ++ ++ /* If the ascribed value is constant, mark the declaration as constant. */ ++ TREE_CONSTANT (id_decl) = TREE_CONSTANT (unit_tree); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_expr != NULL_TREE) ++ { ++ if (expr != NULL_TREE) ++ expr = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (id_decl), ++ sub_expr, ++ expr); ++ else ++ expr = sub_expr; ++ } ++ ++ return expr; ++} ++ ++/* Lower a declarer. ++ ++ declarer : indicant; ++ longety, indicant; ++ shortety, indicant; ++ flex symbol, declarer; ++ flex symbol, bounds, declarer; ++ flex symbol, formal bounds, declarer; ++ bounds, declarer; ++ formal bounds, declarer; ++ ref symbol, declarer; ++ struct symbol, structure pack; ++ union symbol, union pack; ++ proc symbol, declarer; ++ proc symbol, formal declarers, declarer; ++ proc symbol, formal declarers, void symbol; ++ ++ ++ This handler lowes a DECLARER tree into an expression that evaluates to the ++ size of the actual declarer. Note that this is a self-contained handler and ++ it does traverse the sub-tree on its own. */ ++ ++tree ++a68_lower_declarer (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ ++/* Lower a declaration list. ++ ++ declaration list : mode declaration; ++ priority declaration; ++ brief operator declaration; ++ operator declaration; ++ identity declaration; ++ procedure declaration; ++ procedure variable declaration; ++ variable declaration; ++ environ name; ++ declaration list, comma symbol, declaration list; ++ ++ Process the subtree, which produces declarations associated with the current ++ context and which get added to the current block. The list of declarations ++ gets returned in nested compound expressions. */ ++ ++tree ++a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), DECLARATION_LIST)) ++ { ++ tree left = a68_lower_tree (SUB (p), ctx); ++ tree right = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ /* The trees `left' and `right' may be NULL_TREE if the declarations ++ under them didn't have an initializing expression. In that case, ++ replace them by nops which are removed at fold time. This is ugly, ++ but works. */ ++ if (left == NULL_TREE) ++ left = integer_zero_node; ++ if (right == NULL_TREE) ++ right = integer_zero_node; ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ void_type_node, ++ left, right); ++ } ++ else ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a procedure declaration. ++ ++ procedure declaration : proc symbol, defining identifier, assign symbol, routine text; ++ procedure declaration, comma symbol, ++ defining identifier, equals symbol, routine text. ++ ++ Each procedure declaration lowers into a declaration. */ ++ ++tree ++a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_func_decl = NULL_TREE; ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), PROCEDURE_DECLARATION)) ++ { ++ sub_func_decl = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), PROC_SYMBOL)) ++ { ++ defining_identifier = NEXT (SUB (p)); ++ } ++ else ++ gcc_unreachable (); ++ ++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); ++ ++ /* Lower the routine text to get a function decl. */ ++ ctx.proc_decl_identifier = defining_identifier; ++ ctx.proc_decl_operator = false; ++ tree func_decl = a68_lower_tree (routine_text, ctx); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_func_decl != NULL_TREE) ++ { ++ if (func_decl != NULL_TREE) ++ func_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (func_decl), ++ sub_func_decl, ++ func_decl); ++ else ++ func_decl = sub_func_decl; ++ } ++ ++ return func_decl; ++} ++ ++/* Lower a procedure variable declaration. ++ ++ procedure variable declaration ++ : proc symbol, defining identifier, assign symbol, routine text; ++ qualifier, proc symbol, defining identifier, assign symbol, routine text; ++ procedure variable declaration, comma symbol, defining identiier, assign symbol, routine text. ++ ++ This lowers into the declaration of a VAR_DECL which is a pointer to the ++ free standing routine yielded by the routine text. */ ++ ++tree ++a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_decl = NULL_TREE; ++ NODE_T *defining_identifier; ++ if (IS (SUB (p), PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ sub_decl = a68_lower_tree (SUB (p), ctx); ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ } ++ else if (IS (SUB (p), PROC_SYMBOL)) ++ defining_identifier = NEXT (SUB (p)); ++ else if (IS (SUB (p), QUALIFIER)) ++ /* The qualifier determines what kind of generator is used in the variable ++ declaration. This is already annotated in the tax entry for the ++ definining identifier. */ ++ defining_identifier = NEXT (NEXT (SUB (p))); ++ else ++ gcc_unreachable (); ++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); ++ ++ /* The routine text lowers into a pointer to function. */ ++ ctx.proc_decl_identifier = NO_NODE; ++ ctx.proc_decl_operator = false; ++ tree routine = a68_lower_tree (routine_text, ctx); ++ ++ /* Create a declaration for the proc variable, if that hasn't been done ++ already. */ ++ tree decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (decl == NULL_TREE) ++ { ++ decl = a68_make_variable_declaration_decl (defining_identifier, ++ ctx.module_definition_name); ++ TAX_TREE_DECL (TAX (defining_identifier)) = decl; ++ } ++ ++ /* If the variable declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, decl); ++ else ++ a68_add_decl (decl); ++ ++ /* Add a decl_expr in the current range. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (decl), ++ decl)); ++ /* Initialize. ++ ++ If the variable is heap allocated then the var_decl created above is a ++ pointer. We don't allocate the actual function on the heap, because the ++ scope of procedures is not global. */ ++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (decl), decl, ++ heap ? fold_build1 (ADDR_EXPR, TREE_TYPE (decl), ++ routine) : routine)); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_decl != NULL_TREE) ++ { ++ if (decl != NULL_TREE) ++ decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (decl), ++ sub_decl, ++ decl); ++ else ++ decl = sub_decl; ++ } ++ ++ return decl; ++} ++ ++/* Lower a priority declaration. ++ ++ This lowers to nothing. Operator priority is fully handled by the parser in ++ order to decide which operator declaration corresponds to each applied ++ operator. */ ++ ++tree ++a68_lower_priority_declaration (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return NULL_TREE; ++} ++ ++/* Lower a brief operator declaration. ++ ++ brief operator declaration ++ : op symbol, defining operator, equals symbol, routine text; ++ brief operator declaration, comma symbol, defining operator, equals symbol, routine text. ++ ++ The declarations low in a series of FUNCTION_DECLs, one per declared ++ operator. */ ++ ++tree ++a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_func_decl = NULL_TREE; ++ NODE_T *defining_operator; ++ ++ if (IS (SUB (p), BRIEF_OPERATOR_DECLARATION)) ++ { ++ sub_func_decl = a68_lower_tree (SUB (p), ctx); ++ defining_operator = NEXT (NEXT (SUB (p))); ++ } ++ else ++ defining_operator = NEXT (SUB (p)); ++ NODE_T *routine_text = NEXT (NEXT (defining_operator)); ++ ++ /* Lower the routine text to get a function decl. */ ++ ctx.proc_decl_identifier = defining_operator; ++ ctx.proc_decl_operator = true; ++ tree func_decl = a68_lower_tree (routine_text, ctx); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_func_decl != NULL_TREE) ++ { ++ if (func_decl != NULL_TREE) ++ func_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (func_decl), ++ sub_func_decl, ++ func_decl); ++ else ++ func_decl = sub_func_decl; ++ } ++ ++ return func_decl; ++} ++ ++/* Lower an operator declaration. ++ ++ operator declaration : operator plan, defining operator, equals symbol, unit; ++ operator declaration, comma symbol, defining operator, equals symbol, unit. ++ ++ Each operator declaration lowers into a declaration. */ ++ ++tree ++a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree sub_op_decl = NULL_TREE; ++ NODE_T *defining_operator; ++ ++ if (IS (SUB (p), OPERATOR_DECLARATION)) ++ { ++ sub_op_decl = a68_lower_tree (SUB (p), ctx); ++ defining_operator = NEXT (NEXT (SUB (p))); ++ } ++ else ++ defining_operator = NEXT (SUB (p)); ++ NODE_T *unit = NEXT (NEXT (defining_operator)); ++ ++ tree op_decl = TAX_TREE_DECL (TAX (defining_operator)); ++ if (op_decl == NULL_TREE) ++ { ++ op_decl = a68_make_identity_declaration_decl (defining_operator, ++ ctx.module_definition_name, ++ true /* indicant */); ++ TAX_TREE_DECL (TAX (defining_operator)) = op_decl; ++ } ++ ++ /* If the identity declaration is in a public range then add the declaration ++ to the publicized declarations list. Otherwise chain the declaration in ++ the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_operator)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, op_decl); ++ else ++ a68_add_decl (op_decl); ++ ++ /* Prepare the DECL_EXPR. */ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (op_decl), ++ op_decl)); ++ /* Initialize. */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (op_decl), op_decl, ++ a68_lower_tree (unit, ctx))); ++ ++ /* Tail in a compound expression with sub declarations, if any. */ ++ if (sub_op_decl != NULL_TREE) ++ { ++ if (op_decl != NULL_TREE) ++ op_decl = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (op_decl), ++ sub_op_decl, ++ op_decl); ++ else ++ op_decl = sub_op_decl; ++ } ++ ++ return op_decl; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-generator.cc +@@ -0,0 +1,533 @@ ++/* Lower generators. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++ ++typedef tree (*allocator_t) (tree, tree); ++ ++/* Lower to code that fill in BOUNDS and elements pointers in the given buffer ++ pointed by BUFFER at offset OFFSET according to the mode MODE, and evals to ++ BUFFER. */ ++ ++static tree ++fill_in_buffer (tree buffer, tree offset, tree_stmt_iterator *bounds, MOID_T *m, ++ allocator_t allocator) ++{ ++ tree filler = NULL_TREE; ++ tree type = CTYPE (m); ++ tree pointer_type = build_pointer_type (type); ++ ++ a68_push_stmt_list (M_VOID); ++ ++ if (m == M_INT || m == M_BOOL || m == M_CHAR || m == M_REAL || IS_REF (m)) ++ { ++ tree val_address = fold_build2 (POINTER_PLUS_EXPR, pointer_type, buffer, offset); ++ tree init_val = a68_get_skip_tree (m); ++ tree modify = fold_build2 (MODIFY_EXPR, ++ type, ++ fold_build1 (INDIRECT_REF, type, val_address), ++ init_val); ++ a68_add_stmt (modify); ++ } ++ else if (!HAS_ROWS (m)) ++ { ++ /* This mode has no rows. We can just fill in with zeroes, which ++ translates into SKIP values for all possibly contained types. */ ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ buffer, ++ integer_zero_node, ++ fold_convert (sizetype, size_in_bytes (CTYPE (m)))); ++ a68_add_stmt (call); ++ } ++ else if (m == M_STRING) ++ { ++ /* Strings are rows but handled especially as they are created empty and ++ don't feature bounds in the formal declarer. */ ++ ++ /* First the descriptor. */ ++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); ++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), ++ ssize_int (1))); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), ++ ssize_int (0))); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, stride_address), ++ size_in_bytes (a68_char_type))); ++ ++ /* The data is an empty string, i.e NULL. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), ++ elems_address), ++ build_int_cst (build_pointer_type (a68_char_type), 0))); ++ ++ /* The size of the elements is zero. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), ++ elems_size_address), ++ size_zero_node)); ++ } ++ else if (A68_ROW_TYPE_P (type)) ++ { ++ /* If the row mode is flexible we can deflex it now: these also must have ++ bounds specified for them, with the only exception of strings/flexible ++ rows of chars, which are handled above. Note we cannot use DEFLEXED ++ here because that contains the fully deflexed mode. For example, ++ DEFLEXED returns [][]INT for FLEX[]FLEX[]INT, and we want []FLEX[]INT ++ instead. */ ++ if (IS_FLEX (m)) ++ m = SUB (m); ++ ++ /* Consume two bounds from BOUNDS for each dimension and patch them at ++ their right offsets. Note that we have to process from upper ++ dimension to lower dimension so we can calculate the stride as we ++ go. */ ++ size_t dim = DIM (m); ++ ++ /* Collect lower and upper bounds and calculate the number of elements of ++ the multiple. */ ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree num_elems = NULL_TREE; ++ for (size_t i = 0; i < dim; ++i) ++ { ++ /* Note we have to convert the bounds from CTYPE(M_INT) to ++ ssizetype. */ ++ lower_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); ++ tsi_next (bounds); ++ upper_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); ++ tsi_next (bounds); ++ ++ tree dim_num_elems ++ = fold_build2 (PLUS_EXPR, sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i])), ++ size_one_node); ++ dim_num_elems = fold_build3 (COND_EXPR, ++ sizetype, ++ fold_build2 (LT_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i]), ++ size_zero_node, ++ dim_num_elems); ++ if (num_elems == NULL_TREE) ++ num_elems = dim_num_elems; ++ else ++ num_elems = fold_build2 (MULT_EXPR, sizetype, num_elems, dim_num_elems); ++ } ++ ++ /* Calculate strides. */ ++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); ++ a68_multiple_compute_strides (type, dim, lower_bounds, upper_bounds, strides); ++ ++ /* Now emit instructions to patch the bounds and strides. */ ++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); ++ for (size_t i = 0; i < dim; ++i) ++ { ++ /* Lower bound. */ ++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), ++ lower_bounds[i])); ++ /* Upper bound. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), ++ upper_bounds[i])); ++ /* Stride. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, stride_address), ++ strides[i])); ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ } ++ free (lower_bounds); ++ free (upper_bounds); ++ free (strides); ++ ++ /* Now allocate space for the elements. */ ++ MOID_T *elem_mode = SUB (m); ++ tree elem_size = fold_convert (sizetype, size_in_bytes (CTYPE (elem_mode))); ++ tree elems_size = save_expr (fold_build2 (MULT_EXPR, sizetype, elem_size, num_elems)); ++ tree elemsptr = (*allocator) (CTYPE (elem_mode), elems_size); ++ elemsptr = save_expr (elemsptr); ++ ++ /* And initialize them. */ ++ if (elem_mode == M_INT || elem_mode == M_BOOL || elem_mode == M_CHAR ++ || elem_mode == M_REAL || IS_REF (elem_mode)) ++ { ++ /* Memsetting the buffer with either zeroes or ones satisfies the ++ SKIP value for these modes. */ ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ elemsptr, ++ integer_zero_node, ++ elems_size); ++ a68_add_stmt (call); ++ } ++ else ++ { ++ /* Recurse in a loop to fill in elements. */ ++ a68_push_range (NULL); ++ tree num_elems_var = a68_lower_tmpvar ("numelems%", size_type_node, ++ num_elems); ++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); ++ tree elems_var = a68_lower_tmpvar ("elems%", TREE_TYPE (elemsptr), ++ elemsptr); ++ tree elem_offset = a68_lower_tmpvar ("elem_offset%", size_type_node, ++ size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, ++ size_type_node, ++ index, num_elems_var))); ++ a68_add_stmt (fill_in_buffer (elems_var, elem_offset, bounds, elem_mode, ++ allocator)); ++ /* Increase elem_offset */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, ++ elem_offset, ++ fold_build2 (PLUS_EXPR, sizetype, ++ elem_offset, elem_size))); ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ size_type_node, ++ index, size_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (a68_pop_range ()); ++ } ++ ++ /* Patch the elements% field. */ ++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ++ build_pointer_type (CTYPE (elem_mode)), elems_address), ++ elemsptr)); ++ /* Patch the elements_size% field. */ ++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); ++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, ++ sizetype, ++ elems_size_address), ++ elems_size)); ++ } ++ else if (A68_STRUCT_TYPE_P (type)) ++ { ++ /* Initialize the struct's fields in the allocated buffer. */ ++ tree base = a68_lower_tmpvar ("base%", TREE_TYPE (buffer), ++ fold_build2 (POINTER_PLUS_EXPR, ++ TREE_TYPE (buffer), ++ buffer, offset)); ++ PACK_T *field_pack = PACK (m); ++ for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) ++ { ++ gcc_assert (COMPLETE_TYPE_P (TREE_TYPE (field))); ++ // printf ("BYTE_POSITION\n"); ++ // debug_tree (byte_position (field)); ++ a68_add_stmt (fill_in_buffer (base, byte_position (field), ++ bounds, MOID (field_pack), allocator)); ++ FORWARD (field_pack); ++ } ++ } ++ else if (A68_UNION_TYPE_P (type)) ++ { ++ /* Union values are initialized with an overhead of (sizetype) -1, which ++ means it is not initialized. Note that row declarers in united modes ++ are formal declarers, so they never contribute bounds. */ ++ tree overhead_address ++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); ++ tree uninitialized = fold_convert (sizetype, build_minus_one_cst (ssizetype)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, sizetype, overhead_address), ++ uninitialized)); ++#if 0 ++ /* Set the rest of the union with zeroes. */ ++ tree value_address ++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), ++ buffer, ++ fold_build2 (PLUS_EXPR, sizetype, offset, size_in_bytes (sizetype))); ++ ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, ++ value_address, ++ integer_zero_node, ++ size_in_bytes (TREE_TYPE (value_field))); ++ a68_add_stmt (call); ++#endif ++ } ++ else ++ gcc_unreachable (); ++ ++ a68_add_stmt (buffer); ++ filler = a68_pop_stmt_list (); ++ TREE_TYPE (filler) = pointer_type; ++ return filler; ++} ++ ++/* Lower to code that generates storage for a value of mode M, using bounds ++ from BOUNDS. */ ++ ++static tree ++gen_mode (MOID_T *m, tree_stmt_iterator *bounds, allocator_t allocator) ++{ ++ /* Allocate space for the value and fill it. */ ++ tree buffer = (*allocator) (CTYPE (m), size_in_bytes (CTYPE (m))); ++ buffer = save_expr (buffer); ++ return fill_in_buffer (buffer, size_zero_node, bounds, m, allocator); ++} ++ ++/* Collect row bounds from BOUNDS. ++ Lower bounds are optional, and if not found they default to 1. */ ++ ++static void ++collect_bounds (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS_LIST)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, BOUND)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, UNIT)) ++ { ++ /* First the lower bound. */ ++ tree lower_bound; ++ if (NEXT (p) != NO_NODE && IS (NEXT (p), COLON_SYMBOL)) ++ { ++ lower_bound = a68_lower_tree (p, ctx); ++ p = NEXT_NEXT (p); ++ } ++ else ++ /* Default lower bound. */ ++ lower_bound = integer_one_node; ++ ++ /* Now the upper bound. */ ++ tree upper_bound = a68_lower_tree (p, ctx); ++ ++ /* See the comment for collect_declarer_bounds for an explanation for ++ the usage of save_expr here. */ ++ a68_add_stmt (save_expr (lower_bound)); ++ a68_add_stmt (save_expr (upper_bound)); ++ } ++ } ++} ++ ++/* Append all the bounds found in the given declarer in the current statements ++ list. */ ++ ++static void ++collect_declarer_bounds_1 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS)) ++ collect_bounds (SUB (p), ctx); ++ else if (IS (p, INDICANT) && IS_LITERALLY (p, "STRING")) ++ return; ++ else if (IS (p, INDICANT)) ++ { ++ if (TAX (p) != NO_TAG && HAS_ROWS (MOID (TAX (p)))) ++ /* Continue from definition at MODE A = .... */ ++ collect_declarer_bounds_1 (NEXT_NEXT (NODE (TAX (p))), ctx); ++ } ++ else if (IS (p, DECLARER) ++ && (IS_UNION (MOID (p)) || !HAS_ROWS (MOID (p)))) ++ return; ++ else ++ collect_declarer_bounds_1 (SUB (p), ctx); ++ } ++} ++ ++/* Given a declarer node, return a statements list with all the expressions of ++ the bounds within it. ++ ++ Note that the language rules mandates that the bounds expression shall be ++ evaluated just once even when they are used by several generators, such as ++ in ++ ++ [n +:= 1]real a, b; ++ ++ Therefore the expressions are saved in save_exprs and the statements list ++ is cached in the CDECL field of the parse tree node. */ ++ ++static tree ++collect_declarer_bounds (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (CDECL (p) == NULL_TREE) ++ { ++ a68_push_stmt_list (M_VOID); ++ collect_declarer_bounds_1 (SUB (p), ctx); ++ CDECL (p) = a68_pop_stmt_list (); ++ } ++ ++ return CDECL (p); ++} ++ ++/* Low the elaboration of a generator. ++ ++ The lowered code evaluates to a pointer. ++ ++ DECLARER is the actual declarer passed to the generator. ++ ++ MODE is the mode of the value to generate. ++ ++ HEAP is true if we are lowering a heap generator, false if we are lowering a ++ LOC generator. */ ++ ++tree ++a68_low_generator (NODE_T *declarer, ++ MOID_T *mode, ++ bool heap, LOW_CTX_T ctx) ++{ ++ /* If the declarer is a mode indicant which has a recursive definition then ++ we need to lower to a function which gets immediately called rather than ++ an expression, to handle the recursivity. In that case, though, we need ++ to always heap allocated memory for obvious reasons, which sucks, but such ++ is life. */ ++ ++ if (IS (SUB (declarer), INDICANT) && TAX (SUB (declarer)) != NO_TAG ++ && IS_RECURSIVE (TAX (SUB (declarer)))) ++ { ++ if (TAX_TREE_DECL (TAX (SUB (declarer))) != NULL_TREE) ++ { ++ /* This is a recursive mode indicant. Just call the function. */ ++ return save_expr (build_call_expr_loc (a68_get_node_location (SUB (declarer)), ++ TAX_TREE_DECL (TAX (SUB (declarer))), ++ 0)); ++ } ++ ++ tree ret_type = build_pointer_type (CTYPE (mode)); ++ tree func_decl = build_decl (a68_get_node_location (declarer), ++ FUNCTION_DECL, ++ NULL_TREE /* name, set below */, ++ build_function_type (ret_type, void_list_node)); ++ char *name = xasprintf ("genroutine%d", DECL_UID (func_decl)); ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); ++ free (name); ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ TREE_ADDRESSABLE (func_decl) = 1; ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ TREE_STATIC (func_decl) = 1; ++ TAX_TREE_DECL (TAX (SUB (declarer))) = func_decl; ++ ++ a68_add_decl (func_decl); ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (declarer), ++ DECL_EXPR, ++ TREE_TYPE (func_decl), ++ func_decl)); ++ announce_function (func_decl); ++ a68_push_function_range (func_decl, ret_type); ++ ++ /* Collect bounds from declarer. */ ++ tree bounds = collect_declarer_bounds (declarer, ctx); ++ ++ /* Allocate and initialize a memory buffer for a value of mode MODE with ++ bounds in BOUNDS. */ ++ tree_stmt_iterator bounds_iter = tsi_start (bounds); ++ tree gen = gen_mode (mode, &bounds_iter, a68_lower_malloc); ++ a68_pop_function_range (gen); ++ /* Avoid this generator function, which uses the global lexical ++ environment, to be reused in other contexts. */ ++ TAX_TREE_DECL (TAX (SUB (declarer))) = NULL_TREE; ++ return save_expr (build_call_expr_loc (a68_get_node_location (declarer), ++ func_decl, 0)); ++ } ++ else ++ { ++ /* Collect bounds from declarer. */ ++ tree bounds = collect_declarer_bounds (declarer, ctx); ++ ++ /* Allocate and initialize a memory buffer for a value of mode MODE with ++ bounds in BOUNDS. */ ++ tree_stmt_iterator bounds_iter = tsi_start (bounds); ++ tree gen = gen_mode (mode, &bounds_iter, ++ heap ? a68_lower_malloc : a68_lower_alloca); ++ return gen; ++ } ++} ++ ++/* Allocate storage for a value of mode M. ++ NBOUNDS is the number of bounds in BOUNDS. */ ++ ++tree ++a68_low_gen (MOID_T *m, size_t nbounds, tree *bounds, bool use_heap) ++{ ++ /* First collect bounds from BOUNDS into a statements list, which is what ++ gen_mode expects. */ ++ tree bounds_list = alloc_stmt_list (); ++ for (size_t i = 0; i < nbounds; ++i) ++ append_to_statement_list_force (bounds[i], &bounds_list); ++ allocator_t allocator = use_heap ? a68_lower_malloc : a68_lower_alloca; ++ ++ tree_stmt_iterator q = tsi_start (bounds_list); ++ tree ret = gen_mode (m, &q, allocator); ++ free_stmt_list (bounds_list); ++ return ret; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-ints.cc +@@ -0,0 +1,327 @@ ++/* Lowering routines for all things related to INT values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielind of SKIP for the given integral mode. */ ++ ++tree ++a68_get_int_skip_tree (MOID_T *m) ++{ ++ tree type; ++ ++ if (m == M_INT) ++ type = a68_int_type; ++ else if (m == M_LONG_INT) ++ type = a68_long_int_type; ++ else if (m == M_LONG_LONG_INT) ++ type = a68_long_long_int_type; ++ else if (m == M_SHORT_INT) ++ type = a68_short_int_type; ++ else if (m == M_SHORT_SHORT_INT) ++ type = a68_short_short_int_type; ++ else ++ gcc_unreachable (); ++ ++ return build_int_cst (type, 0); ++} ++ ++/* Given an integral type, build the maximum value expressable in that ++ type. */ ++ ++tree ++a68_int_maxval (tree type) ++{ ++ return fold_convert (type, TYPE_MAX_VALUE (type)); ++} ++ ++/* Given an integral type, build the minimum value expressable in that ++ type. */ ++ ++tree ++a68_int_minval (tree type) ++{ ++ return fold_convert (type, TYPE_MIN_VALUE (type)); ++} ++ ++/* Given an integral type, build an INT with the number of decimal digits ++ required to represent a value of that typ, not including sign. */ ++ ++tree ++a68_int_width (tree type) ++{ ++ /* Note that log10 (2) is ~ 0.3. ++ Thanks to Andrew Pinski for suggesting using this expression. */ ++ return fold_build2 (PLUS_EXPR, a68_int_type, ++ build_int_cst (a68_int_type, 1), ++ fold_build2 (TRUNC_DIV_EXPR, ++ a68_int_type, ++ fold_build2 (MULT_EXPR, a68_int_type, ++ build_int_cst (a68_int_type, TYPE_PRECISION (type)), ++ build_int_cst (a68_int_type, 3)), ++ build_int_cst (a68_int_type, 10))); ++} ++ ++/* Given an integer value VAL, return -1 if it is less than zero, 0 if it is ++ zero and +1 if it is bigger than zero. The built value is always of mode ++ M_INT. */ ++ ++tree ++a68_int_sign (tree val) ++{ ++ tree zero = build_int_cst (TREE_TYPE (val), 0); ++ return fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (EQ_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 0), ++ fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (GT_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 1), ++ build_int_cst (a68_int_type, -1))); ++} ++ ++/* Absolute value of an integer. */ ++ ++tree ++a68_int_abs (tree val) ++{ ++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); ++} ++ ++/* Build the integral value lengthened from the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. */ ++ ++tree ++a68_int_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ /* Lengthening can be done by just a cast. */ ++ return fold_convert (CTYPE (to_mode), val); ++} ++ ++/* Build the integral value that can be lengthened to the value of VAL, from ++ mode FROM_MODE to mode TO_MODE. ++ ++ If VAL cannot be represented in TO_MODE because it is bigger than the most ++ positive value representable in TO_MODE, then it is truncated to that value. ++ ++ Likewise, if VAL cannot be represented in TO_MODE because it is less than ++ the most negative value representable in TO_MODE, then it is truncated to ++ that value. */ ++ ++tree ++a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ tree most_positive_value = fold_convert (CTYPE (from_mode), ++ a68_int_maxval (CTYPE (to_mode))); ++ tree most_negative_value = fold_convert (CTYPE (from_mode), ++ a68_int_minval (CTYPE (to_mode))); ++ ++ val = save_expr (val); ++ most_positive_value = save_expr (most_positive_value); ++ most_negative_value = save_expr (most_negative_value); ++ return fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), ++ fold_convert (CTYPE (to_mode), most_positive_value), ++ fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), ++ fold_convert (CTYPE (to_mode), most_negative_value), ++ fold_convert (CTYPE (to_mode), val))); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ addition of A and B. */ ++ ++tree ++a68_int_plus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ subtraction of A by B. */ ++ ++tree ++a68_int_minus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ multiplication of A by B. */ ++ ++tree ++a68_int_mult (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates the ++ division of A by B. */ ++ ++tree ++a68_int_div (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, TRUNC_DIV_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A = B. */ ++ ++tree ++a68_int_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A /= B. */ ++ ++tree ++a68_int_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A < B. */ ++ ++tree ++a68_int_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_int_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A > B. */ ++ ++tree ++a68_int_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build an expression that calculates ++ whether A >= B. */ ++ ++tree ++a68_int_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two integral values of mode M, build and expression that calculates the ++ modulus as specified by the Revised Report: ++ ++ OP MOD = (L INT a, b) L INT: ++ (INT r = a - a % b * b; r < 0 | r + ABS b | r) ++*/ ++ ++tree ++a68_int_mod (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ a = save_expr (a); ++ b = save_expr (b); ++ tree r = a68_int_minus (m, a, a68_int_mult (m, a68_int_div (m, a, b), b)); ++ ++ r = save_expr (r); ++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), ++ a68_int_lt (r, build_int_cst (CTYPE (m), 0)), ++ a68_int_plus (m, r, a68_int_abs (b)), ++ r); ++} ++ ++/* Given two integral values values, the first of mode M an the second of mode ++ INT, build an expression that calculates the exponentiation of A by B, as ++ specified by the Revised Report: ++ ++ OP ** = (L INT a, INT b) L INT: ++ (b >= 0 | L INT p := L 1; TO b DO p := p * a OD; p) ++*/ ++ ++tree ++a68_int_pow (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ tree zero = build_int_cst (CTYPE (m), 0); ++ tree one = build_int_cst (CTYPE (m), 1); ++ ++ a = save_expr (a); ++ b = save_expr (fold_convert (CTYPE (m), b)); ++ ++ a68_push_range (m); ++ tree index = a68_lower_tmpvar ("index%", CTYPE (m), zero); ++ tree p = a68_lower_tmpvar ("p%", CTYPE (m), one); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (index == b) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, CTYPE (m), ++ index, b))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (m), ++ p, a68_int_mult (m, p, a))); ++ ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, CTYPE (m), ++ index, one)); ++ } ++ tree loop_body = a68_pop_range (); ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (p); ++ tree calculate_p = a68_pop_range (); ++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), ++ a68_int_ge (b, zero), ++ calculate_p, zero); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-misc.cc +@@ -0,0 +1,234 @@ ++/* Lower miscellaneous tree nodes to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Lower an assertion. ++ ++ assertion : assert symbol, enclosed clause. ++*/ ++ ++tree ++a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (!OPTION_ASSERT (&A68_JOB)) ++ return a68_get_empty(); ++ ++ /* Build the call to the assert run-time function. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ASSERT, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ /* Check condition and call assert if required. */ ++ tree assertion = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ a68_void_type, ++ build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ a68_int_type, ++ a68_lower_tree (NEXT (SUB (p)), ctx), ++ fold_build2 (COMPOUND_EXPR, ++ a68_int_type, ++ call, ++ build_int_cst (a68_int_type, 0))), ++ a68_get_empty ()); ++ TREE_SIDE_EFFECTS (assertion) = 1; ++ return assertion; ++} ++ ++/* Lower a jump to a label. ++ ++ jump : goto symbol, identifier; ++ identifier. ++ ++ A jump lowers into a ({ GOTO_EXPR; EMPTY }). */ ++ ++tree ++a68_lower_jump (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *label_identifier = SUB (p); ++ MOID_T *jump_mode = MOID (p); ++ if (!IS (label_identifier, IDENTIFIER)) ++ FORWARD (label_identifier); ++ ++ /* Create LABEL_DECL if necessary and chain it in both current block and bind ++ expression. */ ++ if (TAX_TREE_DECL (TAX (label_identifier)) == NULL_TREE) ++ { ++ tree label_decl = build_decl (a68_get_node_location (label_identifier), ++ LABEL_DECL, ++ a68_get_mangled_identifier (NSYMBOL (label_identifier)), ++ void_type_node); ++ TAX_TREE_DECL (TAX (label_identifier)) = label_decl; ++ } ++ ++ MOID (label_identifier) = M_VOID; ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ CTYPE (jump_mode), ++ fold_build1_loc (a68_get_node_location (p), ++ GOTO_EXPR, ++ void_type_node, ++ a68_lower_tree (label_identifier, ctx)), ++ a68_get_skip_tree (jump_mode)); ++} ++ ++/* Lower a parameter into a chain of PARAM_DECLs. ++ ++ parameter : declarer, identifier; ++ parameter, comma symbol, identifier. ++*/ ++ ++tree ++a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree prev_parm_decls = NULL_TREE; ++ NODE_T *identifier = NO_NODE; ++ if (IS (SUB (p), PARAMETER)) ++ { ++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); ++ identifier = NEXT (NEXT (SUB (p))); ++ } ++ else ++ identifier = NEXT (SUB (p)); ++ ++ /* Create the PARM_DECL. */ ++ tree parm_decl = build_decl (a68_get_node_location (p), ++ PARM_DECL, ++ a68_get_mangled_identifier (NSYMBOL (identifier)), ++ CTYPE (MOID (identifier))); ++ DECL_CONTEXT (parm_decl) = current_function_decl; ++ DECL_ARG_TYPE (parm_decl) = TREE_TYPE (parm_decl); ++ TAX_TREE_DECL (TAX (identifier)) = parm_decl; ++ ++ layout_decl (parm_decl, 0); ++ ++ if (prev_parm_decls != NULL) ++ return chainon (prev_parm_decls, parm_decl); ++ else ++ return parm_decl; ++} ++ ++/* Lower a list of parameters into a chain of PARAM_DECLs. ++ ++ parameter list : parameter; ++ parameter list; comma symbol; parameter. ++*/ ++ ++tree ++a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree parm_decl = NULL_TREE; ++ tree prev_parm_decls = NULL_TREE; ++ if (IS (SUB (p), PARAMETER_LIST)) ++ { ++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); ++ parm_decl = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ } ++ else ++ parm_decl = a68_lower_tree (SUB (p), ctx); ++ ++ gcc_assert (parm_decl != NULL_TREE); ++ if (prev_parm_decls != NULL) ++ return chainon (prev_parm_decls, parm_decl); ++ else ++ return parm_decl; ++} ++ ++/* Lower a parameter pack into a chain of PARAM_DECLs. ++ ++ parameter pack : open symbol, parameter list, close symbol. ++*/ ++ ++tree ++a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Lower the contained PARAMETER_LIST. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower an applied operator. ++ ++ Applied operators lower into a function object that gets one argument in ++ case of monadic operators, or two arguments in case of dyadic operators. */ ++ ++tree ++a68_lower_operator (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* This is an user defined operator. Handle it in a similar way than applied ++ identifiers. */ ++ tree func_decl = TAX_TREE_DECL (TAX (p)); ++ if (func_decl == NULL_TREE) ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (IN_PROC (TAX (p))) ++ { ++ if (external) ++ func_decl = a68_make_proc_identity_declaration_decl (p, ++ NAME (MOIF (TAX (p))), ++ true /* indicant */, ++ external, ++ extern_symbol); ++ else ++ func_decl = a68_make_proc_identity_declaration_decl (p, ++ ctx.module_definition_name, ++ true /* indicant */); ++ } ++ else ++ { ++ if (external) ++ func_decl = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ true /* indicant */, external, ++ extern_symbol); ++ else ++ func_decl = a68_make_identity_declaration_decl (p, ctx.module_definition_name, ++ true /* indicant */); ++ } ++ TAX_TREE_DECL (TAX (p)) = func_decl; ++ } ++ return func_decl; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-moids.cc +@@ -0,0 +1,729 @@ ++/* Lower Algol 68 modes to GCC trees. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "stringpool.h" ++#include "tree.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "print-tree.h" ++ ++#include "a68.h" ++ ++static tree a68_lower_mode (MOID_T *m); ++ ++/* ++ * Support routines and definitions. ++ */ ++ ++/* Build a stub TYPE_DECL for a given TYPE. ++ ++ This is used for TYPE_STUB_DECL so we can generate debug info for all our ++ modes, so the TYPE_DECL has no name. */ ++ ++static void ++build_stub_type_decl (tree type, tree context) ++{ ++ if (TYPE_STUB_DECL (type)) ++ return; ++ ++ tree decl = build_decl (UNKNOWN_LOCATION, ++ TYPE_DECL, ++ NULL_TREE /* name */, ++ type); ++ TREE_PUBLIC (decl) = 1; ++ DECL_CONTEXT (decl) = context; ++ TYPE_CONTEXT (type) = DECL_CONTEXT (decl); ++ TYPE_NAME (type) = decl; /* Weird. This is for typedefs! */ ++ TYPE_STUB_DECL (type) = decl; ++} ++ ++/* Builds a record type whose name is NAME. NFIELDS is the number of fields, ++ provided as field ident/type pairs. ++ ++ This code is copied from the D front end. */ ++ ++static tree ++make_struct_type (tree type, const char *name, int nfields, ...) ++{ ++ tree fields = NULL_TREE; ++ va_list ap; ++ ++ va_start (ap, nfields); ++ ++ for (int i = 0; i < nfields; i++) ++ { ++ tree ident = va_arg (ap, tree); ++ tree type = va_arg (ap, tree); ++ tree field = build_decl (BUILTINS_LOCATION, FIELD_DECL, ident, type); ++ DECL_CHAIN (field) = fields; ++ fields = field; ++ } ++ ++ va_end (ap); ++ ++ if (type == NULL_TREE) ++ type = make_node (RECORD_TYPE); ++ finish_builtin_struct (type, name, fields, NULL_TREE); ++ ++ return type; ++} ++ ++/* Iterate over all the field selectors FIELDS of a structure type and add them ++ as fields to CONTEXT. Returns the number of field selectors found. */ ++ ++static size_t ++chain_struct_fields (PACK_T *fields, tree context) ++{ ++ PACK_T *elem; ++ size_t num_fields; ++ ++ for (num_fields = 0, elem = fields; ++ elem != NO_PACK; ++ FORWARD (elem), ++num_fields) ++ { ++ const char *field_name = TEXT (elem); ++ MOID_T *field_mode = MOID (elem); ++ tree field_type = a68_lower_mode (field_mode); ++ ++ /* Create the field declaration. ++ The declaration is not a compiler-generated entity. ++ Do not ignore the declaration for symbolic debug purposes. */ ++ tree field_decl = build_decl ((NODE (field_mode) ++ ? a68_get_node_location (NODE (field_mode)) ++ : UNKNOWN_LOCATION), ++ FIELD_DECL, ++ field_name ? get_identifier (field_name) : NULL_TREE, ++ field_type); ++ DECL_ARTIFICIAL (field_decl) = 0; ++ DECL_IGNORED_P (field_decl) = 0; ++ ++ /* If the mode of the field is not a ref then references to the field ++ cannot appear in a LHS of an assignment. */ ++ TREE_READONLY (field_decl) = IS_REF (field_mode); ++ ++ /* Associate the tree field declaration and the front end node. */ ++ DECL_LANG_SPECIFIC (field_decl) = ++ (NODE (field_mode) ? a68_build_lang_decl (NODE (field_mode)) : NULL); ++ ++ /* Chain the field declaration in its containing context. */ ++ DECL_FIELD_CONTEXT (field_decl) = context; ++ TYPE_FIELDS (context) = chainon (TYPE_FIELDS (context), field_decl); ++ } ++ ++ return num_fields; ++} ++ ++/* If the union or struct type TYPE completes the type of any previous field ++ declarations, lay them out now. */ ++ ++static void ++finish_incomplete_fields (tree type) ++{ ++ for (tree fwdref = TYPE_FORWARD_REFERENCES (type); fwdref != NULL_TREE; ++ fwdref = TREE_CHAIN (fwdref)) ++ { ++ tree field = TREE_VALUE (fwdref); ++ tree struct_or_union_type = DECL_FIELD_CONTEXT (field); ++ ++ relayout_decl (field); ++ bool type_complete = true; ++ for (tree field = TYPE_FIELDS (struct_or_union_type); ++ field; ++ field = DECL_CHAIN (field)) ++ { ++ if (!COMPLETE_TYPE_P (TREE_TYPE (field))) ++ { ++ type_complete = false; ++ break; ++ } ++ } ++ ++ if (type_complete) ++ { ++ // XXX why this fires ++ // gcc_assert (!COMPLETE_TYPE_P (struct_or_union_type)); ++ layout_type (struct_or_union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (struct_or_union_type); ++ } ++ }; ++ ++ /* No more forward references to process. */ ++ TYPE_FORWARD_REFERENCES (type) = NULL_TREE; ++} ++ ++/* ++ * Mode lowering routines. ++ */ ++ ++/* Lower a HIP mode to a GENERIC tree. ++ HIP is the mode of NIL. */ ++ ++static tree ++lower_hip_mode (MOID_T *m) ++{ ++ static tree hip_type; ++ ++ if (hip_type == NULL) ++ { ++ hip_type = build_pointer_type (a68_void_type); ++ TYPE_LANG_SPECIFIC (hip_type) = a68_build_lang_type (m); ++ CTYPE (m) = hip_type; ++ } ++ ++ return hip_type; ++} ++ ++/* Lower a standard mode to a GENERIC tree. ++ ++ Note that this function only has to handle the standard modes that have not ++ been resolved to some equivalent. */ ++ ++static tree ++lower_standard_mode (MOID_T *m) ++{ ++ tree type = NULL_TREE; ++ ++ if (m == M_VOID) ++ type = a68_void_type; ++ else if (m == M_BOOL) ++ type = a68_bool_type; ++ else if (m == M_CHAR) ++ type = a68_char_type; ++ else if (m == M_SHORT_SHORT_INT) ++ type = a68_short_short_int_type; ++ else if (m == M_SHORT_INT) ++ type = a68_short_int_type; ++ else if (m == M_INT) ++ type = a68_int_type; ++ else if (m == M_LONG_INT) ++ type = a68_long_int_type; ++ else if (m == M_LONG_LONG_INT) ++ type = a68_long_long_int_type; ++ else if (m == M_REAL) ++ type = a68_real_type; ++ else if (m == M_LONG_REAL) ++ type = a68_long_real_type; ++ else if (m == M_LONG_LONG_REAL) ++ type = a68_long_long_real_type; ++ else if (m == M_SHORT_SHORT_BITS) ++ type = a68_short_short_bits_type; ++ else if (m == M_SHORT_BITS) ++ type = a68_short_bits_type; ++ else if (m == M_BITS) ++ type = a68_bits_type; ++ else if (m == M_LONG_BITS) ++ type = a68_long_bits_type; ++ else if (m == M_LONG_LONG_BITS) ++ type = a68_long_long_bits_type; ++ else if (m == M_BYTES) ++ type = a68_bytes_type; ++ else if (m == M_LONG_BYTES) ++ type = a68_long_bytes_type; ++ else if (m == M_FILE) ++ /* XXX for now this is a file descriptor. */ ++ type = integer_type_node; ++ else if (m == M_CHANNEL) ++ /* XXX for now this is a channel descriptor. */ ++ type = integer_type_node; ++ else ++ gcc_unreachable (); ++ ++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); ++ return type; ++} ++ ++/* Lower a struct mode to a GENERIC tree. */ ++ ++static tree ++lower_struct_mode (MOID_T *m) ++{ ++ /* First make the GENERIC struct. This is needed in case of ++ self-references. */ ++ tree struct_type = make_node (RECORD_TYPE); ++ TYPE_NAME (struct_type) = get_identifier ("lalastruct%"); ++ TYPE_FIELDS (struct_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (struct_type) = 0; ++ CTYPE (m) = struct_type; ++ TYPE_LANG_SPECIFIC (struct_type) = a68_build_lang_type (m); /* XXX this will get overrided. */ ++ ++ /* Add field declarations. */ ++ chain_struct_fields (PACK (m), struct_type); ++ ++ /* Layout all fields. */ ++ bool struct_type_complete = true; ++ for (tree field = TYPE_FIELDS (struct_type); field; field = DECL_CHAIN (field)) ++ { ++ tree basetype = TREE_TYPE (field); ++ ++ if (!COMPLETE_TYPE_P (basetype)) ++ { ++ tree field_type = TREE_TYPE (field); ++ tree forward_refs = tree_cons (NULL_TREE, field, ++ TYPE_FORWARD_REFERENCES (field_type)); ++ TYPE_FORWARD_REFERENCES (struct_type) = forward_refs; ++ ++ struct_type_complete = false; ++ continue; ++ } ++ ++ layout_decl (field, 0); ++ gcc_assert (DECL_SIZE (field) != NULL_TREE); ++ } ++ ++ /* If all fields have complete types then we can layout the struct type now. ++ Otherwise it will be done in finish_incomplete_types. */ ++ if (struct_type_complete) ++ { ++ layout_type (struct_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (struct_type); ++ } ++ ++ /* Finish debugging output for this type. */ ++ build_stub_type_decl (struct_type, NULL_TREE /* context */); ++ rest_of_type_compilation (struct_type, TYPE_FILE_SCOPE_P (struct_type)); ++ rest_of_decl_compilation (TYPE_NAME (struct_type), 1 /* file scope p */, 0); ++ A68_STRUCT_TYPE_P (struct_type) = 1; ++ return struct_type; ++} ++ ++/* Lower a ref mode to a GENERIC tree. ++ REF AMODE lowers to a pointer. */ ++ ++static tree ++lower_ref_mode (MOID_T *m) ++{ ++ return build_pointer_type (a68_lower_mode (SUB (m))); ++} ++ ++/* Lower a flex mode to a GENERIC tree. */ ++ ++static tree ++lower_flex_mode (MOID_T *m) ++{ ++ /* This is basically a qualifier of the parent REF. */ ++ return a68_lower_mode (SUB (m)); ++} ++ ++/* Lower a proc mode to a GENERIC tree. */ ++ ++static tree ++lower_proc_mode (MOID_T *m) ++{ ++ tree fnargs = NULL_TREE; ++ tree ret_type; ++ ++ /* We have to create the function type in advance because it can appear ++ recursively as the type of arguments and/or of the return value. We ++ cannot use build_function_type, as it doesn't support recursive types. */ ++ tree function_type = make_node (FUNCTION_TYPE); ++ tree ptr_function_type = build_pointer_type (function_type); ++ CTYPE (m) = ptr_function_type; ++ ++ /* Now add arguments and return value types. */ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ tree arg_type = a68_lower_mode (MOID (p)); ++ fnargs = chainon (fnargs, build_tree_list (0, arg_type)); ++ } ++ ret_type = a68_lower_mode (SUB (m)); ++ ++ /* Complete the function type. Note that there is some code duplication with ++ build_function_type, which we cannot use, but such is life. */ ++ TREE_TYPE (function_type) = ret_type; /* THIS */ ++ TYPE_ARG_TYPES (function_type) = fnargs; ++ SET_TYPE_STRUCTURAL_EQUALITY (function_type); ++ ++ if (!COMPLETE_TYPE_P (function_type)) ++ layout_type (function_type); ++ ++ return ptr_function_type; ++} ++ ++/* Lower an union mode to a GENERIC tree. ++ ++ overhead% Characterizes the actual mode of the value. ++ value% GENERIC union. */ ++ ++static tree ++lower_union_mode (MOID_T *m) ++{ ++ // XXX make the union type QUAL_UNION_TYPE and relate the fields with the ++ // overhead%. This is necessary for DWARF. ++ tree union_type = make_node (RECORD_TYPE); ++ TYPE_NAME (union_type) = NULL_TREE; ++ TYPE_FIELDS (union_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (union_type) = 0; ++ CTYPE (m) = union_type; ++ ++ /* Then the GENERIC union. */ ++ tree c_union_type = make_node (UNION_TYPE); ++ TYPE_NAME (c_union_type) = NULL_TREE; ++ TYPE_FIELDS (c_union_type) = NULL_TREE; ++ TYPE_CXX_ODR_P (c_union_type) = 0; // XXX otherwise lto complains. why. ++ SET_TYPE_STRUCTURAL_EQUALITY (c_union_type); ++ ++ /* Add field declarations. */ ++ chain_struct_fields (PACK (m), c_union_type); ++ ++ /* Layout all fields now the type is complete. */ ++ bool c_union_type_complete = true; ++ for (tree field = TYPE_FIELDS (c_union_type); field; field = DECL_CHAIN (field)) ++ { ++ tree field_type = TREE_TYPE (field); ++ ++ if (!COMPLETE_TYPE_P (field_type)) ++ { ++ tree field_type = TREE_TYPE (field); ++ tree forward_refs = tree_cons (NULL_TREE, field, ++ TYPE_FORWARD_REFERENCES (field_type)); ++ TYPE_FORWARD_REFERENCES (c_union_type) = forward_refs; ++ ++ c_union_type_complete = false; ++ continue; ++ } ++ ++ layout_decl (field, 0); ++ gcc_assert (DECL_SIZE (field) != NULL_TREE); ++ } ++ ++ /* If all fields have complete types then we can layout the c-union type now. ++ Otherwise it will be done in finish_incomplete_types. */ ++ if (c_union_type_complete) ++ { ++ layout_type (c_union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (c_union_type); ++ } ++ ++ /* Finish debugging output for this type. */ ++ build_stub_type_decl (c_union_type, NULL_TREE /* context */); ++ rest_of_type_compilation (c_union_type, TYPE_FILE_SCOPE_P (c_union_type)); ++ rest_of_decl_compilation (TYPE_NAME (c_union_type), 1 /* file scope p */, 0); ++ ++ /* Now the type with the overhead. */ ++ TYPE_NAME (union_type) = get_identifier ("union%"); ++ tree overhead_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, ++ get_identifier ("overhead%"), sizetype); ++ tree value_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, ++ get_identifier ("value%"), c_union_type); ++ DECL_FIELD_CONTEXT (overhead_field) = union_type; ++ DECL_FIELD_CONTEXT (value_field) = union_type; ++ DECL_CHAIN (value_field) = NULL_TREE; ++ DECL_CHAIN (overhead_field) = value_field; ++ TYPE_FIELDS (union_type) = overhead_field; ++ ++ if (c_union_type_complete) ++ { ++ layout_type (union_type); ++ /* Set the back-end type mode now that all fields have had their size ++ set. */ ++ compute_record_mode (union_type); ++ } ++ else ++ { ++ tree forward_refs = tree_cons (NULL_TREE, value_field, ++ TYPE_FORWARD_REFERENCES (union_type)); ++ TYPE_FORWARD_REFERENCES (union_type) = forward_refs; ++ } ++ ++ SET_TYPE_STRUCTURAL_EQUALITY (union_type); ++ A68_UNION_TYPE_P (union_type) = 1; ++ return union_type; ++} ++ ++/* Return the type for an array descriptor triplet. */ ++ ++tree ++a68_triplet_type (void) ++{ ++ static tree triplet_type = NULL_TREE; ++ if (triplet_type == NULL_TREE) ++ { ++ triplet_type = make_struct_type (NULL_TREE, "triplet%", 3, ++ get_identifier ("lb%"), ++ ssizetype, ++ get_identifier ("ub%"), ++ ssizetype, ++ get_identifier ("stride%"), ++ sizetype); ++ } ++ ++ return triplet_type; ++} ++ ++/* Return the lower bound field in an array descriptor triplet. */ ++ ++tree ++a68_triplet_type_lower_bound (tree triplet) ++{ ++ tree lb_field = TYPE_FIELDS (triplet); ++ return lb_field; ++} ++ ++/* Lower a row mode to a GENERIC tree. ++ ++ descriptor% ++ triplets% Value of ARRAY_TYPE with an entry per multiple dimension. ++ { ++ li% Lower bound of dimension. ++ ui% Upper bound of dimension. ++ di% Stride of dimension in bytes. ++ } ++ elements% Pointer to the elements. ++ elements_size% Size of elements% in bytes. ++*/ ++ ++static tree ++lower_row_mode (MOID_T *m) ++{ ++ int num_dimensions = DIM (m); ++ tree triplet_type = a68_triplet_type (); ++ tree triplets_type = build_array_type (triplet_type, ++ build_index_type (size_int (num_dimensions - 1))); ++ tree element_type = a68_lower_mode (SUB (m)); ++ tree row_type = make_struct_type (NULL_TREE, "row%", 3, ++ get_identifier ("triplets%"), ++ triplets_type, ++ get_identifier ("elements%"), ++ build_pointer_type (element_type), ++ get_identifier ("elements_size%"), ++ sizetype); ++ layout_type (row_type); ++ A68_ROW_TYPE_P (row_type) = 1; ++ return row_type; ++} ++ ++/* Given a row type, return the type of the pointer to its elements. */ ++ ++tree ++a68_row_elements_pointer_type (tree type) ++{ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ /* elements% is the second field. */ ++ return TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); ++} ++ ++/* Given a row type, return the type of its elements. */ ++ ++tree ++a68_row_elements_type (tree type) ++{ ++ return TREE_TYPE (a68_row_elements_pointer_type (type)); ++} ++ ++/* Lower a ROWS mode to a GENERIC tree. ++ ++ dim% Number of dimensions. ++ triplets% Pointer to triplets. ++ ++ Values of this mode are passed to the operators UPB, LWB and ELEMS, which ++ need only descriptor information. There is no need to store any multiple ++ elements. */ ++ ++static tree ++lower_rows_mode (MOID_T *m ATTRIBUTE_UNUSED) ++{ ++ static tree rows_type = NULL_TREE; ++ ++ if (rows_type == NULL_TREE) ++ { ++ rows_type = make_struct_type (NULL_TREE, "rows%", 2, ++ get_identifier ("dim%"), ++ sizetype, ++ get_identifier ("triplets%"), ++ build_pointer_type (a68_triplet_type ())); ++ A68_ROWS_TYPE_P (rows_type) = 1; ++ } ++ return rows_type; ++} ++ ++/* Lower modes in a series. This is used as the mode of the mode yielded by an ++ enclosed clause that yields a series of united rows, for M_ROWS. */ ++ ++static tree ++lower_series (MOID_T *m) ++{ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ if (IS (MOID (p), SERIES_MODE) || IS (MOID (p), STOWED_MODE)) ++ lower_series (MOID (p)); ++ else ++ (void) a68_lower_mode (MOID (p)); ++ } ++ ++ return lower_rows_mode (NO_MOID); ++} ++ ++/* Lower a mode to a GENERIC tree. */ ++ ++static tree ++a68_lower_mode (MOID_T *m) ++{ ++ tree type = NULL_TREE; ++ ++ /* If the given mode has already been lowered, return the corresponding ++ tree. */ ++ if (CTYPE (m) != NULL) ++ return CTYPE (m); ++ ++ if (EQUIVALENT (m) != NO_MOID && EQUIVALENT (m) != m) ++ /* This covers INDICANTs and standard MOIDS having an equivalent mode. */ ++ type = a68_lower_mode (EQUIVALENT (m)); ++ else if (m == M_VOID) ++ type = a68_void_type; ++ else if (m == M_HIP) ++ type = lower_hip_mode (m); ++ else if (IS (m, STANDARD)) ++ type = lower_standard_mode (m); ++ else if (IS_REF (m)) ++ type = lower_ref_mode (m); ++ else if (IS_FLEX (m)) ++ type = lower_flex_mode (m); ++ else if (IS (m, PROC_SYMBOL)) ++ type = lower_proc_mode (m); ++ else if (IS_STRUCT (m)) ++ type = lower_struct_mode (m); ++ else if (IS_ROW (m)) ++ type = lower_row_mode (m); ++ else if (IS_UNION (m)) ++ type = lower_union_mode (m); ++ else if (m == M_SIMPLOUT || m == M_SIMPLIN) ++ type = a68_void_type; ++ else if (IS (m, ROWS_SYMBOL)) ++ /* ROWS is a mode that means "any row mode". */ ++ type = lower_rows_mode (m); ++ else if (m == M_VACUUM) ++ /* This is a mode that should not survive the parser. */ ++ type = a68_void_type; ++ else if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) ++ { ++ /* When dealing with operators the parser creates some modes that leak ++ SERIES and STOWED "proto-modes" in them, such as for example: ++ ++ UNION ((INT, INT), INT, PROC [] CHAR) ++ ++ These are not really real Algol 68 modes and are useless by ++ themselves, so when we find them, we traverse them (they ultimately ++ contain valid modes that may show up in other contexts and that ++ require being lowered) and just report them as VOID. */ ++ type = lower_series (m); ++ } ++ else ++ { ++ fatal_error (NODE (m) ? a68_get_node_location (NODE (m)) : UNKNOWN_LOCATION, ++ "Cannot lower mode %s", ++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); ++ } ++ ++ /* Associate the created tree node with the mode, and vice-versa. */ ++ gcc_assert (type != NULL_TREE); ++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); ++ A68_TYPE_HAS_ROWS_P (type) = HAS_ROWS (m); ++ if (CTYPE (m) == NULL_TREE) ++ CTYPE (m) = type; ++ // printf ("DONE LOWERING %s\n", a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); ++ return type; ++} ++ ++/* Lower MOIDs to GENERIC trees. */ ++ ++void ++a68_lower_moids (MOID_T *mode) ++{ ++ /* First pass: all modes but refs. */ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ (void) a68_lower_mode (m); ++ ++ /* Try to layout all incomplete types. This is a two-passes process. */ ++ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS_STRUCT (m)) ++ { ++ tree struct_type = CTYPE (m); ++ finish_incomplete_fields (struct_type); ++ } ++ else if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ finish_incomplete_fields (c_union_type); ++ finish_incomplete_fields (union_type); ++ } ++ } ++ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ if (!COMPLETE_TYPE_P (CTYPE (m))) ++ { ++ if (IS_STRUCT (m)) ++ { ++ tree struct_type = CTYPE (m); ++ layout_type (struct_type); ++ compute_record_mode (struct_type); ++ } ++ else if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ ++ if (!COMPLETE_TYPE_P (c_union_type)) ++ { ++ layout_type (c_union_type); ++ compute_record_mode (c_union_type); ++ } ++ ++ layout_type (union_type); ++ compute_record_mode (union_type); ++ } ++ else ++ layout_type (CTYPE (m)); ++ } ++ } ++ ++ /* Sanity check. */ ++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) ++ { ++ gcc_assert (COMPLETE_TYPE_P (CTYPE (m))); ++ if (IS_UNION (m)) ++ { ++ tree union_type = CTYPE (m); ++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); ++ gcc_assert (COMPLETE_TYPE_P (c_union_type)); ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-multiples.cc +@@ -0,0 +1,1097 @@ ++/* Lowering routines for all things related to multiples. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Algol 68 multiples are multi-dimensional and dynamically sized. They have a ++ static part and a dynamic part. The static part is conformed by a ++ "descriptor", which contains information about each of the dimensions, and a ++ pointer to the actual elements stored in the multiple. The dynamic part are ++ the elements, which are stored in column order. Both the descriptor and the ++ elements may reside on the stack, data section, or the heap. The mode of a ++ multiple is a "row". ++ ++ Schematically, the descriptor contains: ++ ++ triplets% ++ lb% ub% stride% ++ ... ++ elements% ++ elements_size% ++ ++ Where elements_size% is the size of the buffer pointed by elements%, in ++ bytes. ++ ++ There is a triplet per dimension in the multiple. The number of dimensions ++ in a row mode is static and is determined at compile-time. ++ ++ The infomation stored for each triplet is: ++ ++ lb% is the lower bound of the dimension. ++ ub% is the upper bound of the dimension. ++ stride% is the stride of the dimension. ++ ++ The stride of each dimension is the number of bytes to skip in order to ++ access the next element in that dimension. They express the layout of the ++ multiple in memory. ++ ++ Algol 68 multi-dimensional multiples are stored in row-major (generalized, ++ lexicographical) order: ++ ++ [1:3,1:2]AMODE = ((e1, e2, e3), ++ (e4, e5, e6)) ++ ++ is stored as: ++ ++ 1 2 3 ++ 1 e1 e2 e3 | stride 2S -> stride 1S ++ 2 e4 e5 e6 v ++ ++ Where S is the size in bytes of a single element. That means that for two ++ dimensional multiples, the column stride is always 1S and the row stride is ++ the column size. ++ ++ In general, given a mode with number of elements N1, N2, N3, ...: ++ ++ [N1,N2,N3...,Nn]AMODE ++ ++ the strides of the dimensions are: ++ ++ S1 = N2 * S2 ++ S2 = N3 * S3 ++ S3 = N4 * S4 ++ ... ++ Si = N1 * N2 * ... * Ni-1 ++ ++ Indexing is then performed by a dot-product of an element coordinate and the ++ strides: ++ ++ (i1,i2,i3) . (S1,S2,S3) = offset + i1*S1 + i2*S2 + i3*S3 = index in elements array. ++ ++ Note that the number of elements in each dimension can be easily derived ++ from the bounds and there is no need to store them explicitly, save for ++ performance reasons. Descriptors are bulky enough and often they they are ++ stored on the stack, so we prefer to pay in performance and save in ++ storage. */ ++ ++/* Return a tree with the yielding of SKIP for the given row mode, a ++ multiple. */ ++ ++tree ++a68_get_multiple_skip_tree (MOID_T *m) ++{ ++ tree res = NULL_TREE; ++ int dim = DIM (m); ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (int i = 0; i < dim; ++i) ++ { ++ lower_bounds[i] = ssize_one_node; ++ upper_bounds[i] = ssize_zero_node; ++ } ++ res = a68_row_value (CTYPE (m), dim, ++ build_int_cst (build_pointer_type (void_type_node), 0), ++ size_zero_node, /* elements_size */ ++ lower_bounds, upper_bounds); ++ free (lower_bounds); ++ free (upper_bounds); ++ return res; ++} ++ ++/* Return the number of dimensions of the multiple EXP as an integer ++ constant. */ ++ ++tree ++a68_multiple_dimensions (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return array_type_nelts_top (TREE_TYPE (triplets_field)); ++} ++ ++/* Return an expression that evaluates to the total number of elements stored ++ in a multiple as a sizetype. */ ++ ++tree ++a68_multiple_num_elems (tree exp) ++{ ++ /* We have to calculate the number of elements based on the dimension ++ triplets in the array type. The number of dimensions is known at compile ++ time, so we don't really need a loop. */ ++ ++ tree num_dimensions_tree = a68_multiple_dimensions (exp); ++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); ++ int num_dimensions = tree_to_shwi (num_dimensions_tree); ++ ++ tree size = NULL_TREE; ++ for (int dim = 0; dim < num_dimensions; ++dim) ++ { ++ tree size_dim = size_int (dim); ++ tree lower_bound = a68_multiple_lower_bound (exp, size_dim); ++ tree upper_bound = a68_multiple_upper_bound (exp, size_dim); ++ tree dim_size = fold_build2 (PLUS_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ++ ssizetype, ++ upper_bound, ++ lower_bound)), ++ size_one_node); ++ ++ if (size == NULL_TREE) ++ size = dim_size; ++ else ++ size = fold_build2 (MULT_EXPR, sizetype, size, dim_size); ++ } ++ ++ return size; ++} ++ ++/* Return a size expression that evaluates to the total size, in bytes, of the ++ elements stored in the multiple. */ ++ ++tree ++a68_multiple_elements_size (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ ++ /* elements_size% is the third field in the descriptor. */ ++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (type))); ++ return fold_build3 (COMPONENT_REF, TREE_TYPE (elements_size_field), ++ exp, elements_size_field, NULL_TREE); ++} ++ ++/* Return the triplet for dimension DIM in the multiple EXP. */ ++ ++static tree ++multiple_triplet (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ tree triplets = fold_build3 (COMPONENT_REF, ++ TREE_TYPE (triplets_field), ++ exp, ++ triplets_field, ++ NULL_TREE); ++ ++ /* Get the triplet for the given dimension. */ ++ return build4 (ARRAY_REF, ++ TREE_TYPE (TREE_TYPE (triplets)), ++ triplets, ++ dim, ++ NULL_TREE, ++ NULL_TREE); ++} ++ ++/* Return the lower bound of dimension DIM of the multiple EXP. The returned ++ value is a ssizetype. */ ++ ++tree ++a68_multiple_lower_bound (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* lb% is the first field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree lower_bound_field = TYPE_FIELDS (TREE_TYPE (triplet)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (lower_bound_field), ++ triplet, ++ lower_bound_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the lower bound of dimension DIM of the ++ multiple EXP to BOUND. */ ++ ++tree ++a68_multiple_set_lower_bound (tree exp, tree dim, tree bound) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (bound), ++ a68_multiple_lower_bound (exp, dim), ++ bound); ++} ++ ++/* Return the upper bound of dimension DIM of the multiple EXP. The returned ++ value is a ssizetype. */ ++ ++tree ++a68_multiple_upper_bound (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* ub% is the second field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (upper_bound_field), ++ triplet, ++ upper_bound_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the upper bound of dimension DIM of the ++ multiple EXP to BOUND. */ ++ ++tree ++a68_multiple_set_upper_bound (tree exp, tree dim, tree bound) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (bound), ++ a68_multiple_upper_bound (exp, dim), ++ bound); ++} ++ ++/* Return the stride of dimension DIM of the multiple EXP. */ ++ ++tree ++a68_multiple_stride (tree exp, tree dim) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* stride% is the third field in the triplet. */ ++ tree triplet = multiple_triplet (exp, dim); ++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet)))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (stride_field), ++ triplet, ++ stride_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the stride of dimension DIM of the multiple ++ EXP to STRIDE. ++ ++ STRIDE must be a sizetype. */ ++ ++tree ++a68_multiple_set_stride (tree exp, tree dim, tree stride) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (stride), ++ a68_multiple_stride (exp, dim), ++ stride); ++} ++ ++/* Return the triplets of the multiple EXP. */ ++ ++tree ++a68_multiple_triplets (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* triplets% is the first field in the descriptor. */ ++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (triplets_field), ++ exp, ++ triplets_field, ++ NULL_TREE); ++} ++ ++/* Return the pointer to the elements of the multiple EXP. */ ++ ++tree ++a68_multiple_elements (tree exp) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); ++ ++ /* elements% is the second field in the descriptor. */ ++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_field), ++ exp, ++ elements_field, ++ NULL_TREE); ++} ++ ++/* Return an expression that sets the elements% field of EXP to ELEMENTS. */ ++ ++tree ++a68_multiple_set_elements (tree exp, tree elements) ++{ ++ /* elements% is the second field in the descriptor. */ ++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (elements_field), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_field), ++ exp, ++ elements_field, ++ NULL_TREE), ++ elements); ++} ++ ++/* Return an expression that sets the elements_size% field of EXP to ++ ELEMENTS_SIZE, which must be a sizetype. */ ++ ++tree ++a68_multiple_set_elements_size (tree exp, tree elements_size) ++{ ++ /* elements_size% is the third field in the descriptor. */ ++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp)))); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (elements_size_field), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (elements_size_field), ++ exp, ++ elements_size_field, ++ NULL_TREE), ++ elements_size); ++} ++ ++/* Given two arrays of LOWER_BOUNDs and UPPER_BOUNDs corresponding to DIM ++ dimensions of a multiple of type TYPE, fill in the strides in STRIDES, which ++ is assumed to be a buffer big enough to hold DIM tree nodes. The bounds ++ shall be of type ssizetype, and the calculated strides are of type sizetype, ++ i.e. unsigned. */ ++ ++void ++a68_multiple_compute_strides (tree type, size_t dim, ++ tree *lower_bounds, tree *upper_bounds, ++ tree *strides) ++{ ++ tree stride = size_in_bytes (a68_row_elements_type (type)); ++ for (ssize_t i = dim - 1; i >= 0; --i) ++ { ++ strides[i] = stride; ++ ++ /* Calculate the stride for the previous dimension. */ ++ tree dim_num_elems ++ = save_expr (fold_build2 (PLUS_EXPR, ++ sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bounds[i], lower_bounds[i])), ++ size_one_node)); ++ stride = fold_build2 (MULT_EXPR, sizetype, stride, dim_num_elems); ++ } ++} ++ ++/* Return a constructor for a multiple of row type TYPE, using TRIPLETS and ++ ELEMENTS. ELEMENTS_SIZE is the size in bytes of the memory pointed by ++ ELEMENTS. */ ++ ++tree ++a68_row_value_raw (tree type, tree triplets, ++ tree elements, tree elements_size) ++{ ++ tree triplets_field; ++ tree elements_field; ++ tree elements_size_field; ++ vec *ce = NULL; ++ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ triplets_field = TYPE_FIELDS (type); ++ elements_field = TREE_CHAIN (triplets_field); ++ elements_size_field = TREE_CHAIN (elements_field); ++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, triplets); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, ++ fold_build1 (CONVERT_EXPR ,TREE_TYPE (elements_field), elements)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, elements_size); ++ return build_constructor (type, ce); ++} ++ ++/* Return a constructor for a multiple of row type TYPE, of DIM dimensions and ++ pointing to ELEMENTS. ++ ++ ELEMENTS_SIZE contains the size in bytes of the memory pointed by ELEMENTS. ++ ++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. ++*/ ++ ++tree ++a68_row_value (tree type, size_t dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound) ++{ ++ tree triplets_field; ++ tree elements_field; ++ tree elements_size_field; ++ vec *ce = NULL; ++ ++ gcc_assert (A68_ROW_TYPE_P (type)); ++ triplets_field = TYPE_FIELDS (type); ++ elements_field = TREE_CHAIN (triplets_field); ++ elements_size_field = TREE_CHAIN (elements_field); ++ ++ tree triplet_type = TREE_TYPE (TREE_TYPE (triplets_field)); ++ tree lower_bound_field = TYPE_FIELDS (triplet_type); ++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); ++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (triplet_type))); ++ ++ /* Calculate strides. */ ++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); ++ a68_multiple_compute_strides (type, dim, lower_bound, upper_bound, strides); ++ ++ vec *triplets_ce = NULL; ++ for (size_t i = 0; i < dim; ++i) ++ { ++ CONSTRUCTOR_APPEND_ELT (triplets_ce, ++ size_int (i), ++ build_constructor_va (triplet_type, ++ 3, ++ lower_bound_field, lower_bound[i], ++ upper_bound_field, upper_bound[i], ++ stride_field, strides[i])); ++ } ++ free (strides); ++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, ++ build_constructor (TREE_TYPE (triplets_field), triplets_ce)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, ++ fold_build1 (CONVERT_EXPR, TREE_TYPE (elements_field), elements)); ++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, ++ elements_size ? elements_size : size_zero_node); ++ tree multiple = build_constructor (type, ce); ++ return multiple; ++} ++ ++/* Build a tree to slice a multiple given a set of indexes. ++ ++ P is the tree node corresponding to the slice. It is used as the source of ++ location information. ++ ++ MULTIPLE is the multiple value being sliced. If SLICING_NAME is true, it ++ means the slicing operation is for a name and therefore it must yield a ++ name. ++ ++ INDEXES is a list of NUM_INDEXES indexes, which are units. ++ NUM_INDEXES must match the dimension of the multiple. */ ++ ++tree ++a68_multiple_slice (NODE_T *p, ++ tree multiple, bool slicing_name, ++ int num_indexes, tree *indexes) ++{ ++ tree slice = NULL_TREE; ++ tree bounds_check = NULL_TREE; ++ ++ multiple = save_expr (multiple); ++ tree index = NULL_TREE; ++ for (int idx = 0; idx < num_indexes; ++idx) ++ { ++ tree lower_bound = a68_multiple_lower_bound (multiple, size_int (idx)); ++ tree index_expr = save_expr (indexes[idx]); ++ ++ /* Do run-time bound checking if requested. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ tree upper_bound = a68_multiple_upper_bound (multiple, size_int (idx)); ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, ++ void_type_node, 5, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index_expr), ++ fold_convert (ssizetype, lower_bound), ++ fold_convert (ssizetype, upper_bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ /* If LB > UB, the dimension contains no elements. ++ Otherwise, it must hold IDX >= LB && IDX <= UB */ ++ tree dim_bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, ++ fold_build2 (LE_EXPR, ssizetype, ++ lower_bound, upper_bound), ++ fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index_expr), ++ lower_bound), ++ fold_build2 (LE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index_expr), ++ upper_bound))); ++ dim_bounds_check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ dim_bounds_check, call); ++ ++ /* bounds_check_ok || call_runtime_error */ ++ if (bounds_check == NULL_TREE) ++ bounds_check = dim_bounds_check; ++ else ++ bounds_check = fold_build2 (TRUTH_ANDIF_EXPR, ++ ssizetype, ++ bounds_check, ++ dim_bounds_check); ++ } ++ ++ /* Now add the effect of this dimension's subscript in the index. Note ++ that the stride is expressed in bytes. */ ++ tree stride = a68_multiple_stride (multiple, size_int (idx)); ++ tree adjusted_index ++ = fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ fold_convert (ssizetype, index_expr), ++ lower_bound)); ++ tree term = fold_build2 (MULT_EXPR, sizetype, ++ adjusted_index, stride); ++ if (index == NULL_TREE) ++ index = term; ++ else ++ index = fold_build2 (PLUS_EXPR, sizetype, ++ index, term); ++ } ++ ++ tree elements = a68_multiple_elements (multiple); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ ++ /* Now refer to the indexed element. In case we are slicing a ref to a ++ multiple, return the address of the element and not the element ++ itself. */ ++ tree element_address = fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ elements, ++ index); ++ if (slicing_name) ++ slice = element_address; ++ else ++ slice = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ elements, ++ index), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ ++ /* Prepend bounds checking code if necessary. */ ++ if (bounds_check != NULL_TREE) ++ { ++ slice = fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (slice), ++ bounds_check, ++ slice); ++ } ++ ++ return slice; ++} ++ ++/* Auxiliary routine for a68_multiple_copy_elemens. */ ++ ++static tree ++copy_multiple_dimension_elems (size_t dim, size_t num_dimensions, ++ tree to, tree from, ++ tree to_elements, tree from_elements, ++ tree *to_offset, tree *from_offset, ++ tree *indexes) ++{ ++ tree element_pointer_type = TREE_TYPE (from_elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ tree upb = a68_multiple_upper_bound (from, size_int (dim)); ++ ++ char *name = xasprintf ("r%ld%%", dim); ++ indexes[dim] = a68_lower_tmpvar (name, ssizetype, ++ a68_multiple_lower_bound (from, ++ size_int (dim))); ++ free (name); ++ ++ /* Loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (indexes[dim] > upb) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, ++ fold_build2 (GT_EXPR, size_type_node, ++ indexes[dim], upb))); ++ ++ /* Add this dimension's contribution to the offsets. */ ++ tree index = fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upb, indexes[dim])); ++ *to_offset = fold_build2 (PLUS_EXPR, sizetype, ++ *to_offset, ++ fold_build2 (MULT_EXPR, sizetype, ++ index, ++ a68_multiple_stride (to, size_int (dim)))); ++ *from_offset = fold_build2 (PLUS_EXPR, sizetype, ++ *from_offset, ++ fold_build2 (MULT_EXPR, sizetype, ++ index, ++ a68_multiple_stride (from, size_int (dim)))); ++ ++ if (dim == num_dimensions - 1) ++ { ++ /* Most inner loop, copy one element. */ ++ ++ tree to_off = a68_lower_tmpvar ("to_offset%", sizetype, *to_offset); ++ tree from_off = a68_lower_tmpvar ("from_offset%", sizetype, *from_offset); ++ ++ tree to_elem = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ to_elements, ++ to_off), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ tree from_elem = fold_build2 (MEM_REF, ++ element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ from_elements, ++ from_off), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ ++ /* XXX ++ if may_overlap then modify only if dst_offset < src_offset */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, ++ to_elem, from_elem)); ++ } ++ else ++ { ++ a68_add_stmt (copy_multiple_dimension_elems (dim + 1, num_dimensions, ++ to, from, ++ to_elements, from_elements, ++ to_offset, from_offset, ++ indexes)); ++ } ++ ++ /* indexes[dim]++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ssizetype, ++ indexes[dim], ssize_int (1))); ++ } ++ tree loop_body = a68_pop_range (); ++ ++ return fold_build1 (LOOP_EXPR, void_type_node, loop_body); ++} ++ ++/* Copy the elements of a given multiple (string) FROM to the multiple (string) ++ TO. ++ ++ The dimensions and bounds of both multiples are supposed to match, and they ++ are supposed to not be flat. ++ ++ XXX simple cases with same strides may be done with a memcpy. ++ XXX compile this into a support routine to reduce code size. */ ++ ++tree ++a68_multiple_copy_elems (MOID_T *mode, tree to, tree from) ++{ ++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (to)) ++ && A68_ROW_TYPE_P (TREE_TYPE (from))); ++ ++ /* Deflex modes as needed and determine dimension. */ ++ if (IS_FLEX (mode)) ++ mode = SUB (mode); ++ int num_dimensions = (mode == M_STRING ? 1 : DIM (mode)); ++ ++ a68_push_range (NULL); ++ to = a68_lower_tmpvar ("to%", TREE_TYPE (to), to); ++ from = a68_lower_tmpvar ("from%", TREE_TYPE (from), from); ++ tree from_elements = a68_multiple_elements (from); ++ tree element_pointer_type = TREE_TYPE (from_elements); ++ from_elements = a68_lower_tmpvar ("from_elements%", element_pointer_type, ++ from_elements); ++ tree to_elements = a68_lower_tmpvar ("to_elements%", element_pointer_type, ++ a68_multiple_elements (to)); ++ ++ tree *indexes = (tree *) xmalloc (num_dimensions * sizeof (tree)); ++ tree to_offset = size_zero_node; ++ tree from_offset = size_zero_node; ++ a68_add_stmt (copy_multiple_dimension_elems (0 /* dim */, num_dimensions, ++ to, from, ++ to_elements, from_elements, ++ &to_offset, &from_offset, ++ indexes)); ++ free (indexes); ++ return a68_pop_range (); ++} ++ ++/* Given a rows type, return the number of dimensions. */ ++ ++tree ++a68_rows_dim (tree exp) ++{ ++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (exp))); ++ ++ /* dim% is the first field in the rows struct. */ ++ tree dim_field = TYPE_FIELDS (TREE_TYPE (exp)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (dim_field), ++ exp, ++ dim_field, ++ NULL_TREE); ++} ++ ++/* Given a multiple value, create a rows value reflecting the multiple's ++ dimensions and triplets. */ ++ ++tree ++a68_rows_value (tree multiple) ++{ ++ tree rows_type = CTYPE (M_ROWS); ++ tree dim_field = TYPE_FIELDS (rows_type); ++ tree triplets_field = TREE_CHAIN (dim_field); ++ ++ tree dimensions = save_expr (a68_multiple_dimensions (multiple)); ++ tree triplets = fold_build1 (ADDR_EXPR, TREE_TYPE (triplets_field), ++ a68_multiple_triplets (multiple)); ++ return build_constructor_va (rows_type, 2, ++ dim_field, dimensions, ++ triplets_field, triplets); ++} ++ ++/* Given a rows value and a dimension number, return the upper bound or the ++ lower of the given dimension. The returned bound is a ssizetype. ++ ++ DIM must be a sizetype. */ ++ ++static tree ++rows_lower_or_upper_bound (tree rows, tree dim, bool upper) ++{ ++ tree rows_type = TREE_TYPE (rows); ++ tree triplet_type = a68_triplet_type (); ++ tree triplet_pointer_type = build_pointer_type (triplet_type); ++ tree triplet_lb_field = TYPE_FIELDS (triplet_type); ++ tree triplet_ub_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); ++ tree triplets_field = TREE_CHAIN (TYPE_FIELDS (rows_type)); ++ tree triplets = fold_build3 (COMPONENT_REF, triplet_pointer_type, ++ rows, triplets_field, NULL_TREE); ++ tree triplet_offset = fold_build2 (MULT_EXPR, sizetype, ++ dim, ++ size_in_bytes (triplet_type)); ++ tree bound = fold_build3 (COMPONENT_REF, ssizetype, ++ fold_build1 (INDIRECT_REF, triplet_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ triplet_pointer_type, ++ triplets, ++ triplet_offset)), ++ upper ? triplet_ub_field : triplet_lb_field, ++ NULL_TREE); ++ ++ return bound; ++} ++ ++/* Return the lower bound of dimension DIM of ROWS. */ ++ ++tree ++a68_rows_lower_bound (tree rows, tree dim) ++{ ++ return rows_lower_or_upper_bound (rows, dim, false); ++} ++ ++/* Return the upper bound of dimension DIM of ROWS. */ ++ ++tree ++a68_rows_upper_bound (tree rows, tree dim) ++{ ++ return rows_lower_or_upper_bound (rows, dim, true); ++} ++ ++/* Return a tree that checks that a given INDEX is correct given a multiple's ++ bounds in a given rank DIM. ++ ++ If UPPER_BOUND is true then INDEX shall be less or equal than the multiple's ++ upper bound. Otherwise INDEX shall be bigger or equal than the multiple's ++ lower bound. ++ ++ If the condition above doesn't hold then a call to a run-time function is ++ performed: if UPPER_BOUND is true then ARRAYUPPERBOUND is called. Otherwise ++ ARRAYLOWERBOUND is called. */ ++ ++tree ++a68_multiple_single_bound_check (NODE_T *p, tree dim, ++ tree multiple, tree index, bool upper_bound) ++{ ++ index = save_expr (index); ++ multiple = save_expr (multiple); ++ ++ tree bound = (upper_bound ++ ? a68_multiple_upper_bound (multiple, dim) ++ : a68_multiple_lower_bound (multiple, dim)); ++ a68_libcall_fn libcall = (upper_bound ++ ? A68_LIBCALL_ARRAYUPPERBOUND ++ : A68_LIBCALL_ARRAYLOWERBOUND); ++ ++ /* Build the call to ARRAY*BOUNDS. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (libcall, ++ void_type_node, 4, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index), ++ fold_convert (ssizetype, bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ tree bounds_check = fold_build2 (upper_bound ? LE_EXPR : GE_EXPR, ++ ssizetype, ++ fold_convert (ssizetype, index), ++ bound); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ bounds_check, call); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ a boundable object with dimension BOUNDABLE_DIM. If the provided DIM is not ++ a valid dimention then a call to the run-time function ARRAYDIM is ++ performed. ++ ++ BOUNDABLE_DIM and DIM must be of type sizetype. They are both one-based. ++ ++ The parse tree node P is used as the source for the filename and line number ++ passed to the run-time function. */ ++ ++static tree ++a68_boundable_dim_check (NODE_T *p, tree boundable_dim, tree dim) ++{ ++ boundable_dim = save_expr (boundable_dim); ++ dim = save_expr (dim); ++ ++ /* Build the call to ARRAYDIM. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYDIM, ++ void_type_node, 4, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ boundable_dim, dim); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ tree dim_check = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, ++ fold_build2 (GT_EXPR, boolean_type_node, dim, size_zero_node), ++ fold_build2 (LE_EXPR, boolean_type_node, dim, boundable_dim)); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ dim_check, call); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ the given rows value ROWS. ++ ++ DIM is a sizetype. ++ The parse tree node P is used as the source for the filename and line ++ number. */ ++ ++tree ++a68_rows_dim_check (NODE_T *p, tree rows, tree dim) ++{ ++ return a68_boundable_dim_check (p, a68_rows_dim (rows), dim); ++} ++ ++/* Return a tree that checks whether the given DIM is a valid dimension/rank of ++ the given multiple value MULTIPLE. ++ ++ DIM is a sizetype. ++ The parse tree node P is used as the source for the filename and line ++ number. */ ++ ++tree ++a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim) ++{ ++ return a68_boundable_dim_check (p, a68_multiple_dimensions (multiple), dim); ++} ++ ++/* Return a tree that checks whether the given INDEX falls within the bounds of ++ MULTIPLE in the rank DIM. If the provided index is out of bounds then a ++ call to the run-time function ARRAYBOUNDS is performed. ++ ++ DIM must be a sizetype. ++ MULTIPLE must be a multiple value. ++ INDEX must be a ssizetype. ++ ++ The parse tree node P is used as the source for the filename and line number ++ passed to the run-time function. */ ++ ++tree ++a68_multiple_bounds_check (NODE_T *p, tree dim, ++ tree multiple, tree index) ++{ ++ index = save_expr (index); ++ multiple = save_expr (multiple); ++ ++ tree upper_bound = a68_multiple_upper_bound (multiple, dim); ++ tree lower_bound = a68_multiple_lower_bound (multiple, dim); ++ ++ /* Build the call to ARRAYBOUNDS. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, ++ void_type_node, 5, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ fold_convert (ssizetype, index), ++ fold_convert (ssizetype, lower_bound), ++ fold_convert (ssizetype, upper_bound)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ ++ /* If LB > UB, the dimension contains no elements. ++ Otherwise, it must hold IDX >= LB && IDX <= UB */ ++ tree bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, ++ fold_build2 (LE_EXPR, ssizetype, ++ lower_bound, upper_bound), ++ fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index), ++ lower_bound), ++ fold_build2 (LE_EXPR, ssizetype, ++ fold_convert (ssizetype, ++ index), ++ upper_bound))); ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, ++ ssizetype, ++ bounds_check, call); ++} ++ ++/* Emit a run-time error if the bounds of M1 and M2 are not the same. Both ++ multiples are assumed to have the same type and therefore feature the same ++ number of dimensions. */ ++ ++tree ++a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2) ++{ ++ m1 = save_expr (m1); ++ m2 = save_expr (m2); ++ ++ /* First determine the rank of the multiples and check they match. */ ++ tree m1_dimensions = a68_multiple_dimensions (m1); ++ tree m2_dimensions = a68_multiple_dimensions (m2); ++ gcc_assert (TREE_CODE (m1_dimensions) == INTEGER_CST ++ && TREE_CODE (m2_dimensions) == INTEGER_CST); ++ ++ int dim1 = tree_to_shwi (m1_dimensions); ++ int dim2 = tree_to_shwi (m2_dimensions); ++ gcc_assert (dim1 == dim2); ++ ++ a68_push_range (NULL /* VOID */); ++ ++ /* For each dimension, check that bounds are the same in both multiples. */ ++ int i; ++ for (i = 0; i < dim1; ++i) ++ { ++ tree dim_tree = build_int_cst (ssizetype, i); ++ tree dim_plus_one = fold_build2 (PLUS_EXPR, ssizetype, ++ dim_tree, ++ fold_convert (ssizetype, size_one_node)); ++ ++ tree lb1 = save_expr (a68_multiple_lower_bound (m1, dim_tree)); ++ tree lb2 = save_expr (a68_multiple_lower_bound (m2, dim_tree)); ++ ++ tree ub1 = save_expr (a68_multiple_upper_bound (m1, dim_tree)); ++ tree ub2 = save_expr (a68_multiple_upper_bound (m2, dim_tree)); ++ ++ tree bounds_equal = fold_build2 (TRUTH_AND_EXPR, ++ boolean_type_node, ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ lb1, lb2), ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ ub1, ub2)); ++ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDSMISMATCH, ++ void_type_node, 7, ++ filename, ++ build_int_cst (unsigned_type_node, lineno), ++ dim_plus_one, ++ lb1, ub1, lb2, ub2); ++ call = fold_build2 (COMPOUND_EXPR, boolean_type_node, call, boolean_false_node); ++ ++ tree check = fold_build2_loc (a68_get_node_location (p), ++ TRUTH_ORIF_EXPR, boolean_type_node, ++ bounds_equal, ++ call); ++ a68_add_stmt (check); ++ } ++ ++ return a68_pop_range (); ++} ++ ++/* Allocate a multiple on the heap. ++ ++ M is the mode the multiple to allocate. ++ DIM is the number of dimensions of the multiple. ++ ELEMS is a pointer to the elements of the multiple. ++ ELEMS_SIZE is the size in bytes of ELEMS. ++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. */ ++ ++tree ++a68_row_malloc (tree type, int dim, tree elems, tree elems_size, ++ tree *lower_bound, tree *upper_bound) ++{ ++ tree ptr_to_type = build_pointer_type (type); ++ ++ a68_push_range (NULL); ++ ++ /* Allocate space for the descriptor. */ ++ tree ptr_to_multiple = a68_lower_tmpvar ("ptr_to_multiple%", ptr_to_type, ++ a68_lower_malloc (type, size_in_bytes (type))); ++ tree multiple = a68_row_value (type, dim, ++ elems, elems_size, ++ lower_bound, upper_bound); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ fold_build1 (INDIRECT_REF, type, ptr_to_multiple), ++ multiple)); ++ a68_add_stmt (ptr_to_multiple); ++ tree res = a68_pop_range (); ++ TREE_TYPE (res) = ptr_to_type; ++ return res; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-posix.cc +@@ -0,0 +1,559 @@ ++/* Lowering routines for the POSIX prelude. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Set the exit status of the running process, to be returned to the OS upon ++ exit. */ ++ ++tree ++a68_posix_setexitstatus (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_SET_EXIT_STATUS); ++} ++ ++/* Number of command line arguments passed to the program. */ ++ ++tree ++a68_posix_argc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_ARGC); ++} ++ ++/* Gets the Nth command line argument passed to the program. If N is out of ++ range the result is an empty string. */ ++ ++tree ++a68_posix_argv (void) ++{ ++ static tree argv_fndecl; ++ ++ if (argv_fndecl == NULL_TREE) ++ { ++ argv_fndecl ++ = a68_low_toplevel_func_decl ("argv", ++ build_function_type_list (CTYPE (M_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (argv_fndecl); ++ ++ tree param = a68_low_func_param (argv_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (argv_fndecl) = param; ++ ++ a68_push_function_range (argv_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ a68_push_range (M_STRING); ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree ptrtochar_type = build_pointer_type (a68_char_type); ++ tree elems = a68_lower_tmpvar ("elems%", ptrtochar_type, ++ a68_build_libcall (A68_LIBCALL_POSIX_ARGV, ++ ptrtochar_type, 2, ++ param, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), ++ len))); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, ++ size_in_bytes (a68_char_type)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound)); ++ tree body = a68_pop_range (); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (argv_fndecl)), ++ argv_fndecl); ++} ++ ++/* Gets the value of an environment variable, or an empty string if the ++ variable is not set. */ ++ ++tree ++a68_posix_getenv (void) ++{ ++ static tree getenv_fndecl; ++ ++ if (getenv_fndecl == NULL_TREE) ++ { ++ getenv_fndecl ++ = a68_low_toplevel_func_decl ("getenv", ++ build_function_type_list (CTYPE (M_STRING), ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (getenv_fndecl); ++ ++ tree param = a68_low_func_param (getenv_fndecl, "varname", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (getenv_fndecl) = param; ++ ++ a68_push_function_range (getenv_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ a68_push_range (M_STRING); ++ ++ tree varname = a68_lower_tmpvar ("varname%", CTYPE (M_STRING), ++ param); ++ ++ tree ptrtochar_type = build_pointer_type (a68_char_type); ++ tree convelems = a68_lower_tmpvar ("convelems%", ptrtochar_type, ++ build_int_cst (ptrtochar_type, 0)); ++ TREE_ADDRESSABLE (convelems) = 1; ++ tree convelemslen = a68_lower_tmpvar ("convelemslen%", sizetype, ++ size_int (0)); ++ TREE_ADDRESSABLE (convelemslen) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETENV, ++ void_type_node, 5, ++ a68_multiple_elements (varname), ++ a68_multiple_num_elems (varname), ++ a68_multiple_stride (varname, size_zero_node), ++ fold_build1 (ADDR_EXPR, build_pointer_type (ptrtochar_type), ++ convelems), ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), ++ convelemslen)); ++ a68_add_stmt (call); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, convelemslen); ++ tree convelems_size = fold_build2 (MULT_EXPR, sizetype, ++ convelemslen, ++ size_in_bytes (a68_char_type)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ convelems, convelems_size, ++ &lower_bound, &upper_bound)); ++ tree body = a68_pop_range (); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (getenv_fndecl)), ++ getenv_fndecl); ++} ++ ++tree ++a68_posix_putchar (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_PUTCHAR); ++} ++ ++tree ++a68_posix_puts (void) ++{ ++ static tree puts_fndecl; ++ ++ if (puts_fndecl == NULL_TREE) ++ { ++ puts_fndecl ++ = a68_low_toplevel_func_decl ("puts", ++ build_function_type_list (void_type_node, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (puts_fndecl); ++ ++ tree param = a68_low_func_param (puts_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (puts_fndecl) = param; ++ ++ a68_push_function_range (puts_fndecl, void_type_node, ++ true /* top_level */); ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_PUTS, ++ void_type_node, 3, ++ a68_multiple_elements (param), ++ a68_multiple_num_elems (param), ++ a68_multiple_stride (param, size_zero_node)); ++ a68_pop_function_range (call); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (puts_fndecl)), ++ puts_fndecl); ++} ++ ++tree ++a68_posix_fconnect (void) ++{ ++ static tree fconnect_fndecl; ++ ++ if (fconnect_fndecl == NULL_TREE) ++ { ++ fconnect_fndecl ++ = a68_low_toplevel_func_decl ("fconnect", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fconnect_fndecl); ++ ++ tree host = a68_low_func_param (fconnect_fndecl, "host", CTYPE (M_STRING)); ++ tree port = a68_low_func_param (fconnect_fndecl, "port", a68_int_type); ++ DECL_ARGUMENTS (fconnect_fndecl) = chainon (host, port); ++ ++ a68_push_function_range (fconnect_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCONNECT, ++ a68_int_type, 4, ++ a68_multiple_elements (host), ++ a68_multiple_num_elems (host), ++ a68_multiple_stride (host, size_zero_node), ++ port); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fconnect_fndecl)), ++ fconnect_fndecl); ++} ++ ++tree ++a68_posix_fcreate (void) ++{ ++ static tree fcreate_fndecl; ++ ++ if (fcreate_fndecl == NULL_TREE) ++ { ++ fcreate_fndecl ++ = a68_low_toplevel_func_decl ("fcreate", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fcreate_fndecl); ++ ++ tree pathname = a68_low_func_param (fcreate_fndecl, "pathname", CTYPE (M_STRING)); ++ tree mode = a68_low_func_param (fcreate_fndecl, "mode", a68_int_type); ++ DECL_ARGUMENTS (fcreate_fndecl) = chainon (pathname, mode); ++ ++ a68_push_function_range (fcreate_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCREATE, ++ a68_int_type, 4, ++ a68_multiple_elements (pathname), ++ a68_multiple_num_elems (pathname), ++ a68_multiple_stride (pathname, size_zero_node), ++ mode); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fcreate_fndecl)), ++ fcreate_fndecl); ++} ++ ++tree ++a68_posix_fopen (void) ++{ ++ static tree fopen_fndecl; ++ ++ if (fopen_fndecl == NULL_TREE) ++ { ++ fopen_fndecl ++ = a68_low_toplevel_func_decl ("fopen", ++ build_function_type_list (a68_int_type, ++ CTYPE (M_STRING), ++ a68_bits_type, ++ NULL_TREE)); ++ announce_function (fopen_fndecl); ++ ++ tree pathname = a68_low_func_param (fopen_fndecl, "pathname", CTYPE (M_STRING)); ++ tree flags = a68_low_func_param (fopen_fndecl, "flags", a68_int_type); ++ DECL_ARGUMENTS (fopen_fndecl) = chainon (pathname, flags); ++ ++ a68_push_function_range (fopen_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FOPEN, ++ a68_int_type, 4, ++ a68_multiple_elements (pathname), ++ a68_multiple_num_elems (pathname), ++ a68_multiple_stride (pathname, size_zero_node), ++ flags); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fopen_fndecl)), ++ fopen_fndecl); ++} ++ ++tree ++a68_posix_fclose (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FCLOSE); ++} ++ ++tree ++a68_posix_fsize (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FSIZE); ++} ++ ++tree ++a68_posix_lseek (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_LSEEK); ++} ++ ++tree ++a68_posix_errno (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_ERRNO); ++} ++ ++tree ++a68_posix_perror (void) ++{ ++ static tree perror_fndecl; ++ ++ if (perror_fndecl == NULL_TREE) ++ { ++ perror_fndecl ++ = a68_low_toplevel_func_decl ("perror", ++ build_function_type_list (void_type_node, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (perror_fndecl); ++ ++ tree str = a68_low_func_param (perror_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (perror_fndecl) = str; ++ ++ a68_push_function_range (perror_fndecl, void_type_node, ++ true /* top_level */); ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_PERROR, ++ a68_int_type, 3, ++ a68_multiple_elements (str), ++ a68_multiple_num_elems (str), ++ a68_multiple_stride (str, size_zero_node)); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (perror_fndecl)), ++ perror_fndecl); ++} ++ ++tree ++a68_posix_strerror (void) ++{ ++ static tree strerror_fndecl; ++ ++ if (strerror_fndecl == NULL_TREE) ++ { ++ strerror_fndecl ++ = a68_low_toplevel_func_decl ("strerror", ++ build_function_type_list (CTYPE (M_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (strerror_fndecl); ++ ++ tree errnum = a68_low_func_param (strerror_fndecl, "errnum", a68_int_type); ++ DECL_ARGUMENTS (strerror_fndecl) = errnum; ++ ++ a68_push_function_range (strerror_fndecl, CTYPE (M_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_STRERROR, ++ void_type_node, 2, ++ errnum, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ ++ tree body = a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (strerror_fndecl)), ++ strerror_fndecl); ++} ++ ++tree ++a68_posix_getchar (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_GETCHAR); ++} ++ ++tree ++a68_posix_fgetc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FGETC); ++} ++ ++tree ++a68_posix_fputc (void) ++{ ++ return a68_get_libcall (A68_LIBCALL_POSIX_FPUTC); ++} ++ ++tree ++a68_posix_fputs (void) ++{ ++ static tree fputs_fndecl; ++ ++ if (fputs_fndecl == NULL_TREE) ++ { ++ fputs_fndecl ++ = a68_low_toplevel_func_decl ("fputs", ++ build_function_type_list (a68_int_type, ++ a68_int_type, ++ CTYPE (M_STRING), ++ NULL_TREE)); ++ announce_function (fputs_fndecl); ++ ++ tree fd = a68_low_func_param (fputs_fndecl, "fd", a68_int_type); ++ tree str = a68_low_func_param (fputs_fndecl, "str", CTYPE (M_STRING)); ++ DECL_ARGUMENTS (fputs_fndecl) = chainon (fd, str); ++ ++ a68_push_function_range (fputs_fndecl, a68_int_type, ++ true /* top_level */); ++ ++ ++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FPUTS, ++ a68_int_type, 4, ++ fd, ++ a68_multiple_elements (str), ++ a68_multiple_num_elems (str), ++ a68_multiple_stride (str, size_zero_node)); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fputs_fndecl)), ++ fputs_fndecl); ++} ++ ++tree ++a68_posix_fgets (void) ++{ ++ static tree fgets_fndecl; ++ ++ if (fgets_fndecl == NULL_TREE) ++ { ++ fgets_fndecl ++ = a68_low_toplevel_func_decl ("fgets", ++ build_function_type_list (CTYPE (M_REF_STRING), ++ a68_int_type, ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (fgets_fndecl); ++ ++ tree fd = a68_low_func_param (fgets_fndecl, "fd", a68_int_type); ++ tree n = a68_low_func_param (fgets_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (fgets_fndecl) = chainon (fd, n); ++ ++ a68_push_function_range (fgets_fndecl, CTYPE (M_REF_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_FGETS, ++ CTYPE (M_REF_STRING), 3, ++ fd, n, ++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fgets_fndecl)), ++ fgets_fndecl); ++} ++ ++tree ++a68_posix_gets (void) ++{ ++ static tree gets_fndecl; ++ ++ if (gets_fndecl == NULL_TREE) ++ { ++ gets_fndecl ++ = a68_low_toplevel_func_decl ("gets", ++ build_function_type_list (CTYPE (M_REF_STRING), ++ a68_int_type, ++ NULL_TREE)); ++ announce_function (gets_fndecl); ++ ++ tree n = a68_low_func_param (gets_fndecl, "n", a68_int_type); ++ DECL_ARGUMENTS (gets_fndecl) = n; ++ ++ a68_push_function_range (gets_fndecl, CTYPE (M_REF_STRING), ++ true /* top_level */); ++ ++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); ++ TREE_ADDRESSABLE (len) = 1; ++ ++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETS, ++ CTYPE (M_REF_STRING), 2, ++ n, fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); ++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); ++ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, len); ++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, ++ len, size_in_bytes (a68_char_type)); ++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, ++ elems, elems_size, ++ &lower_bound, &upper_bound); ++ a68_pop_function_range (body); ++ } ++ ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (gets_fndecl)), ++ gets_fndecl); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-prelude.cc +@@ -0,0 +1,2193 @@ ++/* Lower Algol 68 pre-defined operators and procedures. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* The following handlers are for lowing the entities defined in ++ a68-parser-prelude.c. */ ++ ++tree ++a68_lower_unimplemented (NODE_T *p, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ fatal_error (a68_get_node_location (p), ++ "no lowering routine installed for construct. jemarch has been lazy"); ++} ++ ++tree ++a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_char_abs (op); ++} ++ ++tree ++a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bool_abs (op); ++} ++ ++tree ++a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_int_abs (op); ++} ++ ++tree ++a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_real_abs (op); ++} ++ ++tree ++a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Used to implement monadic +. */ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++tree ++a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build1_loc (a68_get_node_location (p), ++ NEGATE_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++/* Lower an ENTIER standard monadic operator. */ ++ ++tree ++a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_real_entier (a68_lower_tree (op, ctx), MOID (p), MOID (op)); ++} ++ ++/* Lower a ROUND standard monadic operator. ++ ++ This operator gets a LONGSETY REAL and produces a LONGSETY INT which is the ++ nearest integer to the given real. */ ++ ++tree ++a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_real_round (a68_lower_tree (op, ctx), MOID (p), MOID (op)); ++} ++ ++tree ++a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build1_loc (a68_get_node_location (p), ++ TRUTH_NOT_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_AND_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_OR_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return fold_build2_loc (a68_get_node_location (p), ++ TRUTH_XOR_EXPR, ++ CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_plus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_plus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_minus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_minus (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_mult (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_mult (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ MULT_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_div (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *m = MOID (p); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_mod (m, op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_div (MOID (p), ++ a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx), ++ a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_div (MOID (p), ++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), ++ a68_lower_tree (SUB (p), ctx)), ++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)), ++ a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_int_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_real_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_lt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_le (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_gt (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_char_ge (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_bool_eq (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_bool_ne (op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_int_sign (op); ++} ++ ++tree ++a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_real_sign (op); ++} ++ ++tree ++a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ PLUS_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ MINUS_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ TRUNC_DIV_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ TRUNC_MOD_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = fold_build2_loc (a68_get_node_location (p), ++ RDIV_EXPR, ++ TREE_TYPE (rhs), ++ a68_low_deref (lhs, SUB (p)), ++ rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++/* UPB comes in two flavors. ++ ++ The unary operator returns the upper bound of the first dimension of the ++ operand multple. ++ ++ The binary operator returns the upper bound of the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++upb (NODE_T *p, tree boundable, tree dim) ++{ ++ boundable = save_expr (boundable); ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or a ROWS. */ ++ tree zero_based_dim ++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); ++ tree type = TREE_TYPE (boundable); ++ if (A68_ROW_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_multiple_dim_check (p, boundable, dim), ++ a68_multiple_upper_bound (boundable, zero_based_dim)); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_rows_dim_check (p, boundable, dim), ++ a68_rows_upper_bound (boundable, zero_based_dim)); ++ } ++ else ++ gcc_unreachable (); ++} ++ ++tree ++a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, dim)); ++} ++ ++/* LWB comes in two flavors. ++ ++ The unary operator returns the lower bound of the first dimension of the ++ operand multple. ++ ++ The binary operator returns the lower bound of the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++lwb (NODE_T *p, tree boundable, tree dim) ++{ ++ boundable = save_expr (boundable); ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or an union whose all alternatives yield a ++ multiple. */ ++ tree zero_based_dim ++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); ++ tree type = TREE_TYPE (boundable); ++ if (A68_ROW_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_multiple_dim_check (p, boundable, dim), ++ a68_multiple_lower_bound (boundable, zero_based_dim)); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ return fold_build2 (COMPOUND_EXPR, ssizetype, ++ a68_rows_dim_check (p, boundable, dim), ++ a68_rows_lower_bound (boundable, zero_based_dim)); ++ } ++ else ++ gcc_unreachable (); ++} ++ ++tree ++a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, dim)); ++} ++ ++/* ELEMS comes in two flavors. ++ ++ The unary operator returns the number of elements in the first dimension of ++ the operand multple. ++ ++ DIM must be a size. ++ ++ The binary operator returns the number of elements in the given dimension of the ++ operand multiple. The dimension is one-based. If the specified dimension ++ is out of bounds then an a run-time error is raised. */ ++ ++static tree ++elems (NODE_T *p, tree boundable, tree dim) ++{ ++ dim = save_expr (dim); ++ ++ /* BOUNDABLE can be a multiple or a ROWS. */ ++ tree type = TREE_TYPE (boundable); ++ ++ /* Make DIM zero-based. */ ++ tree dim_minus_one ++ = fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node); ++ ++ boundable = save_expr (boundable); ++ tree upper_bound = NULL_TREE; ++ tree lower_bound = NULL_TREE; ++ tree check_dimension = NULL_TREE; ++ if (A68_ROW_TYPE_P (type)) ++ { ++ upper_bound = a68_multiple_upper_bound (boundable, dim_minus_one); ++ lower_bound = a68_multiple_lower_bound (boundable, dim_minus_one); ++ check_dimension = a68_multiple_dim_check (p, boundable, dim); ++ } ++ else if (A68_ROWS_TYPE_P (type)) ++ { ++ upper_bound = a68_rows_upper_bound (boundable, dim_minus_one); ++ lower_bound = a68_rows_lower_bound (boundable, dim_minus_one); ++ check_dimension = a68_rows_dim_check (p, boundable, dim); ++ } ++ else ++ gcc_unreachable (); ++ ++ upper_bound = save_expr (upper_bound); ++ lower_bound = save_expr (lower_bound); ++ ++ tree non_flat = fold_build2 (PLUS_EXPR, ++ sizetype, ++ fold_convert (sizetype, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bound, lower_bound)), ++ size_one_node); ++ ++ tree elems = fold_build3 (COND_EXPR, sizetype, ++ fold_build2 (LT_EXPR, boolean_type_node, ++ upper_bound, lower_bound), ++ size_zero_node, ++ non_flat); ++ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ elems = fold_build2 (COMPOUND_EXPR, sizetype, ++ check_dimension, ++ elems); ++ ++ return elems; ++} ++ ++tree ++a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, size_one_node)); ++} ++ ++tree ++a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); ++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, dim)); ++} ++ ++tree ++a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_int_pow (MOID (p), op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *mode = MOID (p); ++ MOID_T *op1_mode = MOID (SUB (p)); ++ MOID_T *op2_mode = MOID (NEXT (NEXT (SUB (p)))); ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_real_pow (mode, op1_mode, op2_mode, ++ op1, op2, a68_get_node_location (p)); ++} ++ ++tree ++a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ EQ_EXPR, ++ a68_bool_type, ++ fold_build2 (BIT_AND_EXPR, ++ CTYPE (MOID (op)), ++ a68_lower_tree (op, ctx), ++ build_int_cst (CTYPE (MOID (op)), 1)), ++ build_int_cst (CTYPE (MOID (op)), 1)); ++} ++ ++tree ++a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ EQ_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ NE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ LT_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ LE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ GT_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ tree cmp = a68_string_cmp (op1, op2); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ GE_EXPR, ++ a68_bool_type, ++ cmp, ++ build_int_cst (a68_int_type, 0)); ++} ++ ++tree ++a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_string_concat (a68_lower_tree (SUB (p), ctx), ++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); ++} ++ ++tree ++a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_concat (a68_low_deref (lhs, SUB (p)), rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs_node = NEXT (NEXT (SUB (p))); ++ tree lhs = a68_lower_tree (lhs_node, ctx); ++ lhs = a68_consolidate_ref (MOID (lhs_node), lhs); ++ lhs = save_expr (lhs); ++ MOID_T *lhs_mode = MOID (lhs_node); ++ NODE_T *rhs_node = SUB (p); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_concat (rhs, a68_low_deref (lhs, NEXT (NEXT (SUB (p))))); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, lhs_mode, ++ operation, MOID (rhs_node)), ++ lhs); ++} ++ ++tree ++a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *op = NEXT (SUB (p)); ++ return a68_char_repr (op, a68_lower_tree (op, ctx)); ++} ++ ++tree ++a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ return a68_string_concat (a68_string_from_char (op1), ++ a68_string_from_char (op2)); ++} ++ ++tree ++a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *n1 = SUB (p); ++ NODE_T *n2 = NEXT (NEXT (SUB (p))); ++ ++ if (MOID (n1) == M_INT) ++ { ++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); ++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n2, ctx)), ++ a68_lower_tree (n1, ctx)); ++ } ++ else ++ { ++ gcc_assert (MOID (n1) == M_CHAR); ++ gcc_assert (MOID (n2) == M_INT); ++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n1, ctx)), ++ a68_lower_tree (n2, ctx)); ++ } ++} ++ ++tree ++a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *n1 = SUB (p); ++ NODE_T *n2 = NEXT (NEXT (SUB (p))); ++ ++ if (MOID (n1) == M_INT) ++ { ++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); ++ return a68_string_mult (a68_lower_tree (n2, ctx), ++ a68_lower_tree (n1, ctx)); ++ } ++ else ++ { ++ gcc_assert (MOID (n1) == M_STRING || MOID (n1) == M_ROW_CHAR); ++ gcc_assert (MOID (n2) == M_INT); ++ return a68_string_mult (a68_lower_tree (n1, ctx), ++ a68_lower_tree (n2, ctx)); ++ } ++} ++ ++tree ++a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree lhs = a68_lower_tree (SUB (p), ctx); ++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); ++ lhs = save_expr (lhs); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ tree operation = a68_string_mult (a68_low_deref (lhs, SUB (p)), rhs); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), ++ lhs); ++} ++ ++/* SIZETY BITS operators. */ ++ ++tree ++a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_bin (MOID (p), op); ++} ++ ++tree ++a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_abs (MOID (p), op); ++} ++ ++tree ++a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_leng (CTYPE (MOID (p)), op); ++} ++ ++tree ++a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_shorten (CTYPE (MOID (p)), op); ++} ++ ++tree ++a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_bits_not (op); ++} ++ ++tree ++a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_and (op1, op2); ++} ++ ++tree ++a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_ior (op1, op2); ++} ++ ++tree ++a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_xor (op1, op2); ++} ++ ++tree ++a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree bits = a68_lower_tree (SUB (p), ctx); ++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_shift (shift, bits); ++} ++ ++tree ++a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree bits = a68_lower_tree (SUB (p), ctx); ++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_shift (fold_build1 (NEGATE_EXPR, ++ TREE_TYPE (shift), shift), ++ bits); ++} ++ ++tree ++a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree pos = a68_lower_tree (SUB (p), ctx); ++ tree bits = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_elem (p, pos, bits); ++} ++ ++tree ++a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_eq (op1, op2); ++} ++ ++tree ++a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_ne (op1, op2); ++} ++ ++tree ++a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_subset (op1, op2); ++} ++ ++tree ++a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ return a68_bits_subset (op2, op1); ++} ++ ++/* Environment enquiries. */ ++ ++tree ++a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_maxval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_minint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_minval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_maxbits (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_maxreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_maxval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_minreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_minval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_smallval (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_bitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_bits_type); ++} ++ ++tree ++a68_lower_longbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_long_bits_type); ++} ++ ++tree ++a68_lower_longlongbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_long_long_bits_type); ++} ++ ++tree ++a68_lower_shortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_short_bits_type); ++} ++ ++tree ++a68_lower_shortshortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_bits_width (a68_short_short_bits_type); ++} ++ ++tree ++a68_lower_intwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_int_type); ++} ++ ++tree ++a68_lower_longintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_long_int_type); ++} ++ ++tree ++a68_lower_longlongintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_long_long_int_type); ++} ++ ++tree ++a68_lower_shortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_short_int_type); ++} ++ ++tree ++a68_lower_shortshortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_int_width (a68_short_short_int_type); ++} ++ ++tree ++a68_lower_realwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_real_type); ++} ++ ++tree ++a68_lower_longrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_long_real_type); ++} ++ ++tree ++a68_lower_longlongrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_width (a68_long_long_real_type); ++} ++ ++tree ++a68_lower_expwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_real_type); ++} ++ ++tree ++a68_lower_longexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_long_real_type); ++} ++ ++tree ++a68_lower_longlongexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_exp_width (a68_long_long_real_type); ++} ++ ++tree ++a68_lower_pi (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_real_pi (CTYPE (MOID (p))); ++} ++ ++tree ++a68_lower_nullcharacter (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree null_character = NULL_TREE; ++ ++ if (null_character == NULL_TREE) ++ null_character = build_int_cst (a68_char_type, 0); ++ return null_character; ++} ++ ++tree ++a68_lower_flip (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree flip = NULL_TREE; ++ ++ if (flip == NULL_TREE) ++ flip = build_int_cst (a68_char_type, 84); /* T */ ++ return flip; ++} ++ ++tree ++a68_lower_eofchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree eofchar = NULL_TREE; ++ ++ if (eofchar == NULL_TREE) ++ eofchar = build_int_cst (a68_char_type, -1); ++ return eofchar; ++} ++ ++tree ++a68_lower_replacementchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree replacementchar = NULL_TREE; ++ ++ if (replacementchar == NULL_TREE) ++ replacementchar = build_int_cst (a68_char_type, 0xfffd); ++ return replacementchar; ++} ++ ++tree ++a68_lower_flop (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree flop = NULL_TREE; ++ ++ if (flop == NULL_TREE) ++ flop = build_int_cst (a68_char_type, 70); /* F */ ++ return flop; ++} ++ ++tree ++a68_lower_errorchar (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree errorchar = NULL_TREE; ++ ++ if (errorchar == NULL_TREE) ++ errorchar = build_int_cst (a68_char_type, 42); /* * */ ++ return errorchar; ++} ++ ++tree ++a68_lower_blank (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ static tree blank = NULL_TREE; ++ ++ if (blank == NULL_TREE) ++ blank = build_int_cst (a68_char_type, 32); ++ return blank; ++} ++ ++tree ++a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); ++ HOST_WIDE_INT long_int_size = int_size_in_bytes (a68_long_int_type); ++ HOST_WIDE_INT long_long_int_size = int_size_in_bytes (a68_long_long_int_type); ++ ++ gcc_assert (int_size != -1); ++ gcc_assert (long_int_size != -1); ++ gcc_assert (long_long_int_size != -1); ++ ++ int lengths = 1; ++ if (long_long_int_size != long_int_size) ++ lengths++; ++ if (long_int_size != int_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); ++ HOST_WIDE_INT short_int_size = int_size_in_bytes (a68_short_int_type); ++ HOST_WIDE_INT short_short_int_size = int_size_in_bytes (a68_short_short_int_type); ++ ++ gcc_assert (int_size != -1); ++ gcc_assert (short_int_size != -1); ++ gcc_assert (short_short_int_size != -1); ++ ++ int shorths = 1; ++ if (short_short_int_size != short_int_size) ++ shorths++; ++ if (short_int_size != int_size) ++ shorths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), shorths); ++} ++ ++tree ++a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); ++ HOST_WIDE_INT long_bits_size = int_size_in_bytes (a68_long_bits_type); ++ HOST_WIDE_INT long_long_bits_size = int_size_in_bytes (a68_long_long_bits_type); ++ ++ gcc_assert (bits_size != -1); ++ gcc_assert (long_bits_size != -1); ++ gcc_assert (long_long_bits_size != -1); ++ ++ int lengths = 1; ++ if (long_long_bits_size != long_bits_size) ++ lengths++; ++ if (long_bits_size != bits_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); ++ HOST_WIDE_INT short_bits_size = int_size_in_bytes (a68_short_bits_type); ++ HOST_WIDE_INT short_short_bits_size = int_size_in_bytes (a68_short_short_bits_type); ++ ++ gcc_assert (bits_size != -1); ++ gcc_assert (short_bits_size != -1); ++ gcc_assert (short_short_bits_size != -1); ++ ++ int shorths = 1; ++ if (short_short_bits_size != short_bits_size) ++ shorths++; ++ if (short_bits_size != bits_size) ++ shorths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), shorths); ++} ++ ++tree ++a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ HOST_WIDE_INT real_size = int_size_in_bytes (a68_real_type); ++ HOST_WIDE_INT long_real_size = int_size_in_bytes (a68_long_real_type); ++ HOST_WIDE_INT long_long_real_size = int_size_in_bytes (a68_long_long_real_type); ++ ++ gcc_assert (real_size != -1); ++ gcc_assert (long_real_size != -1); ++ gcc_assert (long_long_real_size != -1); ++ ++ int lengths = 1; ++ if (long_long_real_size != long_real_size) ++ lengths++; ++ if (long_real_size != real_size) ++ lengths++; ++ ++ return build_int_cst (CTYPE (MOID (p)), lengths); ++} ++ ++tree ++a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (CTYPE (MOID (p)), 1); ++} ++ ++tree ++a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_real (CTYPE (MOID (p)), dconstinf); ++} ++ ++tree ++a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_real (CTYPE (MOID (p)), dconstninf); ++} ++ ++tree ++a68_lower_maxabschar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_char_max (); ++} ++ ++tree ++a68_lower_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sqrt (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_tan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_tan (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_sin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_sin (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_cos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_cos (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_acos (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_acos (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_asin (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_asin (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_atan (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_atan (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_ln (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_ln (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_log (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_log (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_long_long_exp (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_real_exp (a68_long_long_real_type); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_reali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, op1, op2); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_inti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_COMPLEX, ++ convert_to_real (a68_real_type, op1), ++ convert_to_real (a68_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t= a68_complex_i (M_LONG_COMPLEX, ++ convert_to_real (a68_long_real_type, op1), ++ convert_to_real (a68_long_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op1 = a68_lower_tree (SUB (p), ctx); ++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, ++ convert_to_real (a68_long_long_real_type, op1), ++ convert_to_real (a68_long_long_real_type, op2)); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree t = a68_complex_re (op); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree t = a68_complex_im (op); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ return a68_complex_conj (MOID (p), op); ++} ++ ++tree ++a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_int_shorten (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_int_leng (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_shorten (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_real_leng (MOID (p), MOID (NEXT (SUB (p))), ++ a68_lower_tree (NEXT (SUB (p)), ctx)); ++} ++ ++tree ++a68_lower_random (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_libcall (A68_LIBCALL_RANDOM); ++} ++ ++tree ++a68_lower_longrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Note we dont build a call because this will get deprocedured in case it is ++ actually called. */ ++ return a68_get_libcall (A68_LIBCALL_LONGRANDOM); ++} ++ ++tree ++a68_lower_longlongrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_libcall (A68_LIBCALL_LONGLONGRANDOM); ++} ++ ++/********* POSIX prelude. ***************/ ++ ++tree ++a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_setexitstatus (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixargc (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_argc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixargv (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_argv (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgetenv (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_getenv (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixputchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_putchar (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixputs (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_puts (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfconnect (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fconnect (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfopen (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fopen (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfcreate (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fcreate (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfclose (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fclose (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfsize (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fsize (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixlseek (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_lseek (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixseekcur (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 0); ++} ++ ++tree ++a68_lower_posixseekend (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 1); ++} ++ ++tree ++a68_lower_posixseekset (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 2); ++} ++ ++tree ++a68_lower_posixstdinfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 0); ++} ++ ++tree ++a68_lower_posixstdoutfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 1); ++} ++ ++tree ++a68_lower_posixstderrfiledes (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return build_int_cst (a68_int_type, 2); ++} ++ ++tree ++a68_lower_posixfileodefault (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x99999999); ++} ++ ++tree ++a68_lower_posixfileordwr (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x2); ++} ++ ++tree ++a68_lower_posixfileordonly (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x0); ++} ++ ++tree ++a68_lower_posixfileowronly (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x1); ++} ++ ++tree ++a68_lower_posixfileotrunc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* Please keep in sync with libga68/ga68-posix.c */ ++ return build_int_cst (a68_bits_type, 0x8); ++} ++ ++tree ++a68_lower_posixerrno (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_errno (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixperror (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_perror (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixstrerror (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_strerror (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfputc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fputc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfputs (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fputs (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgetchar (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_getchar (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++ ++tree ++a68_lower_posixfgetc (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fgetc (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixgets (NODE_T *p ATTRIBUTE_UNUSED, ++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_gets (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} ++ ++tree ++a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree t = a68_posix_fgets (); ++ if (CAN_HAVE_LOCATION_P (t)) ++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); ++ return t; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-procs.cc +@@ -0,0 +1,52 @@ ++/* Lowering routines for all things related to procedures. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given procedure mode. */ ++ ++tree ++a68_get_proc_skip_tree (MOID_T *m) ++{ ++ /* A SKIP for a procecure mode lowers to a NULL pointer to a function. */ ++ return build_int_cst (CTYPE (m), 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-ranges.cc +@@ -0,0 +1,699 @@ ++/* Management of ranges in the Algol 68 front-end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++#include "tree-nested.h" ++ ++#include "a68.h" ++ ++/* Many Algol 68 constructions introduce a new range of definitions. This is ++ the case of clauses and of routine definitions. The stack of ranges at any ++ point in the program determines the "nest" of the constructions declared in ++ the program. This nest carries a record of all the declarations forming the ++ environment in which that construct is to be interpreted. ++ ++ This file contains a manager of ranges of which we allocate one for each ++ range inducing construct. The top-level range corresponds to the primal ++ environment. ++ ++ The ranges are used by the lowering code in order to create GCC tree BLOCK ++ nodes, and also to keep track of the set of declarations and of statements ++ being added by the current serial clause. */ ++ ++struct GTY (()) range ++{ ++ /* Whether this range entry doesn't introduce a lexical frame. Declarations ++ and decl_exprs get added to the nearst enclosing range that is not ++ frameless. */ ++ bool frameless; ++ ++ /* A chain of _DECL nodes for all variables, constants, functions, ++ and typedef types. These are in the reverse of the order supplied. */ ++ tree names; ++ ++ /* A statements list of DECL_EXPR nodes for all the declarations in the ++ range. These are prepended to the statements list when the range is ++ closed. */ ++ tree decl_exprs; ++ ++ /* The context of the range, either a function declaration or a translation ++ unit. */ ++ tree context; ++ ++ /* The range below this one. */ ++ struct range *next; ++ ++ /* Statement list. */ ++ tree stmt_list; ++ ++ /* List of blocks to which the block created for this range is the ++ superblock. */ ++ tree blocks; ++ ++ /* Mode associated with the range. For serial clauses, this is the mode of ++ the value yielded by the clause. */ ++ MOID_T *mode; ++ ++ /* If not TREE_NULL, then the range corresponds to a function, which can be ++ either nested or defined at top-level. */ ++ tree fndecl; ++ bool top_level_function; ++ ++ /* The following fields are used by ranges introduced by serial ++ clauses. */ ++ bool save_restore_stack; ++ bool has_completers; ++ tree clause_result_decl; ++ tree clause_exit_label_decl; ++ tree clause_stack_save_decl; ++}; ++ ++/* Global and current ranges. */ ++ ++static GTY (()) struct range *global_range; ++static GTY (()) struct range *current_range; ++ ++/* Create a new range and push it in the list. */ ++ ++static struct range * ++new_range (void) ++{ ++ struct range *range = ggc_alloc (); ++ ++ range->frameless = false; ++ range->names = NULL; ++ range->decl_exprs = alloc_stmt_list (); ++ range->context = NULL; ++ range->next = NULL; ++ range->blocks = NULL_TREE; ++ range->stmt_list = alloc_stmt_list (); ++ range->fndecl = NULL_TREE; ++ range->top_level_function = false; ++ range->save_restore_stack = false; ++ range->has_completers = false; ++ range->clause_result_decl = NULL_TREE; ++ range->clause_exit_label_decl = NULL_TREE; ++ range->clause_stack_save_decl = NULL_TREE; ++ range->mode = NO_MOID; ++ return range; ++} ++ ++/* Push a new frameless range. */ ++ ++void ++a68_push_stmt_list (MOID_T *mode) ++{ ++ a68_push_range (mode); ++ current_range->frameless = true; ++} ++ ++/* Pop a frameless range. */ ++ ++tree ++a68_pop_stmt_list (void) ++{ ++ /* This will result into a stmt list. */ ++ tree res = a68_pop_range (); ++ gcc_assert (TREE_CODE (res) == STATEMENT_LIST); ++ return res; ++} ++ ++/* Push a new range. */ ++ ++void ++a68_push_range (MOID_T *mode) ++{ ++ struct range *range = new_range (); ++ if (current_range) ++ range->context = current_range->context; ++ range->next = current_range; ++ range->mode = mode; ++ current_range = range; ++} ++ ++/* Pop a range, with a finalizer. ++ ++ Return a BIND_EXPR, a statement list or a TRY_FINALLY_EXPR. */ ++ ++tree ++a68_pop_range_with_finalizer (tree finalizer) ++{ ++ tree range = a68_pop_range (); ++ return fold_build2 (TRY_FINALLY_EXPR, TREE_TYPE (range), ++ range, finalizer); ++} ++ ++/* Pop a range. Return either a BIND_EXPR or a statements list. */ ++ ++tree ++a68_pop_range (void) ++{ ++ struct range *range = current_range; ++ current_range = range->next; ++ tree type = (range->mode == NULL ? void_type_node : CTYPE (range->mode)); ++ ++ /* If TYPE is a pointer type and the last expression in the statement list is ++ a variable of the type pointed by TYPE then take its address. */ ++ tree_stmt_iterator i = tsi_last (range->stmt_list); ++ if (POINTER_TYPE_P (type) && TREE_TYPE (type) == TREE_TYPE (tsi_stmt (i))) ++ { ++ append_to_statement_list_force (a68_consolidate_ref (range->mode, tsi_stmt (i)), ++ &range->stmt_list); ++ tsi_delink (&i); ++ } ++ ++ tree clause = NULL_TREE; ++ if (range->frameless) ++ clause = range->stmt_list; ++ else ++ { ++ /* Create a block and set its declarations and supercontext. */ ++ tree block = make_node (BLOCK); ++ BLOCK_VARS (block) = range->names; ++ BLOCK_SUBBLOCKS (block) = range->blocks; ++ ++ /* In each subblock, record that this is its superior. */ ++ for (tree t = range->blocks; t; t = BLOCK_CHAIN (t)) ++ BLOCK_SUPERCONTEXT (t) = block; ++ ++ if (range->fndecl) ++ { ++ BLOCK_SUPERCONTEXT (block) = range->fndecl; ++ DECL_INITIAL (range->fndecl) = block; ++ } ++ else ++ { ++ current_range->blocks ++ = block_chainon (current_range->blocks, block); ++ } ++ ++ TREE_USED (block) = true; ++ ++ /* Create a BIND if the range contains declarations. Otherwise just ++ use the statements list. */ ++ clause = range->stmt_list; ++ if (range->names != NULL_TREE) ++ { ++ clause = build3 (BIND_EXPR, ++ type, ++ range->names, ++ range->stmt_list, ++ block); ++ TREE_SIDE_EFFECTS (clause) = 1; ++ BIND_EXPR_VARS (clause) = BLOCK_VARS (block); ++ } ++ ++ /* Prepend the decl_exprs to the range's statements list. */ ++ tree_stmt_iterator q = tsi_start (range->stmt_list); ++ tsi_link_before (&q, range->decl_exprs, TSI_SAME_STMT); ++ } ++ ++ /* Set the type of the stmt_list. */ ++ TREE_TYPE (range->stmt_list) = type; ++ TREE_SIDE_EFFECTS (range->stmt_list) = 1; ++ ++ return clause; ++} ++ ++/* Add a new expression to the current range. */ ++ ++void ++a68_add_stmt (tree exp) ++{ ++ if (exp == void_node) ++ /* This may result from a mode declaration. */ ++ return; ++ gcc_assert (current_range != NULL); ++ append_to_statement_list_force (exp, ++ ¤t_range->stmt_list); ++} ++ ++/* Add a new declaration to the current range. */ ++ ++void ++a68_add_decl (tree decl) ++{ ++ gcc_assert (current_range != NULL); ++ struct range *range = current_range; ++ ++ /* Search for the right frame where to add the declaration. */ ++ while (range->frameless) ++ { ++ gcc_assert (range->next != NULL); ++ range = range->next; ++ } ++ ++ tree n = range->names; ++ while (n != decl && n != NULL) ++ n = TREE_CHAIN (n); ++ if (n != decl) ++ { ++ if (decl != current_function_decl) ++ DECL_CONTEXT (decl) = range->context; ++ /* Note this list needs to be in reverse order for compatibility with ++ GCC. */ ++ TREE_CHAIN (decl) = range->names; ++ range->names = decl; ++ } ++} ++ ++/* Add a new declaration expr to the current range. */ ++ ++void ++a68_add_decl_expr (tree decl_expr) ++{ ++ gcc_assert (current_range != NULL); ++ struct range *range = current_range; ++ ++ /* Search for the right frame where to add the declaration expr. */ ++ while (range->frameless) ++ { ++ gcc_assert (range->next != NULL); ++ range = range->next; ++ } ++ ++ append_to_statement_list_force (decl_expr, &range->decl_exprs); ++} ++ ++/* Add a completer in the current range. */ ++ ++void ++a68_add_completer (void) ++{ ++ struct range *range = current_range; ++ ++ /* The last statement in the statements list is either a single unit or a ++ labeled unit, i.e a COMPOUND_EXPR whose first expression is a label and ++ second expression is the unit. Consolidate the unit within the labeled ++ unit to a ref. */ ++ tree_stmt_iterator i = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (i); ++ ++ if (TREE_CODE (last_expr) == COMPOUND_EXPR ++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) ++ { ++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, ++ TREE_OPERAND (last_expr, 1)); ++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); ++ } ++ else ++ last_expr = a68_consolidate_ref (range->mode, last_expr); ++ ++ /* Now assign the labeled unit to the clause result decl then jump to the end ++ of the serial clause. */ ++ append_to_statement_list_force (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ range->clause_result_decl, ++ last_expr), ++ &range->stmt_list); ++ tsi_delink (&i); ++ append_to_statement_list_force (fold_build1 (GOTO_EXPR, void_type_node, ++ range->clause_exit_label_decl), ++ &range->stmt_list); ++ range->has_completers = true; ++} ++ ++/* Get the context of the current range. */ ++ ++tree ++a68_range_context (void) ++{ ++ gcc_assert (current_range != NULL); ++ return current_range->context; ++} ++ ++/* Get the list of declarations in the current range. */ ++ ++tree ++a68_range_names (void) ++{ ++ struct range *range = current_range; ++ ++ while (range->frameless && range->next != NULL) ++ range = range->next; ++ ++ if (range != NULL) ++ return range->names; ++ else ++ return NULL_TREE; ++} ++ ++/* Get the statements list of the current range. */ ++ ++tree ++a68_range_stmt_list (void) ++{ ++ gcc_assert (current_range != NULL); ++ return current_range->stmt_list; ++} ++ ++/* Push a range for a function. */ ++ ++void ++a68_push_function_range (tree fndecl, tree result_type, ++ bool top_level) ++{ ++ a68_push_range (NULL /* VOID */); ++ current_range->fndecl = fndecl; ++ current_range->top_level_function = top_level; ++ current_range->context = fndecl; ++ ++ /* Setup the result declaration. */ ++ tree resdecl = build_decl (UNKNOWN_LOCATION, ++ RESULT_DECL, ++ get_identifier ("resdecl%"), ++ result_type); ++ DECL_ARTIFICIAL (resdecl) = 1; ++ DECL_IGNORED_P (resdecl) = 1; ++ DECL_CONTEXT (resdecl) = fndecl; ++ DECL_RESULT (fndecl) = resdecl; ++ rest_of_decl_compilation (fndecl, 1, 0); ++ make_decl_rtl (fndecl); ++ allocate_struct_function (fndecl, false); ++ ++ /* Let GCC know the current scope is this function. */ ++ current_function_decl = fndecl; ++} ++ ++/* Pop a range for a function. */ ++ ++void ++a68_pop_function_range (tree body) ++{ ++ tree fndecl = current_range->fndecl; ++ bool top_level = current_range->top_level_function; ++ ++ if (TREE_TYPE (DECL_RESULT (fndecl)) == void_type_node) ++ { ++ a68_add_stmt (body); ++ } ++ else ++ { ++ /* Append the return statement. ++ Note that this does the copy of the returned value. */ ++ tree return_stmt = fold_build1 (RETURN_EXPR, ++ void_type_node, ++ fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (DECL_RESULT (fndecl)), ++ DECL_RESULT (fndecl), ++ a68_low_dup (body, true /* use_heap */))); ++ a68_add_stmt (return_stmt); ++ } ++ ++ /* Set the body of the function. */ ++ DECL_SAVED_TREE (fndecl) = a68_pop_range (); ++ ++ /* Output the GENERIC tree for the function.. */ ++ dump_function (TDI_original, fndecl); ++ /* This compiles the function all the way to assembler language output. ++ Nested functions are finalized when the containing top-level function is ++ finalized. */ ++ if (top_level || a68_in_global_range ()) ++ cgraph_node::finalize_function (fndecl, true); ++ else ++ /* Register this function with cgraph just far enough to get it added to ++ our parent's nested function list. */ ++ (void) cgraph_node::get_create (fndecl); ++ ++ /* Let GCC know the current scope has changed. */ ++ current_function_decl = NULL_TREE; ++ for (struct range *r = current_range; r; r = r->next) ++ { ++ if (r->fndecl != NULL_TREE) ++ current_function_decl = r->fndecl; ++ } ++} ++ ++/* Push a range for a serial clause. ++ ++ label1: BIND_EXPR_BODY (STATEMENT_LIST ( ++ expr1; label1, ++ expr2 expr1, ++ exit label2: clause_result = expr2, ++ expr3; goto exit_label, ++ expr4 label2, ++ exit label3: expr3, ++ expr5 clause_result = expr4, ++ goto exit_label, ++ label3, ++ clause_result = expr5, ++ exit_label, ++ clause_result)) */ ++ ++void ++a68_push_serial_clause_range (MOID_T *clause_mode, ++ bool save_restore_stack) ++{ ++ /* Get the type of the enclosing clause. */ ++ tree clause_type = CTYPE (clause_mode); ++ ++ /* If the serial clause has declarations that involve dynamic allocation, and ++ the environ it establishes is local, then save the stack pointer. */ ++ if (save_restore_stack) ++ { ++ a68_push_range (clause_mode); ++ current_range->save_restore_stack = true; ++ ++ tree outer_clause_result_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ clause_type); ++ char *outer_clause_result_name = xasprintf ("outer_clause_result%d%%", ++ DECL_UID (outer_clause_result_decl)); ++ DECL_NAME (outer_clause_result_decl) = get_identifier (outer_clause_result_name); ++ free (outer_clause_result_name); ++ current_range->clause_result_decl = outer_clause_result_decl; ++ a68_add_decl (outer_clause_result_decl); ++ ++ /* Variable used to save the stack pointer. */ ++ tree stack_save_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ get_identifier ("stack_save%"), ++ build_pointer_type (char_type_node)); ++ current_range->clause_stack_save_decl = stack_save_decl; ++ a68_add_decl (stack_save_decl); ++ a68_add_stmt (fold_build1 (DECL_EXPR, ++ TREE_TYPE (stack_save_decl), ++ stack_save_decl)); ++ ++ /* Save stack pointer. */ ++ tree call = builtin_decl_implicit (BUILT_IN_STACK_SAVE); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 0); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ stack_save_decl, call)); ++ } ++ ++ /* Push a new range. */ ++ a68_push_range (clause_mode); ++ current_range->save_restore_stack = save_restore_stack; ++ ++ /* Create a decl for clause_result with the right type and add it to the ++ block's declaration list. */ ++ tree clause_result_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ NULL, /* Set below. */ ++ clause_type); ++ char *clause_result_name = xasprintf ("clause_result%d%%", DECL_UID (clause_result_decl)); ++ DECL_NAME (clause_result_decl) = get_identifier (clause_result_name); ++ // free (clause_result_name); ++ DECL_INITIAL (clause_result_decl) = a68_get_skip_tree (clause_mode); ++ DECL_CONTEXT (clause_result_decl) = current_range->context; ++ current_range->clause_result_decl = clause_result_decl; ++ ++ /* Create a decl for the clause's exit label. */ ++ tree clause_exit_label_decl = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ NULL, /* Set below. */ ++ void_type_node); ++ char *exit_label_name = xasprintf ("clause_exit_label%d%%", DECL_UID (clause_exit_label_decl)); ++ DECL_NAME (clause_exit_label_decl) = get_identifier (exit_label_name); ++ free (exit_label_name); ++ DECL_CONTEXT (clause_exit_label_decl) = current_range->context; ++ current_range->clause_exit_label_decl = clause_exit_label_decl; ++} ++ ++/* Pop a range for a serial clause and return the resulting bind ++ expression. */ ++ ++tree ++a68_pop_serial_clause_range (void) ++{ ++ struct range *range = current_range; ++ MOID_T *clause_mode = range->mode; ++ tree clause_type = CTYPE (clause_mode); ++ ++ /* The last expression in the statements list is either a single unit or a ++ labeled unit. Consolidate it to a ref if required by the mode of the ++ serial clause. */ ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ if (TREE_CODE (last_expr) == COMPOUND_EXPR ++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) ++ { ++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, ++ TREE_OPERAND (last_expr, 1)); ++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); ++ } ++ else ++ last_expr = a68_consolidate_ref (range->mode, last_expr); ++ a68_add_stmt (last_expr); ++ tsi_delink (&si); ++ } ++ ++ /* If the serial clause has completers, we have to make use of the ++ clause_result% and clause_exit_label% mechanism to assure the statements ++ list has a single exit at the end. */ ++ if (range->has_completers) ++ { ++ /* First prepend EXPR_DECL expressions for clause_result% and ++ clause_exit_label% */ ++ { ++ tree_stmt_iterator si = tsi_start (range->stmt_list); ++ tsi_link_before (&si, ++ fold_build1 (DECL_EXPR, ++ TREE_TYPE (range->clause_result_decl), ++ range->clause_result_decl), ++ TSI_CONTINUE_LINKING); ++ tsi_link_before (&si, ++ fold_build1 (DECL_EXPR, ++ TREE_TYPE (range->clause_exit_label_decl), ++ range->clause_exit_label_decl), ++ TSI_CONTINUE_LINKING); ++ } ++ ++ /* Then turn the last expression in stmt_list to an assignment to ++ clause_result_decl%, but don't bother if it has been voided. */ ++ if (clause_type != a68_void_type) ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ ++ a68_add_stmt (build2 (MODIFY_EXPR, ++ clause_type, ++ range->clause_result_decl, ++ last_expr)); ++ tsi_delink (&si); ++ } ++ ++ a68_add_decl (range->clause_result_decl); ++ a68_add_decl (range->clause_exit_label_decl); ++ ++ /* Finally append the exit label and last expression with ++ result_decl. */ ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, range->clause_exit_label_decl)); ++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, range->clause_result_decl)); ++ } ++ ++ /* Check that the type of the last statement in the statements list is the ++ same than the type corresponding to the clause mode. */ ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ if (TREE_TYPE (tsi_stmt (si)) != clause_type ++ /* But NIL can appear in a context expecting VOID with no widening. */ ++ && !(clause_type == a68_void_type ++ && POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) ++ && TREE_CODE (tsi_stmt (si)) == INTEGER_CST ++ && tree_to_shwi (tsi_stmt (si)) == 0) ++ /* And any row type is valid when M_ROWS is expected. */ ++ && !(A68_ROWS_TYPE_P (clause_type) ++ && A68_ROWS_TYPE_P (TREE_TYPE (tsi_stmt (si)))) ++ /* Do not rely on comparing pointer types, as the equality fails in ++ that case. We need a better way of comparing types, either using ++ TYPE_CANONICAL or caching. */ ++ && !(POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) && POINTER_TYPE_P (clause_type))) ++ { ++ printf ("last statement:\n"); ++ debug_tree (tsi_stmt (si)); ++ printf ("expected type:\n"); ++ debug_tree (clause_type); ++ gcc_unreachable (); ++ } ++ } ++ ++ /* If the serial clause has declarations that involve dynamic allocation, and ++ the environ it establishes is local, then restore the stack pointer. */ ++ if (range->save_restore_stack) ++ { ++ /* Turn last expression of inner clause into a modify statement. This ++ may involve a copy. This can be omitted if the serial clause yields ++ void. */ ++ if (clause_type != a68_void_type) ++ { ++ tree_stmt_iterator si = tsi_last (range->stmt_list); ++ tree last_expr = tsi_stmt (si); ++ ++ a68_add_stmt (build2 (MODIFY_EXPR, ++ clause_type, ++ range->next->clause_result_decl, ++ a68_low_dup (last_expr))); ++ tsi_delink (&si); ++ } ++ ++ /* Finish inner clause, restoring stack pointer on finalizing. */ ++ tree restore_sp = builtin_decl_implicit (BUILT_IN_STACK_RESTORE); ++ restore_sp = build_call_expr_loc (UNKNOWN_LOCATION, restore_sp, 1, ++ current_range->next->clause_stack_save_decl); ++ a68_add_stmt (a68_pop_range_with_finalizer (restore_sp)); ++ /* The result value is now in clause_result_decl. */ ++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, ++ current_range->clause_result_decl)); ++ } ++ ++ return a68_pop_range (); ++} ++ ++/* Whether the current range is the global range. */ ++ ++bool ++a68_in_global_range (void) ++{ ++ return current_range == global_range; ++} ++ ++/* Initialize ranges. */ ++ ++void ++a68_init_ranges (void) ++{ ++ global_range = new_range (); ++ global_range->context = build_translation_unit_decl (NULL); ++ current_range = global_range; ++} ++ ++#include "gt-algol68-a68-low-ranges.h" +--- /dev/null ++++ b/src/gcc/algol68/a68-low-reals.cc +@@ -0,0 +1,620 @@ ++/* Lowering routines for all things related to REAL values. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "math.h" /* For log10 */ ++ ++#include "a68.h" ++ ++tree ++a68_get_real_skip_tree (MOID_T *m) ++{ ++ tree int_type = NULL_TREE; ++ tree real_type = NULL_TREE; ++ ++ if (m == M_REAL) ++ { ++ int_type = a68_int_type; ++ real_type = a68_real_type; ++ } ++ else if (m == M_LONG_REAL) ++ { ++ int_type = a68_long_int_type; ++ real_type = a68_long_real_type; ++ } ++ else if (m == M_LONG_LONG_REAL) ++ { ++ int_type = a68_long_long_int_type; ++ real_type = a68_long_long_real_type; ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_real_from_int_cst (real_type, ++ build_int_cst (int_type, 0)); ++} ++ ++static tree ++addr_of_builtin_decl (enum built_in_function fncode) ++{ ++ tree builtin = builtin_decl_explicit (fncode); ++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (builtin)), builtin); ++} ++ ++/* Build PI for the given real type. */ ++ ++tree ++a68_real_pi (tree type) ++{ ++ return build_real (type, dconst_pi ()); ++} ++ ++/* Given a real type, build the maximum value expresssable with that type. */ ++ ++tree ++a68_real_maxval (tree type) ++{ ++ REAL_VALUE_TYPE max; ++ real_maxval (&max, 0, TYPE_MODE (type)); ++ return build_real (type, max); ++} ++ ++/* Given a real type, build the minimum value expressable with that type. */ ++ ++tree ++a68_real_minval (tree type) ++{ ++ REAL_VALUE_TYPE min; ++ real_maxval (&min, 1, TYPE_MODE (type)); ++ return build_real (type, min); ++} ++ ++/* Given a real type, build the smallest value which can be meaningfully added ++ to or substracted from 1. */ ++ ++tree ++a68_real_smallval (tree type) ++{ ++ /* The smallest real value which can be meaningfully added to or subtracted ++ from 1. */ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ ++ char buf[128]; ++ if (fmt->pnan < fmt->p) ++ snprintf (buf, sizeof (buf), "0x1p%d", fmt->emin - fmt->p); ++ else ++ snprintf (buf, sizeof (buf), "0x1p%d", 1 - fmt->p); ++ ++ REAL_VALUE_TYPE res; ++ real_from_string (&res, buf); ++ return build_real (type, res); ++} ++ ++/* Given a real type, build an INT with the number of decimal digits required ++ to represent a mantissa, such that a real is not reglected in comparison ++ with 1, not including sign. */ ++ ++tree ++a68_real_width (tree type) ++{ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ return build_int_cst (a68_int_type, fmt->p); ++} ++ ++/* Given a real type, build an INT with the number of decimal digits required ++ to represent a decimal exponent, such that a real can be correctly ++ represented, not including sign. */ ++ ++tree ++a68_real_exp_width (tree type ATTRIBUTE_UNUSED) ++{ ++ const machine_mode mode = TYPE_MODE (type); ++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); ++ const double log10_2 = .30102999566398119521; ++ double log10_b = log10_2; ++ int max_10_exp = fmt->emax * log10_b; ++ ++ return build_int_cst (a68_int_type, 1 + log10 (max_10_exp)); ++} ++ ++/* Given a real value VAL, return -1 if it is less than zero, 0 if it is zero ++ and +1 if it is bigger than zero. The built value is always of mode ++ M_INT. */ ++ ++tree ++a68_real_sign (tree val) ++{ ++ tree zero = build_real (TREE_TYPE (val), dconst0); ++ return fold_build3 (COND_EXPR, ++ a68_int_type, ++ build2 (EQ_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 0), ++ fold_build3 (COND_EXPR, ++ a68_int_type, ++ fold_build2 (GT_EXPR, integer_type_node, val, zero), ++ build_int_cst (a68_int_type, 1), ++ build_int_cst (a68_int_type, -1))); ++} ++ ++/* Absolute value of a real value. */ ++ ++tree ++a68_real_abs (tree val) ++{ ++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); ++} ++ ++tree ++a68_real_sqrt (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_SQRTF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_SQRT; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_SQRTL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_tan (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_TANF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_TAN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_TANL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_sin (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_SINF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_SIN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_SINL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_cos (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_COSF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_COS; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_COSL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_acos (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ACOSF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ACOS; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ACOSL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_asin (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ASINF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ASIN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ASINL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_atan (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_ATANF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_ATAN; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_ATANL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_ln (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_LOGF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_LOG; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_LOGL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_log (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_LOG10F; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_LOG10; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_LOG10L; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++tree ++a68_real_exp (tree type) ++{ ++ enum built_in_function builtin; ++ ++ if (type == float_type_node) ++ builtin = BUILT_IN_EXPF; ++ else if (type == double_type_node) ++ builtin = BUILT_IN_EXP; ++ else if (type == long_double_type_node) ++ builtin = BUILT_IN_EXPL; ++ else ++ gcc_unreachable (); ++ ++ return addr_of_builtin_decl (builtin); ++} ++ ++/* Build the real value lengthened from the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. */ ++ ++tree ++a68_real_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ /* Lengthening can be done by just a conversion. */ ++ return fold_convert (CTYPE (to_mode), val); ++} ++ ++/* Build the real value that can be lengthened to the value of VAL, from mode ++ FROM_MODE to mode TO_MODE. ++ ++ If VAL cannot be represented in TO_MODE because it is bigger than the most ++ positive value representable in TO_MODE, then it is truncated to that value. ++ ++ Likewise, if VAL cannot be represented in TO_MODE because it is less than ++ the most negative value representable in TO_MODE, then it is truncated to ++ that value. */ ++ ++tree ++a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) ++{ ++ tree most_positive_value = fold_convert (CTYPE (from_mode), ++ a68_real_maxval (CTYPE (to_mode))); ++ tree most_negative_value = fold_convert (CTYPE (from_mode), ++ a68_real_minval (CTYPE (to_mode))); ++ ++ val = save_expr (val); ++ most_positive_value = save_expr (most_positive_value); ++ most_negative_value = save_expr (most_negative_value); ++ return fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), ++ fold_convert (CTYPE (to_mode), most_positive_value), ++ fold_build3 (COND_EXPR, CTYPE (to_mode), ++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), ++ fold_convert (CTYPE (to_mode), most_negative_value), ++ fold_convert (CTYPE (to_mode), val))); ++} ++ ++/* Given a real expression VAL of mode MODE, produce an integral value which is ++ equal to the given real, or the next integer below (more negative than) the ++ given real. */ ++ ++tree ++a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode) ++{ ++ tree fn = NULL_TREE; ++ tree to_type = CTYPE (to_mode); ++ ++ if (from_mode == M_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOORF); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOORF); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORF); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOOR); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOOR); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOOR); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IFLOORL); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LFLOORL); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORL); ++ else ++ gcc_unreachable (); ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); ++} ++ ++/* Given a real expression VAL of mode MODE, produce an integral value which is ++ the nearest integer to the given real. */ ++ ++tree ++a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode) ++{ ++ tree fn = NULL_TREE; ++ tree to_type = CTYPE (to_mode); ++ ++ if (from_mode == M_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUNDF); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUNDF); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDF); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUND); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUND); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUND); ++ else ++ gcc_unreachable (); ++ } ++ else if (from_mode == M_LONG_LONG_REAL) ++ { ++ if (to_type == integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_IROUNDL); ++ else if (to_type == long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LROUNDL); ++ else if (to_type == long_long_integer_type_node) ++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDL); ++ else ++ gcc_unreachable (); ++ } ++ else ++ gcc_unreachable (); ++ ++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); ++} ++ ++ ++/* Given two real values of mode M, build an expression that calculates the ++ addition of A and B. */ ++ ++tree ++a68_real_plus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ subtraction of A by B. */ ++ ++tree ++a68_real_minus (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ multiplication of A by B. */ ++ ++tree ++a68_real_mult (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates the ++ division of A by B. */ ++ ++tree ++a68_real_div (MOID_T *m, tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, RDIV_EXPR, CTYPE (m), a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A = B. */ ++ ++tree ++a68_real_eq (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A /= B. */ ++ ++tree ++a68_real_ne (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A < B. */ ++ ++tree ++a68_real_lt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates ++ whether A <= B. */ ++ ++tree ++a68_real_le (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A > B. */ ++ ++tree ++a68_real_gt (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); ++} ++ ++/* Given two real values of mode M, build an expression that calculates whether ++ A >= B. */ ++ ++tree ++a68_real_ge (tree a, tree b, location_t loc) ++{ ++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); ++} ++ ++/* Exponentiation involving real values. ++ ++ REAL <- REAL, REAL ++ REAL <- REAL, INT ++ LONG REAL <- LONG REAL, LONG REAL ++ LONG REAL <- LONG REAL, INT ++ LONG LONG REAL <- LONG LONG REAL, LONG LONG REAL ++ LONG LONG REAL <- LONG LONG REAL, INT */ ++ ++tree ++a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, ++ tree a, tree b, location_t loc) ++{ ++ enum built_in_function built_in; ++ if (m == M_REAL) ++ { ++ gcc_assert (a_mode == M_REAL); ++ built_in = b_mode == M_REAL ? BUILT_IN_POWF : BUILT_IN_POWIF; ++ } ++ else if (m == M_LONG_REAL) ++ { ++ gcc_assert (a_mode == M_LONG_REAL); ++ built_in = b_mode == M_LONG_REAL ? BUILT_IN_POW : BUILT_IN_POWI; ++ } ++ else if (m == M_LONG_LONG_REAL) ++ { ++ gcc_assert (a_mode == M_LONG_LONG_REAL); ++ built_in = b_mode == M_LONG_LONG_REAL ? BUILT_IN_POWL : BUILT_IN_POWIL; ++ } ++ else ++ gcc_unreachable (); ++ ++ tree call = builtin_decl_explicit (built_in); ++ gcc_assert (call != NULL_TREE); ++ return build_call_expr_loc (loc, call, 2, a, b); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-refs.cc +@@ -0,0 +1,52 @@ ++/* Lowering routines for all things related to names. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given name mode. */ ++ ++tree ++a68_get_ref_skip_tree (MOID_T *m) ++{ ++ /* Build a NULL pointer. */ ++ return build_int_cst (CTYPE (m), 0); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-runtime.cc +@@ -0,0 +1,225 @@ ++/* Libcalls to Algol 68 run-time functions. ++ Copyright (C) 2006-2025 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ Adapted from gcc/d/runtime.cc. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* The lowering pass may generate expressions to call various runtime library ++ functions. Most of these functions are implemented in libga68. This file ++ provides facilities to compile libcalls to runtime functions. The file ++ a68-low-runtime.def contains a database of available runtime library ++ functions. */ ++ ++enum a68_libcall_type ++{ ++ LCT_VOID, ++ LCT_CHAR, ++ LCT_CONSTCHARPTR, ++ LCT_VOIDPTR, ++ LCT_UNISTR, ++ LCT_UNISTRPTR, ++ LCT_SIZE, ++ LCT_SSIZE, ++ LCT_SIZEPTR, ++ LCT_UINT, ++ LCT_INT, ++ LCT_LONGLONGINT, ++ LCT_FLOAT, ++ LCT_DOUBLE, ++ LCT_LONGDOUBLE, ++ LCT_END ++}; ++ ++/* An array of all types that are used by the runtime functions we need. */ ++ ++static tree libcall_types[LCT_END]; ++ ++/* Internal list of library functions. */ ++ ++static tree libcall_decls[A68_LIBCALL_LAST]; ++ ++/* Return the TREE type that is described by TYPE. */ ++ ++static tree ++get_libcall_type (a68_libcall_type type) ++{ ++ if (libcall_types[type]) ++ return libcall_types[type]; ++ ++ if (type == LCT_VOID) ++ libcall_types[type] = void_type_node; ++ else if (type == LCT_CHAR) ++ libcall_types[type] = uint32_type_node; ++ else if (type == LCT_CONSTCHARPTR) ++ libcall_types[type] = build_pointer_type (build_qualified_type (char_type_node, ++ TYPE_QUAL_CONST)); ++ else if (type == LCT_VOIDPTR) ++ libcall_types[type] = ptr_type_node; ++ else if (type == LCT_UNISTR) ++ libcall_types[type] = build_pointer_type (a68_char_type); ++ else if (type == LCT_UNISTRPTR) ++ libcall_types[type] = build_pointer_type (build_pointer_type (a68_char_type)); ++ else if (type == LCT_SIZE) ++ libcall_types[type] = sizetype; ++ else if (type == LCT_SSIZE) ++ libcall_types[type] = ssizetype; ++ else if (type == LCT_SIZEPTR) ++ libcall_types[type] = build_pointer_type (sizetype); ++ else if (type == LCT_UINT) ++ libcall_types[type] = unsigned_type_node; ++ else if (type == LCT_INT) ++ libcall_types[type] = integer_type_node; ++ else if (type == LCT_LONGLONGINT) ++ libcall_types[type] = long_long_integer_type_node; ++ else if (type == LCT_FLOAT) ++ libcall_types[type] = float_type_node; ++ else if (type == LCT_DOUBLE) ++ libcall_types[type] = double_type_node; ++ else if (type == LCT_LONGDOUBLE) ++ libcall_types[type] = long_double_type_node; ++ else ++ gcc_unreachable (); ++ ++ return libcall_types[type]; ++} ++ ++/* Build and return a function declaration named NAME. The RETURN_TYPE is the ++ type returned, FLAGS are the expression call flags, and NPARAMS is the ++ number of arguments, the types of which are provided in `...'. */ ++ ++static tree ++build_libcall_decl (const char *name, a68_libcall_type return_type, ++ int flags, int nparams, ...) ++{ ++ tree *args = XALLOCAVEC (tree, nparams); ++ bool varargs = false; ++ tree fntype; ++ ++ /* Add parameter types, using `void' as the last parameter type ++ to mean this function accepts a variable list of arguments. */ ++ va_list ap; ++ va_start (ap, nparams); ++ ++ for (int i = 0; i < nparams; i++) ++ { ++ a68_libcall_type ptype = (a68_libcall_type) va_arg (ap, int); ++ tree type = get_libcall_type (ptype); ++ ++ if (type == void_type_node) ++ { ++ varargs = true; ++ nparams = i; ++ } ++ else ++ args[i] = type; ++ } ++ ++ va_end (ap); ++ ++ /* Build the function. */ ++ tree tret = get_libcall_type (return_type); ++ if (varargs) ++ fntype = build_varargs_function_type_array (tret, nparams, args); ++ else ++ fntype = build_function_type_array (tret, nparams, args); ++ ++ tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, ++ get_identifier (name), fntype); ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_ARTIFICIAL (decl) = 1; ++ DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; ++ DECL_VISIBILITY_SPECIFIED (decl) = 1; ++ ++ /* Set any attributes on the function, such as malloc or noreturn. */ ++ set_call_expr_flags (decl, flags); ++ return decl; ++} ++ ++/* Return or create the runtime library function declaration for LIBCALL. ++ Library functions are generated as needed. This could probably be changed ++ in the future to be done in the compiler init stage, like GCC builtin trees ++ are. */ ++ ++tree ++a68_get_libcall (a68_libcall_fn libcall) ++{ ++ if (libcall_decls[libcall]) ++ return libcall_decls[libcall]; ++ ++ switch (libcall) ++ { ++#define DEF_A68_RUNTIME(CODE, NAME, TYPE, PARAMS, FLAGS) \ ++ case A68_LIBCALL_ ## CODE: \ ++ libcall_decls[libcall] = build_libcall_decl (NAME, TYPE, FLAGS, PARAMS); \ ++ break; ++#include "a68-low-runtime.def" ++#undef DEF_A68_RUNTIME ++ default: ++ gcc_unreachable (); ++ } ++ ++ return libcall_decls[libcall]; ++} ++ ++/* Generate a call to LIBCALL, returning the result as TYPE. NARGS is the ++ number of call arguments, the expressions of which are provided in `...'. ++ This does not perform conversions or promotions on the arguments. */ ++ ++tree ++a68_build_libcall (a68_libcall_fn libcall, tree type ATTRIBUTE_UNUSED, ++ int nargs, ...) ++{ ++ /* Build the call expression to the runtime function. */ ++ tree decl = a68_get_libcall (libcall); ++ tree *args = XALLOCAVEC (tree, nargs); ++ va_list ap; ++ ++ va_start (ap, nargs); ++ for (int i = 0; i < nargs; i++) ++ args[i] = va_arg (ap, tree); ++ va_end (ap); ++ ++ tree result = build_call_expr_loc_array (input_location, decl, nargs, args); ++ ++ /* Assumes caller knows what it is doing. */ ++ return result; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-runtime.def +@@ -0,0 +1,92 @@ ++/* a68-low-runtime.def -- Definitions for Algol 68 runtime functions. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++/* Helper macros for parameter building. */ ++#define P0() 0 ++#define P1(T1) 1, LCT_ ## T1 ++#define P2(T1, T2) \ ++ 2, LCT_ ## T1, LCT_ ## T2 ++#define P3(T1, T2, T3) \ ++ 3, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3 ++#define P4(T1, T2, T3, T4) \ ++ 4, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4 ++#define P5(T1, T2, T3, T4, T5) \ ++ 5, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5 ++#define P6(T1, T2, T3, T4, T5, T6) \ ++ 6, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6 ++#define P7(T1, T2, T3, T4, T5, T6, T7) \ ++ 7, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6, LCT_ ## T7 ++#define RT(T1) LCT_ ## T1 ++ ++/* Algol 68 runtime library functions. */ ++ ++/* DEF_A68_RUNTIME (CODE, NAME, TYPE, PARAMS, FLAGS) ++ CODE The enum code used to refer to this function. ++ NAME The name of this function as a string. ++ FLAGS ECF flags to describe attributes of the function. ++ ++ Used for declaring functions that are called by generated code. */ ++ ++DEF_A68_RUNTIME (ASSERT, "_libga68_assert", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (SET_EXIT_STATUS, "_libga68_set_exit_status", RT(VOID), P1(INT), 0) ++DEF_A68_RUNTIME (MALLOC, "_libga68_malloc", RT(VOIDPTR), P1(SIZE), ECF_NOTHROW | ECF_LEAF | ECF_MALLOC) ++DEF_A68_RUNTIME (DEREFNIL, "_libga68_derefnil", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (UNREACHABLE, "_libga68_unreachable", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) ++DEF_A68_RUNTIME (INVALIDCHARERROR, "_libga68_invalidcharerror", RT(VOID), P3(CONSTCHARPTR,UINT,INT), ECF_NORETURN) ++DEF_A68_RUNTIME (BITSBOUNDSERROR, "_libga68_bitsboundserror", RT(VOID), P3(CONSTCHARPTR,UINT,SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYLOWERBOUND, "_libga68_lower_bound", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYUPPERBOUND, "_libga68_upper_bound", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYBOUNDS, "_libga68_bounds", RT(VOID), ++ P5(CONSTCHARPTR, UINT, SSIZE, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYBOUNDSMISMATCH, "_libga68_bounds_mismatch", RT(VOID), ++ P7(CONSTCHARPTR, UINT, SIZE, SSIZE, SSIZE, SSIZE, SSIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (ARRAYDIM, "_libga68_dim", RT(VOID), ++ P4(CONSTCHARPTR, UINT, SIZE, SIZE), ECF_NORETURN) ++DEF_A68_RUNTIME (RANDOM, "_libga68_random", RT(FLOAT), P0(), 0) ++DEF_A68_RUNTIME (LONGRANDOM, "_libga68_longrandom", RT(DOUBLE), P0(), 0) ++DEF_A68_RUNTIME (LONGLONGRANDOM, "_libga68_longlongrandom", RT(LONGDOUBLE), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FCONNECT, "_libga68_posixfconnect", RT(INT), P4(UNISTRPTR,SIZE,SIZE,INT), 0) ++DEF_A68_RUNTIME (POSIX_FOPEN, "_libga68_posixfopen", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) ++DEF_A68_RUNTIME (POSIX_FCREATE, "_libga68_posixcreat", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) ++DEF_A68_RUNTIME (POSIX_FCLOSE, "_libga68_posixclose", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FSIZE, "_libga68_posixfsize", RT(LONGLONGINT), P1(INT), 0) ++DEF_A68_RUNTIME (POSIX_ARGC, "_libga68_posixargc", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_ARGV, "_libga68_posixargv", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_PUTCHAR, "_libga68_posixputchar", RT(CHAR), P1(CHAR), 0) ++DEF_A68_RUNTIME (POSIX_FPUTC, "_libga68_posixfputc", RT(CHAR), P2(INT,CHAR), 0) ++DEF_A68_RUNTIME (POSIX_PUTS, "_libga68_posixputs", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_FPUTS, "_libga68_posixfputs", RT(INT), P4(INT,UNISTRPTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_GETCHAR, "_libga68_posixgetchar", RT(CHAR), P0(), 0) ++DEF_A68_RUNTIME (POSIX_FGETC, "_libga68_posixfgetc", RT(CHAR), P1(INT), 0) ++DEF_A68_RUNTIME (POSIX_GETS, "_libga68_posixgets", RT(UNISTRPTR), P2(INT,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_FGETS, "_libga68_posixfgets", RT(UNISTRPTR), P3(INT,INT,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_GETENV, "_libga68_posixgetenv", RT(VOID), P5(UNISTR,SIZE,SIZE,UNISTRPTR,SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_ERRNO, "_libga68_posixerrno", RT(INT), P0(), 0) ++DEF_A68_RUNTIME (POSIX_PERROR, "_libga68_posixperror", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) ++DEF_A68_RUNTIME (POSIX_STRERROR, "_libga68_posixstrerror", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) ++DEF_A68_RUNTIME (POSIX_LSEEK, "_libga68_posixlseek", RT(LONGLONGINT), P3(INT,LONGLONGINT,INT), 0) ++DEF_A68_RUNTIME (U32_CMP2, "_libga68_u32_cmp2", RT(INT), P6(UNISTR, SIZE, SIZE, UNISTR, SIZE, SIZE), 0) ++ ++#undef P0 ++#undef P1 ++#undef P2 ++#undef P3 ++#undef P4 ++#undef P5 ++#undef RT +--- /dev/null ++++ b/src/gcc/algol68/a68-low-strings.cc +@@ -0,0 +1,399 @@ ++/* Lowering routines for all things related to STRINGs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for M_STRING. */ ++ ++tree ++a68_get_string_skip_tree (void) ++{ ++ return a68_get_multiple_skip_tree (M_FLEX_ROW_CHAR); ++} ++ ++/* Copy chars from STR to ELEMENTS starting at TO_INDEX chars in ELEMENTS. */ ++ ++static void ++copy_string (tree elements, tree to_index, tree str) ++{ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ tree num_elems ++ = a68_lower_tmpvar ("num_elems%", sizetype, a68_multiple_num_elems (str)); ++ ++ tree from_index ++ = a68_lower_tmpvar ("from_index%", sizetype, size_zero_node); ++ tree from_offset ++ = a68_lower_tmpvar ("from_offset%", sizetype, size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ { ++ /* if (from_index == num_elems) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, ++ fold_build2 (GE_EXPR, sizetype, ++ from_index, num_elems))); ++ ++ /* *(elements + to_index) = *(elements + from_index) */ ++ tree to_offset = fold_build2 (MULT_EXPR, sizetype, ++ to_index, size_in_bytes (a68_char_type)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build2 (MEM_REF, a68_char_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ char_pointer_type, ++ elements, to_offset), ++ fold_convert (char_pointer_type, ++ integer_zero_node)), ++ fold_build2 (MEM_REF, a68_char_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ char_pointer_type, ++ a68_multiple_elements (str), ++ from_offset), ++ fold_convert (char_pointer_type, ++ integer_zero_node)))); ++ ++ /* from_offset = from_offset + stride */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, ++ from_offset, ++ fold_build2 (PLUS_EXPR, sizetype, ++ from_offset, ++ a68_multiple_stride (str, size_zero_node)))); ++ /* to_index = to_index + 1 */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, to_index, size_one_node)); ++ ++ /* from_index = from_index + 1 */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, from_index, size_one_node)); ++ } ++ ++ /* End of loop body. */ ++ tree loop_body = a68_pop_range (); ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++} ++ ++/* Given two STRINGs STR1 and STR2, allocate a new string on the stack with a ++ copy of the concatenated characters of the given string. */ ++ ++tree ++a68_string_concat (tree str1, tree str2) ++{ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ static tree string_concat_fndecl; ++ ++ if (string_concat_fndecl == NULL_TREE) ++ { ++ string_concat_fndecl ++ = a68_low_toplevel_func_decl ("string_concat", ++ build_function_type_list (char_pointer_type, ++ TREE_TYPE (str1), ++ TREE_TYPE (str2), ++ NULL_TREE)); ++ announce_function (string_concat_fndecl); ++ ++ tree s1 = a68_low_func_param (string_concat_fndecl, "s1", TREE_TYPE (str1)); ++ tree s2 = a68_low_func_param (string_concat_fndecl, "s2", TREE_TYPE (str2)); ++ DECL_ARGUMENTS (string_concat_fndecl) = chainon (s1, s2); ++ ++ a68_push_function_range (string_concat_fndecl, char_pointer_type, ++ true /* top_level */); ++ ++ tree n1 = a68_lower_tmpvar ("n1%", sizetype, a68_multiple_num_elems (s1)); ++ tree n2 = a68_lower_tmpvar ("n2%", sizetype, a68_multiple_num_elems (s2)); ++ tree num_elems = a68_lower_tmpvar ("num_elems%", sizetype, ++ fold_build2 (PLUS_EXPR, sizetype, n1, n2)); ++ ++ /* First allocate memory for the result string. We need enough space to ++ hold the elements of both strings with a stride of 1S. */ ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_in_bytes (a68_char_type), ++ num_elems); ++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, ++ a68_lower_malloc (a68_char_type, elements_size)); ++ ++ /* Copy elements. */ ++ tree to_index = a68_lower_tmpvar ("to_index%", sizetype, size_zero_node); ++ copy_string (elements, to_index, s1); ++ copy_string (elements, to_index, s2); ++ a68_pop_function_range (elements); ++ } ++ ++ /* Build the resulting multiple. */ ++ str1 = save_expr (str1); ++ str2 = save_expr (str2); ++ tree n1 = a68_multiple_num_elems (str1); ++ tree n2 = a68_multiple_num_elems (str2); ++ tree num_elems = save_expr (fold_build2 (PLUS_EXPR, sizetype, n1, n2)); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_in_bytes (a68_char_type), ++ num_elems); ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = fold_convert (ssizetype, num_elems); ++ tree elements = build_call_nary (char_pointer_type, ++ fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (string_concat_fndecl)), ++ string_concat_fndecl), ++ 2, str1, str2); ++ return a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++} ++ ++/* Given a STRING STR and an INT FACTOR, return STRING concatenated to itself ++ FACTOR - 1 times. ++ ++ Negative values of FACTOR are interpreted as zero. */ ++ ++tree ++a68_string_mult (tree str, tree factor) ++{ ++ a68_push_range (M_STRING); ++ ++ str = save_expr (str); ++ tree ssize_one_node = ssize_int (1); ++ tree res = a68_lower_tmpvar ("res%", CTYPE (M_STRING), str); ++ tree index = a68_lower_tmpvar ("index%", ssizetype, ssize_one_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ ++ /* if (index == FACTOR) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (GE_EXPR, ssizetype, ++ index, ++ fold_convert (ssizetype, factor)))); ++ ++ /* res += str */ ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (res), ++ res, ++ a68_string_concat (res, str))); ++ ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ ssizetype, ++ index, ssize_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (res); ++ return a68_pop_range (); ++} ++ ++/* Given a CHAR C, build a string whose contents are just that CHAR. */ ++ ++tree ++a68_string_from_char (tree c) ++{ ++ tree lower_bound = ssize_int (1); ++ tree upper_bound = lower_bound; ++ tree char_pointer_type = build_pointer_type (a68_char_type); ++ ++ a68_push_range (M_STRING); ++ ++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, ++ a68_lower_malloc (a68_char_type, ++ size_one_node)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, ++ void_type_node, ++ fold_build1 (INDIRECT_REF, a68_char_type, elements), ++ c)); ++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, ++ elements, ++ size_in_bytes (a68_char_type), ++ &lower_bound, &upper_bound)); ++ return a68_pop_range (); ++} ++ ++/* Compare the two given strings lexicographically and return -1 (less than), 0 ++ (equal to) or 1 (bigger than) reflecting the result of the comparison. */ ++ ++tree ++a68_string_cmp (tree s1, tree s2) ++{ ++ s1 = save_expr (s1); ++ tree s1_elems = a68_multiple_elements (s1); ++ tree s1_len = a68_multiple_num_elems (s1); ++ tree s1_stride = a68_multiple_stride (s1, size_zero_node); ++ ++ s2 = save_expr (s2); ++ tree s2_elems = a68_multiple_elements (s2); ++ tree s2_len = a68_multiple_num_elems (s2); ++ tree s2_stride = a68_multiple_stride (s2, size_zero_node); ++ ++ return a68_build_libcall (A68_LIBCALL_U32_CMP2, ++ a68_int_type, 6, ++ s1_elems, s1_len, s1_stride, ++ s2_elems, s2_len, s2_stride); ++} ++ ++/* Return a newly allocated UTF-8 string resulting from processing the string ++ breaks in STR. This function assumes the passed string is well-formed (the ++ scanner is in charge of seeing that is true) and just ICEs if it is not. ++ NODE is used as the location for diagnostics in case the string breaks ++ contain some invalid data. */ ++ ++char * ++a68_string_process_breaks (NODE_T *node, const char *str) ++{ ++ size_t len = 0; ++ char *res = NULL; ++ ++ /* First calculate the size of the resulting string. */ ++ for (const char *p = str; *p != '\0';) ++ { ++ if (*p == '\'') ++ { ++ switch (p[1]) ++ { ++ case '\'': ++ case 'n': ++ case 'f': ++ case 'r': ++ case 't': ++ len += 1; ++ p += 2; ++ break; ++ case '(': ++ p += 2; ++ while (1) ++ { ++ if (p[0] == ')') ++ { ++ p++; ++ break; ++ } ++ else if (p[0] == ',' || ISSPACE (p[0])) ++ { ++ p++; ++ continue; ++ } ++ ++ /* An Unicode codepoint encoded in UTF-8 occupies at most six ++ octets. */ ++ len += 6; ++ p += (p[0] == 'u' ? 5 : 9); ++ } ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ else ++ { ++ len += 1; ++ p += 1; ++ } ++ } ++ ++ /* Now and allocate it, adding space for a trailing NULL. */ ++ res = (char *) xmalloc (len + 1); ++ ++ /* Finally fill it with the result of expanding all the string breaks. */ ++ size_t offset = 0; ++ for (const char *p = str; *p != '\0';) ++ { ++ if (*p == '\'') ++ { ++ switch (p[1]) ++ { ++ case '\'': res[offset] = '\''; p += 2; offset += 1; break; ++ case 'n': res[offset] = '\n'; p += 2; offset += 1; break; ++ case 't': res[offset] = '\t'; p += 2; offset += 1; break; ++ case 'r': res[offset] = '\r'; p += 2; offset += 1; break; ++ case 'f': res[offset] = '\f'; p += 2; offset += 1; break; ++ case '(': ++ { ++ p += 2; ++ while (1) ++ { ++ if (p[0] == ')') ++ { ++ p++; ++ break; ++ } ++ else if (p[0] == ',' || ISSPACE (p[0])) ++ { ++ p++; ++ continue; ++ } ++ ++ /* Skip the u or U. */ ++ gcc_assert (p[0] == 'u' || p[0] == 'U'); ++ p++; ++ ++ const char *begin = p; ++ char *end; ++ int64_t codepoint = strtol (p, &end, 16); ++ gcc_assert (end > p); ++ p = end; ++ /* Append the UTF-8 encoding of the obtained codepoint to ++ the `res' string. */ ++ int n = a68_u8_uctomb ((uint8_t *) res + offset, codepoint, 6); ++ if (n < 0) ++ { ++ char *start = CHAR_IN_LINE (INFO (node)) + (begin - str); ++ a68_scan_error (LINE (INFO (node)), start, ++ "invalid Unicode codepoint in string literal"); ++ } ++ ++ offset += n; ++ } ++ break; ++ } ++ default: gcc_unreachable (); ++ } ++ } ++ else ++ { ++ res[offset] = *p; ++ offset += 1; ++ p += 1; ++ } ++ } ++ res[offset] = '\0'; ++ ++ return res; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-structs.cc +@@ -0,0 +1,63 @@ ++/* Lowering routines for all things related to structs. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with the yielding of SKIP for the given structured mode. */ ++ ++tree ++a68_get_struct_skip_tree (MOID_T *m) ++{ ++ /* Build a constructor that assigns SKIPs to each field in the struct ++ type. */ ++ ++ vec *ve = NULL; ++ tree field = TYPE_FIELDS (CTYPE (m)); ++ for (PACK_T *elem = PACK (m); elem; FORWARD (elem)) ++ { ++ gcc_assert (field != NULL_TREE); ++ CONSTRUCTOR_APPEND_ELT (ve, field, a68_get_skip_tree (MOID (elem))); ++ field = DECL_CHAIN (field); ++ } ++ ++ return build_constructor (CTYPE (m), ve); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-unions.cc +@@ -0,0 +1,279 @@ ++/* Lowering routines for all things related to unions. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Algol 68 unions are implemented in this front-end as a data structure ++ consisting of an overhead followed by a value: ++ ++ overhead% ++ value% ++ ++ Where overhead% is an index that identifies the kind of object currently ++ united, and value% is a GENERIC union. The value currently united in the ++ union is the overhead%-th field in value%. ++ ++ At the language level there are no values of union modes in Algol 68. All ++ values are built from either SKIP (for uninitialized UNION values) or as the ++ result of an uniting coercion. */ ++ ++/* Given an union mode P and a mode Q, return whether Q is a mode in P. */ ++ ++bool ++a68_union_contains_mode (MOID_T *p, MOID_T *q) ++{ ++ while (EQUIVALENT (p) != NO_MOID) ++ p = EQUIVALENT (p); ++ ++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) ++ { ++ MOID_T *m = MOID (pack); ++ ++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) ++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) ++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Given an union mode P and a mode Q, return an integer with the index of the ++ occurrence of Q in P. */ ++ ++int ++a68_united_mode_index (MOID_T *p, MOID_T *q) ++{ ++ int ret = 0; ++ while (EQUIVALENT (p) != NO_MOID) ++ p = EQUIVALENT (p); ++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) ++ { ++ MOID_T *m = MOID (pack); ++ ++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) ++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) ++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) ++ return ret; ++ ret += 1; ++ } ++ ++ /* Not found. Shouldn't happen. */ ++ gcc_unreachable (); ++ return 0; ++} ++ ++/* Given two united modes FROM and TO, and an overhead FROM_OVERHEAD in mode ++ FROM, return the corresponding overhead in mode TO. ++ ++ This function assumes that the mode with FROM_OVERHEAD in mode FROM exists ++ in TO. */ ++ ++tree ++a68_union_translate_overhead (MOID_T *from, tree from_overhead, ++ MOID_T *to) ++{ ++ /* Note that the initialization value for to_overhead should never be used. ++ XXX perhaps translate it to a run-time call to abort/compiler-error. */ ++ tree to_overhead = size_int (0); ++ ++ from_overhead = save_expr (from_overhead); ++ ++ int i = 0; ++ for (PACK_T *pack = PACK (from); pack != NO_PACK; FORWARD (pack), ++i) ++ { ++ MOID_T *mode = MOID (pack); ++ ++ if (a68_union_contains_mode (to, mode)) ++ { ++ to_overhead = fold_build3 (COND_EXPR, sizetype, ++ fold_build2 (EQ_EXPR, boolean_type_node, ++ from_overhead, ++ size_int (i)), ++ size_int (a68_united_mode_index (to, mode)), ++ to_overhead); ++ } ++ } ++ ++ return to_overhead; ++} ++ ++/* Get the overhead of a given united value EXP. */ ++ ++tree ++a68_union_overhead (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ tree overhead_field = TYPE_FIELDS (type); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (overhead_field), ++ exp, ++ overhead_field, ++ NULL_TREE); ++} ++ ++/* Set the overhead of a given united value EXP to OVERHEAD. */ ++ ++tree ++a68_union_set_overhead (tree exp, tree overhead) ++{ ++ tree type = TREE_TYPE (exp); ++ tree overhead_field = TYPE_FIELDS (type); ++ return fold_build2 (MODIFY_EXPR, ++ TREE_TYPE (overhead), ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (overhead_field), ++ exp, ++ overhead_field, ++ NULL_TREE), ++ overhead); ++} ++ ++/* Get the cunion in the given union EXP. */ ++ ++tree ++a68_union_cunion (tree exp) ++{ ++ tree type = TREE_TYPE (exp); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (value_field), ++ exp, ++ value_field, ++ NULL_TREE); ++} ++ ++/* Build a SKIP value for a given union mode M. ++ ++ The SKIP value computed is: ++ ++ overhead% refers to the first united mode in the union ++ value% is the SKIP for the first united mode in the union ++*/ ++ ++tree ++a68_get_union_skip_tree (MOID_T *m) ++{ ++ tree type = CTYPE (m); ++ tree overhead_field = TYPE_FIELDS (type); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ ++ /* Overhead selects the first union alternative. */ ++ tree overhead = size_zero_node; ++ /* First union alternative. ++ ++ Note that the first union alternative corresponds to the last alternative ++ in the mode as written in the source program. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree first_alternative_field = TYPE_FIELDS (value_type); ++ tree value = build_constructor_va (TREE_TYPE (value_field), ++ 1, ++ first_alternative_field, ++ a68_get_skip_tree (MOID (PACK (m)))); ++ return build_constructor_va (CTYPE (m), ++ 2, ++ overhead_field, overhead, ++ value_field, value); ++} ++ ++/* Return the alternative (value) at the index INDEX in the united value ++ EXP. */ ++ ++tree ++a68_union_alternative (tree exp, int index) ++{ ++ tree type = TREE_TYPE (exp); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ tree value = fold_build3 (COMPONENT_REF, ++ TREE_TYPE (value_field), ++ exp, ++ value_field, ++ NULL_TREE); ++ ++ /* Get the current alternative in the value union. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree alternative_field = TYPE_FIELDS (value_type); ++ for (int i = 0; i < index; ++i) ++ { ++ gcc_assert (TREE_CHAIN (alternative_field)); ++ alternative_field = TREE_CHAIN (alternative_field); ++ } ++ ++ /* Get the current alternative from the value. */ ++ return fold_build3 (COMPONENT_REF, ++ TREE_TYPE (alternative_field), ++ value, ++ alternative_field, ++ NULL_TREE); ++} ++ ++/* Return a constructor for an union of mode MODE, holding the value in EXP ++ which is of mode EXP_MODE. */ ++ ++tree ++a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode) ++{ ++ tree type = CTYPE (mode); ++ tree overhead_field = TYPE_FIELDS (type); ++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); ++ ++ int alternative_index = a68_united_mode_index (mode, exp_mode); ++ tree overhead = build_int_cst (sizetype, alternative_index); ++ ++ /* Get the field for the alternative corresponding to alternative_index. */ ++ tree value_type = TREE_TYPE (value_field); ++ tree alternative_field = TYPE_FIELDS (value_type); ++ for (int i = 0; i < alternative_index; ++i) ++ { ++ gcc_assert (TREE_CHAIN (alternative_field)); ++ alternative_field = TREE_CHAIN (alternative_field); ++ } ++ ++ tree value = build_constructor_va (TREE_TYPE (value_field), ++ 1, ++ alternative_field, ++ a68_consolidate_ref (exp_mode, exp)); ++ return build_constructor_va (type, ++ 2, ++ overhead_field, overhead, ++ value_field, value); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low-units.cc +@@ -0,0 +1,1253 @@ ++/* Lower units to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Note that enclosed clauses, which are units, are handled in ++ a68-low-clauses. */ ++ ++/* Lower an applied identifier. ++ ++ This lowers into the declaration of the referred identifier. The ++ declaration of the identifier should now be available in the symbol table ++ entry for the identifier. */ ++ ++tree ++a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (TAG_TABLE (TAX (p)) == A68_STANDENV) ++ { ++ /* This identifier is defined in the standard prelude. Use its lowering ++ handler. */ ++ LOWERER_T lowerer = LOWERER (TAX (p)); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree id_decl = TAX_TREE_DECL (TAX (p)); ++ ++ if (id_decl == NULL_TREE) ++ { ++ /* This is an applied identifier used before the corresponding defining ++ identifier gets defined in either an identity declaration or a ++ variable declaration. Create the declaration and install it in the ++ symbol table. The declaration itself, declaration expr and ++ initialization assignment for the declaration will be emitted by the ++ corresponding declaration lowering handler. Note that the defining ++ identifier (and therefore the declaration associated with this applied ++ identifier) may be in an outer lexical block. */ ++ ++ if (IS (MOID (p), PROC_SYMBOL)) ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (VARIABLE (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); ++ } ++ else if (IN_PROC (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_proc_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, ++ external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_proc_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ else ++ { ++ if (external) ++ id_decl ++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, ++ external, extern_symbol); ++ else ++ id_decl ++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ } ++ else ++ { ++ bool external = (MOIF (TAX (p)) != NO_MOIF); ++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); ++ if (VARIABLE (TAX (p))) ++ { ++ if (external) ++ id_decl ++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); ++ } ++ else ++ { ++ if (external) ++ id_decl ++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), ++ false /* indicant */, external, ++ extern_symbol); ++ else ++ id_decl ++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); ++ } ++ } ++ ++ TAX_TREE_DECL (TAX (p)) = id_decl; ++ } ++ ++ /* If the identifier refers to a FUNCTION_DECL, this means the declaration ++ was made by a procecure-identity-dclaration. The applied identifier in ++ that case refers to the address of the corresponding function. */ ++ if (TREE_CODE (id_decl) == FUNCTION_DECL) ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (id_decl)), ++ id_decl); ++ else ++ return id_decl; ++ } ++} ++ ++/* Lower a string denotation. ++ ++ String denotations are of mode []CHAR, and lower into a multiple with a ++ single dimension, and with the following characteristics: ++ ++ - The lower bound of dimension 0 is 1. ++ - The upper bound of dimension 0 is strlen (NSYMBOL (p)). ++ - The stride of dimension 0 is 0. ++ - The pointed elements are a buffer of CHARs allocated in the stack. */ ++ ++tree ++a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ /* First process string breaks. */ ++ char *str = a68_string_process_breaks (p, NSYMBOL (p)); ++ ++ /* Build a multiple of UCS-4 CHARs from the resulting UTF-8 string. */ ++ size_t ucslen; ++ uint32_t *ucsbuf = a68_u8_to_u32 ((const uint8_t *) str, strlen (str), ++ NULL, &ucslen); ++ free (str); ++ tree string_literal = build_string_literal (ucslen * sizeof (uint32_t), ++ (char *) ucsbuf, a68_char_type); ++ tree elements = string_literal; ++ tree lower_bound = fold_convert (ssizetype, size_one_node); ++ tree upper_bound = ssize_int (ucslen); ++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, ++ size_int (ucslen), ++ size_in_bytes (a68_char_type)); ++ tree multiple = a68_row_value (CTYPE (M_ROW_CHAR), 1, ++ elements, elements_size, ++ &lower_bound, &upper_bound); ++ TREE_CONSTANT (multiple) = true; ++ free (ucsbuf); ++ return multiple; ++} ++ ++/* Lower denotation. ++ ++ denotation : int denotation; real denotation; bits denotation; ++ row char denotation; ++ true symbol; false symbol; ++ empty symbol; ++ longety, int denotation; ++ longety, real denotation; ++ longety, bits denotation; ++ shortety, int denotation; ++ shortety, real denotation; ++ shortety, bits denotation. ++ ++ Denotations lower into GENERIC cst expressions. */ ++ ++tree ++a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *moid = MOID (p); ++ ++ if (moid == M_VOID) ++ /* EMPTY */ ++ return a68_lower_empty (p, ctx); ++ else if (moid == M_BOOL) ++ /* TRUE or FALSE. */ ++ return (NSYMBOL (p)[0] == 'T') ? boolean_true_node : boolean_false_node; ++ else if (moid == M_CHAR) ++ { ++ char *s = a68_string_process_breaks (p, NSYMBOL (p)); ++ uint32_t ucs; ++ int length = a68_u8_mbtouc (&ucs, (const uint8_t *) s, 1); ++ gcc_assert (length == 1); ++ free (s); ++ return build_int_cst (a68_char_type, ucs); ++ } ++ else if (moid == M_ROW_CHAR) ++ return a68_lower_string_denotation (p, ctx); ++ else if (moid == M_INT ++ || moid == M_LONG_INT ++ || moid == M_LONG_LONG_INT ++ || moid == M_SHORT_INT ++ || moid == M_SHORT_SHORT_INT) ++ { ++ /* SIZETY INT */ ++ tree type; ++ char *end; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ type = CTYPE (moid); ++ int64_t val = strtol (NSYMBOL (s), &end, 10); ++ gcc_assert (end[0] == '\0'); ++ return build_int_cst (type, val); ++ } ++ if (moid == M_BITS ++ || moid == M_LONG_BITS ++ || moid == M_LONG_LONG_BITS ++ || moid == M_SHORT_BITS ++ || moid == M_SHORT_SHORT_BITS) ++ { ++ /* SIZETY BITS */ ++ ++ tree type; ++ char *end; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ type = CTYPE (moid); ++ int64_t radix = strtol (NSYMBOL (s), &end, 10); ++ gcc_assert (end != NSYMBOL (s) && *end == 'r'); ++ end++; ++ int64_t val = strtol (end, &end, radix); ++ gcc_assert (end[0] == '\0'); ++ return build_int_cst (type, val); ++ } ++ else if (moid == M_REAL ++ || moid == M_LONG_REAL ++ || moid == M_LONG_LONG_REAL) ++ { ++ /* SIZETY INT */ ++ tree type; ++ NODE_T *s = NO_NODE; ++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) ++ s = NEXT (SUB (p)); ++ else ++ s = SUB (p); ++ ++ if (moid == M_REAL) ++ type = float_type_node; ++ else if (moid == M_LONG_REAL) ++ type = double_type_node; ++ else if (moid == M_LONG_LONG_REAL) ++ type = long_double_type_node; ++ else ++ gcc_unreachable (); ++ ++ REAL_VALUE_TYPE val; ++ real_from_string (&val, NSYMBOL (s)); ++ return build_real (type, val); ++ } ++ ++ gcc_unreachable (); ++ return NULL_TREE; ++} ++ ++/* Lower SKIP. ++ ++ skip ++*/ ++ ++tree ++a68_lower_skip (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_skip_tree (MOID (p)); ++} ++ ++/* Lower NIHIL. ++ ++ nihil : nil. ++ ++ NIL stands for a name referring to no value and which must be ++ distinguishable from any other name. It is of mode REF AMODE. NIL is never ++ subject to coercion and it may only occur where the context is strong, ++ i.e. where AMODE is known at compile-time. ++ ++ It lowers to a pointer to AMODE with value 0. */ ++ ++tree ++a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ tree type = CTYPE (MOID (p)); ++ ++ gcc_assert (type == a68_void_type || POINTER_TYPE_P (type)); ++ if (type == a68_void_type) ++ return a68_lower_empty (p, ctx); ++ else ++ return build_int_cst (type, 0); ++} ++ ++/* Lower EMPTY. */ ++ ++tree ++a68_lower_empty (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) ++{ ++ return a68_get_empty (); ++} ++ ++/* Lower an identity relation. ++ ++ identity relation : tertiary, is symbol, tertiary; ++ tertiary, isnt symbol, tertiary. ++ ++ An identity relation determines whether two name values are the same. It ++ lowers into EQ_EXPR in case of IS and into NE_EXPR in case of ISNT. */ ++ ++tree ++a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs = SUB (p); ++ NODE_T *oper = NEXT (lhs); ++ NODE_T *rhs = NEXT (oper); ++ ++ /* Consolidate arguments to make sure we are comparing pointers in the ++ r-value context of the EQ_EXPR or NE_EXPR operation below. */ ++ tree op1 = a68_consolidate_ref (MOID (lhs), a68_lower_tree (lhs, ctx)); ++ tree op2 = a68_consolidate_ref (MOID (rhs), a68_lower_tree (rhs, ctx)); ++ ++ tree_code code; ++ if (IS (oper, IS_SYMBOL)) ++ code = EQ_EXPR; ++ else if (IS (oper, ISNT_SYMBOL)) ++ code = NE_EXPR; ++ else ++ gcc_unreachable (); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ code, boolean_type_node, op1, op2); ++} ++ ++/* Lower AND_FUNCTION and OR_FUNCTION. ++ ++ and function : tertiary, andf symbol, tertiary. ++ or function : tertiary, orf_symbol, tertiary. ++ ++ These are pseudo-operators that are used to implement short-circuits ++ evaluation of logical expressions. ++ ++ These pseudo-operators lower into TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR, ++ respectively. */ ++ ++tree ++a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs = SUB (p); ++ NODE_T *oper = NEXT (lhs); ++ NODE_T *rhs = NEXT (oper); ++ ++ tree op1 = a68_lower_tree (lhs, ctx); ++ tree op2 = a68_lower_tree (rhs, ctx); ++ ++ tree_code code; ++ if (IS (oper, ANDF_SYMBOL)) ++ code = TRUTH_ANDIF_EXPR; ++ else if (IS (oper, ORF_SYMBOL)) ++ code = TRUTH_ORIF_EXPR; ++ else ++ gcc_unreachable (); ++ ++ return fold_build2_loc (a68_get_node_location (p), ++ code, boolean_type_node, op1, op2); ++} ++ ++/* Lower a primary. ++ ++ primary : identifier; denotation; cast; enclosed clause; format text. ++ ++ The primary lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_primary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a cast. ++ ++ cast : declarer, enclosed clause; ++ void symbol, enclosed clause. ++ ++ A cast establishes a strong context with some required mode. This context ++ allows coercions to be applied, and these coercions have been inserted in ++ the parse tree by the parser. */ ++ ++tree ++a68_lower_cast (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (NEXT (SUB (p)), ctx); ++} ++ ++/* Lower a slice. ++ ++ slice : MULTIPLE INDEXER ++ ++ Slicing a multiple may result in either an element of the multiple, if the ++ operation is indexing, or another multiple, if the operation is a ++ trimming. */ ++ ++static void ++lower_subscript_for_indexes (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case TRIMMER: ++ /* Because of ANNOTATION (indexer) == SLICE */ ++ gcc_unreachable (); ++ break; ++ case UNIT: ++ a68_add_stmt (a68_lower_tree (p, ctx)); ++ break; ++ case GENERIC_ARGUMENT: ++ case GENERIC_ARGUMENT_LIST: ++ lower_subscript_for_indexes (SUB (p), ctx); ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++static void ++lower_subscript_for_trimmers (NODE_T *p, LOW_CTX_T ctx, ++ tree multiple, tree new_multiple, ++ int *dim, int *new_dim, ++ tree elements_pointer_type) ++{ ++ /* new.elements := multiple.elements; ++ FOR dim TO num dimensions ++ DO CO t[dim] is either a subscript i or a trimmer i : j @ k CO ++ new.elements +:= i * multiple.strides[dim]; ++ IF t[dim] is a trimmer ++ THEN INT d := ( k is absent | 1 | multiple.lb[dim] - k ); ++ new.lb[dim] := multiple.lb[dim] - d; ++ new.ub[dim] := multiple.ub[dim] - d; ++ new.strides[dim] := multiple.strides[dim] ++ FI ++ OD ++ */ ++ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case UNIT: ++ { ++ tree unit = save_expr (fold_convert (ssizetype, a68_lower_tree (p, ctx))); ++ tree new_elements = a68_multiple_elements (new_multiple); ++ tree size_dim = size_int (*dim); ++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); ++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); ++ ++ /* Validate bounds. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ a68_add_stmt (a68_multiple_bounds_check (p, size_dim, multiple, unit)); ++ ++ /* new_elements += i * strides[dim] */ ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ unit, dim_lower_bound)), ++ stride); ++ ++ offset = save_expr (offset); ++ new_elements = fold_build2 (POINTER_PLUS_EXPR, ++ elements_pointer_type, ++ new_elements, ++ offset); ++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); ++ ++ /* elements_size -= i * strides[dim] */ ++ tree elements_size = a68_multiple_elements_size (new_multiple); ++ elements_size = fold_build2 (MINUS_EXPR, sizetype, ++ elements_size, offset); ++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, elements_size)); ++ ++ *dim += 1; ++ break; ++ } ++ case TRIMMER: ++ { ++ /* First collect components from the trimmer. */ ++ tree size_dim = size_int (*dim); ++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); ++ tree lower_bound = dim_lower_bound; ++ tree upper_bound = save_expr (a68_multiple_upper_bound (multiple, size_dim)); ++ tree at = ssize_int (1); ++ ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE) ++ { ++ if (IS (q, AT_SYMBOL)) ++ { ++ /* Both bounds are implicit. */ ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ else if (IS (q, COLON_SYMBOL)) ++ { ++ /* Lower bound is implicit. */ ++ FORWARD (q); ++ if (IS (q, AT_SYMBOL)) ++ { ++ /* Upper bound is implicit, AT specified. */ ++ gcc_assert (IS (q, AT_SYMBOL)); ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ else ++ { ++ upper_bound ++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); ++ FORWARD (q); ++ if (q != NO_NODE) ++ { ++ gcc_assert (IS (q, AT_SYMBOL)); ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ } ++ } ++ else ++ { ++ /* Lower bound is explicit. */ ++ lower_bound = fold_convert (ssizetype, a68_lower_tree (q, ctx)); ++ FORWARD (q); ++ gcc_assert (IS (q, COLON_SYMBOL)); ++ FORWARD (q); ++ if (q != NO_NODE) ++ { ++ if (IS (q, AT_SYMBOL)) ++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ else ++ { ++ upper_bound ++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); ++ FORWARD (q); ++ if (q != NO_NODE && IS (q, AT_SYMBOL)) ++ at = ++ save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); ++ } ++ } ++ } ++ } ++ ++ /* Time for some bounds checking. ++ ++ Note that in trimmers, given the current dimension's bounds ++ (L,U), we cannot simply do the check: ++ ++ L <= lower_bound <= U ++ L <= upper_bound <= U ++ ++ This is because the multiple may be flat, and the dimension may ++ have bounds such like U < L. In that case, the expressions ++ above would always eval to false for any lower_bound and ++ upper_bound. ++ ++ So we check for this instead: ++ ++ L <= lower_bound AND upper_bound <= U ++ ++ This allows to trim a "flat dimension" using a trimmer where ++ upper_bound < lower_bound. The result is, of course, another ++ "flat dimension" in the multiple result of the trimming. */ ++ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ { ++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, ++ lower_bound, ++ false /* upper_bound */)); ++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, ++ upper_bound, ++ true /* upper_bound */)); ++ } ++ ++ /* new_elements += i * strides[dim] */ ++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); ++ tree new_elements = a68_multiple_elements (new_multiple); ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, ++ lower_bound, dim_lower_bound)), ++ stride); ++ ++ offset = save_expr (offset); ++ new_elements = fold_build2 (POINTER_PLUS_EXPR, ++ elements_pointer_type, ++ new_elements, ++ offset); ++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); ++ ++ /* elements_size -= i * strides[dim] */ ++ tree elements_size = a68_multiple_elements_size (new_multiple); ++ elements_size = fold_build2 (MINUS_EXPR, sizetype, ++ elements_size, offset); ++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, ++ elements_size)); ++ ++ /* Fill the triplet for this dimension in new_multiple. */ ++ tree size_new_dim = size_int (*new_dim); ++ tree d = fold_build2 (MINUS_EXPR, ssizetype, lower_bound, at); ++ ++ a68_add_stmt (a68_multiple_set_lower_bound (new_multiple, size_new_dim, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ lower_bound, d))); ++ a68_add_stmt (a68_multiple_set_upper_bound (new_multiple, size_new_dim, ++ fold_build2 (MINUS_EXPR, ssizetype, ++ upper_bound, d))); ++ a68_add_stmt (a68_multiple_set_stride (new_multiple, size_new_dim, stride)); ++ ++ *new_dim += 1; ++ *dim += 1; ++ break; ++ } ++ default: ++ lower_subscript_for_trimmers (SUB (p), ctx, ++ multiple, new_multiple, ++ dim, new_dim, ++ elements_pointer_type); ++ } ++ } ++} ++ ++tree ++a68_lower_slice (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *indexer = NEXT_SUB (p); ++ MOID_T *orig_multiple_mode = MOID (SUB (p)); ++ MOID_T *multiple_mode = orig_multiple_mode; ++ bool slicing_name = false; ++ ++ /* First of all, lower the multiple being sliced. If it is a name to a ++ multiple, set a flag and dereference. */ ++ tree multiple = a68_lower_tree (SUB (p), ctx); ++ MOID_T *orig_sliced_multiple_mode = MOID (p); ++ MOID_T *sliced_multiple_mode = MOID (p); ++ size_t slice_num_dimensions = 0; ++ if (IS_REF (MOID (SUB (p)))) ++ { ++ slicing_name = true; ++ multiple = a68_low_deref (multiple, SUB (p)); ++ multiple_mode = SUB (multiple_mode); ++ slice_num_dimensions = DIM (SUB (MOID (p))); ++ sliced_multiple_mode = SUB (sliced_multiple_mode); ++ } ++ else ++ slice_num_dimensions = DIM (MOID (p)); ++ ++ tree slice = NULL_TREE; ++ if (ANNOTATION (indexer) == SLICE) ++ { ++ /* The slice has only indexers and no trimmers. Collect units and slice ++ an element of the multiple using a68_multiple_slice. This operation ++ results in an element of the multiple. */ ++ ++ /* Collect units */ ++ a68_push_range (NULL); ++ lower_subscript_for_indexes (SUB (indexer), ctx); ++ tree units = a68_pop_range (); ++ ++ /* We need to allocate space for as many indexes as dimensions of the ++ multiple. */ ++ tree num_dimensions_tree = a68_multiple_dimensions (multiple); ++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); ++ int num_dimensions = tree_to_shwi (num_dimensions_tree); ++ ++ int num_indexes = 0; ++ tree *indexes = (tree *) xmalloc (sizeof (tree) * num_dimensions); ++ for (tree_stmt_iterator si = tsi_start (units); ++ !tsi_end_p (si); ++ tsi_next (&si)) ++ { ++ /* Add the unit to the list of indexes. */ ++ indexes[num_indexes] = tsi_stmt (si); ++ num_indexes++; ++ } ++ gcc_assert (num_indexes == num_dimensions); ++ ++ /* Slice. */ ++ slice = a68_multiple_slice (p, multiple, slicing_name, ++ num_indexes, indexes); ++ free (indexes); ++ } ++ else if (ANNOTATION (indexer) == TRIMMER) ++ { ++ /* The slice has both indexers and trimmers. Traverse the indexer ++ subtree to obtain the descriptor of the trimmed multiple (which is ++ another multiple) and the pointer to the elements, which points to ++ some position within the elements of the trimmed multiple. This ++ operation results in a new multiple of the same mode than the trimmed ++ multiple with shared elements. */ ++ ++ a68_push_range (sliced_multiple_mode); ++ ++ tree sliced_multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (multiple), ++ multiple); ++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); ++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); ++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); ++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); ++ for (size_t d = 0; d < slice_num_dimensions; ++d) ++ { ++ /* Note that these dummy bounds and the implied strides will be ++ overwritten by lower_subscript_for_trimmers below. */ ++ lower_bounds[d] = ssize_one_node; ++ upper_bounds[d] = ssize_zero_node; ++ } ++ tree new_multiple = a68_row_value (CTYPE (sliced_multiple_mode), ++ slice_num_dimensions, ++ a68_multiple_elements (sliced_multiple), ++ a68_multiple_elements_size (sliced_multiple), ++ lower_bounds, upper_bounds); ++ new_multiple = save_expr (new_multiple); ++ new_multiple = a68_lower_tmpvar ("new_multiple%", TREE_TYPE (new_multiple), ++ new_multiple); ++ ++ int dim = 0; ++ int new_dim = 0; ++ lower_subscript_for_trimmers (SUB (indexer), ctx, ++ sliced_multiple, new_multiple, ++ &dim, &new_dim, ++ a68_row_elements_pointer_type (TREE_TYPE (multiple))); ++ a68_add_stmt (new_multiple); ++ slice = a68_pop_range (); ++ ++ /* In case we are slicing a ref to a multiple, return the address of the ++ resulting multiple and not the multiple itself. But in this case we ++ need an address in the heap, because the trimmed multiple may be in ++ the heap and the result shall have the same scope. */ ++ if (slicing_name) ++ { ++ tree ptrtype = CTYPE (orig_sliced_multiple_mode); ++ tree slice_addr = fold_build1 (ADDR_EXPR, ptrtype, slice); ++ tree alloc = a68_lower_malloc (ptrtype, size_in_bytes (TREE_TYPE (slice))); ++ alloc = save_expr (alloc); ++ tree copy = a68_lower_memcpy (alloc, slice_addr, size_in_bytes (TREE_TYPE (slice))); ++ ++ slice = fold_build2 (COMPOUND_EXPR, ptrtype, copy, alloc); ++ } ++ } ++ else ++ gcc_unreachable (); ++ ++ return slice; ++} ++ ++/* Lower a selection. ++ ++ selection : selector, secondary. ++ selector : field identifier, of symbol. ++ ++ The selection lowers into a COMPONENT_REF of the field corresponding to the ++ field identifier. */ ++ ++tree ++a68_lower_selection (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *secondary = NEXT (SUB (p)); ++ NODE_T *field_identifier = SUB (SUB (p)); ++ ++ MOID_T *secondary_mode = MOID (secondary); ++ tree secondary_expr = a68_lower_tree (secondary, ctx); ++ ++ tree res = NULL_TREE; ++ ++ /* If the secondary is an address, we need to indirect. */ ++ if (IS_REF (secondary_mode)) ++ { ++ secondary_expr = a68_low_deref (secondary_expr, secondary); ++ secondary_mode = SUB (secondary_mode); ++ } ++ ++ if (IS_FLEX (secondary_mode) || IS_ROW (secondary_mode)) ++ { ++ /* This is the selection of a multiple of structs. ++ ++ The result is a multiple with same dimensions, dimension bounds and ++ strides than the indexed multiple. The elements pointer is made to ++ point to the selected field of the first struct. */ ++ ++ MOID_T *result_mode = MOID (p); ++ if (IS_REF (result_mode)) ++ result_mode = SUB (result_mode); ++ MOID_T *struct_mode = SUB (secondary_mode); ++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); ++ tree struct_type = CTYPE (struct_mode); ++ a68_push_range (result_mode); ++ tree selection = a68_lower_tmpvar ("selection%", CTYPE (result_mode), ++ a68_get_skip_tree (result_mode)); ++ tree multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (secondary_expr), ++ secondary_expr); ++ ++ /* First set the bounds of the selection, which are exactly the same ++ bounds than the selected multiple. */ ++ for (int dim = 0; dim < DIM (DEFLEX (secondary_mode)); ++dim) ++ { ++ tree size_dim = size_int (dim); ++ tree lower_bound = a68_multiple_lower_bound (multiple, size_dim); ++ tree upper_bound = a68_multiple_upper_bound (multiple, size_dim); ++ tree stride = a68_multiple_stride (multiple, size_dim); ++ a68_add_stmt (a68_multiple_set_lower_bound (selection, size_dim, ++ lower_bound)); ++ a68_add_stmt (a68_multiple_set_upper_bound (selection, size_dim, ++ upper_bound)); ++ a68_add_stmt (a68_multiple_set_stride (selection, size_dim, ++ stride)); ++ } ++ ++ /* Now set the elements pointer, which is the elements pointer of the ++ selected multiple offset the offset of the selected field in its ++ struct type. */ ++ tree elements = a68_multiple_elements (selection); ++ tree multiple_elements = a68_multiple_elements (multiple); ++ tree multiple_elements_size = a68_multiple_elements_size (multiple); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree field_offset = NULL_TREE; ++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field_offset = byte_position (f); ++ break; ++ } ++ } ++ gcc_assert (field_offset != NULL_TREE); ++ a68_add_stmt (a68_multiple_set_elements (selection, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ multiple_elements, ++ field_offset))); ++ ++ /* The size of the buffer pointed by the elements pointer has to be ++ adjusted accordingly. */ ++ a68_add_stmt (a68_multiple_set_elements_size (selection, ++ fold_build2 (MINUS_EXPR, sizetype, ++ multiple_elements_size, ++ field_offset))); ++ ++ a68_add_stmt (selection); ++ res = a68_pop_range (); ++ } ++ else ++ { ++ /* This is the selection of a struct field. */ ++ gcc_assert (A68_STRUCT_TYPE_P (TREE_TYPE (secondary_expr))); ++ ++ /* Search for the selected field in the struct type. */ ++ tree struct_type = TREE_TYPE (secondary_expr); ++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); ++ tree field = NULL_TREE; ++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) ++ { ++ if (field_id == DECL_NAME (f)) ++ { ++ field = f; ++ break; ++ } ++ } ++ gcc_assert (field != NULL_TREE); ++ ++ /* Emit the COMPONENT_REF. */ ++ res = fold_build3_loc (a68_get_node_location (p), ++ COMPONENT_REF, ++ TREE_TYPE (field), ++ secondary_expr, ++ field, ++ NULL_TREE); ++ } ++ ++ /* The selection of a name yields a name. */ ++ if (IS_REF (MOID (secondary))) ++ /* XXX This may require copying. */ ++ return fold_build1 (ADDR_EXPR, CTYPE (MOID (p)), res); ++ else ++ return res; ++} ++ ++/* Lower a secondary. ++ ++ secondary : primary; generator; selection. ++ ++ The secondary lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower a formula. ++ ++ formula : secondary, operator, secondary; ++ secondary, operator, monadic formula; ++ secondary, operator, formula; ++ monadic formula; ++ monadic formula, operator, secondary; ++ monadic formula, operator, monadic formula; ++ monadic formula, operator, formula; ++ formula, operator, secondary; ++ formula, operator, monadic formula; ++ formula, operator, formula. ++ ++ The formula lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_formula (NODE_T *p, LOW_CTX_T ctx) ++{ ++ if (IS (SUB (p), MONADIC_FORMULA) && NEXT (SUB (p)) == NO_NODE) ++ return a68_lower_tree (SUB (p), ctx); ++ else ++ { ++ /* If the operator is defined in the standard prelude, then use its lowering ++ code. */ ++ if (TAG_TABLE (TAX (NEXT (SUB (p)))) == A68_STANDENV) ++ { ++ LOWERER_T lowerer = LOWERER (TAX (NEXT (SUB (p)))); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree arg1 = a68_lower_tree (SUB (p), ctx); ++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); ++ tree arg2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (op))) ++ op = fold_build1 (INDIRECT_REF, ++ TREE_TYPE (TREE_TYPE (op)), ++ op); ++ return build_call_expr_loc (a68_get_node_location (p), op, 2, arg1, arg2); ++ } ++ } ++} ++ ++/* Lower a monadic formula. ++ ++ monadic formula : operator, secondary; ++ operator, monadic formula. ++ ++ The monadic formula lowers into some GENERIC expression. */ ++ ++tree ++a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* If the operator is defined in the standard prelude, then use its lowering ++ code. */ ++ if (TAG_TABLE (TAX (SUB (p))) == A68_STANDENV) ++ { ++ LOWERER_T lowerer = LOWERER (TAX (SUB (p))); ++ return (*lowerer) (p, ctx); ++ } ++ else ++ { ++ tree op = a68_lower_tree (SUB (p), ctx); ++ tree secondary = a68_lower_tree (NEXT (SUB (p)), ctx); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (op))) ++ op = fold_build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (op)), op); ++ return build_call_expr_loc (a68_get_node_location (p), op, 1, secondary); ++ } ++} ++ ++/* Lower a tertiary. ++ ++ tertiary : nihil; monadic formula; formula; secondary. ++ ++ The tertiary lowers to some GENERIC expression. */ ++ ++tree ++a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower an assignation. ++ ++ assignation : tertiary, assign symbol, tertiary; ++ tertiary, assign symbol, identity relation; ++ tertiary, assign symbol, and function; ++ tertiary, assign symbol, or function; ++ tertiary, assign symbol, routine text; ++ tertiary, assign symbol, jump; ++ tertiary, assign symbol, skip; ++ tertiary, assign symbol, assignation; ++ tertiary, assign symbol, code clause. ++ ++ An assignation lowers into appending a MODIFY_EXPR to the statements list, ++ and the result of the expression is the left hand side. A compound ++ expression fits perfectly */ ++ ++tree ++a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *lhs_node = SUB (p); ++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); ++ tree lhs = a68_lower_tree (lhs_node, ctx); ++ tree rhs = a68_lower_tree (rhs_node, ctx); ++ ++ return a68_low_assignation (p, ++ lhs, MOID (lhs_node), ++ rhs, MOID (rhs_node)); ++} ++ ++/* Lower a generator. ++ ++ generator : loc symbol, declarer; ++ heap symbol, declarer; ++ new symbol, declarer. ++ ++ LOC generators lower into calls to BUILT_IN_ALLOCA. ++ HEAP generators lower into calls to malloc. */ ++ ++tree ++a68_lower_generator (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *declarer = NEXT (SUB (p)); ++ return a68_low_generator (declarer, ++ MOID (declarer), ++ !IS (SUB (p), LOC_SYMBOL), ++ ctx); ++} ++ ++/* Lower a procedure call. ++ ++ */ ++ ++static void ++collect_call_arguments (NODE_T *p, vec *args, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ /* In Algol 68 parameters are passed via an identity declaration, so ++ this must implement same semantics. */ ++ tree arg = a68_lower_tree (p, ctx); ++ if (HAS_ROWS (MOID (p))) ++ arg = a68_low_dup (arg); ++ arg = a68_consolidate_ref (MOID (p), arg); ++ args->quick_push (arg); ++ } ++ else ++ collect_call_arguments (SUB (p), args, ctx); ++ } ++} ++ ++tree ++a68_lower_call (NODE_T *p, LOW_CTX_T ctx) ++{ ++ MOID_T *proc_mode = MOID (SUB (p)); ++ MOID_T *ret_mode = SUB (proc_mode); ++ unsigned int nargs = DIM (proc_mode); ++ ++ /* Collect arguments. */ ++ vec *args; ++ vec_alloc (args, nargs); ++ collect_call_arguments (NEXT (SUB (p)), args, ctx); ++ ++ /* Lower the primary to call. */ ++ tree primary = a68_lower_tree (SUB (p), ctx); ++ ++ /* We need a pointer to a function type. */ ++ if (!POINTER_TYPE_P (TREE_TYPE (primary))) ++ primary = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (primary)), ++ primary); ++ ++ /* Build a function call. */ ++ tree call = build_call_vec (CTYPE (ret_mode), primary, args); ++ SET_EXPR_LOCATION (call, a68_get_node_location (p)); ++ return call; ++} ++ ++/* Lower a routine text. ++ ++ routine text : parameter pack, (declarer ; void symbol), colon symbol, assignation; ++ parameter pack, (declarer ; void symbol), colon symbol, identity relation; ++ parameter pack, (declarer ; void symbol), colon symbol, and function; ++ parameter pack, (declarer ; void symbol), colon symbol, or runction; ++ parameter pack, (declarer ; void symbol), colon symbol, jump; ++ parameter pack, (declarer ; void symbol), colon symbol, skip; ++ parameter pack, (declarer ; void symbol), colon symbol, tertiary; ++ parameter pack, (declarer ; void symbol), colon symbol, routine text; ++ parameter pack, (declarer ; void symboL), colon symbol, code clause; ++ (declarer ; void symbol), colon symbol, assignation; ++ (declarer ; void symbol), colon symbol, identity relation; ++ (declarer ; void symbol), colon symbol, and function; ++ (declarer ; void symbol), colon symbol, or runction; ++ (declarer ; void symbol), colon symbol, jump; ++ (declarer ; void symbol), colon symbol, skip; ++ (declarer ; void symbol), colon symbol, tertiary; ++ (declarer ; void symbol), colon symbol, routine text; ++ (declarer ; void symbol), colon symbol, code clause. ++ ++ Routine texts are used to create routines. They can stand as the actual ++ parameter of an identity declaration, as the actual parameter of a call, or ++ as the right-hand side of an assignation. ++ ++ This lowering function is called in two different contexts: ++ ++ 1) As part of a routine-identity-declaration, in which case the routine ++ resulting from this routine-text is beign ascribed to an identifier given ++ in ctx.proc_decl_identifier. In that case, we lower to a FUNC_DECL ++ initialized with the body of the routine-text. ++ ++ 2) As a free standing routine-text. In that case ctx.proc_decl_identifier is ++ NO_NODE. We lower to the address of a FUNC_DECL that features some unique ++ name. This pointer will then likely be assigned or ascribed to some ++ variable or identifier in non-contracted identity declaration, but we ++ cannot assume that so we have to opt for the indirection. */ ++ ++tree ++a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *s = SUB (p); ++ ++ tree func_decl = NULL_TREE; ++ NODE_T *defining_identifier = ctx.proc_decl_identifier; ++ bool defining_operator = ctx.proc_decl_operator; ++ if (defining_identifier != NO_NODE) ++ { ++ /* The routine-text is part of a routine-identity-declaration. */ ++ func_decl = TAX_TREE_DECL (TAX (defining_identifier)); ++ if (func_decl == NULL_TREE) ++ { ++ func_decl ++ = a68_make_proc_identity_declaration_decl (defining_identifier, ++ ctx.module_definition_name, ++ defining_operator /* indicant */); ++ TAX_TREE_DECL (TAX (defining_identifier)) = func_decl; ++ } ++ ++ /* If the routine-identity-declaration is in a public range then add the ++ declaration to the publicized declarations list. Otherwise chain the ++ declaration in the proper block and bind it. */ ++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) ++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, func_decl); ++ else ++ a68_add_decl (func_decl); ++ } ++ else ++ { ++ /* The routine-text is free standing. */ ++ func_decl = a68_make_anonymous_routine_decl (MOID (p)); ++ a68_add_decl (func_decl); ++ } ++ ++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), ++ DECL_EXPR, ++ TREE_TYPE (func_decl), ++ func_decl)); ++ announce_function (func_decl); ++ ++ /* PARAMETER_PACK. */ ++ NODE_T *parameter_pack_node = NO_NODE; ++ tree parameter_pack = NULL_TREE; /* This is computed below. */ ++ if (IS (s, PARAMETER_PACK)) ++ { ++ parameter_pack_node = s; ++ FORWARD (s); ++ } ++ ++ /* DECLARER or VOID_SYMBOL */ ++ if (IS (s, DECLARER) || IS (s, VOID_SYMBOL)) ++ /* This is not used, as this formal declarer is also available in the ++ procedure mode. So just skip it. */ ++ FORWARD (s); ++ ++ /* Skip the COLON_SYMBOL. */ ++ gcc_assert (IS (s, COLON_SYMBOL)); ++ FORWARD (s); ++ ++ /* Lower the function body. ++ ++ This should be done in a new range in which the formal parameters of the ++ routine-text have been declared. */ ++ a68_push_function_range (func_decl, CTYPE (SUB (MOID (p))) /* result_type */); ++ if (parameter_pack_node != NO_NODE) ++ parameter_pack = a68_lower_tree (parameter_pack_node, ctx); ++ DECL_ARGUMENTS (func_decl) = parameter_pack; ++ ctx.proc_decl_identifier = NO_NODE; ++ tree func_body = a68_lower_tree (s, ctx); ++ a68_pop_function_range (func_body); ++ ++ if (defining_identifier != NO_NODE) ++ /* Routine-text immediately ascribed to some identifier in a ++ proc-identity-declaration. Return the FUNC_DECL. */ ++ return func_decl; ++ else ++ /* Free standing routine-text. Return its address. */ ++ return fold_build1 (ADDR_EXPR, ++ build_pointer_type (TREE_TYPE (func_decl)), ++ func_decl); ++} ++ ++/* Lower an unit. ++ ++ unit : assignation; identity relation; ++ and function; or function; routine text; ++ jump; skip; tertiary; assertion; code clause. ++ ++ The unit lowers to an expression. */ ++ ++tree ++a68_lower_unit (NODE_T *p, LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-low.cc +@@ -0,0 +1,1705 @@ ++/* Lower the Algol 68 parse tree to GENERIC. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "tree.h" ++#include "fold-const.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "tm.h" ++#include "function.h" ++#include "cgraph.h" ++#include "toplev.h" ++#include "varasm.h" ++#include "predict.h" ++#include "stor-layout.h" ++#include "tree-iterator.h" ++#include "stringpool.h" ++#include "print-tree.h" ++#include "gimplify.h" ++#include "dumpfile.h" ++#include "convert.h" ++ ++#include "a68.h" ++ ++/* Return a tree with an identifier for the mangled version of a given ++ name. ++ ++ Publicized symbols feature the module name publishing them. ++ Internal symbols don't. ++ ++ Bold words, i.e. mode indicants, module indicants and operator indicants, ++ are mangled to upper-case. ++ ++ Tags, i.e. identifiers are mangled to lower-case. ++ ++ Monads and nomads are mangled to letter codes symbolizing the symbols: ++ ++ % (p)ercentage ++ ^ (c)aret ++ & (a)mpersand ++ + pl(u)s ++ - (m)inus ++ ~ (t)ilde ++ ! (b)ang ++ ? (q)uestion mark ++ > bi(g)ger than ++ < (l)ess than ++ / (s)lash ++ = (e)qual ++ : c(o)lon ++ * sta(r) ++ ++ Each letter code is followed by a single underscore character. */ ++ ++static tree ++get_mangled_identifier_or_indicant (const char *name, bool indicant, ++ const char *mname, bool internal, ++ bool numbered) ++{ ++ /* First determine the size of the mangled symbol. */ ++ size_t mangled_size = strlen (name) + 1; ++ if (mname) ++ { ++ /* Add size for MNAME_ */ ++ mangled_size += strlen (mname) + 1; ++ if (internal) ++ /* Another _ */ ++ mangled_size += 1; ++ } ++ for (const char *p = name; *p; ++p) ++ { ++ mangled_size += 1; ++ if (strchr (MONADS, *p) != NULL ++ || strchr (NOMADS, *p) != NULL ++ || *p == ':') ++ /* Each monad or nomad requires two chars to encode. */ ++ mangled_size += 1; ++ } ++ ++ char *number_buf = NULL; ++ if (numbered) ++ { ++ static unsigned int cnt; ++ number_buf = xasprintf ("%d", cnt++); ++ mangled_size += strlen (number_buf); ++ } ++ ++ /* Now fill-in the mangled symbol. */ ++ char *mangled_name = (char *) alloca (mangled_size); ++ size_t pos = 0; ++ if (mname) ++ { ++ for (const char *p = mname; *p; ++p) ++ /* Module names are bold words. Make sure to emit them in upper-case. */ ++ mangled_name[pos++] = TOUPPER (*p); ++ mangled_name[pos++] = '_'; ++ if (internal) ++ mangled_name[pos++] = '_'; ++ } ++ ++ for (const char *p = name; *p; ++p) ++ { ++ if (strchr (MONADS, *p) != NULL ++ || strchr (NOMADS, *p) != NULL ++ || *p == ':') ++ { ++ char c; ++ switch (*p) ++ { ++ case '%': c = 'p'; break; ++ case '^': c = 'c'; break; ++ case '&': c = 'a'; break; ++ case '+': c = 'u'; break; ++ case '-': c = 'm'; break; ++ case '~': c = 't'; break; ++ case '!': c = 'b'; break; ++ case '?': c = 'q'; break; ++ case '>': c = 'g'; break; ++ case '<': c = 'l'; break; ++ case '/': c = 's'; break; ++ case '=': c = 'e'; break; ++ case ':': c = 'o'; break; ++ case '*': c = 'r'; break; ++ default: ++ /* Should not happen. */ ++ gcc_unreachable (); ++ } ++ mangled_name[pos++] = c; ++ mangled_name[pos++] = '_'; ++ } ++ else ++ { ++ if (indicant) ++ mangled_name[pos++] = TOUPPER (*p); ++ else ++ mangled_name[pos++] = TOLOWER (*p); ++ } ++ } ++ ++ if (numbered) ++ { ++ for (char *p = number_buf; *p; ++p) ++ mangled_name[pos++] = *p; ++ free (number_buf); ++ } ++ mangled_name[pos++] = '\0'; ++ ++ return get_identifier (mangled_name); ++} ++ ++tree ++a68_get_mangled_identifier (const char *name, const char *mname, ++ bool internal, bool numbered) ++{ ++ return get_mangled_identifier_or_indicant (name, false /* indicant */, mname, ++ internal, numbered); ++} ++ ++tree ++a68_get_mangled_indicant (const char *name, const char *mname, ++ bool internal, bool numbered) ++{ ++ return get_mangled_identifier_or_indicant (name, true /* indicant */, mname, ++ internal, numbered); ++} ++ ++/* Demangle a given SYMBOL. ++ ++ This function does the reverse operation than ++ get_mangled_identifier_or_indicant. */ ++ ++char * ++a68_demangle_symbol (const char *mname, const char *symbol, ++ bool is_operator) ++{ ++ gcc_assert (strlen (symbol) >= strlen (mname) + 1); ++ /* First get rid of the module name and underscore. */ ++ symbol += strlen (mname) + 1; ++ /* Now demangle the rest. */ ++ size_t size = strlen (symbol) + 1; ++ char *demangled = (char *) xmalloc (size + 1); ++ size_t o = 0; ++ for (size_t i = 0; i < size; ++i) ++ { ++ if (symbol[i+1] == '_') ++ { ++ switch (symbol[i]) ++ { ++ case 'p': demangled[o++] = '+'; break; ++ case 'c': demangled[o++] = '^'; break; ++ case 'a': demangled[o++] = '&'; break; ++ case 'u': demangled[o++] = '+'; break; ++ case 'm': demangled[o++] = '-'; break; ++ case 't': demangled[o++] = '~'; break; ++ case 'b': demangled[o++] = '!'; break; ++ case 'q': demangled[o++] = '?'; break; ++ case 'g': demangled[o++] = '>'; break; ++ case 'l': demangled[o++] = '<'; break; ++ case 's': demangled[o++] = '/'; break; ++ case 'e': demangled[o++] = '='; break; ++ case 'o': demangled[o++] = ':'; break; ++ case 'r': demangled[o++] = '*'; break; ++ default: ++ /* Invalid mangling. */ ++ // XXX this should be checked at import time in extract. ++ gcc_unreachable (); ++ } ++ i += 1; ++ } ++ else ++ demangled[o++] = symbol[i]; ++ } ++ demangled[o] = '\0'; ++ ++ if (is_operator) ++ { ++ /* Remove trailing digits. */ ++ for (size_t i = strlen (demangled) - 1; i > 0; --i) ++ { ++ if (ISDIGIT (demangled[i])) ++ demangled[i] = '\0'; ++ else ++ break; ++ } ++ } ++ ++ return demangled; ++} ++ ++/* Return a tree with the EMPTY value. ++ ++ EMPTY is the only denotation of the VOID mode. It is used in unions to ++ denote "no value". It must have size zero, so it lowers into an empty ++ constructor with zero elements of type void. This is what GNU C uses to ++ implement the empty struct extension. */ ++ ++tree ++a68_get_empty (void) ++{ ++ return build_constructor (a68_void_type, NULL); ++} ++ ++/* Return a tree with the yielding of SKIP of a given mode. ++ ++ SKIP stands for some value of some given mode. It shall be used only in a ++ context where the compiler can determine the mode. ++ ++ The particular value to which it elaborates is non-important, but this ++ compiler always uses the same values. See the a68_get_ref_*_tree functions ++ for details on what values are these. */ ++ ++tree ++a68_get_skip_tree (MOID_T *m) ++{ ++ tree expr = NULL_TREE; ++ ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ if (IS_INTEGRAL (m)) ++ expr = a68_get_int_skip_tree (m); ++ else if (m == M_CHAR) ++ expr = a68_get_char_skip_tree (); ++ else if (m == M_BOOL) ++ expr = a68_get_bool_skip_tree (); ++ else if (IS_REAL (m)) ++ expr = a68_get_real_skip_tree (m); ++ else if (IS_BITS (m)) ++ expr = a68_get_bits_skip_tree (m); ++ else if (IS_REF (m)) ++ expr = a68_get_ref_skip_tree (m); ++ else if (IS (m, PROC_SYMBOL)) ++ expr = a68_get_proc_skip_tree (m); ++ else if (IS_STRUCT (m)) ++ expr = a68_get_struct_skip_tree (m); ++ else if (IS_UNION (m)) ++ expr = a68_get_union_skip_tree (m); ++ else if (IS_FLEXETY_ROW (m)) ++ expr = a68_get_multiple_skip_tree (m); ++ else if (m == M_STRING) ++ expr = a68_get_string_skip_tree (); ++ else if (m == M_ROWS || IS (m, SERIES_MODE)) ++ { ++ /* XXX assert that all modes in the series are rows? */ ++ tree rows_type = CTYPE (M_ROWS); ++ tree dim_field = TYPE_FIELDS (rows_type); ++ tree triplets_field = TREE_CHAIN (dim_field); ++ tree null_pointer = build_int_cst (TREE_TYPE (triplets_field), 0); ++ expr = build_constructor_va (rows_type, 2, ++ dim_field, size_zero_node, ++ triplets_field, null_pointer); ++ } ++ else if (m == M_VOID || m == M_HIP) ++ expr = a68_get_empty (); ++ else ++ { ++ fatal_error (UNKNOWN_LOCATION, ++ "get skip tree: cannot compute SKIP for mode %s", ++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m), true)); ++ gcc_unreachable (); ++ } ++ ++ return expr; ++} ++ ++/* Given a tree node EXP holding a value of mode M: ++ ++ *NUM_REFS is set to the number of REFs in M. ++ ++ *NUM_POINTERS is set to the number of pointers in the type of EXP that ++ correspond to the REFs in M. */ ++ ++void ++a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers) ++{ ++ /* Count REFs in M and pointers in the type of EXP. Note that VAR_DECLs ++ corresponding to REF PROC are of type pointer, so these should not count ++ for the count! */ ++ ++ /* Make sure we are accessing the real mode definition. */ ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ *num_refs = 0; ++ *num_pointers = 0; ++ for (MOID_T *s = m; s != NO_MOID && IS_REF (s); s = SUB (s)) ++ *num_refs += 1; ++ for (tree p = TREE_TYPE (exp); ++ p != NULL_TREE && POINTER_TYPE_P (p) && TREE_CODE (TREE_TYPE (p)) != FUNCTION_TYPE; ++ p = TREE_TYPE (p)) ++ *num_pointers += 1; ++ ++ gcc_assert (*num_refs >= *num_pointers); ++} ++ ++/* The Algol 68 variable declaration ++ ++ [LOC|HEAP] AMODE foo; ++ ++ Is in principle equivalent to the identity declaration ++ ++ REF AMODE foo = [LOC|HEAP] AMODE; ++ ++ In both cases the object ascribed to the defining identifier `foo' is of ++ mode REF AMODE. The ascribed object is a name which is created by a ++ generator implied in the actual declarer in the first case, and an explicit ++ generator in the initialization expression in the second case. ++ ++ However, this front-end implements these two cases differently in order to ++ reduce the amount of both indirect addressing and of storage: ++ ++ - The variable declaration `[LOC|HEAP] AMODE foo;' lowers into a VAR_DECL ++ with type ATYPE provided that the generator is LOC and that it contains no ++ rows. Accessing it requires direct addressing. When its address is ++ required, an ADDR_EXPR shall be used. ++ ++ - The identity declaration `REF AMODE foo = LOC AMODE;' lowers into a ++ VAR_DECL with type *ATYPE. Accessing it requires indirect addressing. It ++ is effectively a pointer. ++ ++ This introduces the complication that an expression (the VAR_DECL) whose ++ type is TYPE can appear in a place where *TYPE is expected. This function, ++ given the required mode and an expression, adds as many ADDR_EXPR to EXPR as ++ necessary so the resulting value is of the required type. Other than this ++ nuisance, the parser guarantees that the entities have the right type at the ++ location they appear, so a call to a68_consolidate_ref is all must be needed ++ at any point in the lowering process to guarantee a valid value for the ++ context. ++ ++ This function expects: ++ - That the type of EXPR is zero or more pointers to a base type BTYPE. ++ - That the mode M is zero or more REFs to a base non-ref mode AMODE. ++ - That the number of pointers in the type of EXPR is less or equal than the ++ number of REFs in the mode M. ++ - That BTYPE and AMODE are equivalent. */ ++ ++tree ++a68_consolidate_ref (MOID_T *m, tree expr) ++{ ++ int num_refs, num_pointers; ++ a68_ref_counts (expr, m, &num_refs, &num_pointers); ++ ++ /* Address EXPR as many times as necessary to match the number of REFs in the ++ desired mode. */ ++ while (num_pointers < num_refs) ++ { ++ if (TREE_CODE (expr) == COMPOUND_EXPR) ++ { ++ /* (..., x) -> (..., &x) */ ++ // gcc_assert (TREE_CODE (TREE_OPERAND (expr, 0)) == MODIFY_EXPR); ++ // gcc_assert (VAR_P (TREE_OPERAND (expr, 1))); ++ TREE_OPERAND (expr, 1) = a68_consolidate_ref (m, TREE_OPERAND (expr, 1)); ++ TREE_TYPE (expr) = TREE_TYPE (TREE_OPERAND (expr, 1)); ++ } ++ else ++ { ++ /* x -> &x */ ++ if (TREE_CODE (expr) == INDIRECT_REF) ++ /* expr is an indirection. Remove the pointer rather than adding ++ an addr. This avoids &* situations and marking stuff as ++ addressable unnecessarily. */ ++ expr = TREE_OPERAND (expr,0); ++ else ++ { ++ TREE_ADDRESSABLE (expr) = true; ++ expr = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (expr)), expr); ++ } ++ } ++ num_pointers += 1; ++ } ++ ++ return expr; ++} ++ ++/* Make a declaration for an anonymous routine of mode MODE. */ ++ ++tree ++a68_make_anonymous_routine_decl (MOID_T *mode) ++{ ++ /* The CTYPE of MODE is a pointer to a function. We need the pointed ++ function type for the FUNCTION_DECL. */ ++ tree func_type = TREE_TYPE (CTYPE (mode)); ++ tree func_decl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL_TREE /* name, set below. */, ++ func_type); ++ char *name = xasprintf ("routine%d", DECL_UID (func_decl)); ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); ++ free (name); ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ /* Nested functions should be addressable. ++ XXX this should be propagated to their containing functions, so for now ++ we mark them all as addressable. */ ++ TREE_ADDRESSABLE (func_decl) = 1; ++ /* A nested function is not global. */ ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ TREE_STATIC (func_decl) = 1; ++ ++ return func_decl; ++} ++ ++/* Make a declaration for a constant procedure or operator. */ ++ ++tree ++a68_make_proc_identity_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool indicant, bool external, ++ const char *extern_symbol) ++{ ++ /* The CTYPE of MODE is a pointer to a function. We need the pointed ++ function type for the FUNCTION_DECL. */ ++ tree func_type = TREE_TYPE (CTYPE (MOID (identifier))); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree func_decl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ func_type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (func_decl) = 0; ++ if (publicized) ++ TREE_PUBLIC (func_decl) = 1; ++ else ++ TREE_PUBLIC (func_decl) = 0; ++ if (indicant) ++ DECL_NAME (func_decl) ++ = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ else ++ DECL_NAME (func_decl) ++ = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (func_decl) = 1; ++ TREE_PUBLIC (func_decl) = 1; ++ DECL_NAME (func_decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ DECL_EXTERNAL (func_decl) = 0; ++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); ++ /* Nested functions should be addressable. ++ XXX this should be propagated to their containing functions, so for now ++ we mark them all as addressable. */ ++ TREE_ADDRESSABLE (func_decl) = 1; ++ /* A nested function is not global. */ ++ TREE_PUBLIC (func_decl) = a68_in_global_range (); ++ if (indicant) ++ DECL_NAME (func_decl) = a68_get_mangled_indicant (NSYMBOL (identifier)); ++ else ++ DECL_NAME (func_decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ TREE_STATIC (func_decl) = 1; ++ ++ return func_decl; ++} ++ ++/* Make a declaration for an identity declaration. */ ++ ++tree ++a68_make_identity_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool indicant, bool external, ++ const char *extern_symbol) ++{ ++ tree type = CTYPE (MOID (identifier)); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree decl = build_decl (a68_get_node_location (identifier), ++ VAR_DECL, ++ NULL_TREE, /* name, set below. */ ++ type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (decl) = 0; ++ TREE_STATIC (decl) = 1; ++ if (publicized) ++ TREE_PUBLIC (decl) = 1; ++ else ++ TREE_PUBLIC (decl) = 0; ++ if (indicant) ++ DECL_NAME (decl) = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ else ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_NAME (decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ DECL_EXTERNAL (decl) = 0; ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ ++ DECL_INITIAL (decl) = a68_get_skip_tree (MOID (identifier)); ++ return decl; ++} ++ ++/* Make a declaration for a variable declaration. ++ The mode of the given identifier is expected to be a REF AMODE. */ ++ ++tree ++a68_make_variable_declaration_decl (NODE_T *identifier, ++ const char *module_name, ++ bool external, ++ const char *extern_symbol) ++{ ++ gcc_assert (IS_REF (MOID (identifier))); ++ ++ MOID_T *mode = MOID (identifier); ++ bool use_pointer = (HEAP (TAX (identifier)) != STATIC_SYMBOL ++ && ((HEAP (TAX (identifier)) == HEAP_SYMBOL) ++ || HAS_ROWS (SUB (MOID (identifier))))); ++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); ++ tree type = use_pointer ? CTYPE (mode) : CTYPE (SUB (mode)); ++ tree decl = build_decl (a68_get_node_location (identifier), ++ VAR_DECL, ++ NULL_TREE, /* name, set below. */ ++ type); ++ ++ if (public_range) ++ { ++ bool publicized = PUBLICIZED (TAX (identifier)); ++ ++ DECL_EXTERNAL (decl) = 0; ++ TREE_STATIC (decl) = 1; ++ if (publicized) ++ TREE_PUBLIC (decl) = 1; ++ else ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, ++ false /* internal */, ++ (IS (identifier, DEFINING_OPERATOR) ++ || IS (identifier, OPERATOR))); ++ } ++ else if (external) ++ { ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ DECL_NAME (decl) = get_identifier (extern_symbol); ++ } ++ else ++ { ++ TREE_PUBLIC (decl) = 0; ++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); ++ } ++ ++ DECL_INITIAL (decl) = a68_get_skip_tree (use_pointer ? mode : SUB (mode)); ++ return decl; ++} ++ ++/* Do a checked indirection. ++ ++ P is a tree node used for its location information. ++ EXP is an expression that gets indirected. ++ EXP_MODE is the mode of exp. */ ++ ++tree ++a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode) ++{ ++ tree exp_type = TREE_TYPE (exp); ++ tree nil_check = NULL_TREE; ++ ++ if (OPTION_NIL_CHECKING (&A68_JOB)) ++ { ++ exp = save_expr (exp); ++ tree consolidated_exp = a68_consolidate_ref (exp_mode, exp); ++ ++ /* Check whether we are dereferencing NIL. */ ++ unsigned int lineno = NUMBER (LINE (INFO (p))); ++ const char *filename_str = FILENAME (LINE (INFO (p))); ++ tree filename = build_string_literal (strlen (filename_str) + 1, ++ filename_str); ++ tree call = a68_build_libcall (A68_LIBCALL_DEREFNIL, ++ void_type_node, 2, ++ filename, ++ build_int_cst (unsigned_type_node, lineno)); ++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); ++ nil_check = fold_build2 (NE_EXPR, exp_type, ++ consolidated_exp, ++ build_int_cst (exp_type, 0)); ++ nil_check = fold_build2 (TRUTH_ORIF_EXPR, exp_type, ++ nil_check, call); ++ } ++ ++ tree deref = fold_build1 (INDIRECT_REF, TREE_TYPE (exp_type), exp); ++ if (nil_check == NULL_TREE) ++ return deref; ++ else ++ return fold_build2 (COMPOUND_EXPR, TREE_TYPE (deref), ++ nil_check, deref); ++} ++ ++/* Deref a given expression EXP whose mode is MOID (P). ++ ++ The value to dereference always corresponds to a name, but it may consist ++ of: ++ ++ - Not a pointer, in which case corresponds to a name lowered to a VAR_DECL. ++ ++ - A pointer to a function, in which case corresponds to a name of mode REF ++ PROC, lowered to a VAR_DECL. ++ ++ - Any other pointer corresponds to a name lowered to a VAR_DECL that is a ++ pointer. ++ ++ In the first two cases, in both r-value and l-value situations the expected ++ result is achieved by just returning the value: in r-value the decl denotes ++ the value, in l-value the decl denotes the (direct) address of the ++ value. */ ++ ++tree ++a68_low_deref (tree exp, NODE_T *p) ++{ ++ int num_refs, num_pointers; ++ a68_ref_counts (exp, MOID (p), &num_refs, &num_pointers); ++ ++ if (num_refs > num_pointers) ++ return exp; ++ else ++ { ++ gcc_assert (num_refs == num_pointers); ++ return a68_checked_indirect_ref (p, exp, MOID (p)); ++ } ++} ++ ++/* Get a deep-copy of a given Algol 68 value EXP. */ ++ ++tree ++a68_low_dup (tree expr, bool use_heap) ++{ ++ tree dup = NULL_TREE; ++ tree type = TREE_TYPE (expr); ++ ++ /* XXX */ ++ use_heap = true; ++ ++ /* Determine the mode corresponding to the type of EXPR. */ ++ MOID_T *m = a68_type_moid (type); ++ gcc_assert (m != NO_MOID); ++ while (EQUIVALENT (m) != NO_MOID) ++ m = EQUIVALENT (m); ++ ++ if (A68_ROW_TYPE_P (type)) ++ { ++ /* We need to copy the elements as well as the descriptor. There is no ++ need to check bounds. */ ++ ++ /* Deflexe the mode as appropriate. */ ++ while (IS_FLEX (m)) ++ m = SUB (m); ++ gcc_assert (IS_ROW (m) || m == M_STRING); ++ ++ a68_push_range (NULL); ++ ++ /* First allocate space for the dupped elements. */ ++ expr = save_expr (expr); ++ tree elements = a68_multiple_elements (expr); ++ tree element_pointer_type = TREE_TYPE (elements); ++ tree element_type = TREE_TYPE (element_pointer_type); ++ tree new_elements_size = save_expr (a68_multiple_elements_size (expr)); ++ tree new_elements = a68_lower_tmpvar ("new_elements%", ++ TREE_TYPE (elements), ++ (use_heap ++ ? a68_lower_malloc (TREE_TYPE (TREE_TYPE (elements)), ++ new_elements_size) ++ : a68_lower_alloca (TREE_TYPE (TREE_TYPE (elements)), ++ new_elements_size))); ++ ++ /* Then copy the elements. ++ ++ If the mode of the elements stored in the multiple dont have rows, ++ then we can just use memcpy. Otherwise, we have to loop and recurse ++ to dup all the elements in the multiple one by one. ++ ++ The above applies to multiples of any number of dimensions. */ ++ if (m == M_STRING || !HAS_ROWS (SUB (m))) ++ { ++ a68_add_stmt (a68_lower_memcpy (new_elements, ++ elements, ++ new_elements_size)); ++ a68_add_stmt (new_elements); ++ } ++ else ++ { ++ /* Note that num_elems includes elements that are not accessible due ++ to trimming. */ ++ tree num_elems = a68_lower_tmpvar ("numelems%", size_type_node, ++ fold_build2 (TRUNC_DIV_EXPR, sizetype, ++ new_elements_size, ++ size_in_bytes (element_type))); ++ tree orig_elements = a68_lower_tmpvar ("orig_elements%", ++ element_pointer_type, elements); ++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); ++ ++ /* Begin of loop body. */ ++ a68_push_range (NULL); ++ ++ /* if (index == num_elems) break; */ ++ a68_add_stmt (fold_build1 (EXIT_EXPR, ++ void_type_node, ++ fold_build2 (EQ_EXPR, ++ size_type_node, ++ index, num_elems))); ++ /* new_elements[index] = elements[index] */ ++ tree offset = fold_build2 (MULT_EXPR, sizetype, ++ index, size_in_bytes (element_type)); ++ tree new_elem_lvalue = fold_build2 (MEM_REF, element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ new_elements, ++ offset), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ tree elem = fold_build2 (MEM_REF, element_type, ++ fold_build2 (POINTER_PLUS_EXPR, ++ element_pointer_type, ++ orig_elements, ++ offset), ++ fold_convert (element_pointer_type, ++ integer_zero_node)); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, ++ new_elem_lvalue, ++ a68_low_dup (elem, use_heap))); ++ /* index++ */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ size_type_node, ++ index, size_one_node)); ++ tree loop_body = a68_pop_range (); ++ /* End of loop body. */ ++ ++ a68_add_stmt (fold_build1 (LOOP_EXPR, ++ void_type_node, ++ loop_body)); ++ a68_add_stmt (new_elements); ++ } ++ ++ new_elements = a68_pop_range (); ++ TREE_TYPE (new_elements) = element_pointer_type; ++ ++ /* Now build a descriptor pointing to the dupped elements and return it. ++ Note that the descriptor is always allocated on the stack. */ ++ dup = a68_row_value_raw (type, ++ a68_multiple_triplets (expr), ++ new_elements, ++ new_elements_size); ++ } ++ else if (!HAS_ROWS (m)) ++ { ++ /* Non-multiple values that do not contain rows do not need to be dupped, ++ since they can be just moved around using the semantics of ++ MODIFY_EXPR. */ ++ dup = expr; ++ } ++ else if (A68_STRUCT_TYPE_P (type)) ++ { ++ /* Since struct value can contain multiples and unions and other values ++ that require deep copy, we cannot simply rely on the C semantics of a ++ MODIFY_EXPR. */ ++ tree struct_type = type; ++ vec *ce = NULL; ++ ++ expr = save_expr (expr); ++ for (tree field = TYPE_FIELDS (struct_type); ++ field; ++ field = TREE_CHAIN (field)) ++ { ++ CONSTRUCTOR_APPEND_ELT (ce, field, ++ a68_low_dup (fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field), ++ expr, ++ field, ++ NULL_TREE), ++ use_heap)); ++ } ++ dup = build_constructor (struct_type, ce); ++ } ++ else if (A68_UNION_TYPE_P (type)) ++ { ++ /* We need to recurse in whatever type corresponding to the active mode ++ in the united value. This shall be done at run-time by using a series ++ of ++ ++ IF overhead IS index of mode blah in union ++ THEN dup = dup_type (CTYPE (mode blah in union)) ++ FI ++ */ ++ ++ MOID_T *union_mode = a68_type_moid (type); ++ ++ a68_push_range (union_mode); ++ dup = a68_lower_tmpvar ("dup%", type, expr); ++ ++ tree cunion_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); ++ tree field_decl = TYPE_FIELDS (cunion_type); ++ while (EQUIVALENT (union_mode) != NO_MOID) ++ union_mode = EQUIVALENT (union_mode); ++ for (PACK_T *pack = PACK (union_mode); pack != NO_PACK; FORWARD (pack)) ++ { ++ tree continue_label_decl = build_decl (UNKNOWN_LOCATION, ++ LABEL_DECL, ++ NULL, /* Set below. */ ++ void_type_node); ++ char *label_name = xasprintf ("continue%d%%", DECL_UID (continue_label_decl)); ++ DECL_NAME (continue_label_decl) = get_identifier (label_name); ++ free (label_name); ++ ++ a68_add_decl (continue_label_decl); ++ ++ a68_add_stmt (fold_build2 (TRUTH_ORIF_EXPR, ++ integer_type_node, ++ fold_build2 (EQ_EXPR, ++ integer_type_node, ++ a68_union_overhead (dup), ++ size_int (a68_united_mode_index (union_mode, MOID (pack)))), ++ fold_build2 (COMPOUND_EXPR, ++ integer_type_node, ++ build1 (GOTO_EXPR, void_type_node, continue_label_decl), ++ integer_zero_node))); ++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, ++ fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field_decl), ++ a68_union_cunion (dup), ++ field_decl, ++ NULL_TREE), ++ a68_low_dup (fold_build3 (COMPONENT_REF, ++ TREE_TYPE (field_decl), ++ a68_union_cunion (dup), ++ field_decl, ++ NULL_TREE), ++ use_heap))); ++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, continue_label_decl)); ++ field_decl = TREE_CHAIN (field_decl); ++ } ++ ++ a68_add_stmt (dup); ++ dup = a68_pop_range (); ++ } ++ else ++ /* Not an Algol 68 value. */ ++ gcc_unreachable (); ++ ++ return dup; ++} ++ ++/* Lower code to ascribe the value yielded by the expression in RHS to the ++ defining identifier implied by the LHS, which is a VAR_DECL tree. MODE is ++ the mode of the value to be ascribed. */ ++ ++tree ++a68_low_ascription (MOID_T *mode, tree lhs, tree rhs) ++{ ++ gcc_assert (VAR_P (lhs)); ++ ++ tree type = CTYPE (mode); ++ if (IS (mode, PROC_SYMBOL)) ++ { ++ /* A pointer to a function, or a function, is expected at the right hand ++ side. We need a pointer for the left hand side.. */ ++ if (TREE_CODE (TREE_TYPE (rhs)) == FUNCTION_TYPE) ++ { ++ type = build_pointer_type (type); ++ rhs = fold_build1 (ADDR_EXPR, type, rhs); ++ } ++ } ++ ++ if (HAS_ROWS (mode)) ++ rhs = a68_low_dup (rhs); ++ return fold_build2 (MODIFY_EXPR, type, lhs, rhs); ++} ++ ++/* Perform an assignation of RHS to LHS. ++ ++ MODE_RHS is the mode of the rhs. ++ MODE_LHS is the mode of the lhs. ++ ++ MODE_LHS shall be REF [FLEX] MODE_LHS. */ ++ ++tree ++a68_low_assignation (NODE_T *p, ++ tree lhs, MOID_T *mode_lhs, ++ tree rhs, MOID_T *mode_rhs) ++{ ++ NODE_T *lhs_node = SUB (p); ++ tree assignation = NULL_TREE; ++ tree orig_rhs = rhs; ++ ++ if (IS_FLEXETY_ROW (mode_rhs)) ++ { ++ /* Make a deep copy of the rhs. Note that we have to use the heap ++ because the scope of the lhs may be older than the scope of the rhs. ++ XXX this can be ommitted if a68_multiple_copy_elems below supports ++ overlapping multiples. */ ++ if (HAS_ROWS (mode_rhs)) ++ rhs = a68_low_dup (rhs, true /* use_heap */); ++ rhs = save_expr (rhs); ++ ++ /* Determine whether the REF [FLEX] MODE_LHS is flexible. */ ++ if (SUB (mode_lhs) == M_STRING || IS_FLEX (SUB (mode_lhs))) ++ { ++ /* Assigning to a flexible name updates descriptor with new bounds ++ and also sets the elements to the dup of the rhs. No boundscheck ++ is peformed. XXX but bound checking in contained values may be ++ necessary, ghost elements. */ ++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) ++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) ++ { ++ /* Make sure to not evaluate the expression yielding the pointer ++ more than once. */ ++ lhs = save_expr (lhs); ++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ deref_lhs, rhs), ++ lhs); ++ } ++ else ++ { ++ /* The lhs is either a variable or a component ref as a l-value. It ++ is ok to evaluate it as an r-value as well as doing so inroduces ++ no side-effects. */ ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ lhs, rhs), ++ lhs); ++ } ++ } ++ else ++ { ++ /* Dereference the multiple at the left-hand side. This may require ++ indirection. */ ++ ++ tree effective_lhs; ++ if (POINTER_TYPE_P (TREE_TYPE (lhs))) ++ { ++ /* The name at the lhs is a pointer. */ ++ gcc_assert (TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)); ++ lhs = save_expr (lhs); ++ effective_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ } ++ else ++ { ++ /* The name at the lhs is either a variable or a component ref as ++ a l-value. It is ok to evaluate it as an r-value as well as ++ doing so introduces no side-effects. */ ++ effective_lhs = lhs; ++ } ++ ++ /* Copy over the elements in a loop. The space occupied by the ++ previous elements stored in the lhs multiple will be recovered by ++ either stack shrinkage or garbage collected. */ ++ tree copy_elements = a68_multiple_copy_elems (mode_rhs, effective_lhs, rhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ copy_elements, ++ lhs); ++ ++ /* Check the bounds of the multiple at the rhs to make sure they are ++ the same than the bounds of the multiple already referred by the ++ lhs. If the bounds don't match then emit a run-time error. */ ++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (assignation), ++ a68_multiple_bounds_check_equal (p, ++ effective_lhs, ++ rhs), ++ assignation); ++ ++ } ++ } ++ else ++ { ++ /* First make sure we got a pointer in the RHS in case it is a name. */ ++ rhs = a68_consolidate_ref (mode_rhs, rhs); ++ ++ /* The assignation implies copying the entire value being assigned, so ++ make sure we do a deep copy whenever needed. Note that we have to use ++ the heap because the scope of the lhs may be older than the scope of ++ the rhs. */ ++ if (HAS_ROWS (mode_rhs)) ++ rhs = a68_low_dup (rhs, true /* use_heap */); ++ ++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) ++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) ++ { ++ /* If the left hand side is a pointer, deref it, but return the ++ pointer. Make sure to not evaluate the expression yielding the ++ pointer more than once. */ ++ lhs = save_expr (lhs); ++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ deref_lhs, rhs), ++ lhs); ++ } ++ else ++ { ++ /* Otherwise the lhs is either a variable or a component ref as an ++ l-value. It is ok to evaluate it as an r-value as well as doing ++ so introduces no side-effects. */ ++ assignation = fold_build2 (COMPOUND_EXPR, ++ TREE_TYPE (lhs), ++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), ++ lhs, rhs), ++ lhs); ++ } ++ } ++ ++ /* Since it is been assigned to a name, the rhs is no longer constant. */ ++ if (A68_ROW_TYPE_P (TREE_TYPE (orig_rhs)) || A68_STRUCT_TYPE_P (TREE_TYPE (orig_rhs))) ++ TREE_CONSTANT (orig_rhs) = 0; ++ return assignation; ++} ++ ++/* Build a tree that copies SIZE bytes from SRC into DST. */ ++ ++tree ++a68_lower_memcpy (tree dst, tree src, tree size) ++{ ++ return build_call_expr (builtin_decl_explicit (BUILT_IN_MEMCPY), 3, ++ dst, src, size); ++} ++ ++/* Build a tree that allocates SIZE bytes on the stack and returns a *TYPE ++ pointer to it. */ ++ ++tree ++a68_lower_alloca (tree type, tree size) ++{ ++ tree call = builtin_decl_explicit (BUILT_IN_ALLOCA_WITH_ALIGN); ++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 2, ++ size, ++ size_int (TYPE_ALIGN (type))); ++ call = fold_convert (build_pointer_type (type), call); ++ return call; ++} ++ ++ ++/* Build a tree that allocates SIZE bytes on the heap and returns a *TYPE ++ pointer to it. */ ++ ++tree ++a68_lower_malloc (tree type, tree size) ++{ ++ return fold_convert (build_pointer_type (type), ++ a68_build_libcall (A68_LIBCALL_MALLOC, ptr_type_node, ++ 1, size)); ++} ++ ++/* Build code for a temporary variable named NAME, of type TYPE and initialized ++ to INIT. Returns the decl node for the temporary. */ ++ ++tree ++a68_lower_tmpvar (const char *name, tree type, tree init) ++{ ++ tree tmpvar = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, ++ get_identifier (name), ++ type); ++ DECL_ARTIFICIAL (tmpvar) = 1; ++ DECL_IGNORED_P (tmpvar) = 1; ++ a68_add_decl (tmpvar); ++ a68_add_decl_expr (fold_build1 (DECL_EXPR, type, tmpvar)); ++ a68_add_stmt (fold_build2 (INIT_EXPR, type, tmpvar, init)); ++ return tmpvar; ++} ++ ++/* Build a FUNC_DECL for a top-level non-public function and return it. */ ++ ++tree ++a68_low_toplevel_func_decl (const char *name, tree fntype) ++{ ++ tree fndecl = build_decl (UNKNOWN_LOCATION, ++ FUNCTION_DECL, ++ NULL /* set below */, ++ fntype); ++ char *_name = xasprintf ("__ga68_%s%d", name, DECL_UID (fndecl)); ++ DECL_NAME (fndecl) = get_identifier (_name); ++ free (_name); ++ DECL_EXTERNAL (fndecl) = 0; ++ TREE_PUBLIC (fndecl) = 0; ++ TREE_STATIC (fndecl) = 1; ++ ++ return fndecl; ++} ++ ++/* Build a PARM_DECL whose context is TYPE with the given NAME. */ ++ ++tree ++a68_low_func_param (tree fndecl, const char *name, tree type) ++{ ++ tree param = build_decl (UNKNOWN_LOCATION, PARM_DECL, ++ get_identifier (name), type); ++ DECL_CONTEXT (param) = fndecl; ++ DECL_ARG_TYPE (param) = TREE_TYPE (param); ++ layout_decl (param, 0); ++ return param; ++} ++ ++/* Lower revelations, to calls to either its prelude or poslude. ++ This function always returns NULL_TREE. */ ++ ++static tree ++lower_revelations (NODE_T *p, LOW_CTX_T ctx, bool prelude) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ lower_revelations (SUB (p), ctx, prelude); ++ if (IS (p, MODULE_INDICANT)) ++ { ++ tree decl = build_decl (a68_get_node_location (p), ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (decl) ++ = a68_get_mangled_identifier (prelude ? "_prelude" : "_postlude", ++ NSYMBOL (p)); ++ DECL_EXTERNAL (decl) = 1; ++ TREE_PUBLIC (decl) = 1; ++ a68_add_decl (decl); ++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (p), ++ decl, 0)); ++ } ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a module text. ++ ++ module text : revelation part, def part, postlude part, fed symbol ; ++ revelation part, def part, fed symbol ; ++ def part, postlude part, fed symbol ; ++ def part, postlude part, fed symbol. ++ def part : def symbol, enquiry clause. ++ postlude part : postlude symbol, serial clause. ++ ++ Each module text lowers to two functions which are callable from outside the ++ current compilation unit: ++ ++ MODULENAME__prelude ++ MODULENAME__postlude ++ ++ Declarations inside prelude and postlude are lowered into global decl trees. ++ The non-PUBlicized ones are marked as static. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_module_text (NODE_T *p, LOW_CTX_T ctx) ++{ ++ NODE_T *def_part = (IS (SUB (p), REVELATION_PART) ++ ? NEXT_SUB (p) ++ : SUB (p)); ++ NODE_T *revelation_part = (IS (SUB (p), REVELATION_PART) ++ ? SUB (p) ++ : NO_NODE); ++ NODE_T *postlude_part = (IS (NEXT (def_part), FED_SYMBOL) ++ ? NO_NODE ++ : NEXT (def_part)); ++ NODE_T *prelude_enquiry = NEXT_SUB (def_part); ++ ++ /* The global sentinel of the module, initialized to 0. */ ++ tree sentinel_decl = build_decl (UNKNOWN_LOCATION, ++ VAR_DECL, NULL /* name */, ++ sizetype); ++ char *sentinel_name = xasprintf ("%s__sentinel", ctx.module_definition_name); ++ DECL_NAME (sentinel_decl) = get_identifier (sentinel_name); ++ free (sentinel_name); ++ TREE_PUBLIC (sentinel_decl) = 0; ++ TREE_STATIC (sentinel_decl) = 1; ++ DECL_CONTEXT (sentinel_decl) = NULL_TREE; /* File scope. */ ++ make_decl_rtl (sentinel_decl); ++ varpool_node::finalize_decl (sentinel_decl); ++ ++ /* Create the prelude function. */ ++ tree prelude_decl = build_decl (a68_get_node_location (def_part), ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (prelude_decl) ++ = a68_get_mangled_identifier ("_prelude", ++ ctx.module_definition_name); ++ DECL_EXTERNAL (prelude_decl) = 0; ++ TREE_PUBLIC (prelude_decl) = 1; ++ TREE_STATIC (prelude_decl) = 1; ++ ++ a68_push_function_range (prelude_decl, ++ void_type_node /* result_type */, true /* top_level */); ++ { ++ /* Increase sentinel. */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ sizetype, ++ sentinel_decl, size_one_node)); ++ ++ a68_push_stmt_list (NULL); ++ { ++ a68_push_stmt_list (NULL); ++ { ++ /* Add calls to preludes of modules in REVELATION_PART. */ ++ lower_revelations (revelation_part, ctx, true /* prelude */); ++ a68_add_stmt (a68_lower_tree (prelude_enquiry, ctx)); ++ } ++ tree do_prelude = a68_pop_stmt_list (); ++ ++ a68_push_stmt_list (M_VOID); ++ tree do_nothing = a68_pop_stmt_list (); ++ ++ /* Do the prelude work only if sentinel is 1. */ ++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, ++ fold_build2 (EQ_EXPR, sizetype, ++ sentinel_decl, size_one_node), ++ do_prelude, do_nothing)); ++ } ++ tree prelude_body = a68_pop_stmt_list (); ++ a68_pop_function_range (prelude_body); ++ } ++ ++ /* Create the postlude function. This is done even if the module definition ++ has no postlude in the source code. */ ++ ++ location_t postlude_loc = UNKNOWN_LOCATION; ++ if (postlude_part != NO_NODE) ++ postlude_loc = a68_get_node_location (postlude_part); ++ tree postlude_decl = build_decl (postlude_loc, ++ FUNCTION_DECL, ++ NULL_TREE, /* name, set below. */ ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_NAME (postlude_decl) ++ = a68_get_mangled_identifier ("_postlude", ++ ctx.module_definition_name); ++ DECL_EXTERNAL (postlude_decl) = 0; ++ TREE_PUBLIC (postlude_decl) = 1; ++ TREE_STATIC (postlude_decl) = 1; ++ ++ a68_push_function_range (postlude_decl, ++ void_type_node /* result_type */, true /* top_level */); ++ { ++ /* Decrease sentinel. */ ++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ++ sizetype, ++ sentinel_decl, size_one_node)); ++ ++ a68_push_stmt_list (NULL); ++ { ++ a68_push_stmt_list (NULL); ++ { ++ /* Add calls to postludes of modules in REVELATION_PART. */ ++ lower_revelations (revelation_part, ctx, false /* prelude */); ++ /* Perhaps the postlude code, if there is one. */ ++ NODE_T *postlude_serial = NO_NODE; ++ if (postlude_part != NO_NODE) ++ postlude_serial = NEXT_SUB (postlude_part); ++ if (postlude_serial != NO_NODE) ++ a68_add_stmt (a68_lower_tree (postlude_serial, ctx)); ++ } ++ tree do_postlude = a68_pop_stmt_list (); ++ ++ a68_push_stmt_list (M_VOID); ++ tree do_nothing = a68_pop_stmt_list (); ++ ++ /* Do the postlude work only if sentinel is 0. */ ++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, ++ fold_build2 (EQ_EXPR, sizetype, ++ sentinel_decl, size_zero_node), ++ do_postlude, do_nothing)); ++ } ++ tree postlude_body = a68_pop_stmt_list (); ++ a68_pop_function_range (postlude_body); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a set of module declarations. ++ ++ module declaration : module symbol, defining module, equals symbol, module text ; ++ module_declaration, comma symbol, defining module, ++ equals symbol, module text. ++ ++ Each module declaration lowers into the side-effects of emitting prelude and ++ postlude global functions, and emitting global declarations for the ++ declarations in the module definition prelude. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_module_declaration (NODE_T *p, LOW_CTX_T ctx) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ ctx.module_definition_name = NSYMBOL (p); ++ A68_MODULE_DEFINITION_DECLS->truncate (0); ++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); ++ lower_module_text (NEXT (NEXT (p)), ctx); ++ for (tree d : A68_MODULE_DEFINITION_DECLS) ++ { ++ if (TREE_CODE (d) == FUNCTION_DECL) ++ cgraph_node::finalize_function (d, true); ++ else ++ { ++ rest_of_decl_compilation (d, 1, 0); ++ make_decl_rtl (d); ++ } ++ } ++ } ++ else ++ lower_module_declaration (SUB (p), ctx); ++ } ++ ++ return NULL_TREE; ++} ++ ++/* Lower a prelude packet. ++ ++ prelude packet : module declaration. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_prelude_packet (NODE_T *p, LOW_CTX_T ctx) ++{ ++ a68_lower_tree (SUB (p), ctx); ++ return NULL_TREE; ++} ++ ++/* Lower a particular program. ++ ++ particular program : label, enclosed clause; enclosed clause. ++ ++ This handler always returns NULL_TREE. */ ++ ++static tree ++lower_particular_program (NODE_T *p, LOW_CTX_T ctx) ++{ ++ /* Create the main function that conforms the particular program. */ ++ tree main_decl = build_decl (a68_get_node_location (p), ++ FUNCTION_DECL, ++ get_identifier ("__algol68_main"), ++ build_function_type (void_type_node, ++ void_list_node)); ++ DECL_EXTERNAL (main_decl) = 0; ++ TREE_PUBLIC (main_decl) = 1; ++ TREE_STATIC (main_decl) = 1; ++ ++ a68_push_function_range (main_decl, ++ void_type_node /* result_type */); ++ ++ /* Lower the body of the function. */ ++ NODE_T *enclosed_clause = (IS (SUB (p), ENCLOSED_CLAUSE) ++ ? SUB (p) : NEXT (SUB (p))); ++ tree body_expr = a68_lower_tree (enclosed_clause, ctx); ++ a68_pop_function_range (body_expr); ++ return NULL_TREE; ++} ++ ++/* Lower a packet. ++ ++ packet : particular program ; prelude packet. ++*/ ++ ++static tree ++lower_packet (NODE_T *p, ++ LOW_CTX_T ctx) ++{ ++ return a68_lower_tree (SUB (p), ctx); ++} ++ ++/* Lower the given tree P using the given context CTX. */ ++ ++tree ++a68_lower_tree (NODE_T *p, LOW_CTX_T ctx) ++{ ++#if 0 ++ for (int i = 0; i < ctx.level; ++i) ++ printf (" "); ++ printf ("LOWER TREE: %d::%s\n", ++ NUMBER (p), a68_attribute_name (ATTRIBUTE (p))); ++#endif ++ ctx.level++; ++ ++ tree res = NULL_TREE; ++ ++ if (p == NO_NODE) ++ gcc_unreachable (); ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case PACKET: ++ res = lower_packet (p, ctx); ++ break; ++ break; ++ case PRELUDE_PACKET: ++ res = lower_prelude_packet (p, ctx); ++ break; ++ case MODULE_DECLARATION: ++ res = lower_module_declaration (p, ctx); ++ break; ++ case MODULE_TEXT: ++ res = lower_module_text (p, ctx); ++ break; ++ case PARTICULAR_PROGRAM: ++ res = lower_particular_program (p, ctx); ++ break; ++ /* Clauses */ ++ case ENCLOSED_CLAUSE: ++ res = a68_lower_enclosed_clause (p, ctx); ++ break; ++ case CLOSED_CLAUSE: ++ res = a68_lower_closed_clause (p, ctx); ++ break; ++ case ACCESS_CLAUSE: ++ res = a68_lower_access_clause (p, ctx); ++ break; ++ case PARALLEL_CLAUSE: ++ res = a68_lower_parallel_clause (p, ctx); ++ break; ++ case COLLATERAL_CLAUSE: ++ res = a68_lower_collateral_clause (p, ctx); ++ break; ++ case UNIT_LIST: ++ res = a68_lower_unit_list (p, ctx); ++ break; ++ case CONDITIONAL_CLAUSE: ++ res = a68_lower_conditional_clause (p, ctx); ++ break; ++ case ENQUIRY_CLAUSE: ++ res = a68_lower_enquiry_clause (p, ctx); ++ break; ++ case CASE_CLAUSE: ++ res = a68_lower_case_clause (p, ctx); ++ break; ++ case CONFORMITY_CLAUSE: ++ res = a68_lower_conformity_clause (p, ctx); ++ break; ++ case LOOP_CLAUSE: ++ res = a68_lower_loop_clause (p, ctx); ++ break; ++ case SERIAL_CLAUSE: ++ res = a68_lower_serial_clause (p, ctx); ++ break; ++ case INITIALISER_SERIES: ++ res = a68_lower_initialiser_series (p, ctx); ++ break; ++ case EXIT_SYMBOL: ++ res = a68_lower_completer (p, ctx); ++ break; ++ case LABELED_UNIT: ++ res = a68_lower_labeled_unit (p, ctx); ++ break; ++ case LABEL: ++ res = a68_lower_label (p, ctx); ++ break; ++ /* Declarations. */ ++ case DECLARATION_LIST: ++ res = a68_lower_declaration_list (p, ctx); ++ break; ++ case DECLARER: ++ res = a68_lower_declarer (p, ctx); ++ break; ++ case IDENTITY_DECLARATION: ++ res = a68_lower_identity_declaration (p, ctx); ++ break; ++ case VARIABLE_DECLARATION: ++ res = a68_lower_variable_declaration (p, ctx); ++ break; ++ case PROCEDURE_DECLARATION: ++ res = a68_lower_procedure_declaration (p, ctx); ++ break; ++ case PROCEDURE_VARIABLE_DECLARATION: ++ res = a68_lower_procedure_variable_declaration (p, ctx); ++ break; ++ case PRIORITY_DECLARATION: ++ res = a68_lower_priority_declaration (p, ctx); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ res = a68_lower_brief_operator_declaration (p, ctx); ++ break; ++ case OPERATOR_DECLARATION: ++ res = a68_lower_operator_declaration (p, ctx); ++ break; ++ case MODE_DECLARATION: ++ res = a68_lower_mode_declaration (p, ctx); ++ break; ++ /* Units. */ ++ case UNIT: ++ res = a68_lower_unit (p, ctx); ++ break; ++ case ROUTINE_TEXT: ++ res = a68_lower_routine_text (p, ctx); ++ break; ++ case ASSIGNATION: ++ res = a68_lower_assignation (p, ctx); ++ break; ++ case TERTIARY: ++ res = a68_lower_tertiary (p, ctx); ++ break; ++ case MONADIC_FORMULA: ++ res = a68_lower_monadic_formula (p, ctx); ++ break; ++ case FORMULA: ++ res = a68_lower_formula (p, ctx); ++ break; ++ case SECONDARY: ++ res = a68_lower_secondary (p, ctx); ++ break; ++ case SLICE: ++ res = a68_lower_slice (p, ctx); ++ break; ++ case SELECTION: ++ res = a68_lower_selection (p, ctx); ++ break; ++ case PRIMARY: ++ res = a68_lower_primary (p, ctx); ++ break; ++ case GENERATOR: ++ res = a68_lower_generator (p, ctx); ++ break; ++ case CALL: ++ res = a68_lower_call (p, ctx); ++ break; ++ case CAST: ++ res = a68_lower_cast (p, ctx); ++ break; ++ case AND_FUNCTION: ++ case OR_FUNCTION: ++ res = a68_lower_logic_function (p, ctx); ++ break; ++ case IDENTITY_RELATION: ++ res = a68_lower_identity_relation (p, ctx); ++ break; ++ case EMPTY_SYMBOL: ++ res = a68_lower_empty (p, ctx); ++ break; ++ case NIHIL: ++ res = a68_lower_nihil (p, ctx); ++ break; ++ case SKIP: ++ res = a68_lower_skip (p, ctx); ++ break; ++ case DENOTATION: ++ res = a68_lower_denotation (p, ctx); ++ break; ++ case IDENTIFIER: ++ res = a68_lower_identifier (p, ctx); ++ break; ++ /* Coercions. */ ++ case ROWING: ++ res = a68_lower_rowing (p, ctx); ++ break; ++ case WIDENING: ++ res = a68_lower_widening (p, ctx); ++ break; ++ case DEPROCEDURING: ++ res = a68_lower_deproceduring (p, ctx); ++ break; ++ case PROCEDURING: ++ res = a68_lower_proceduring (p, ctx); ++ break; ++ case VOIDING: ++ res = a68_lower_voiding (p, ctx); ++ break; ++ case DEREFERENCING: ++ res = a68_lower_dereferencing (p, ctx); ++ break; ++ /* Others. */ ++ case UNITING: ++ res = a68_lower_uniting (p, ctx); ++ break; ++ case JUMP: ++ res = a68_lower_jump (p, ctx); ++ break; ++ case PARAMETER: ++ res = a68_lower_parameter (p, ctx); ++ break; ++ case PARAMETER_LIST: ++ res = a68_lower_parameter_list (p, ctx); ++ break; ++ case PARAMETER_PACK: ++ res = a68_lower_parameter_pack (p, ctx); ++ break; ++ case OPERATOR: ++ res = a68_lower_operator (p, ctx); ++ break; ++ case ASSERTION: ++ res = a68_lower_assertion (p, ctx); ++ break; ++ case STOP: ++ res = NULL_TREE; ++ break; ++ default: ++ fatal_error (a68_get_node_location (p), "cannot lower node %s", ++ a68_attribute_name (ATTRIBUTE (p))); ++ gcc_unreachable (); ++ break; ++ } ++ ++ return res; ++} ++ ++/* Lower an Algol 68 complete parse tree to a GENERIC tree. */ ++ ++tree ++a68_lower_top_tree (NODE_T *p) ++{ ++ LOW_CTX_T top_ctx; ++ ++ top_ctx.declarer = NULL; ++ top_ctx.proc_decl_identifier = NO_NODE; ++ top_ctx.proc_decl_operator = false; ++ top_ctx.level = 0; ++ top_ctx.module_definition_name = NULL; ++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); ++ return a68_lower_tree (p, top_ctx); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-diagnostics.cc +@@ -0,0 +1,281 @@ ++/* MOID diagnostics routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Give accurate error message. */ ++ ++const char * ++a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth) ++{ ++#define TAIL(z) (&(z)[strlen (z)]) ++#define ACTUAL_SNPRINTF_SIZE ((SNPRINTF_SIZE - len)) ++ static BUFFER txt; ++ size_t len; ++ if (depth == 1) ++ txt[0] = '\0'; ++ if (IS (p, SERIES_MODE)) ++ { ++ len = strlen (txt); ++ PACK_T *u = PACK (p); ++ ++ int N = 0; ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (MOID (u) != NO_MOID) ++ { ++ if (IS (MOID (u), SERIES_MODE)) ++ (void) a68_mode_error_text (n, MOID (u), q, context, deflex, depth + 1); ++ else if (!a68_is_coercible (MOID (u), q, context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ N++; ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ N++; ++ } ++ } ++ } ++ } ++ } ++ if (depth == 1) ++ { ++ len = strlen (txt); ++ if (N == 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "mode") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (q, MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && IS_FLEX (q)) ++ { ++ PACK_T *u = PACK (p); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (!a68_is_coercible (MOID (u), SLICE (SUB (q)), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%s", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ len = strlen (txt); ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (SLICE (SUB (q)), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && IS (q, ROW_SYMBOL)) ++ { ++ PACK_T *u = PACK (p); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK; FORWARD (u)) ++ { ++ if (!a68_is_coercible (MOID (u), SLICE (q), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ len = strlen (txt); ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %s", ++ a68_moid_to_string (SLICE (q), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ else if (IS (p, STOWED_MODE) && (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL))) ++ { ++ PACK_T *u = PACK (p), *v = PACK (q); ++ len = strlen (txt); ++ if (u == NO_PACK) ++ { ++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ for (; u != NO_PACK && v != NO_PACK; FORWARD (u), FORWARD (v)) ++ { ++ if (!a68_is_coercible (MOID (u), MOID (v), context, deflex)) ++ { ++ len = strlen (txt); ++ if (len > BUFFER_SIZE / 2) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (len > 0) ++ { ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) ++ gcc_unreachable (); ++ len = strlen (txt); ++ } ++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%> cannot be coerced to %%<%s%%>", ++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n), ++ a68_moid_to_string (MOID (v), MOID_ERROR_WIDTH, n)) < 0) ++ gcc_unreachable (); ++ } ++ } ++ } ++ } ++ } ++ return txt; ++#undef TAIL ++#undef ACTUAL_SNPRINTF_SIZE ++} ++ ++/* Cannot coerce error. */ ++ ++void ++a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att) ++{ ++ const char *txt = a68_mode_error_text (p, from, to, context, deflex, 1); ++ ++ if (att == STOP) ++ { ++ if (strlen (txt) == 0) ++ a68_error (p, "M cannot be coerced to M in C context", from, to, context); ++ else ++ a68_error (p, "Y in C context", txt, context); ++ } ++ else ++ { ++ if (strlen (txt) == 0) ++ a68_error (p, "M cannot be coerced to M in C-A", from, to, context, att); ++ else ++ a68_error (p, "Y in C-A", txt, context, att); ++ } ++} ++ ++/* Give a warning when a value is silently discarded. */ ++ ++void ++a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c) ++{ ++ (void) c; ++ ++ if (CAST (x) == false) ++ { ++ if (MOID (x) == M_VOID && MOID (y) != M_ERROR && !(MOID (y) == M_VOID || !a68_is_nonproc (MOID (y)))) ++ { ++ if (IS (p, FORMULA)) ++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); ++ else ++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); ++ } ++ } ++} ++ ++/* Warn for things that are likely unintended. */ ++ ++void ++a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u) ++{ ++ /* semantic_pitfall: warn for things that are likely unintended, for instance ++ REF INT i := LOC INT := 0, which should probably be ++ REF INT i = LOC INT := 0. */ ++ if (IS (p, u)) ++ a68_warning (p, 0, "possibly unintended M A in M A", ++ MOID (p), u, m, c); ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ a68_semantic_pitfall (SUB (p), m, c, u); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-misc.cc +@@ -0,0 +1,1396 @@ ++/* Miscellaneous MOID routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* ++ * MODE checker routines. ++ */ ++ ++/* Absorb nested series modes recursively. */ ++ ++void ++a68_absorb_series_pack (MOID_T **p) ++{ ++ bool siga; ++ ++ do ++ { ++ PACK_T *z = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != NO_MOID && IS (MOID (t), SERIES_MODE)) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ PACK (*p) = z; ++ } ++ while (siga); ++} ++ ++/* Make SERIES (u, v). */ ++ ++MOID_T * ++a68_make_series_from_moids (MOID_T *u, MOID_T *v) ++{ ++ MOID_T *x = a68_new_moid (); ++ ++ ATTRIBUTE (x) = SERIES_MODE; ++ a68_add_mode_to_pack (&(PACK (x)), u, NO_TEXT, NODE (u)); ++ a68_add_mode_to_pack (&(PACK (x)), v, NO_TEXT, NODE (v)); ++ a68_absorb_series_pack (&x); ++ DIM (x) = a68_count_pack_members (PACK (x)); ++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); ++ if (DIM (x) == 1) ++ return MOID (PACK (x)); ++ else ++ return x; ++} ++ ++/* Absorb firmly related unions in mode. ++ ++ For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid ++ UNION (A, B), which is used in balancing conformity clauses. */ ++ ++MOID_T * ++a68_absorb_related_subsets (MOID_T * m) ++{ ++ /* For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid UNION ++ (A, B), which is used in balancing conformity clauses. */ ++ bool siga; ++ ++ do ++ { ++ PACK_T *u = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *v = PACK (m); v != NO_PACK; FORWARD (v)) ++ { ++ MOID_T *n = a68_depref_completely (MOID (v)); ++ ++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, m, SAFE_DEFLEXING)) ++ { ++ /* Unpack it. */ ++ for (PACK_T *w = PACK (n); w != NO_PACK; FORWARD (w)) ++ a68_add_mode_to_pack (&u, MOID (w), NO_TEXT, NODE (w)); ++ siga = true; ++ } ++ else ++ a68_add_mode_to_pack (&u, MOID (v), NO_TEXT, NODE (v)); ++ } ++ PACK (m) = a68_absorb_union_pack (u); ++ } ++ while (siga); ++ return m; ++} ++ ++/* Absorb nested series and united modes recursively. */ ++ ++void ++a68_absorb_series_union_pack (MOID_T **p) ++{ ++ bool siga; ++ ++ do ++ { ++ PACK_T *z = NO_PACK; ++ ++ siga = false; ++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != NO_MOID && (IS (MOID (t), SERIES_MODE) || IS (MOID (t), UNION_SYMBOL))) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ PACK (*p) = z; ++ } ++ while (siga); ++} ++ ++/* Make united mode, from mode that is a SERIES (..). */ ++ ++MOID_T * ++a68_make_united_mode (MOID_T *m) ++{ ++ if (m == NO_MOID) ++ return M_ERROR; ++ else if (ATTRIBUTE (m) != SERIES_MODE) ++ return m; ++ ++ /* Do not unite a single UNION. */ ++ if (DIM (m) == 1 && IS (MOID (PACK (m)), UNION_SYMBOL)) ++ return MOID (PACK (m)); ++ ++ /* Straighten the series. */ ++ a68_absorb_series_union_pack (&m); ++ /* Copy the series into a UNION. */ ++ MOID_T *u = a68_new_moid (); ++ ATTRIBUTE (u) = UNION_SYMBOL; ++ PACK (u) = NO_PACK; ++ for (PACK_T *w = PACK (m); w != NO_PACK; FORWARD (w)) ++ a68_add_mode_to_pack (&(PACK (u)), MOID (w), NO_TEXT, NODE (m)); ++ ++ /* Absorb and contract the new UNION. */ ++ a68_absorb_series_union_pack (&u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ PACK (u) = a68_absorb_union_pack (PACK (u)); ++ a68_contract_union (u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ /* A UNION of one mode is that mode itself. */ ++ if (DIM (u) == 1) ++ return MOID (PACK (u)); ++ else ++ return a68_register_extra_mode (&TOP_MOID (&A68_JOB), u); ++} ++ ++/* Make SOID data structure. */ ++ ++void ++a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute) ++{ ++ ATTRIBUTE (s) = attribute; ++ SORT (s) = sort; ++ MOID (s) = type; ++ CAST (s) = false; ++} ++ ++/* Whether mode is not well defined. */ ++ ++bool ++a68_is_mode_isnt_well (MOID_T *p) ++{ ++ if (p == NO_MOID) ++ return true; ++ else if (!A68_IF_MODE_IS_WELL (p)) ++ return true; ++ else if (PACK (p) != NO_PACK) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!A68_IF_MODE_IS_WELL (MOID (q))) ++ return true; ++ } ++ } ++ return false; ++} ++ ++/* Add SOID data to free chain. */ ++ ++void ++a68_free_soid_list (SOID_T *root) ++{ ++ if (root != NO_SOID) ++ { ++ SOID_T *q = root; ++ ++ for (; NEXT (q) != NO_SOID; FORWARD (q)) ++ ; ++ NEXT (q) = A68 (top_soid_list); ++ A68 (top_soid_list) = root; ++ } ++} ++ ++/* Add SOID data structure to soid list. */ ++ ++void ++a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid) ++{ ++ if (*root != NO_SOID) ++ a68_add_to_soid_list (&(NEXT (*root)), where, soid); ++ else ++ { ++ SOID_T *new_one; ++ ++ if (A68 (top_soid_list) == NO_SOID) ++ new_one = (SOID_T *) ggc_cleared_alloc (); ++ else ++ { ++ new_one = A68 (top_soid_list); ++ FORWARD (A68 (top_soid_list)); ++ } ++ ++ a68_make_soid (new_one, SORT (soid), MOID (soid), 0); ++ NODE (new_one) = where; ++ NEXT (new_one) = NO_SOID; ++ *root = new_one; ++ } ++} ++ ++/* Pack soids in moid, gather resulting moids from terminators in a clause. */ ++ ++MOID_T * ++a68_pack_soids_in_moid (SOID_T *top_sl, int attribute) ++{ ++ MOID_T *x = a68_new_moid (); ++ PACK_T *t, **p; ++ ++ ATTRIBUTE (x) = attribute; ++ DIM (x) = 0; ++ SUB (x) = NO_MOID; ++ EQUIVALENT (x) = NO_MOID; ++ SLICE (x) = NO_MOID; ++ DEFLEXED (x) = NO_MOID; ++ NAME (x) = NO_MOID; ++ NEXT (x) = NO_MOID; ++ PACK (x) = NO_PACK; ++ p = &(PACK (x)); ++ for (; top_sl != NO_SOID; FORWARD (top_sl)) ++ { ++ t = a68_new_pack (); ++ MOID (t) = MOID (top_sl); ++ TEXT (t) = NO_TEXT; ++ NODE (t) = NODE (top_sl); ++ NEXT (t) = NO_PACK; ++ DIM (x)++; ++ *p = t; ++ p = &NEXT (t); ++ } ++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); ++ return x; ++} ++ ++/* Whether P is compatible with Q. */ ++ ++bool ++a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (deflex == FORCE_DEFLEXING) ++ return DEFLEX (p) == DEFLEX (q); ++ else if (deflex == ALIAS_DEFLEXING) ++ { ++ if (IS (p, REF_SYMBOL) && IS (q, REF_SYMBOL)) ++ return (p == q ++ || a68_prove_moid_equivalence (p, q) ++ || a68_prove_moid_equivalence (DEFLEX (p), q) ++ || DEFLEX (p) == q); ++ else if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) ++ return (DEFLEX (p) == DEFLEX (q) ++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); ++ } ++ else if (deflex == SAFE_DEFLEXING) ++ { ++ if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) ++ return (DEFLEX (p) == DEFLEX (q) ++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); ++ } ++ ++ return (p == q || a68_prove_moid_equivalence (p, q)); ++} ++ ++/* Whether mode is deprefable, i.e. whether it can be either deferred or ++ deprocedured. */ ++ ++bool ++a68_is_deprefable (MOID_T *p) ++{ ++ if (IS_REF (p)) ++ return true; ++ else ++ return (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK); ++} ++ ++/* Deref or deproc the mode P once. */ ++ ++MOID_T * ++a68_depref_once (MOID_T *p) ++{ ++ if (IS_REF_FLEX (p)) ++ return SUB_SUB (p); ++ else if (IS_REF (p)) ++ return SUB (p); ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return SUB (p); ++ else ++ return NO_MOID; ++} ++ ++/* Depref mode completely. */ ++ ++MOID_T * ++a68_depref_completely (MOID_T *p) ++{ ++ while (a68_is_deprefable (p)) ++ p = a68_depref_once (p); ++ return p; ++} ++ ++/* Deproc_completely. */ ++ ++MOID_T * ++a68_deproc_completely (MOID_T *p) ++{ ++ while (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ p = a68_depref_once (p); ++ return p; ++} ++ ++/* Depref rows. */ ++ ++MOID_T * ++a68_depref_rows (MOID_T *p, MOID_T *q) ++{ ++ if (q == M_ROWS) ++ { ++ while (a68_is_deprefable (p)) ++ p = a68_depref_once (p); ++ return p; ++ } ++ else ++ return q; ++} ++ ++/* Derow mode, strip FLEX and BOUNDS. */ ++ ++MOID_T * ++a68_derow (MOID_T *p) ++{ ++ if (IS_ROW (p) || IS_FLEX (p)) ++ return a68_derow (SUB (p)); ++ else ++ return p; ++} ++ ++/* Whether rows type. */ ++ ++bool ++a68_is_rows_type (MOID_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ROW_SYMBOL: ++ case FLEX_SYMBOL: ++ return true; ++ case UNION_SYMBOL: ++ { ++ PACK_T *t = PACK (p); ++ bool siga = true; ++ while (t != NO_PACK && siga) ++ { ++ siga &= a68_is_rows_type (MOID (t)); ++ FORWARD (t); ++ } ++ return siga; ++ } ++ default: ++ return false; ++ } ++} ++ ++/* Whether mode is PROC (REF FILE) VOID or FORMAT. */ ++ ++bool ++a68_is_proc_ref_file_void_or_format (MOID_T *p) ++{ ++ if (p == M_PROC_REF_FILE_VOID) ++ return true; ++ else if (p == M_FORMAT) ++ return true; ++ else ++ return false; ++} ++ ++/* Whether mode can be transput. */ ++ ++bool ++a68_is_transput_mode (MOID_T *p, char rw) ++{ ++ if (p == M_INT) ++ return true; ++ else if (p == M_SHORT_INT) ++ return true; ++ else if (p == M_SHORT_SHORT_INT) ++ return true; ++ else if (p == M_LONG_INT) ++ return true; ++ else if (p == M_LONG_LONG_INT) ++ return true; ++ else if (p == M_REAL) ++ return true; ++ else if (p == M_LONG_REAL) ++ return true; ++ else if (p == M_LONG_LONG_REAL) ++ return true; ++ else if (p == M_BOOL) ++ return true; ++ else if (p == M_CHAR) ++ return true; ++ else if (p == M_BITS) ++ return true; ++ else if (p == M_SHORT_BITS) ++ return true; ++ else if (p == M_SHORT_SHORT_BITS) ++ return true; ++ else if (p == M_LONG_BITS) ++ return true; ++ else if (p == M_LONG_LONG_BITS) ++ return true; ++ else if (p == M_COMPLEX) ++ return true; ++ else if (p == M_LONG_COMPLEX) ++ return true; ++ else if (p == M_LONG_LONG_COMPLEX) ++ return true; ++ else if (p == M_ROW_CHAR) ++ return true; ++ else if (p == M_STRING) ++ return true; ++ else if (IS (p, UNION_SYMBOL) || IS (p, STRUCT_SYMBOL)) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!(a68_is_transput_mode (MOID (q), rw) ++ || a68_is_proc_ref_file_void_or_format (MOID (q)))) ++ return false; ++ } ++ return true; ++ } ++ else if (IS_FLEX (p)) ++ { ++ if (SUB (p) == M_ROW_CHAR) ++ return true; ++ else ++ return (rw == 'w' ? a68_is_transput_mode (SUB (p), rw) : false); ++ } ++ else if (IS_ROW (p)) ++ return (a68_is_transput_mode (SUB (p), rw) ++ || a68_is_proc_ref_file_void_or_format (SUB (p))); ++ else ++ return false; ++} ++ ++/* Whether mode is printable. */ ++ ++bool ++a68_is_printable_mode (MOID_T *p) ++{ ++ if (a68_is_proc_ref_file_void_or_format (p)) ++ return true; ++ else ++ return a68_is_transput_mode (p, 'w'); ++} ++ ++/* Whether mode is readable. */ ++ ++bool ++a68_is_readable_mode (MOID_T *p) ++{ ++ if (a68_is_proc_ref_file_void_or_format (p)) ++ return true; ++ else if (IS_REF (p)) ++ return a68_is_transput_mode (SUB (p), 'r'); ++ else if (IS_UNION (p)) ++ { ++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) ++ { ++ if (!IS_REF (MOID (q))) ++ return false; ++ else if (!a68_is_transput_mode (SUB (MOID (q)), 'r')) ++ return false; ++ } ++ return true; ++ } ++ else ++ return false; ++} ++ ++/* Whether name struct. */ ++ ++bool ++a68_is_name_struct (MOID_T *p) ++{ ++ return (NAME (p) != NO_MOID ? IS (DEFLEX (SUB (p)), STRUCT_SYMBOL) : false); ++} ++ ++/* Yield mode to unite to. */ ++ ++MOID_T * ++a68_unites_to (MOID_T *m, MOID_T *u) ++{ ++ /* Uniting U (m). */ ++ MOID_T *v = NO_MOID; ++ ++ if (u == M_SIMPLIN || u == M_SIMPLOUT) ++ return m; ++ ++ for (PACK_T *p = PACK (u); p != NO_PACK; FORWARD (p)) ++ { ++ /* Prefer []->[] over []->FLEX []. */ ++ if (m == MOID (p)) ++ v = MOID (p); ++ else if (v == NO_MOID && DEFLEX (m) == DEFLEX (MOID (p))) ++ v = MOID (p); ++ } ++ return v; ++} ++ ++/* Whether moid in pack. */ ++ ++bool ++a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex) ++{ ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ if (a68_is_equal_modes (u, MOID (v), deflex)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Whether a rows type in pack. */ ++ ++bool ++a68_is_rows_in_pack (PACK_T *v) ++{ ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ if (a68_is_rows_type (MOID (v))) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Whether P is a subset of Q. */ ++ ++bool ++a68_is_subset (MOID_T *p, MOID_T *q, int deflex) ++{ ++ bool j =true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j = (j && a68_is_moid_in_pack (MOID (u), PACK (q), deflex)); ++ ++ return j; ++} ++ ++/* Whether P can be united to UNION Q. */ ++ ++bool ++a68_is_unitable (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (IS (q, UNION_SYMBOL)) ++ { ++ if (IS (p, UNION_SYMBOL)) ++ return a68_is_subset (p, q, deflex); ++ else if (p == M_ROWS) ++ return a68_is_rows_in_pack (PACK (q)); ++ else ++ return a68_is_moid_in_pack (p, PACK (q), deflex); ++ } ++ ++ return false; ++} ++ ++/* Whether all or some components of U can be firmly coerced to a component ++ mode of V.. */ ++ ++void ++a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some) ++{ ++ *all = true; ++ *some = true; ++ for (; v != NO_PACK; FORWARD (v)) ++ { ++ bool k = false; ++ ++ for (PACK_T *w = u; w != NO_PACK; FORWARD (w)) ++ k |= a68_is_coercible (MOID (w), MOID (v), FIRM, FORCE_DEFLEXING); ++ *some |= k; ++ *all &= k; ++ } ++} ++ ++/* Whether there is a soft path from P to Q. */ ++ ++bool ++a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return a68_is_softly_coercible (SUB (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a weak path from P to Q. */ ++ ++bool ++a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_weakly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a meek path from P to Q. */ ++ ++bool ++a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_meekly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether there is a firm path from P to Q. */ ++ ++bool ++a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ return true; ++ else if (a68_is_unitable (p, q, deflex)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_firmly_coercible (a68_depref_once (p), q, deflex); ++ else ++ return false; ++} ++ ++/* Whether firm. */ ++ ++bool ++a68_is_firm (MOID_T *p, MOID_T *q) ++{ ++ return (a68_is_firmly_coercible (p, q, SAFE_DEFLEXING) ++ || a68_is_firmly_coercible (q, p, SAFE_DEFLEXING)); ++} ++ ++/* Whether P widens to Q. ++ ++ This function returns: ++ ++ The destination mode Q if P, or ++ Some other mode which is an intermediate step from P to Q, or ++ NO_MOID if P cannot be widened to Q. ++ ++ This means that if P is known to widen to Q (a68_is_widenable (P,Q) return ++ true) this function can be invoked repeteadly and it will eventually return ++ Q. */ ++ ++MOID_T * ++a68_widens_to (MOID_T *p, MOID_T *q) ++{ ++ if (p == M_INT) ++ { ++ if (q == M_REAL || q == M_COMPLEX) ++ { ++ return M_REAL; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_INT) ++ { ++ if (q == M_LONG_REAL) ++ { ++ return M_LONG_REAL; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_LONG_INT) ++ { ++ if (q == M_LONG_LONG_REAL || q == M_LONG_LONG_COMPLEX) ++ return M_LONG_LONG_REAL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_REAL) ++ { ++ if (q == M_COMPLEX) ++ { ++ return M_COMPLEX; ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (p == M_LONG_REAL) ++ { ++ if (q == M_LONG_COMPLEX) ++ return M_LONG_COMPLEX; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_LONG_REAL) ++ { ++ if (q == M_LONG_LONG_COMPLEX) ++ return M_LONG_LONG_COMPLEX; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_SHORT_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_SHORT_SHORT_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_LONG_LONG_BITS) ++ { ++ if (q == M_ROW_BOOL) ++ return M_ROW_BOOL; ++ else if (q == M_FLEX_ROW_BOOL) ++ return M_FLEX_ROW_BOOL; ++ else ++ return NO_MOID; ++ } ++ else if (p == M_BYTES && q == M_ROW_CHAR) ++ return M_ROW_CHAR; ++ else if (p == M_LONG_BYTES && q == M_ROW_CHAR) ++ return M_ROW_CHAR; ++ else if (p == M_BYTES && q == M_FLEX_ROW_CHAR) ++ return M_FLEX_ROW_CHAR; ++ else if (p == M_LONG_BYTES && q == M_FLEX_ROW_CHAR) ++ return M_FLEX_ROW_CHAR; ++ else ++ return NO_MOID; ++} ++ ++/* Whether P widens to Q. */ ++ ++bool ++a68_is_widenable (MOID_T *p, MOID_T *q) ++{ ++ MOID_T *z = a68_widens_to (p, q); ++ ++ if (z != NO_MOID) ++ return (z == q ? true : a68_is_widenable (z, q)); ++ else ++ return false; ++} ++ ++/* Whether P is a REF ROW. */ ++ ++bool ++a68_is_ref_row (MOID_T *p) ++{ ++ return (NAME (p) != NO_MOID ? IS_ROW (DEFLEX (SUB (p))) : false); ++} ++ ++/* Whether strong name. */ ++ ++bool ++a68_is_strong_name (MOID_T *p, MOID_T *q) ++{ ++ if (p == q) ++ return true; ++ else if (a68_is_ref_row (q)) ++ return a68_is_strong_name (p, NAME (q)); ++ else ++ return false; ++} ++ ++/* Whether strong slice. */ ++ ++bool ++a68_is_strong_slice (MOID_T *p, MOID_T *q) ++{ ++ if (p == q || a68_is_widenable (p, q)) ++ return true; ++ else if (SLICE (q) != NO_MOID) ++ return a68_is_strong_slice (p, SLICE (q)); ++ else if (IS_FLEX (q)) ++ return a68_is_strong_slice (p, SUB (q)); ++ else if (a68_is_ref_row (q)) ++ return a68_is_strong_name (p, q); ++ else ++ return false; ++} ++ ++/* Whether strongly coercible. */ ++ ++bool ++a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex) ++{ ++ /* Keep this sequence of statements. */ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (q == M_VOID) ++ return true; ++ else if ((q == M_SIMPLIN || q == M_ROW_SIMPLIN) && a68_is_readable_mode (p)) ++ return true; ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ return true; ++ else if (a68_is_unitable (p, a68_derow (q), deflex)) ++ return true; ++ ++ if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) ++ return true; ++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) ++ return true; ++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) ++ return true; ++ else if (a68_is_widenable (p, q)) ++ return true; ++ else if (a68_is_deprefable (p)) ++ return a68_is_strongly_coercible (a68_depref_once (p), q, deflex); ++ else if (q == M_SIMPLOUT || q == M_ROW_SIMPLOUT) ++ return a68_is_printable_mode (p); ++ else ++ return false; ++} ++ ++/* Basic coercions. */ ++ ++bool ++a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (c == NO_SORT) ++ return (p == q); ++ else if (c == SOFT) ++ return a68_is_softly_coercible (p, q, deflex); ++ else if (c == WEAK) ++ return a68_is_weakly_coercible (p, q, deflex); ++ else if (c == MEEK) ++ return a68_is_meekly_coercible (p, q, deflex); ++ else if (c == FIRM) ++ return a68_is_firmly_coercible (p, q, deflex); ++ else if (c == STRONG) ++ return a68_is_strongly_coercible (p, q, deflex); ++ else ++ return false; ++} ++ ++/* Whether coercible stowed. */ ++ ++bool ++a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (c != STRONG) ++ /* Such construct is always in a strong position, is it not? */ ++ return false; ++ else if (q == M_VOID) ++ return true; ++ else if (IS_FLEX (q)) ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j &= a68_is_coercible (MOID (u), SLICE (SUB (q)), c, deflex); ++ return j; ++ } ++ else if (IS_ROW (q)) ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ j &= a68_is_coercible (MOID (u), SLICE (q), c, deflex); ++ return j; ++ } ++ else if (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL)) ++ { ++ if (DIM (p) != DIM (q)) ++ return false; ++ else ++ { ++ PACK_T *u = PACK (p), *v = PACK (q); ++ bool j = true; ++ ++ while (u != NO_PACK && v != NO_PACK && j) ++ { ++ j &= a68_is_coercible (MOID (u), MOID (v), c, deflex); ++ FORWARD (u); ++ FORWARD (v); ++ } ++ return j; ++ } ++ } ++ else ++ return false; ++} ++ ++/* Whether coercible series. */ ++ ++bool ++a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (c == NO_SORT) ++ return false; ++ else if (p == NO_MOID || q == NO_MOID) ++ return false; ++ else if (IS (p, SERIES_MODE) && PACK (p) == NO_PACK) ++ return false; ++ else if (IS (q, SERIES_MODE) && PACK (q) == NO_PACK) ++ return false; ++ else if (PACK (p) == NO_PACK) ++ return a68_is_coercible (p, q, c, deflex); ++ else ++ { ++ bool j = true; ++ ++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) ++ { ++ if (MOID (u) != NO_MOID) ++ j &= a68_is_coercible (MOID (u), q, c, deflex); ++ } ++ return j; ++ } ++} ++ ++/* Whether P can be coerced to Q in a C context. ++ ++ If P is a STOWED modes serie (A, B, ...) and Q is a routine mode like `proc ++ (X, Y, ...)' then this routine determines whether A can be coerced to X, B ++ to Y, etc. */ ++ ++bool ++a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex) ++{ ++ if (a68_is_mode_isnt_well (p) || a68_is_mode_isnt_well (q)) ++ return true; ++ else if (a68_is_equal_modes (p, q, deflex)) ++ return true; ++ else if (p == M_HIP) ++ return true; ++ else if (IS (p, STOWED_MODE)) ++ return a68_is_coercible_stowed (p, q, c, deflex); ++ else if (IS (p, SERIES_MODE)) ++ return a68_is_coercible_series (p, q, c, deflex); ++ else if (p == M_VACUUM && IS_ROW (DEFLEX (q))) ++ return true; ++ else ++ return a68_basic_coercions (p, q, c, deflex); ++} ++ ++/* Whether coercible in context. */ ++ ++bool ++a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex) ++{ ++ if (SORT (p) != SORT (q)) ++ return false; ++ else if (MOID (p) == MOID (q)) ++ return true; ++ else ++ return a68_is_coercible (MOID (p), MOID (q), SORT (q), deflex); ++} ++ ++/* Whether list Y is balanced. */ ++ ++bool ++a68_is_balanced (NODE_T *n, SOID_T *y, int sort) ++{ ++ if (sort == STRONG) ++ return true; ++ else ++ { ++ bool k = false; ++ ++ for (; y != NO_SOID && !k; FORWARD (y)) ++ k = (!IS (MOID (y), STOWED_MODE)); ++ ++ if (k == false) ++ a68_error (n, "construct has no unique mode"); ++ return k; ++ } ++} ++ ++/* A moid from M to which all other members can be coerced. ++ If no fulcrum of the balance is found, return NO_MOID. */ ++ ++MOID_T * ++a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) ++{ ++ MOID_T *common_moid = NO_MOID; ++ ++ if (m != NO_MOID && !a68_is_mode_isnt_well (m) && IS (m, UNION_SYMBOL)) ++ { ++ int depref_level; ++ bool siga = true; ++ /* Test for increasing depreffing. */ ++ for (depref_level = 0; siga; depref_level++) ++ { ++ siga = false; ++ /* Test the whole pack. */ ++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) ++ { ++ /* HIPs are not eligible of course. */ ++ if (MOID (p) != M_HIP) ++ { ++ MOID_T *candidate = MOID (p); ++ int k; ++ /* Depref as far as allowed. */ ++ for (k = depref_level; k > 0 && a68_is_deprefable (candidate); k--) ++ candidate = a68_depref_once (candidate); ++ /* Only need testing if all allowed deprefs succeeded. */ ++ if (k == 0) ++ { ++ MOID_T *to = (return_depreffed ? a68_depref_completely (candidate) : candidate); ++ bool all_coercible = true; ++ ++ siga = true; ++ for (PACK_T *q = PACK (m); q != NO_PACK && all_coercible; FORWARD (q)) ++ { ++ MOID_T *from = MOID (q); ++ if (p != q && from != to) ++ all_coercible &= a68_is_coercible (from, to, sort, deflex); ++ } ++ /* If the pack is coercible to the candidate, we mark the ++ candidate. We continue searching for longest series ++ of REF REF PROC REF. */ ++ if (all_coercible) ++ { ++ MOID_T *mark = (return_depreffed ? MOID (p) : candidate); ++ ++ if (common_moid == NO_MOID) ++ common_moid = mark; ++ else if (IS_FLEX (candidate) && DEFLEX (candidate) == common_moid) ++ /* We prefer FLEX. */ ++ common_moid = mark; ++ } ++ } ++ } ++ } ++ } ++ } ++ ++ return common_moid; ++} ++ ++/* A moid from M to which all other members can be coerced. ++ If no fulcrum of the balance is found, return M. */ ++ ++MOID_T * ++a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) ++{ ++ MOID_T *common_moid ++ = a68_get_balanced_mode_or_no_mode (m, sort, return_depreffed, deflex); ++ return common_moid == NO_MOID ? m : common_moid; ++} ++ ++/* Whether we can search a common mode from a clause or not. */ ++ ++bool ++a68_clause_allows_balancing (int att) ++{ ++ switch (att) ++ { ++ case CLOSED_CLAUSE: ++ case CONDITIONAL_CLAUSE: ++ case CASE_CLAUSE: ++ case SERIAL_CLAUSE: ++ case CONFORMITY_CLAUSE: ++ return true; ++ } ++ return false; ++} ++ ++/* A unique mode from Z. */ ++ ++MOID_T * ++a68_determine_unique_mode (SOID_T *z, int deflex) ++{ ++ if (z == NO_SOID) ++ return NO_MOID; ++ else ++ { ++ MOID_T *x = MOID (z); ++ ++ if (a68_is_mode_isnt_well (x)) ++ return M_ERROR; ++ ++ /* If X is a series containing one union, a68_make_united_mode will ++ return that union (because 'union (union (...))' is the same than ++ 'union (...)') and then a68_get_balanced_mode below will try to ++ balance the modes in that union. Not what we want. */ ++ if (ATTRIBUTE (x) == SERIES_MODE ++ && DIM (x) == 1 ++ && IS (MOID (PACK (x)), UNION_SYMBOL)) ++ return MOID (PACK (x)); ++ ++ x = a68_make_united_mode (x); ++ if (a68_clause_allows_balancing (ATTRIBUTE (z))) ++ return a68_get_balanced_mode (x, STRONG, A68_NO_DEPREF, deflex); ++ else ++ return x; ++ } ++} ++ ++/* Insert coercion A in the tree. */ ++ ++void ++a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m) ++{ ++ a68_make_sub (l, l, a); ++ MOID (l) = a68_depref_rows (MOID (l), m); ++} ++ ++/* Make widening coercion. */ ++ ++static void ++make_widening_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ MOID_T *z = a68_widens_to (p, q); ++ ++ a68_make_coercion (n, WIDENING, z); ++ if (z != q) ++ make_widening_coercion (n, z, q); ++} ++ ++/* Make ref rowing coercion. */ ++ ++void ++a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) != DEFLEX (q)) ++ { ++ if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (a68_is_ref_row (q)) ++ { ++ a68_make_ref_rowing_coercion (n, p, NAME (q)); ++ a68_make_coercion (n, ROWING, q); ++ } ++ } ++} ++ ++/* Make rowing coercion. */ ++ ++void ++a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) != DEFLEX (q)) ++ { ++ if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (SLICE (q) != NO_MOID) ++ { ++ a68_make_rowing_coercion (n, p, SLICE (q)); ++ a68_make_coercion (n, ROWING, q); ++ } ++ else if (IS_FLEX (q)) ++ a68_make_rowing_coercion (n, p, SUB (q)); ++ else if (a68_is_ref_row (q)) ++ a68_make_ref_rowing_coercion (n, p, q); ++ } ++} ++ ++/* Make uniting coercion. */ ++ ++void ++a68_make_uniting_coercion (NODE_T *n, MOID_T *q) ++{ ++ a68_make_coercion (n, UNITING, a68_derow (q)); ++ if (IS_ROW (q) || IS_FLEX (q)) ++ a68_make_rowing_coercion (n, a68_derow (q), q); ++} ++ ++/* Make depreffing coercion to coerce node N from mode P to mode Q in a strong ++ context. */ ++ ++void ++a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (DEFLEX (p) == DEFLEX (q)) ++ return; ++ else if (q == M_SIMPLOUT && a68_is_printable_mode (p)) ++ a68_make_coercion (n, UNITING, q); ++ else if (q == M_ROW_SIMPLOUT && a68_is_printable_mode (p)) ++ { ++ a68_make_coercion (n, UNITING, M_SIMPLOUT); ++ a68_make_coercion (n, ROWING, M_ROW_SIMPLOUT); ++ } ++ else if (q == M_SIMPLIN && a68_is_readable_mode (p)) ++ a68_make_coercion (n, UNITING, q); ++ else if (q == M_ROW_SIMPLIN && a68_is_readable_mode (p)) ++ { ++ a68_make_coercion (n, UNITING, M_SIMPLIN); ++ a68_make_coercion (n, ROWING, M_ROW_SIMPLIN); ++ } ++ else if (q == M_ROWS && a68_is_rows_type (p)) ++ { ++ a68_make_coercion (n, UNITING, M_ROWS); ++ MOID (n) = M_ROWS; ++ } ++ else if (a68_is_widenable (p, q)) ++ make_widening_coercion (n, p, q); ++ else if (a68_is_unitable (p, a68_derow (q), SAFE_DEFLEXING)) ++ a68_make_uniting_coercion (n, q); ++ else if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) ++ a68_make_ref_rowing_coercion (n, p, q); ++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) ++ a68_make_rowing_coercion (n, p, q); ++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) ++ a68_make_rowing_coercion (n, p, q); ++ else if (IS_REF (p)) ++ { ++ MOID_T *r = a68_depref_once (p); ++ a68_make_coercion (n, DEREFERENCING, r); ++ a68_make_depreffing_coercion (n, r, q); ++ } ++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ { ++ MOID_T *r = SUB (p); ++ ++ a68_make_coercion (n, DEPROCEDURING, r); ++ a68_make_depreffing_coercion (n, r, q); ++ } ++ else if (p != q) ++ a68_cannot_coerce (n, p, q, NO_SORT, SKIP_DEFLEXING, 0); ++} ++ ++/* Whether p is a nonproc mode (that is voided directly). */ ++ ++bool ++a68_is_nonproc (MOID_T *p) ++{ ++ if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) ++ return false; ++ else if (IS_REF (p)) ++ return a68_is_nonproc (SUB (p)); ++ else ++ return true; ++} ++ ++/* Voiden in an appropriate way. */ ++ ++void ++a68_make_void (NODE_T *p, MOID_T *q) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ASSIGNATION: ++ case IDENTITY_RELATION: ++ case GENERATOR: ++ case CAST: ++ case DENOTATION: ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ default: ++ break; ++ } ++ ++ /* MORFs are an involved case. */ ++ switch (ATTRIBUTE (p)) ++ { ++ case SELECTION: ++ case SLICE: ++ case ROUTINE_TEXT: ++ case FORMULA: ++ case CALL: ++ case IDENTIFIER: ++ /* A nonproc moid value is eliminated directly. */ ++ if (a68_is_nonproc (q)) ++ { ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ } ++ else ++ { ++ /* Descend the chain of e.g. REF PROC .. until a nonproc moid ++ remains. */ ++ MOID_T *z = q; ++ ++ while (!a68_is_nonproc (z)) ++ { ++ if (IS_REF (z)) ++ a68_make_coercion (p, DEREFERENCING, SUB (z)); ++ if (IS (z, PROC_SYMBOL) && NODE_PACK (p) == NO_PACK) ++ a68_make_coercion (p, DEPROCEDURING, SUB (z)); ++ z = SUB (z); ++ } ++ if (z != M_VOID) ++ a68_make_coercion (p, VOIDING, M_VOID); ++ return; ++ } ++ default: ++ break; ++ } ++ ++ /* All other is voided straight away. */ ++ a68_make_coercion (p, VOIDING, M_VOID); ++} ++ ++/* Make strong coercion of node N from mode P to mode Q. */ ++ ++void ++a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q) ++{ ++ if (q == M_VOID && p != M_VOID) ++ a68_make_void (n, p); ++ else ++ a68_make_depreffing_coercion (n, p, q); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-moids-to-string.cc +@@ -0,0 +1,417 @@ ++/* Pretty-print a MOID. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* ++ * A pretty printer for moids. ++ * ++ * For example "PROC (REF STRUCT (REF SELF, UNION (INT, VOID))) REF SELF" ++ * for a procedure yielding a pointer to an object of its own mode. ++ */ ++ ++static void moid_to_string_2 (char *, MOID_T *, size_t *, NODE_T *, ++ bool indicant_value); ++ ++/* Add string to MOID text. */ ++ ++static void ++add_to_moid_text (char *dst, const char *str, size_t *w) ++{ ++ a68_bufcat (dst, str, BUFFER_SIZE); ++ (*w) -= strlen (str); ++} ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++static TAG_T * ++find_indicant_global (TABLE_T * table, MOID_T * mode) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (MOID (s) == mode) ++ return s; ++ } ++ return find_indicant_global (PREVIOUS (table), mode); ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Pack to string. */ ++ ++static void ++pack_to_string (char *b, PACK_T *p, size_t *w, bool text, NODE_T *idf, ++ bool indicant_value) ++{ ++ for (; p != NO_PACK; FORWARD (p)) ++ { ++ moid_to_string_2 (b, MOID (p), w, idf, indicant_value); ++ if (text) ++ { ++ if (TEXT (p) != NO_TEXT) ++ { ++ add_to_moid_text (b, " ", w); ++ add_to_moid_text (b, TEXT (p), w); ++ } ++ } ++ if (p != NO_PACK && NEXT (p) != NO_PACK) ++ add_to_moid_text (b, ", ", w); ++ } ++} ++ ++/* Moid to string 2. */ ++ ++static void moid_to_string_2 (char *b, MOID_T *n, size_t *w, NODE_T *idf, ++ bool indicant_value) ++{ ++ bool supper_stropping = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ const char *strop_self = supper_stropping ? "self" : "SELF"; ++ const char *strop_hip = supper_stropping ? "hip" : "HIP"; ++ const char *strop_compl = supper_stropping ? "compl" : "COMPL"; ++ const char *strop_long_compl = supper_stropping ? "long compl" : "LONG COMPL"; ++ const char *strop_long_long_compl = supper_stropping ? "long long compl" : "LONG LONG COMPL"; ++ const char *strop_string = supper_stropping ? "string" : "STRING"; ++ const char *strop_collitem = supper_stropping ? "collitem" : "COLLITEM"; ++ const char *strop_simplin = supper_stropping ? "%%" : "%%"; ++ const char *strop_simplout = supper_stropping ? "%%" : "%%"; ++ const char *strop_rows = supper_stropping ? "%%" : "%%"; ++ const char *strop_vacuum = supper_stropping ? "%%" : "%%"; ++ const char *strop_long = supper_stropping ? "long" : "LONG"; ++ const char *strop_short = supper_stropping ? "short" : "SHORT"; ++ const char *strop_ref = supper_stropping ? "ref" : "REF"; ++ const char *strop_flex = supper_stropping ? "flex" : "FLEX"; ++ const char *strop_struct = supper_stropping ? "struct" : "STRUCT"; ++ const char *strop_union = supper_stropping ? "union" : "UNION"; ++ const char *strop_proc = supper_stropping ? "proc" : "PROC"; ++ ++ if (n == NO_MOID) ++ { ++ /* Oops. Should not happen. */ ++ add_to_moid_text (b, "null", w);; ++ return; ++ } ++ ++ /* Reference to self through REF or PROC. */ ++ if (a68_is_postulated (A68 (postulates), n)) ++ { ++ add_to_moid_text (b, strop_self, w); ++ return; ++ } ++ ++ /* If declared by a mode-declaration, present the indicant. */ ++ if (idf != NO_NODE && !IS (n, STANDARD)) ++ { ++ TAG_T *indy = find_indicant_global (TABLE (idf), n); ++ ++ if (indy != NO_TAG) ++ { ++ add_to_moid_text (b, NSYMBOL (NODE (indy)), w); ++ if (!indicant_value) ++ return; ++ else ++ add_to_moid_text (b, " = ", w); ++ } ++ } ++ ++ /* Write the standard modes. */ ++ if (n == M_HIP) ++ add_to_moid_text (b, strop_hip, w); ++ else if (n == M_ERROR) ++ add_to_moid_text (b, "ERROR", w); ++ else if (n == M_UNDEFINED) ++ add_to_moid_text (b, "unresolved mode", w); ++ else if (n == M_C_STRING) ++ add_to_moid_text (b, "C-STRING", w); ++ else if (n == M_COMPLEX) ++ add_to_moid_text (b, strop_compl, w); ++ else if (n == M_LONG_COMPLEX) ++ add_to_moid_text (b, strop_long_compl, w); ++ else if (n == M_LONG_LONG_COMPLEX) ++ add_to_moid_text (b, strop_long_long_compl, w); ++ else if (n == M_STRING) ++ add_to_moid_text (b, strop_string, w); ++ else if (n == M_COLLITEM) ++ add_to_moid_text (b, strop_collitem, w); ++ else if (IS (n, IN_TYPE_MODE)) ++ add_to_moid_text (b, strop_simplin, w); ++ else if (IS (n, OUT_TYPE_MODE)) ++ add_to_moid_text (b, strop_simplout, w); ++ else if (IS (n, ROWS_SYMBOL)) ++ add_to_moid_text (b, strop_rows, w); ++ else if (n == M_VACUUM) ++ add_to_moid_text (b, strop_vacuum, w); ++ else if (IS (n, VOID_SYMBOL) || IS (n, STANDARD) || IS (n, INDICANT)) ++ { ++ if (DIM (n) > 0) ++ { ++ size_t k = DIM (n); ++ ++ if ((*w) >= k * strlen ("LONG ") + strlen (NSYMBOL (NODE (n)))) ++ { ++ while (k--) ++ { ++ add_to_moid_text (b, strop_long, w); ++ add_to_moid_text (b, " ", w); ++ } ++ ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ else ++ add_to_moid_text (b, "..", w); ++ } ++ else if (DIM (n) < 0) ++ { ++ size_t k = -DIM (n); ++ ++ if ((*w) >= k * strlen ("SHORT ") + strlen (NSYMBOL (NODE (n)))) ++ { ++ while (k--) ++ { ++ add_to_moid_text (b, strop_short, w); ++ add_to_moid_text (b, " ", w); ++ } ++ ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ else ++ add_to_moid_text (b, "..", w); ++ } ++ else if (DIM (n) == 0) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); ++ add_to_moid_text (b, strop_symbol, w); ++ } ++ ++ /* Write compxounded modes. */ ++ } ++ else if (IS_REF (n)) ++ { ++ if ((*w) >= strlen ("REF ..")) ++ { ++ add_to_moid_text (b, strop_ref, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_ref, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS_FLEX (n)) ++ { ++ if ((*w) >= strlen ("FLEX ..")) ++ { ++ add_to_moid_text (b, strop_flex, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_flex, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS_ROW (n)) ++ { ++ size_t j = strlen ("[] ..") + (DIM (n) - 1) * strlen (","); ++ ++ if ((*w) >= j) ++ { ++ size_t k = DIM (n) - 1; ++ add_to_moid_text (b, "[", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, "] ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else if (DIM (n) == 1) ++ { ++ add_to_moid_text (b, "[] ..", w); ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, "[", w); ++ while (k--) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, "] ..", w); ++ } ++ } ++ else if (IS_STRUCT (n)) ++ { ++ size_t j = (strlen ("STRUCT ()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_struct, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, true, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, strop_struct, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else if (IS_UNION (n)) ++ { ++ size_t j = (strlen ("UNION ()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_union, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ add_to_moid_text (b, strop_union, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else if (IS (n, PROC_SYMBOL) && DIM (n) == 0) ++ { ++ if ((*w) >= strlen ("PROC ..")) ++ { ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ } ++ else ++ { ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " ..", w); ++ } ++ } ++ else if (IS (n, PROC_SYMBOL) && DIM (n) > 0) ++ { ++ size_t j = (strlen ("PROC () ..") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ POSTULATE_T *save = A68 (postulates); ++ a68_make_postulate (&A68 (postulates), n, NO_MOID); ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " (", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ") ", w); ++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); ++ a68_free_postulate_list (A68 (postulates), save); ++ A68 (postulates) = save; ++ } ++ else ++ { ++ size_t k = DIM (n); ++ ++ add_to_moid_text (b, strop_proc, w); ++ add_to_moid_text (b, " (", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ") ..", w); ++ } ++ } ++ else if (IS (n, SERIES_MODE) || IS (n, STOWED_MODE)) ++ { ++ size_t j = (strlen ("()") + (DIM (n) - 1) ++ * strlen (".., ") + strlen ("..")); ++ ++ if ((*w) >= j) ++ { ++ add_to_moid_text (b, "(", w); ++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); ++ add_to_moid_text (b, ")", w); ++ } ++ else ++ { ++ size_t k = DIM (n); ++ ++ add_to_moid_text (b, "(", w); ++ while (k-- > 0) ++ add_to_moid_text (b, ",", w); ++ add_to_moid_text (b, ")", w); ++ } ++ } ++ else ++ { ++ char str[SMALL_BUFFER_SIZE]; ++ if (snprintf (str, (size_t) SMALL_BUFFER_SIZE, "\\%d", ATTRIBUTE (n)) < 0) ++ gcc_unreachable (); ++ add_to_moid_text (b, str, w); ++ } ++} ++ ++/* Pretty-formatted mode N; W is a measure of width. */ ++ ++const char * ++a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, bool indicant_value) ++{ ++#define MAX_MTS 8 ++ /* We use a static buffer of MAX_MTS strings. This value 8 should be safe. ++ No more than MAX_MTS calls can be pending in for instance printf. Instead ++ we could allocate each string on the heap but that leaks memory. */ ++ static int mts_buff_ptr = 0; ++ static char mts_buff[8][BUFFER_SIZE]; ++ char *a = &(mts_buff[mts_buff_ptr][0]); ++ mts_buff_ptr++; ++ if (mts_buff_ptr >= MAX_MTS) ++ mts_buff_ptr = 0; ++ a[0] = '\0'; ++ if (w >= BUFFER_SIZE) ++ w = BUFFER_SIZE - 1; ++ A68 (postulates) = NO_POSTULATE; ++ if (n != NO_MOID) ++ moid_to_string_2 (a, n, &w, idf, indicant_value); ++ else ++ a68_bufcat (a, "null", BUFFER_SIZE); ++ return a; ++#undef MAX_MTS ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-attrs.def +@@ -0,0 +1,387 @@ ++/* This file contains the definitions and documentation for all the different ++ kind/attributes of Algol 68 parse tree nodes. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++/* Please keep the entries in this file sorted alphabetically. */ ++ ++/* Note that the textual descriptions for the nodes are used in diagnostic ++ messages and debug dumps. Please make sure to write them in a way you would ++ expect to be used in statements like "[...] near ATT". */ ++ ++A68_ATTR(A68_PATTERN, "transput pattern") ++A68_ATTR(ACCESS_CLAUSE, "access clause") ++A68_ATTR(ACCESS_SYMBOL, "access-symbol") ++A68_ATTR(ACTUAL_DECLARER_MARK, "actual declarer mark") ++A68_ATTR(ALT_ACCESS_SYMBOL, "alt-access-symbol") ++A68_ATTR(ALT_DO_PART, "alt do part") ++A68_ATTR(ALT_DO_SYMBOL, "alt do symbol") ++A68_ATTR(ALT_EQUALS_SYMBOL, "alt equals symbol") ++A68_ATTR(ALT_FORMAL_BOUNDS_LIST, "alt formal bounds list") ++A68_ATTR(ANDF_SYMBOL, "andf symbol") ++A68_ATTR(AND_FUNCTION, "andf pseudo-operator") ++A68_ATTR(ANONYMOUS, "anonymous") ++A68_ATTR(ARGUMENT, "argument") ++A68_ATTR(ARGUMENT_LIST, "argument list") ++A68_ATTR(ASSERTION, "assertion") ++A68_ATTR(ASSERT_SYMBOL, "assert symbol") ++A68_ATTR(ASSIGNATION, "assignation") ++A68_ATTR(ASSIGN_SYMBOL, "assignation symbol") ++A68_ATTR(ASSIGN_TO_SYMBOL, "assign-to symbol") ++A68_ATTR(AT_SYMBOL, "at symbol") ++A68_ATTR(BEGIN_SYMBOL, "begin symbol") ++A68_ATTR(BITS_C_PATTERN, "bits-c-pattern") ++A68_ATTR(BITS_DENOTATION, "bits-denotation") ++A68_ATTR(BITS_PATTERN, "bits pattern") ++A68_ATTR(BITS_SYMBOL, "bits-symbol") ++A68_ATTR(BOLD_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(BOLD_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") ++A68_ATTR(BOLD_COMMENT_END_SYMBOL, "comment closing delimiter") ++A68_ATTR(BOLD_PRAGMAT_SYMBOL, "pragmat-symbol") ++A68_ATTR(BOLD_TAG, "bold tag") ++A68_ATTR(BOOLEAN_PATTERN, "boolean pattern") ++A68_ATTR(BOOL_SYMBOL, "bool-symbol") ++A68_ATTR(BOUND, "actual declarer bound") ++A68_ATTR(BOUNDS, "actual declarer bounds") ++A68_ATTR(BOUNDS_LIST, "actual declarer bounds list") ++A68_ATTR(BRIEF_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") ++A68_ATTR(BRIEF_COMMENT_END_SYMBOL, "comment closing delimiter") ++A68_ATTR(BRIEF_OUSE_PART, "ouse-part") ++A68_ATTR(BRIEF_CONFORMITY_OUSE_PART, "ouse-part") ++A68_ATTR(BRIEF_ELIF_PART, "elif-part") ++A68_ATTR(BRIEF_OPERATOR_DECLARATION, "operator declaration") ++A68_ATTR(BUS_SYMBOL, "bus-symbol") ++A68_ATTR(BYTES_SYMBOL, "bytes-symbol") ++A68_ATTR(BY_PART, "by-part") ++A68_ATTR(BY_SYMBOL, "by-symbol") ++A68_ATTR(CALL, "call") ++A68_ATTR(CASE_CHOICE_CLAUSE, "case choice clause") ++A68_ATTR(CASE_CLAUSE, "case clause") ++A68_ATTR(CASE_IN_PART, "case-in-part") ++A68_ATTR(CASE_OUSE_PART, "case-ouse-part") ++A68_ATTR(CASE_PART, "case-part") ++A68_ATTR(CASE_SYMBOL, "case-symbol") ++A68_ATTR(CAST, "cast") ++A68_ATTR(CHANNEL_SYMBOL, "channel-symbol") ++A68_ATTR(CHAR_C_PATTERN, "char C-like pattern") ++A68_ATTR(CHAR_SYMBOL, "char-symbol") ++A68_ATTR(CHOICE, "choice") ++A68_ATTR(CHOICE_PATTERN, "choice pattern") ++A68_ATTR(CLOSED_CLAUSE, "closed clause") ++A68_ATTR(CLOSE_SYMBOL, "close symbol") ++A68_ATTR(COLLATERAL_CLAUSE, "collateral clause") ++A68_ATTR(COLLECTION, "collection") ++A68_ATTR(COLON_SYMBOL, "colon-symbol") ++A68_ATTR(COMMA_SYMBOL, "comma-symbol") ++A68_ATTR(COMPLEX_PATTERN, "complex pattern") ++A68_ATTR(COMPLEX_SYMBOL, "complex-symbol") ++A68_ATTR(COMPL_SYMBOL, "compl-symbol") ++A68_ATTR(CONDITIONAL_CLAUSE, "conditional clause") ++A68_ATTR(CONFORMITY_CHOICE, "conformity clause choice") ++A68_ATTR(CONFORMITY_CLAUSE, "conformity clause") ++A68_ATTR(CONFORMITY_IN_PART, "conformity clause in-part") ++A68_ATTR(CONFORMITY_OUSE_PART, "conformity clause ouse-part") ++A68_ATTR(CONSTRUCT, "construct") ++A68_ATTR(DECLARATION_LIST, "list of declarations") ++A68_ATTR(DECLARER, "declarer") ++A68_ATTR(DEF_PART, "def-part") ++A68_ATTR(DEF_SYMBOL, "def-symbol") ++A68_ATTR(DEFINING_IDENTIFIER, "defining identifier") ++A68_ATTR(DEFINING_INDICANT, "defining mode") ++A68_ATTR(DEFINING_OPERATOR, "defining operator") ++A68_ATTR(DEFINING_MODULE_INDICANT, "defining module indicant") ++A68_ATTR(DENOTATION, "denotation") ++A68_ATTR(DEPROCEDURING, "deproceduring coercion") ++A68_ATTR(DEREFERENCING, "dereferencing coercion") ++A68_ATTR(DO_PART, "do-part") ++A68_ATTR(DO_SYMBOL, "do-symbol") ++A68_ATTR(DYNAMIC_REPLICATOR, "format dynamic replicator") ++A68_ATTR(EGG_SYMBOL, "egg-symbol") ++A68_ATTR(ELIF_IF_PART, "elif if-part") ++A68_ATTR(ELIF_PART, "elif-part") ++A68_ATTR(ELIF_SYMBOL, "elif-symbol") ++A68_ATTR(ELSE_BAR_SYMBOL, "else-bar-symbol") ++A68_ATTR(ELSE_OPEN_PART, "else-open-part") ++A68_ATTR(ELSE_PART, "else-part") ++A68_ATTR(ELSE_SYMBOL, "else-symbol") ++A68_ATTR(EMPTY_SYMBOL, "empty-symbol") ++A68_ATTR(ENCLOSED_CLAUSE, "enclosed clause") ++A68_ATTR(END_SYMBOL, "end-symbol") ++A68_ATTR(ENQUIRY_CLAUSE, "enquiry clause") ++A68_ATTR(EQUALS_SYMBOL, "equals-symbol") ++A68_ATTR(ERROR, "error node") ++A68_ATTR(ERROR_IDENTIFIER, "error-identifier") ++A68_ATTR(ESAC_SYMBOL, "esac-symbol") ++A68_ATTR(EXIT_SYMBOL, "exit-symbol") ++A68_ATTR(EXPONENT_FRAME, "exponent-frame") ++A68_ATTR(FALSE_SYMBOL, "false-symbol") ++A68_ATTR(FED_SYMBOL, "fed-symbol") ++A68_ATTR(FIELD, "struct field") ++A68_ATTR(FIELD_IDENTIFIER, "field-identifier") ++A68_ATTR(FILE_SYMBOL, "file-symbol") ++A68_ATTR(FIRM, "firm context") ++A68_ATTR(FIXED_C_PATTERN, "fixed-c-pattern") ++A68_ATTR(FI_SYMBOL, "fi-symbol") ++A68_ATTR(FLEX_SYMBOL, "flex-symbol") ++A68_ATTR(FLOAT_C_PATTERN, "float C format pattern") ++A68_ATTR(FORMAL_BOUNDS, "formal declarer bounds") ++A68_ATTR(FORMAL_BOUNDS_LIST, "list of formal declarer bounds") ++A68_ATTR(FORMAL_DECLARERS, "formal declarers") ++A68_ATTR(FORMAL_DECLARERS_LIST, "list of formal declarers") ++A68_ATTR(FORMAL_DECLARER_MARK, "formal declarer mark") ++A68_ATTR(FORMAL_NEST_SYMBOL, "formal-nest-symbol") ++A68_ATTR(FORMULA, "formula") ++A68_ATTR(FOR_PART, "for-part") ++A68_ATTR(FOR_SYMBOL, "for-symbol") ++A68_ATTR(FORMAT_CLOSE_SYMBOL, "format-close-symbol") ++A68_ATTR(FORMAT_DELIMITER_SYMBOL, "format-delimiter-symbol") ++A68_ATTR(FORMAT_IDENTIFIER, "format identifier") ++A68_ATTR(FORMAT_A_FRAME, "format A-frame") ++A68_ATTR(FORMAT_D_FRAME, "format D-frame") ++A68_ATTR(FORMAT_E_FRAME, "format E-frame") ++A68_ATTR(FORMAT_I_FRAME, "format I-frame") ++A68_ATTR(FORMAT_ITEM_A, "format item-A") ++A68_ATTR(FORMAT_ITEM_B, "format item-B") ++A68_ATTR(FORMAT_ITEM_C, "format item-C") ++A68_ATTR(FORMAT_ITEM_D, "format item-D") ++A68_ATTR(FORMAT_ITEM_E, "format item-E") ++A68_ATTR(FORMAT_ITEM_F, "format item-F") ++A68_ATTR(FORMAT_ITEM_G, "format item-G") ++A68_ATTR(FORMAT_ITEM_H, "format item-H") ++A68_ATTR(FORMAT_ITEM_I, "format item-I") ++A68_ATTR(FORMAT_ITEM_J, "format item-J") ++A68_ATTR(FORMAT_ITEM_K, "format item-K") ++A68_ATTR(FORMAT_ITEM_L, "format item-L") ++A68_ATTR(FORMAT_ITEM_M, "format item-M") ++A68_ATTR(FORMAT_ITEM_N, "format item-N") ++A68_ATTR(FORMAT_ITEM_O, "format item-O") ++A68_ATTR(FORMAT_ITEM_P, "format item-P") ++A68_ATTR(FORMAT_ITEM_Q, "format item-Q") ++A68_ATTR(FORMAT_ITEM_R, "format item-R") ++A68_ATTR(FORMAT_ITEM_S, "format item-S") ++A68_ATTR(FORMAT_ITEM_T, "format item-T") ++A68_ATTR(FORMAT_ITEM_U, "format item-U") ++A68_ATTR(FORMAT_ITEM_V, "format item-V") ++A68_ATTR(FORMAT_ITEM_W, "format item-W") ++A68_ATTR(FORMAT_ITEM_X, "format item-X") ++A68_ATTR(FORMAT_ITEM_Y, "format item-Y") ++A68_ATTR(FORMAT_ITEM_Z, "format item-Z") ++A68_ATTR(FORMAT_ITEM_ESCAPE, "format item escape") ++A68_ATTR(FORMAT_ITEM_MINUS, "format item -") ++A68_ATTR(FORMAT_ITEM_PLUS, "format item +") ++A68_ATTR(FORMAT_ITEM_POINT, "format item .") ++A68_ATTR(FORMAT_OPEN_SYMBOL, "format-open-symbol") ++A68_ATTR(FORMAT_PATTERN, "format pattern") ++A68_ATTR(FORMAT_POINT_FRAME, "format point frame") ++A68_ATTR(FORMAT_SYMBOL, "format-symbol") ++A68_ATTR(FORMAT_TEXT, "format text") ++A68_ATTR(FORMAT_Z_FRAME, "format Z frame") ++A68_ATTR(FROM_PART, "from-part") ++A68_ATTR(FROM_SYMBOL, "from-symbol") ++A68_ATTR(GENERAL_C_PATTERN, "general C-like pattern") ++A68_ATTR(GENERAL_PATTERN, "general pattern") ++A68_ATTR(GENERATOR, "generator") ++A68_ATTR(GENERIC_ARGUMENT, "generic argument") ++A68_ATTR(GENERIC_ARGUMENT_LIST, "generic argument list") ++A68_ATTR(GOTO_SYMBOL, "goto-symbol") ++A68_ATTR(GO_SYMBOL, "go-symbol") ++A68_ATTR(GUARDED_CONDITIONAL_CLAUSE, "guarded conditional clause") ++A68_ATTR(GUARDED_LOOP_CLAUSE, "guarded loop clause") ++A68_ATTR(HEAP_SYMBOL, "heap-symbol") ++A68_ATTR(IDENTIFIER, "identifier") ++A68_ATTR(IDENTIFIER_WITH_UNDERSCORES, "identifier with underscores") ++A68_ATTR(IDENTITY_DECLARATION, "identity declaration") ++A68_ATTR(IDENTITY_RELATION, "identity relation") ++A68_ATTR(IF_PART, "if-part") ++A68_ATTR(IF_SYMBOL, "if-symbol") ++A68_ATTR(INDICANT, "indicant") ++A68_ATTR(INITIALISER_SERIES, "initialiser series") ++A68_ATTR(INSERTION, "insertion") ++A68_ATTR(INTEGRAL_C_PATTERN, "integral C-like pattern") ++A68_ATTR(INTEGRAL_MOULD, "integral mould") ++A68_ATTR(INTEGRAL_PATTERN, "integral pattern") ++A68_ATTR(INT_DENOTATION, "integral denotation") ++A68_ATTR(INT_SYMBOL, "int-symbol") ++A68_ATTR(IN_SYMBOL, "in-symbol") ++A68_ATTR(IN_TYPE_MODE, "in type mode") ++A68_ATTR(ISNT_SYMBOL, "isnt-symbol") ++A68_ATTR(IS_SYMBOL, "is-symbol") ++A68_ATTR(JUMP, "jump") ++A68_ATTR(KEYWORD, "keyword") ++A68_ATTR(LABEL, "label") ++A68_ATTR(LABELED_UNIT, "labeled unit") ++A68_ATTR(LABEL_IDENTIFIER, "label identifier") ++A68_ATTR(LABEL_SEQUENCE, "label sequence") ++A68_ATTR(LITERAL, "literal") ++A68_ATTR(LOCAL_LABEL, "local label") ++A68_ATTR(LOC_SYMBOL, "loc-symbol") ++A68_ATTR(LONGETY, "longsety") ++A68_ATTR(LONG_SYMBOL, "long-symbol") ++A68_ATTR(LOOP_CLAUSE, "loop clause") ++A68_ATTR(LOOP_IDENTIFIER, "loop identifier") ++A68_ATTR(MAIN_SYMBOL, "main-symbol") ++A68_ATTR(MEEK, "meek context") ++A68_ATTR(MODE_BITS, "mode bits") ++A68_ATTR(MODE_BOOL, "mode bool") ++A68_ATTR(MODE_BYTES, "mode bytes") ++A68_ATTR(MODE_CHAR, "mode char") ++A68_ATTR(MODE_COMPLEX, "mode complex") ++A68_ATTR(MODE_DECLARATION, "mode declaration") ++A68_ATTR(MODE_FILE, "mode file") ++A68_ATTR(MODE_FORMAT, "mode format") ++A68_ATTR(A68_MODE_INT, "mode int") ++A68_ATTR(MODE_LONG_LONG_BITS, "mode long long bits") ++A68_ATTR(MODE_LONG_LONG_COMPLEX, "mode long long complex") ++A68_ATTR(MODE_LONG_LONG_INT, "mode long long int") ++A68_ATTR(MODE_LONG_LONG_REAL, "mode long long real") ++A68_ATTR(MODE_LONG_BITS, "mode long bits") ++A68_ATTR(MODE_LONG_BYTES, "mode long bytes") ++A68_ATTR(MODE_LONG_COMPLEX, "mode long complex") ++A68_ATTR(MODE_LONG_INT, "mode long int") ++A68_ATTR(MODE_LONG_REAL, "mode long real") ++A68_ATTR(MODE_NO_CHECK, "mode no check") ++A68_ATTR(MODE_REAL, "mode real") ++A68_ATTR(MODE_SYMBOL, "mode-symbol") ++A68_ATTR(MODULE_INDICANT, "module indicant") ++A68_ATTR(MODULE_DECLARATION, "module-declaration") ++A68_ATTR(MODULE_SYMBOL, "module-symbol") ++A68_ATTR(MODULE_TEXT, "module text") ++A68_ATTR(MONADIC_FORMULA, "monadic formula") ++A68_ATTR(MONAD_SEQUENCE, "monad sequence") ++A68_ATTR(NIHIL, "nihil") ++A68_ATTR(NIL_SYMBOL, "nil-symbol") ++A68_ATTR(NORMAL_IDENTIFIER, "normal identifier") ++A68_ATTR(NO_SORT, "no sort") ++A68_ATTR(OD_SYMBOL, "od-symbol") ++A68_ATTR(OF_SYMBOL, "of-symbol") ++A68_ATTR(OPEN_PART, "open part") ++A68_ATTR(OPEN_SYMBOL, "open-symbol") ++A68_ATTR(OPERATOR, "operator") ++A68_ATTR(OPERATOR_DECLARATION, "operator declaration") ++A68_ATTR(OPERATOR_PLAN, "operator plan") ++A68_ATTR(OP_SYMBOL, "op-symbol") ++A68_ATTR(ORF_SYMBOL, "orf-symbol") ++A68_ATTR(OR_FUNCTION, "orel pseudo-operator") ++A68_ATTR(OUSE_PART, "ouse-part") ++A68_ATTR(OUSE_SYMBOL, "ouse-symbol") ++A68_ATTR(OUT_PART, "out-part") ++A68_ATTR(OUT_SYMBOL, "out-symbol") ++A68_ATTR(OUT_TYPE_MODE, "out type mode") ++A68_ATTR(PACKET, "packet") ++A68_ATTR(PARALLEL_CLAUSE, "parallel clause") ++A68_ATTR(PARAMETER, "parameter") ++A68_ATTR(PARAMETER_IDENTIFIER, "parameter identifier") ++A68_ATTR(PARAMETER_LIST, "parameter list") ++A68_ATTR(PARAMETER_PACK, "parameter pack") ++A68_ATTR(PARTICULAR_PROGRAM, "particular program") ++A68_ATTR(PAR_SYMBOL, "par-symbol") ++A68_ATTR(PICTURE, "format picture") ++A68_ATTR(PICTURE_LIST, "format picture list") ++A68_ATTR(PIPE_SYMBOL, "pipe-symbol") ++A68_ATTR(POINT_SYMBOL, "point-symbol") ++A68_ATTR(POSTLUDE_PART, "postlude-part") ++A68_ATTR(POSTLUDE_SYMBOL, "postlude-symbol") ++A68_ATTR(PRELUDE_PACKET, "prelude-packet") ++A68_ATTR(PRIMARY, "primary") ++A68_ATTR(PRIORITY, "operator priority") ++A68_ATTR(PRIORITY_DECLARATION, "operator priority declaration") ++A68_ATTR(PRIO_SYMBOL, "prio-symbol") ++A68_ATTR(PROCEDURE_DECLARATION, "procedure declaration") ++A68_ATTR(PROCEDURE_VARIABLE_DECLARATION, "procedure variable declaration") ++A68_ATTR(PROCEDURING, "proceduring coercion") ++A68_ATTR(PROC_SYMBOL, "proc-symbol") ++A68_ATTR(PUBLIC_SYMBOL, "public-symbol") ++A68_ATTR(QUALIFIER, "qualifier") ++A68_ATTR(RADIX_FRAME, "radix frame") ++A68_ATTR(REAL_DENOTATION, "real denotation") ++A68_ATTR(REAL_PATTERN, "real pattern") ++A68_ATTR(REAL_SYMBOL, "real-symbol") ++A68_ATTR(REF_SYMBOL, "ref-symbol") ++A68_ATTR(REPLICATOR, "format replicator") ++A68_ATTR(REVELATION, "revelation") ++A68_ATTR(REVELATION_PART, "revelation-part") ++A68_ATTR(ROUTINE_TEXT, "routine text") ++A68_ATTR(ROUTINE_UNIT, "routine unit") ++A68_ATTR(ROWING, "rowing coercion") ++A68_ATTR(ROWS_SYMBOL, "rows-symbol") ++A68_ATTR(ROW_CHAR_DENOTATION, "row of chars denotation") ++A68_ATTR(ROW_SYMBOL, "row-symbol") ++A68_ATTR(SECONDARY, "secondary") ++A68_ATTR(SELECTION, "selection") ++A68_ATTR(SELECTOR, "selector") ++A68_ATTR(SEMA_SYMBOL, "sema-symbol") ++A68_ATTR(SEMI_SYMBOL, "semi-symbol") ++A68_ATTR(SERIAL_CLAUSE, "serial clause") ++A68_ATTR(SERIES_MODE, "series mode") ++A68_ATTR(SHORTETY, "shortsety") ++A68_ATTR(SHORT_SYMBOL, "short-symbol") ++A68_ATTR(SIGN_MOULD, "sign mould") ++A68_ATTR(SKIP, "skip unit") ++A68_ATTR(SKIP_SYMBOL, "skip-symbol") ++A68_ATTR(SLICE, "slice") ++A68_ATTR(SOFT, "soft context") ++A68_ATTR(SOME_CLAUSE, "some clause") ++A68_ATTR(SPECIFICATION, "specification") ++A68_ATTR(SPECIFIED_UNIT, "specified unit") ++A68_ATTR(SPECIFIED_UNIT_LIST, "specified unit list") ++A68_ATTR(SPECIFIED_UNIT_UNIT, "specified unit unit") ++A68_ATTR(SPECIFIER, "specifier") ++A68_ATTR(SPECIFIER_IDENTIFIER, "specifier identifier") ++A68_ATTR(STANDARD, "standard") ++A68_ATTR(STATIC_REPLICATOR, "static replicator") ++A68_ATTR(STATIC_SYMBOL, "static-symbol") ++A68_ATTR(STOWED_MODE, "stowed mode") ++A68_ATTR(STRING_C_PATTERN, "string C-like pattern") ++A68_ATTR(STRING_PATTERN, "string pattern") ++A68_ATTR(STRING_SYMBOL, "string-symbol") ++A68_ATTR(STRONG, "strong context") ++A68_ATTR(STRUCTURED_FIELD, "structured field") ++A68_ATTR(STRUCTURED_FIELD_LIST, "structured field list") ++A68_ATTR(STRUCTURE_PACK, "structure pack") ++A68_ATTR(STRUCT_SYMBOL, "struct-symbol") ++A68_ATTR(STYLE_II_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(STYLE_I_COMMENT_SYMBOL, "comment delimiter") ++A68_ATTR(STYLE_I_PRAGMAT_SYMBOL, "pragmat-symbol") ++A68_ATTR(SUB_SYMBOL, "sub-symbol") ++A68_ATTR(SUB_UNIT, "sub unit") ++A68_ATTR(TERTIARY, "tertiary") ++A68_ATTR(THEN_BAR_SYMBOL, "then-bar-symbol") ++A68_ATTR(THEN_PART, "then-part") ++A68_ATTR(THEN_SYMBOL, "then-symbol") ++A68_ATTR(TO_PART, "to-part") ++A68_ATTR(TO_SYMBOL, "to-symbol") ++A68_ATTR(TRIMMER, "trimmer") ++A68_ATTR(TRUE_SYMBOL, "true-symbol") ++A68_ATTR(UNION_DECLARER_LIST, "union declarer list") ++A68_ATTR(UNION_PACK, "union pack") ++A68_ATTR(UNION_SYMBOL, "union-symbol") ++A68_ATTR(UNIT, "unit") ++A68_ATTR(UNITING, "uniting coercion") ++A68_ATTR(UNIT_LIST, "unit list") ++A68_ATTR(UNIT_SERIES, "unit series") ++A68_ATTR(VARIABLE_DECLARATION, "variable declaration") ++A68_ATTR(VIRTUAL_DECLARER_MARK, "virtual declarer mark") ++A68_ATTR(VOIDING, "voiding coercion") ++A68_ATTR(VOID_SYMBOL, "void-symbol") ++A68_ATTR(WEAK, "weak context") ++A68_ATTR(WHILE_PART, "while-part") ++A68_ATTR(WHILE_SYMBOL, "while-symbol") ++A68_ATTR(WIDENING, "widening coercion") ++A68_ATTR(WILDCARD, "wildcard") ++ ++/* ++Local variables: ++mode:c ++End: ++*/ +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-bottom-up.cc +@@ -0,0 +1,3026 @@ ++/* Hand-coded bottom-up parser for Algol 68. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This is a Mailloux-type parser, in the sense that it scans a "phrase" for ++ definitions needed for parsing, and therefore allows for tags to be used ++ before they are defined, which gives some freedom in top-down programming. ++ ++ B. J. Mailloux. On the implementation of Algol 68. ++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. ++ ++ Technically, Mailloux's approach renders the two-level grammar LALR. This ++ is the bottom-up parser that resolves the structure of the program. */ ++ ++/* *** Thou who adventure here, please read this *** ++ ++ On parse trees, phrases and branches ++ ------------------------------------ ++ ++ The Algol 68 parser operates on parse trees in which sibling nodes are ++ linked together in "phrases" via NEXT and PREVIOUS pointers, and sub-trees ++ or "branches" start at SUB pointers. For example, in the parse tree ++ ++ a ++ | ++ b - c - d - e ++ | ++ f - g - h - i ++ | ++ j ++ ++ 'a' is the root of the tree. ++ 'a', 'b - c - d - e', 'f - g - h -i' and 'j' are phrases. ++ 'a', 'c' and 'i' introduce branches to sub trees via their SUB pointer. ++ ++ From the scanner to the bottom-up parser ++ ---------------------------------------- ++ ++ The lexical analyzer transforms the textual input programs into a single ++ phrase with all the tokens. For example, the program text ++ ++ begin if A then B fi; ++ C ++ end; ++ D ++ ++ will be turned by the lexical analyzer into the following parse tree, which ++ in fact is a list conforming a single phrase: ++ ++ begin - if - A - then - B - fi - semi - C - end - semi - D ++ ++ This parse tree is then handed over to the top-down parser, which provides ++ some initial structure and turns the single phrase into an actual tree: ++ ++ begin - semi - D ++ | ++ begin - if - then - fi - end - semi - C - end ++ | | ++ | then - B ++ if - A ++ ++ Note how branches have been created for the closed clause and for the ++ different parts of the conditional clause. The same would have happened for ++ loop parts and case parts as well, but it is important to note that the role ++ of the top-down parser doesn't handle the conditional, loop or case clauses ++ themselves: it just branches the parts of these clauses that introduce ++ ranges. Taking care of structuring the clauses is precisely the main role of ++ the bottom-up parser. ++ ++ The bottom-up parser ++ -------------------- ++ ++ The bottom-up parser is given a parse tree like the one above, partially ++ structured in phrases by the top-down parser. The bottom-up parser then ++ proceeds from the root-node using two basic operations: ++ ++ - reduce a phrase, implemented by 'reduce'. ++ - reduce a sub-phrase starting at a branch, implemented by 'reduce_branch'. ++*/ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Bottom-up parser, reduces all constructs. */ ++ ++ ++/* Maximum number of errors the bottom-up parser will try to recover from and ++ save diagnostics for. */ ++ ++#define MAX_ERRORS 5 ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static void reduce_branch (NODE_T *q, a68_attribute expect); ++static void recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress); ++static void reduce_declarers (NODE_T *p, enum a68_attribute expect); ++static void reduce_primary_parts (NODE_T *p, enum a68_attribute expect); ++static void reduce_primaries (NODE_T *p, enum a68_attribute expect); ++static void reduce_format_texts (NODE_T *p); ++static void reduce_secondaries (NODE_T *p); ++static void reduce_formulae (NODE_T * p); ++static void reduce_tertiaries (NODE_T *p); ++static void reduce_right_to_left_constructs (NODE_T *p); ++static void reduce_units (NODE_T * p); ++static void reduce_erroneous_units (NODE_T *p); ++static void reduce_generic_arguments (NODE_T *p); ++static void reduce_bounds (NODE_T *p); ++static void reduce_serial_clauses (NODE_T *p); ++static void reduce_enquiry_clauses (NODE_T *p); ++static void reduce_collateral_clauses (NODE_T *p); ++static void reduce_arguments (NODE_T *p); ++static void reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect); ++static void reduce_basic_declarations (NODE_T *p); ++static void reduce_declaration_lists (NODE_T *p); ++static void reduce_module_texts (NODE_T *p); ++static void reduce_module_text_parts (NODE_T *p); ++static NODE_T *reduce_dyadic (NODE_T *p, int u); ++ ++/* Whether a series is serial or collateral. */ ++ ++static enum a68_attribute ++serial_or_collateral (NODE_T *p) ++{ ++ int semis = 0, commas = 0, exits = 0; ++ for (NODE_T *q = p; q != NO_NODE; q = NEXT (q)) ++ { ++ if (IS (q, COMMA_SYMBOL)) ++ commas++; ++ else if (IS (q, SEMI_SYMBOL)) ++ semis++; ++ else if (IS (q, EXIT_SYMBOL)) ++ exits++; ++ } ++ ++ if (semis == 0 && exits == 0 && commas > 0) ++ return COLLATERAL_CLAUSE; ++ else if ((semis > 0 || exits > 0) && commas == 0) ++ return SERIAL_CLAUSE; ++ else if (semis == 0 && exits == 0 && commas == 0) ++ return SERIAL_CLAUSE; ++ else ++ /* Heuristic guess to give intelligible error message. */ ++ return (semis + exits >= commas) ? SERIAL_CLAUSE : COLLATERAL_CLAUSE; ++} ++ ++/* Insert a node with attribute "a" after "p". */ ++ ++static void ++pad_node (NODE_T *p, enum a68_attribute a) ++{ ++ /* This is used to fill information that Algol 68 does not require to be ++ present. Filling in gives one format for such construct; this helps later ++ passes. */ ++ NODE_T *z = a68_new_node (); ++ *z = *p; ++ if (GINFO (p) != NO_GINFO) ++ GINFO (z) = a68_new_genie_info (); ++ PREVIOUS (z) = p; ++ SUB (z) = NO_NODE; ++ ATTRIBUTE (z) = a; ++ MOID (z) = NO_MOID; ++ if (NEXT (z) != NO_NODE) ++ PREVIOUS (NEXT (z)) = z; ++ NEXT (p) = z; ++} ++ ++/* Diagnose extensions. */ ++ ++static void ++a68_extension (NODE_T *p) ++{ ++ a68_warning (p, OPT_Wextensions, "ast node is an extension"); ++} ++ ++/* Diagnose for clauses not yielding a value. */ ++ ++static void ++empty_clause (NODE_T *p) ++{ ++ a68_error (p, "clause does not yield a value"); ++} ++ ++/* Diagnose for missing symbol. */ ++ ++static void ++strange_tokens (NODE_T *p) ++{ ++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); ++ a68_error (q, "possibly a missing or erroneous symbol nearby"); ++} ++ ++/* Diagnose for strange separator. */ ++ ++static void ++strange_separator (NODE_T *p) ++{ ++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); ++ a68_error (q, "possibly a missing or erroneous separator nearby"); ++} ++ ++/* If match then reduce a sentence, the core bottom-up parser routine. The ++ reduction of a sequence of nodes stating at P: ++ ++ P - A - B - C - D - E - F ++ ++ where the attributes passed to this function are Z P A B C, the result of ++ the reduction is: ++ ++ Z - D - E - F ++ | ++ P - A - B - C ++ ++ Note how the node pointed by P gets changed after a reduction gets ++ performed. ++ ++ P is the AST node from where start matching. ++ ++ ATTRS is a sequence of node attributes. The first of these attributes is ++ the kind of node resulting from the reduction. The rest of attributes are ++ the matched in order starting at P, then a reduction is performed. Two node ++ attributes exist that convey special meaning when passing to "reduce": ++ ++ STOP marks the end of the variable-length sequence of attributes to match. ++ ++ WILDCARD will match any non terminal, with the exception of a keyword. It ++ is used to recover from errors. ++ ++ A is a "noting" function that is invoked and passed P right before doing the ++ reduction. If A is NO_NOTE then it is not used. ++ ++ The boolean Z is set to "true" if the reduction has been performed, and is ++ left untouched otherwise. If Z is NO_TICK then it is not used. ++ ++ It is common to invoke "reduce" in a row in order to try the reduction of ++ several alternatives, which are mutually exclusive. For example: ++ ++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); ++ ++ We know that at much only one of these reductions will succeed, becuase if ++ the first reduction succeeds, then P gets changed to LABEL which cannot ++ match ENCLOSED_CLAUSE. ++ ++ Sometimes, however, "reduce" is invoked in a row in a way the second ++ reduction is intended to succeed if the first one succeeds. For example: ++ ++ reduce (p, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ ++ In this case if the first reduction succeeds, then the resulting ++ PARALLEL_CLAUSE will be itself reduced to an ENCLOSED_CLAUSE. ++ ++ Another typical usage of "reduce" is to put it in a loop in order to reduce ++ matches of a left-recursive rule. This is where Z comes to play. For ++ example, consider the rules: ++ ++ label : defining identifier, colon symbol ; ++ label, defining identifier, colon symbol. ++ ++ The second alternative is left-recursive, and along with the first rule ++ defines a sequence of one or more labels, each label consisting on a ++ defining identifier followed by a colon symbol. We could match these rules ++ using the following loop: ++ ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ ++ Note how, when presented with a sequence of labels like `l1: l2: l3: ...', ++ the first call to "reduce" will succeed, turning Q into a LABEL. Then the ++ second call to "reduce" will also succed, reducing to another LABEL and ++ setting SIGA to "true". In subsequent iterations of the loop the first call ++ will always fail, and the second call will keep succeeding as more sequences ++ of DEFINING_IDENTIFIER, COLON_SYMBOL get matched. */ ++ ++static void ++reduce (NODE_T *p, void (*a) (NODE_T *), bool *z, /* attrs */...) ++{ ++ va_list list; ++ va_start (list, z); ++ enum a68_attribute expect; ++ enum a68_attribute result = (enum a68_attribute) va_arg (list, int); ++ NODE_T *head = p, *tail = NO_NODE; ++ ++ while ((expect = (enum a68_attribute) va_arg (list, int)) != STOP) ++ { ++ bool keep_matching; ++ ++ if (p == NO_NODE) ++ keep_matching = false; ++ else if (expect == WILDCARD) ++ /* WILDCARD matches any non terminal, but no keyword. */ ++ keep_matching = (a68_attribute_name (ATTRIBUTE (p)) != NO_TEXT); ++ else ++ { ++ if (expect == SKIP) ++ { ++ /* Stray "~" matches expected SKIP. */ ++ if (IS (p, OPERATOR) && IS_LITERALLY (p, "~")) ++ ATTRIBUTE (p) = SKIP; ++ } ++ ++ if (expect >= 0) ++ keep_matching = (expect == ATTRIBUTE (p)); ++ else ++ keep_matching = (expect != ATTRIBUTE (p)); ++ } ++ ++ if (keep_matching) ++ { ++ tail = p; ++ FORWARD (p); ++ } ++ else ++ { ++ va_end (list); ++ return; ++ } ++ } ++ ++ /* Make reduction. */ ++ if (a != NO_NOTE) ++ a (head); ++ ++ a68_make_sub (head, tail, result); ++ va_end (list); ++ if (z != NO_TICK) ++ *z = true; ++} ++ ++/* Graciously ignore extra semicolons. */ ++ ++static void ++ignore_superfluous_semicolons (NODE_T *p) ++{ ++ /* This routine relaxes the parser a bit with respect to superfluous ++ semicolons, for instance "FI; OD". These provoke only a warning. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ ignore_superfluous_semicolons (SUB (p)); ++ ++ if (NEXT (p) != NO_NODE && IS (NEXT (p), SEMI_SYMBOL) && NEXT_NEXT (p) == NO_NODE) ++ { ++ a68_warning (NEXT (p), 0, ++ "skipped superfluous A", ATTRIBUTE (NEXT (p))); ++ NEXT (p) = NO_NODE; ++ } ++ else if (IS (p, SEMI_SYMBOL) && a68_is_semicolon_less (NEXT (p))) ++ { ++ a68_warning (p, 0, ++ "skipped superfluous A", ATTRIBUTE (p)); ++ if (PREVIOUS (p) != NO_NODE) ++ NEXT (PREVIOUS (p)) = NEXT (p); ++ PREVIOUS (NEXT (p)) = PREVIOUS (p); ++ } ++ } ++} ++ ++/* Reduce a particular program. */ ++ ++void ++reduce_particular_program (NODE_T *p) ++{ ++ /* A program is "label sequence; particular program". */ ++ a68_extract_labels (p, SERIAL_CLAUSE); ++ ++ NODE_T *q = p; ++ /* Parse the program itself. */ ++ for (; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ ++ if (SUB (q) != NO_NODE) ++ reduce_branch (q, SOME_CLAUSE); ++ ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ } ++ /* Determine the encompassing enclosed clause. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ } ++ ++ /* Try reducing a particular program. */ ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); ++} ++ ++/* Reduce a prelude packet. */ ++ ++void ++reduce_prelude_packet (NODE_T *p) ++{ ++ /* Extract the module indicants. */ ++ a68_extract_indicants (p); ++ ++ /* Reduce MODULE_TEXTs */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ALT_ACCESS_SYMBOL)) ++ reduce_branch (q, MODULE_TEXT); ++ else if (IS (q, DEF_SYMBOL)) ++ { ++ for (NODE_T *v = q; v != NO_NODE; FORWARD (v)) ++ { ++ if (IS (v, DEF_SYMBOL)) ++ reduce_branch (v, DEF_PART); ++ else if (IS (v, POSTLUDE_SYMBOL)) ++ reduce_branch (v, POSTLUDE_PART); ++ } ++ reduce_module_texts (q); ++ } ++ } ++ ++ /* Single module declaration. */ ++ reduce (p, NO_NOTE, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++ reduce (p, strange_tokens, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); ++ ++ /* Joined module declarations. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ MODULE_DECLARATION, MODULE_DECLARATION, ++ COMMA_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++ } ++ while (siga); ++ } ++ ++ /* Try reducing a prelude packet. */ ++ reduce (p, NO_NOTE, NO_TICK, PRELUDE_PACKET, MODULE_DECLARATION, STOP); ++} ++ ++/* Driver for the bottom-up parser. */ ++ ++void ++a68_bottom_up_parser (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (!setjmp (A68_PARSER (bottom_up_crash_exit))) ++ { ++ NODE_T *q; ++ int error_count_0 = ERROR_COUNT (&A68_JOB); ++ ++ ignore_superfluous_semicolons (p); ++ ++ /* A compilation unit is a packet, which can be either a particular ++ program or a prelude packet. */ ++ if (IS (p, MODULE_SYMBOL)) ++ reduce_prelude_packet (p); ++ else ++ reduce_particular_program (p); ++ ++ /* Try reducing the packet. */ ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PACKET, PARTICULAR_PROGRAM, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PACKET, PRELUDE_PACKET, STOP); ++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) ++ recover_from_error (p, PACKET, ++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); ++ } ++ } ++} ++ ++/* Reduce the sub-phrase that starts one level down. ++ ++ EXPECT is the expected construct for the sub-phrase, and it is used to guide ++ the parsing by determining what reductions to try. This can be SOME_CLAUSE, ++ which means either a serial or a collateral clause. ++ ++ This is a recursive process. Let's suppose we have the parse tree below and ++ we call `reduce_branch (b, EXPECT)': ++ ++ a - b - c - d - e ++ | ++ b - x - y - z ++ | ++ v - w ++ ++ The first thing this function does is to traverse the 'b' branch ++ ++ b - x - y - z ++ ++ looking for declarations of indicants, priorities and operators ++ (a68_extract_{indicants,priorities,operators}). Using this information , it ++ determines the nature of bold tags occuring in the branch, by turning ++ BOLD_TAG nodes into either INDICANT nodes or OPERATOR nodes ++ (a68_elaborate_bold_tags). ++ ++ At this point it is possible to try reduce the declarers within the 'b' ++ subtree, so reduce_declarers is invoked on it. This function is recursive ++ and performs reductions of several kinds: sequences of 'long' and 'short' ++ symbols into sizeties, symbols like 'int' and 'real' into indicants, ++ declarers, declarer lists, etc. ++ ++ Once that is done, the 'p' branch is traversed and reduce_branch is invoked ++ recursively in certain nodes that start a sub-branch: ++ ++ | Recursing in branch | with expect | ++ |--------------------------------------------------+-------------------| ++ | FORMAT_DELIMITER_SYMBOL, FORMAT_OPEN_SYMBOL | FORMAT_TEXT | ++ |--------------------------------------------------+-------------------| ++ | OPEN_SYMBOL, IN_SYMBOL | COLLATERAL_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, OUSE_SYMBOL | ENQUIRY_CLAUSE | ++ | WHILE_SYMBOL, ELSE_BAR_SYMBOL, DEF_SYMBOL | | ++ |--------------------------------------------------+-------------------| ++ | BEGIN_SYMBOL, THEN_BAR_SYMBOL | SOME_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL | SERIAL_CLAUSE | ++ | DO_SYMBOL, ALT_DO_SYMBOL, POSTLUDE_SYMBOL | | ++ |--------------------------------------------------+-------------------| ++ | LOOP_CLAUSE, ACCESS_SYMBOL | ENCLOSED_CLAUSE | ++ |--------------------------------------------------+-------------------| ++ | FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL | UNIT | ++ ++ Once all the sub-branches are reduced, the final step is to finally reduce ++ the 'b' branch, trying different possibilities: basic declarations, units, ++ bounds, declaration lists, clauses, module texts, etc. ++ ++ Note that reducing a branch requires knowing the kind of resulting subtree. ++ So if you find yourself wanting to call reduce_branch and don't know what to ++ pass in EXPECT, you are probably doing something wrong.. very likely you ++ want to make reduce_branch aware of a new sort of branch. */ ++ ++static void ++reduce_branch (NODE_T *q, enum a68_attribute expect) ++{ ++ /* If unsuccessful then the routine will at least copy the resulting ++ attribute as the parser can repair some faults. This gives less spurious ++ diagnostics. */ ++ if (q != NO_NODE && SUB (q) != NO_NODE) ++ { ++ NODE_T *p = SUB (q), *u = NO_NODE; ++ int error_count_0 = ERROR_COUNT (&A68_JOB), error_count_02; ++ bool declarer_pack = false, no_error; ++ ++ switch (expect) ++ { ++ case STRUCTURE_PACK: ++ case PARAMETER_PACK: ++ case FORMAL_DECLARERS: ++ case UNION_PACK: ++ case SPECIFIER: ++ declarer_pack = true; ++ break; ++ default: ++ declarer_pack = false; ++ } ++ ++ /* Sample all info needed to decide whether a bold tag is operator or ++ indicant. Find the meaning of bold tags and quit in case of extra ++ errors. */ ++ a68_extract_indicants (p); ++ if (!declarer_pack) ++ { ++ a68_extract_priorities (p); ++ a68_extract_operators (p); ++ } ++ ++ error_count_02 = ERROR_COUNT (&A68_JOB); ++ a68_elaborate_bold_tags (p); ++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ ++ /* Now we can reduce declarers, knowing which bold tags are indicants. */ ++ reduce_declarers (p, expect); ++ /* Parse the phrase, as appropriate. */ ++ if (declarer_pack == false) ++ { ++ error_count_02 = ERROR_COUNT (&A68_JOB); ++ a68_extract_declarations (p); ++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ a68_extract_labels (p, expect); ++ for (u = p; u != NO_NODE; FORWARD (u)) ++ { ++ if (SUB (u) != NO_NODE) ++ { ++ if (IS (u, FORMAT_DELIMITER_SYMBOL)) ++ reduce_branch (u, FORMAT_TEXT); ++ else if (IS (u, FORMAT_OPEN_SYMBOL)) ++ reduce_branch (u, FORMAT_TEXT); ++ else if (IS (u, OPEN_SYMBOL)) ++ { ++ if (NEXT (u) != NO_NODE && IS (NEXT (u), THEN_BAR_SYMBOL)) ++ reduce_branch (u, ENQUIRY_CLAUSE); ++ else if (PREVIOUS (u) != NO_NODE && IS (PREVIOUS (u), PAR_SYMBOL)) ++ reduce_branch (u, COLLATERAL_CLAUSE); ++ } ++ else if (a68_is_one_of (u, IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, ++ OUSE_SYMBOL, WHILE_SYMBOL, ++ ELSE_BAR_SYMBOL, DEF_PART, STOP)) ++ reduce_branch (u, ENQUIRY_CLAUSE); ++ else if (IS (u, BEGIN_SYMBOL)) ++ reduce_branch (u, SOME_CLAUSE); ++ else if (a68_is_one_of (u, THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL, ++ DO_SYMBOL, ALT_DO_SYMBOL, ++ POSTLUDE_PART, STOP)) ++ reduce_branch (u, SERIAL_CLAUSE); ++ else if (IS (u, IN_SYMBOL)) ++ reduce_branch (u, COLLATERAL_CLAUSE); ++ else if (IS (u, THEN_BAR_SYMBOL)) ++ reduce_branch (u, SOME_CLAUSE); ++ else if (IS (u, ACCESS_SYMBOL)) ++ reduce_branch (u, ENCLOSED_CLAUSE); ++ else if (IS (u, DEF_SYMBOL)) ++ reduce_branch (u, DEF_PART); ++ else if (IS (u, POSTLUDE_SYMBOL)) ++ reduce_branch (u, POSTLUDE_PART); ++ else if (IS (u, LOOP_CLAUSE)) ++ reduce_branch (u, ENCLOSED_CLAUSE); ++ else if (a68_is_one_of (u, FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, ++ STOP)) ++ reduce_branch (u, UNIT); ++ } ++ } ++ ++ reduce_primary_parts (p, expect); ++ if (expect != ENCLOSED_CLAUSE) ++ { ++ reduce_primaries (p, expect); ++ if (expect == FORMAT_TEXT) ++ reduce_format_texts (p); ++ else ++ { ++ reduce_secondaries (p); ++ reduce_formulae (p); ++ reduce_tertiaries (p); ++ } ++ } ++ ++ reduce_right_to_left_constructs (p); ++ /* Reduce units and declarations. */ ++ reduce_basic_declarations (p); ++ reduce_units (p); ++ reduce_erroneous_units (p); ++ if (expect != UNIT) ++ { ++ if (expect == GENERIC_ARGUMENT) ++ reduce_generic_arguments (p); ++ else if (expect == BOUNDS) ++ reduce_bounds (p); ++ else ++ { ++ reduce_declaration_lists (p); ++ if (expect != DECLARATION_LIST) ++ { ++ for (u = p; u != NO_NODE; FORWARD (u)) ++ { ++ reduce (u, NO_NOTE, NO_TICK, LABELED_UNIT, LABEL, UNIT, STOP); ++ reduce (u, NO_NOTE, NO_TICK, SPECIFIED_UNIT, SPECIFIER, ++ COLON_SYMBOL, UNIT, STOP); ++ } ++ if (expect == SOME_CLAUSE) ++ expect = serial_or_collateral (p); ++ if (expect == SERIAL_CLAUSE) ++ reduce_serial_clauses (p); ++ else if (expect == ENQUIRY_CLAUSE) ++ reduce_enquiry_clauses (p); ++ else if (expect == COLLATERAL_CLAUSE) ++ reduce_collateral_clauses (p); ++ else if (expect == ARGUMENT) ++ reduce_arguments (p); ++ } ++ } ++ } ++ reduce_enclosed_clauses (p, expect); ++ if (expect == DEF_PART || expect == POSTLUDE_PART) ++ reduce_module_text_parts (p); ++ if (expect == MODULE_TEXT) ++ reduce_module_texts (p); ++ } ++ ++ /* Do something if parsing failed. */ ++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) ++ { ++ recover_from_error (p, expect, ++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); ++ no_error = false; ++ } ++ else ++ no_error = true; ++ ATTRIBUTE (q) = ATTRIBUTE (p); ++ if (no_error) ++ SUB (q) = SUB (p); ++ } ++} ++ ++/* Driver for reducing declarers. */ ++ ++static void ++reduce_declarers (NODE_T *p, enum a68_attribute expect) ++{ ++ NODE_T *q; bool siga; /* Must be in this scope. */ ++ ++ /* Reduce lengtheties. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ reduce (q, NO_NOTE, NO_TICK, LONGETY, LONG_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SHORTETY, SHORT_SYMBOL, STOP); ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LONGETY, LONGETY, LONG_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, SHORTETY, SHORTETY, SHORT_SYMBOL, STOP); ++ } ++ } ++ ++ /* Reduce indicants. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, INT_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, REAL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BITS_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BYTES_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPLEX_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BOOL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHAR_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FORMAT_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, STRING_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FILE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHANNEL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INDICANT, SEMA_SYMBOL, STOP); ++ } ++ ++ /* Reduce standard stuff. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, LONGETY, INDICANT, STOP)) ++ { ++ int a; ++ ++ if (SUB_NEXT (q) == NO_NODE) ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ else ++ { ++ a = ATTRIBUTE (SUB_NEXT (q)); ++ ++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL ++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL ++ || a == COMPL_SYMBOL) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ else ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ } ++ } ++ else if (a68_whether (q, SHORTETY, INDICANT, STOP)) ++ { ++ int a; ++ ++ if (SUB_NEXT (q) == NO_NODE) ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); ++ } ++ else ++ { ++ a = ATTRIBUTE (SUB_NEXT (q)); ++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL ++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL || a == COMPL_SYMBOL) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); ++ } ++ else ++ { ++ a68_error (NEXT (q), ++ "Y expected", "appropriate declarer"); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); ++ } ++ } ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, INDICANT, STOP); ++ ++ /* Reduce declarer lists. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (NEXT (q) != NO_NODE && SUB_NEXT (q) != NO_NODE) ++ { ++ if (IS (q, STRUCT_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), STRUCTURE_PACK); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, STRUCT_SYMBOL, STRUCTURE_PACK, STOP); ++ } ++ else if (IS (q, UNION_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), UNION_PACK); ++ reduce (q, NO_NOTE, NO_TICK, DECLARER, UNION_SYMBOL, UNION_PACK, STOP); ++ } ++ else if (IS (q, PROC_SYMBOL)) ++ { ++ if (a68_whether (q, PROC_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (!a68_is_formal_bounds (SUB_NEXT (q))) ++ reduce_branch (NEXT (q), FORMAL_DECLARERS); ++ } ++ } ++ else if (IS (q, OP_SYMBOL)) ++ { ++ if (a68_whether (q, OP_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (!a68_is_formal_bounds (SUB_NEXT (q))) ++ reduce_branch (NEXT (q), FORMAL_DECLARERS); ++ } ++ } ++ } ++ } ++ ++ /* Reduce row, proc or op declarers. */ ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* FLEX DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, DECLARER, STOP)) ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, DECLARER, STOP); ++ ++ /* FLEX [] DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, SUB_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) ++ { ++ reduce_branch (NEXT (q), BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ ++ /* FLEX () DECL. */ ++ if (a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) ++ { ++ if (!a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ { ++ reduce_branch (NEXT (q), BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ ++ /* [] DECL. */ ++ if (a68_whether (q, SUB_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ ++ /* () DECL. */ ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ { ++ /* Catch e.g. (INT i) () INT:. */ ++ if (a68_is_formal_bounds (SUB (q))) ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ else ++ { ++ reduce_branch (q, BOUNDS); ++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); ++ } ++ } ++ } ++ ++ /* PROC DECL, PROC () DECL, OP () DECL. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ int a = ATTRIBUTE (q); ++ if (a == REF_SYMBOL) ++ reduce (q, NO_NOTE, &siga, DECLARER, REF_SYMBOL, DECLARER, STOP); ++ else if (a == PROC_SYMBOL) ++ { ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); ++ } ++ else if (a == OP_SYMBOL) ++ { ++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); ++ } ++ } ++ } ++ ++ /* Reduce packs etcetera. */ ++ if (expect == STRUCTURE_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, DECLARER, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, STRUCTURED_FIELD, COMMA_SYMBOL, IDENTIFIER, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP); ++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ COMMA_SYMBOL, STRUCTURED_FIELD, STOP); ++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ STRUCTURED_FIELD, STOP); ++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, ++ SEMI_SYMBOL, STRUCTURED_FIELD, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, STRUCTURE_PACK, OPEN_SYMBOL, STRUCTURED_FIELD_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == PARAMETER_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PARAMETER, DECLARER, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, &siga, PARAMETER, PARAMETER, COMMA_SYMBOL, IDENTIFIER, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER, STOP); ++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER_LIST, COMMA_SYMBOL, PARAMETER, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, PARAMETER_PACK, OPEN_SYMBOL, PARAMETER_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == FORMAL_DECLARERS) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ COMMA_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ SEMI_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, ++ DECLARER, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, FORMAL_DECLARERS, OPEN_SYMBOL, FORMAL_DECLARERS_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == UNION_PACK) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ COMMA_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ COMMA_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ SEMI_SYMBOL, DECLARER, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ SEMI_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ DECLARER, STOP); ++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, ++ VOID_SYMBOL, STOP); ++ } ++ } ++ q = p; ++ reduce (q, NO_NOTE, NO_TICK, UNION_PACK, OPEN_SYMBOL, UNION_DECLARER_LIST, ++ CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == SPECIFIER) ++ { ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, IDENTIFIER, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, VOID_SYMBOL, CLOSE_SYMBOL, STOP); ++ } ++ else ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, COLON_SYMBOL, STOP) ++ && !(expect == GENERIC_ARGUMENT || expect == BOUNDS)) ++ { ++ if (a68_is_one_of (p, IN_SYMBOL, THEN_BAR_SYMBOL, STOP)) ++ reduce_branch (q, SPECIFIER); ++ } ++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) ++ reduce_branch (q, PARAMETER_PACK); ++ if (a68_whether (q, OPEN_SYMBOL, VOID_SYMBOL, COLON_SYMBOL, STOP)) ++ reduce_branch (q, PARAMETER_PACK); ++ } ++ } ++} ++ ++/* Handle cases that need reducing from right-to-left. */ ++ ++static void ++reduce_right_to_left_constructs (NODE_T *p) ++{ ++ /* Here are cases that need reducing from right-to-left whereas many things ++ can be reduced left-to-right. Assignations are a notable example; one ++ could discuss whether it would not be more natural to write 1 =: k instead ++ of k := 1. (jemarch: MARY did just that.) The latter is said to be more ++ natural, or it could be just computing history. Meanwhile we use this ++ routine. */ ++ ++ if (p != NO_NODE) ++ { ++ reduce_right_to_left_constructs (NEXT (p)); ++ /* Assignations. */ ++ if (IS (p, TERTIARY)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ASSIGNATION, STOP); ++ } ++ ++ /* Routine texts with parameter pack. */ ++ else if (IS (p, PARAMETER_PACK)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL,AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ /* Routine texts without parameter pack. */ ++ else if (IS (p, DECLARER)) ++ { ++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ } ++ else if (IS (p, VOID_SYMBOL)) ++ { ++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); ++ } ++ } ++ } ++} ++ ++/* Reduce primary elements. */ ++ ++static void ++reduce_primary_parts (NODE_T *p, enum a68_attribute expect) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, IDENTIFIER, OF_SYMBOL, STOP)) ++ ATTRIBUTE (q) = FIELD_IDENTIFIER; ++ ++ reduce (q, NO_NOTE, NO_TICK, NIHIL, NIL_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SKIP, SKIP_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SELECTOR, FIELD_IDENTIFIER, OF_SYMBOL, STOP); ++ /* JUMPs without GOTO are resolved later. */ ++ reduce (q, NO_NOTE, NO_TICK, JUMP, GOTO_SYMBOL, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, INT_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, REAL_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, BITS_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, ROW_CHAR_DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, TRUE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, FALSE_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, EMPTY_SYMBOL, STOP); ++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); ++ } ++ } ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ } ++} ++ ++/* Reduce primaries completely. */ ++ ++static void ++reduce_primaries (NODE_T *p, enum a68_attribute expect) ++{ ++ NODE_T *q = p; ++ while (q != NO_NODE) ++ { ++ bool fwd = true, siga; ++ /* Primaries excepts call and slice. */ ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, DENOTATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CAST, DECLARER, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CAST, VOID_SYMBOL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ASSERTION, ASSERT_SYMBOL, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, CAST, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, ENCLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, FORMAT_TEXT, STOP); ++ /* Call and slice. */ ++ siga = true; ++ while (siga) ++ { ++ NODE_T *x = NEXT (q); ++ ++ siga = false; ++ if (IS (q, PRIMARY) && x != NO_NODE) ++ { ++ if (IS (x, OPEN_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); ++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); ++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); ++ } ++ else if (IS (x, SUB_SYMBOL)) ++ { ++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); ++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); ++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); ++ } ++ } ++ } ++ ++ /* Now that call and slice are known, reduce remaining ( .. ). */ ++ if (IS (q, OPEN_SYMBOL) && SUB (q) != NO_NODE) ++ { ++ reduce_branch (q, SOME_CLAUSE); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ if (PREVIOUS (q) != NO_NODE) ++ { ++ BACKWARD (q); ++ fwd = false; ++ } ++ } ++ ++ /* Format text items. */ ++ if (expect == FORMAT_TEXT) ++ { ++ NODE_T *r; ++ ++ for (r = p; r != NO_NODE; FORWARD (r)) ++ { ++ reduce (r, NO_NOTE, NO_TICK, DYNAMIC_REPLICATOR, FORMAT_ITEM_N, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, ENCLOSED_CLAUSE, STOP); ++ reduce (r, NO_NOTE, NO_TICK, FORMAT_PATTERN, FORMAT_ITEM_F, ENCLOSED_CLAUSE, STOP); ++ } ++ } ++ if (fwd) ++ FORWARD (q); ++ } ++} ++ ++/* Enforce that ambiguous patterns are separated by commas. */ ++ ++static void ++ambiguous_patterns (NODE_T *p) ++{ ++ /* Example: printf (($+d.2d +d.2d$, 1, 2)) can produce either "+1.00 +2.00" ++ or "+1+002.00". A comma must be supplied to resolve the ambiguity. ++ ++ The obvious thing would be to weave this into the syntax, letting the BU ++ parser sort it out. But the C-style patterns do not suffer from Algol 68 ++ pattern ambiguity, so by solving it this way we maximise freedom in ++ writing the patterns as we want without introducing two "kinds" of ++ patterns, and so we have shorter routines for implementing formatted ++ transput. This is a pragmatic system. */ ++ NODE_T *q, *last_pat = NO_NODE; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ switch (ATTRIBUTE (q)) ++ { ++ /* These are the potentially ambiguous patterns. */ ++ case INTEGRAL_PATTERN: ++ case REAL_PATTERN: ++ case COMPLEX_PATTERN: ++ case BITS_PATTERN: ++ if (last_pat != NO_NODE) ++ a68_error (q, "A and A must be separated by a comma-symbol", ++ ATTRIBUTE (last_pat), ATTRIBUTE (q)); ++ last_pat = q; ++ break; ++ case COMMA_SYMBOL: ++ last_pat = NO_NODE; ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++/* Reduce C format texts completely. */ ++ ++static void ++reduce_c_pattern (NODE_T *p, int pr, int let) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, ++ let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); ++ reduce (q, NO_NOTE, NO_TICK, pr, ++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, ++ REPLICATOR, let, STOP); ++ } ++} ++ ++/* Reduce format texts completely. */ ++ ++static void ++reduce_format_texts (NODE_T *p) ++{ ++ /* Replicators. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, STATIC_REPLICATOR, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, DYNAMIC_REPLICATOR, STOP); ++ } ++ ++ /* "OTHER" patterns. */ ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_B); ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_O); ++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_X); ++ reduce_c_pattern (p, CHAR_C_PATTERN, FORMAT_ITEM_C); ++ reduce_c_pattern (p, FIXED_C_PATTERN, FORMAT_ITEM_F); ++ reduce_c_pattern (p, FLOAT_C_PATTERN, FORMAT_ITEM_E); ++ reduce_c_pattern (p, GENERAL_C_PATTERN, FORMAT_ITEM_G); ++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_D); ++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_I); ++ reduce_c_pattern (p, STRING_C_PATTERN, FORMAT_ITEM_S); ++ /* Radix frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, RADIX_FRAME, REPLICATOR, FORMAT_ITEM_R, STOP); ++ ++ /* Insertions. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_X, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Y, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_L, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_P, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Q, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_K, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, LITERAL, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INSERTION, REPLICATOR, INSERTION, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, INSERTION, INSERTION, INSERTION, STOP); ++ } ++ } ++ ++ /* Replicated suppressible frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); ++ } ++ ++ /* Suppressible frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_E, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_POINT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_I, STOP); ++ } ++ ++ /* Replicated frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_D, STOP); ++ } ++ ++ /* Frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_A, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_Z, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_D, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_E, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_POINT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_I, STOP); ++ } ++ ++ /* Frames with an insertion. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, INSERTION, FORMAT_A_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, INSERTION, FORMAT_Z_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, INSERTION, FORMAT_D_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, INSERTION, FORMAT_E_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, INSERTION, FORMAT_POINT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, INSERTION, FORMAT_I_FRAME, STOP); ++ } ++ ++ /* String patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, REPLICATOR, FORMAT_A_FRAME, STOP); ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, FORMAT_A_FRAME, STOP); ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, STRING_PATTERN, STOP); ++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, INSERTION, STRING_PATTERN, STOP); ++ } ++ } ++ ++ /* Integral moulds. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_Z_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_D_FRAME, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INSERTION, STOP); ++ } ++ } ++ ++ /* Sign moulds. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_PLUS, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_MINUS, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_PLUS, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_MINUS, STOP); ++ } ++ ++ /* Exponent frames. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, SIGN_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, INTEGRAL_MOULD, STOP); ++ } ++ ++ /* Real patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); ++ } ++ ++ /* Complex patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, COMPLEX_PATTERN, REAL_PATTERN, FORMAT_I_FRAME, REAL_PATTERN, STOP); ++ ++ /* Bits patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, BITS_PATTERN, RADIX_FRAME, INTEGRAL_MOULD, STOP); ++ ++ /* Integral patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, INTEGRAL_MOULD, STOP); ++ } ++ ++ /* Patterns. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, COLLECTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, CHOICE_PATTERN, FORMAT_ITEM_C, COLLECTION, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, STOP); ++ } ++ ++ ambiguous_patterns (p); ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, BITS_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, CHAR_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FIXED_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FLOAT_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, GENERAL_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, INTEGRAL_C_PATTERN, STOP); ++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, STRING_C_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BITS_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BOOLEAN_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, CHOICE_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, COMPLEX_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, FORMAT_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, GENERAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, INTEGRAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, REAL_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, STRING_PATTERN, STOP); ++ } ++ ++ /* Pictures. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, INSERTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, A68_PATTERN, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, COLLECTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, PICTURE, REPLICATOR, COLLECTION, STOP); ++ } ++ ++ /* Picture lists. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, PICTURE)) ++ { ++ bool siga = true; ++ reduce (q, NO_NOTE, NO_TICK, PICTURE_LIST, PICTURE, STOP); ++ while (siga) ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, COMMA_SYMBOL, PICTURE, STOP); ++ /* We filtered ambiguous patterns, so commas may be omitted */ ++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, PICTURE, STOP); ++ } ++ } ++ } ++} ++ ++/* Reduce secondaries completely. */ ++ ++static void ++reduce_secondaries (NODE_T *p) ++{ ++ NODE_T *q; bool siga; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, PRIMARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, LOC_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, HEAP_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, GENERATOR, STOP); ++ } ++ siga = true; ++ while (siga) ++ { ++ siga = false; ++ for (q = p; NEXT (q) != NO_NODE; FORWARD (q)) ++ ; ++ for (; q != NO_NODE; BACKWARD (q)) ++ { ++ reduce (q, NO_NOTE, &siga, SELECTION, SELECTOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, SECONDARY, SELECTION, STOP); ++ } ++ } ++} ++ ++/* Whether Q is an operator with priority K. */ ++ ++static int ++operator_with_priority (NODE_T *q, int k) ++{ ++ return NEXT (q) != NO_NODE ++ && ATTRIBUTE (NEXT (q)) == OPERATOR && PRIO (INFO (NEXT (q))) == k; ++} ++ ++/* Reduce formulae. */ ++ ++static void ++reduce_formulae (NODE_T * p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_is_one_of (q, OPERATOR, SECONDARY, STOP)) ++ q = reduce_dyadic (q, STOP); ++ else ++ FORWARD (q); ++ } ++ ++ /* Reduce the expression. */ ++ for (int prio = MAX_PRIORITY; prio >= 0; prio--) ++ { ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (operator_with_priority (q, prio)) ++ { ++ bool siga = false; ++ NODE_T *op = NEXT (q); ++ if (IS (q, SECONDARY)) ++ { ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, FORMULA, STOP); ++ } ++ else if (IS (q, MONADIC_FORMULA)) ++ { ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, FORMULA, STOP); ++ } ++ if (prio == 0 && siga) ++ a68_error (op, "S has no priority declaration"); ++ siga = true; ++ while (siga) ++ { ++ NODE_T *op2 = NEXT (q); ++ siga = false; ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, SECONDARY, STOP); ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ if (operator_with_priority (q, prio)) ++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, FORMULA, STOP); ++ if (prio == 0 && siga) ++ a68_error (op2, "S has no priority declaration"); ++ } ++ } ++ } ++ } ++} ++ ++/* Reduce dyadic expressions. */ ++ ++static NODE_T * ++reduce_dyadic (NODE_T *p, int u) ++{ ++ /* We work inside out - higher priority expressions get reduced first. */ ++ if (u > MAX_PRIORITY) ++ { ++ if (p == NO_NODE) ++ return NO_NODE; ++ else if (IS (p, OPERATOR)) ++ { ++ /* Reduce monadic formulas. */ ++ NODE_T *q = p; ++ bool siga; ++ do ++ { ++ PRIO (INFO (q)) = 10; ++ siga = ((NEXT (q) != NO_NODE) && (IS (NEXT (q), OPERATOR))); ++ if (siga) ++ FORWARD (q); ++ } ++ while (siga); ++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); ++ while (q != p) ++ { ++ BACKWARD (q); ++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); ++ } ++ } ++ FORWARD (p); ++ } ++ else ++ { ++ p = reduce_dyadic (p, u + 1); ++ while (p != NO_NODE && IS (p, OPERATOR) && PRIO (INFO (p)) == u) ++ { ++ FORWARD (p); ++ p = reduce_dyadic (p, u + 1); ++ } ++ } ++ return p; ++} ++ ++/* Reduce tertiaries completely. */ ++ ++static void ++reduce_tertiaries (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, NIHIL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMULA, MONADIC_FORMULA, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, FORMULA, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, SECONDARY, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, IS_SYMBOL, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, ISNT_SYMBOL, TERTIARY, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, AND_FUNCTION, TERTIARY, ANDF_SYMBOL, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, OR_FUNCTION, TERTIARY, ORF_SYMBOL, TERTIARY, STOP); ++ } ++} ++ ++/* Reduce units. */ ++ ++static void ++reduce_units (NODE_T * p) ++{ ++ /* Stray ~ is a SKIP. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, OPERATOR) && IS_LITERALLY (q, "~")) ++ ATTRIBUTE (q) = SKIP; ++ } ++ ++ /* Reduce units. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSIGNATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, IDENTITY_RELATION, STOP); ++ reduce (q, a68_extension, NO_TICK, UNIT, AND_FUNCTION, STOP); ++ reduce (q, a68_extension, NO_TICK, UNIT, OR_FUNCTION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, JUMP, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, SKIP, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, TERTIARY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSERTION, STOP); ++ } ++} ++ ++/* Reduce_generic arguments. */ ++ ++static void ++reduce_generic_arguments (NODE_T *p) ++{ ++ NODE_T *q; bool siga; /* In this scope. */ ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, UNIT)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, STOP); ++ } ++ else if (IS (q, COLON_SYMBOL)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, STOP); ++ } ++ } ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, AT_SYMBOL, UNIT, STOP); ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, AT_SYMBOL, UNIT, STOP); ++ for (q = p; q && NEXT (q); FORWARD (q)) ++ { ++ if (IS (q, COMMA_SYMBOL)) ++ { ++ if (!(ATTRIBUTE (NEXT (q)) == UNIT || ATTRIBUTE (NEXT (q)) == TRIMMER)) ++ pad_node (q, TRIMMER); ++ } ++ else ++ { ++ if (IS (NEXT (q), COMMA_SYMBOL)) ++ { ++ if (!IS (q, UNIT) && !IS (q, TRIMMER)) ++ pad_node (q, TRIMMER); ++ } ++ } ++ } ++ ++ q = NEXT (p); ++ if (q == NO_NODE) ++ gcc_unreachable (); ++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, TRIMMER, STOP); ++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, UNIT, STOP); ++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); ++ } ++ while (siga); ++} ++ ++/* Reduce bounds. */ ++ ++static void ++reduce_bounds (NODE_T *p) ++{ ++ NODE_T *q; bool siga; ++ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, STOP); ++ } ++ q = NEXT (p); ++ reduce (q, NO_NOTE, NO_TICK, BOUNDS_LIST, BOUND, STOP); ++ reduce (q, NO_NOTE, NO_TICK, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ALT_FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, BOUNDS_LIST, BOUNDS_LIST, COMMA_SYMBOL, BOUND, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, ALT_FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, ALT_FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); ++ reduce (q, strange_separator, &siga, BOUNDS_LIST, BOUNDS_LIST, BOUND, STOP); ++ } ++ while (siga); ++} ++ ++/* Reduce argument packs. */ ++ ++static void ++reduce_arguments (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, ARGUMENT_LIST, UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ARGUMENT_LIST, ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ARGUMENT_LIST, ARGUMENT_LIST, UNIT, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce declarations. */ ++ ++static void ++reduce_basic_declarations (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* Publicized declarations. */ ++ reduce (q, NO_NOTE, NO_TICK, ++ PRIORITY_DECLARATION, PUBLIC_SYMBOL, ++ PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, PUBLIC_SYMBOL, ++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, PUBLIC_SYMBOL, ++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_DECLARATION, PUBLIC_SYMBOL, ++ PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, PUBLIC_SYMBOL, ++ OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ ++ reduce (q, NO_NOTE, NO_TICK, ++ PRIORITY_DECLARATION, PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, ++ STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); ++#endif ++ /* Errors. */ ++ reduce (q, strange_tokens, NO_TICK, ++ PRIORITY_DECLARATION, PRIO_SYMBOL, -DEFINING_OPERATOR, -EQUALS_SYMBOL, -PRIORITY, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -DECLARER, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, -ROUTINE_TEXT, ++ STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ++ -ROUTINE_TEXT, STOP); ++ reduce (q, strange_tokens, NO_TICK, ++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, strange_tokens, NO_TICK, ++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); ++#endif ++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ ++ reduce (q, strange_tokens, NO_TICK, PROCEDURE_DECLARATION, PROC_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); ++ } ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ PRIORITY_DECLARATION, PRIORITY_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, ++ EQUALS_SYMBOL, PRIORITY, STOP); ++ reduce (q, NO_NOTE, &siga, ++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ DECLARER, STOP); ++ reduce (q, NO_NOTE, &siga, ++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ VOID_SYMBOL, STOP); ++ reduce (q, NO_NOTE, &siga, ++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ PROCEDURE_VARIABLE_DECLARATION, PROCEDURE_VARIABLE_DECLARATION, COMMA_SYMBOL, ++ DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ BRIEF_OPERATOR_DECLARATION, BRIEF_OPERATOR_DECLARATION, COMMA_SYMBOL, ++ DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, &siga, ++ MODULE_DECLARATION, MODULE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, ++ MODULE_TEXT, STOP); ++#endif ++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ ++ reduce (q, strange_tokens, &siga, ++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce declaration lists. */ ++ ++static void ++reduce_declaration_lists (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ IDENTITY_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, ++ DECLARER, DEFINING_IDENTIFIER, STOP); ++ ++ reduce (q, NO_NOTE, NO_TICK, ++ IDENTITY_DECLARATION, DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ IDENTITY_DECLARATION, IDENTITY_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ ASSIGN_SYMBOL, UNIT, STOP); ++ if (!a68_whether (q, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, ++ ASSIGN_SYMBOL, UNIT, STOP)) ++ reduce (q, NO_NOTE, &siga, ++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, STOP); ++ } ++ while (siga); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, ++ OPERATOR_DECLARATION, PUBLIC_SYMBOL, ++ OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, ++ OPERATOR_DECLARATION, OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ OPERATOR_DECLARATION, OPERATOR_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, ++ EQUALS_SYMBOL, UNIT, STOP); ++ } ++ while (siga); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PRIORITY_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, BRIEF_OPERATOR_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, OPERATOR_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, IDENTITY_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_VARIABLE_DECLARATION, STOP); ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, VARIABLE_DECLARATION, STOP); ++#if 0 ++ /* XXX for local module definitions */ ++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODULE_DECLARATION, STOP); ++#endif ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ DECLARATION_LIST, DECLARATION_LIST, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce module text. */ ++ ++static void ++reduce_module_texts (NODE_T *p) ++{ ++ if (IS (p, ALT_ACCESS_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ REVELATION, ALT_ACCESS_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ REVELATION, ALT_ACCESS_SYMBOL, MODULE_INDICANT, STOP); ++ bool siga; ++ do ++ { ++ siga = false; ++ reduce (p, NO_NOTE, &siga, ++ REVELATION, REVELATION, COMMA_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); ++ reduce (p, NO_NOTE, &siga, ++ REVELATION, REVELATION, COMMA_SYMBOL, MODULE_INDICANT, STOP); ++ } ++ while (siga); ++ reduce (p, NO_NOTE, NO_TICK, REVELATION_PART, REVELATION, STOP); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); ++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, FED_SYMBOL, STOP); ++ } ++} ++ ++/* Reduce def-parts and postlude-parts. ++ Note that revelations are reduced in reduce_module_texts. */ ++ ++static void ++reduce_module_text_parts (NODE_T *p) ++{ ++ if (IS (p, DEF_SYMBOL)) ++ { ++ reduce_enquiry_clauses (p); ++ reduce (p, NO_NOTE, NO_TICK, DEF_PART, DEF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ } ++ else if (IS (p, POSTLUDE_SYMBOL)) ++ { ++ reduce_serial_clauses (p); ++ reduce (p, NO_NOTE, NO_TICK, POSTLUDE_PART, POSTLUDE_SYMBOL, SERIAL_CLAUSE, STOP); ++ } ++} ++ ++/* Reduce serial clauses. */ ++ ++static void ++reduce_serial_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p), *u; ++ bool siga, label_seen; ++ /* Check wrong exits. */ ++ for (u = q; u != NO_NODE; FORWARD (u)) ++ { ++ if (IS (u, EXIT_SYMBOL)) ++ { ++ if (NEXT (u) == NO_NODE || !IS (NEXT (u), LABELED_UNIT)) ++ a68_error (u, "S must be followed by a labeled unit"); ++ } ++ } ++ ++ /* Check wrong jumps and declarations. */ ++ for (u = q, label_seen = false; u != NO_NODE; FORWARD (u)) ++ { ++ if (IS (u, LABELED_UNIT)) ++ label_seen = true; ++ else if (IS (u, DECLARATION_LIST)) ++ { ++ if (label_seen) ++ a68_error (u, "declaration cannot follow a labeled unit"); ++ } ++ } ++ ++ /* Reduce serial clauses. */ ++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ do ++ { ++ siga = false; ++ if (IS (q, SERIAL_CLAUSE)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, EXIT_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ /* Errors */ ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, SERIAL_CLAUSE, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, SERIAL_CLAUSE, DECLARATION_LIST, STOP); ++ } ++ else if (IS (q, INITIALISER_SERIES)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ /* Errors */ ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SERIAL_CLAUSE, INITIALISER_SERIES, LABELED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ } ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce enquiry clauses. */ ++ ++static void ++reduce_enquiry_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, ENQUIRY_CLAUSE, UNIT, STOP); ++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ do ++ { ++ siga = false; ++ if (IS (q, ENQUIRY_CLAUSE)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, ENQUIRY_CLAUSE, DECLARATION_LIST, STOP); ++ } ++ else if (IS (q, INITIALISER_SERIES)) ++ { ++ reduce (q, NO_NOTE, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); ++ reduce (q, NO_NOTE, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); ++ reduce (q, strange_separator, &siga, ++ ENQUIRY_CLAUSE, INITIALISER_SERIES, UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); ++ } ++ } ++ while (siga); ++ } ++} ++ ++/* Reduce collateral clauses. */ ++ ++static void ++reduce_collateral_clauses (NODE_T *p) ++{ ++ if (NEXT (p) != NO_NODE) ++ { ++ NODE_T *q = NEXT (p); ++ if (IS (q, UNIT)) ++ { ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, UNIT_LIST, UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, UNIT_LIST, UNIT_LIST, COMMA_SYMBOL, UNIT, STOP); ++ reduce (q, strange_separator, &siga, UNIT_LIST, UNIT_LIST, UNIT, STOP); ++ } ++ while (siga); ++ } ++ else if (IS (q, SPECIFIED_UNIT)) ++ { ++ bool siga; ++ reduce (q, NO_NOTE, NO_TICK, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); ++ do ++ { ++ siga = false; ++ reduce (q, NO_NOTE, &siga, ++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, COMMA_SYMBOL, SPECIFIED_UNIT, STOP); ++ reduce (q, strange_separator, &siga, ++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); ++ } ++ while (siga); ++ } ++ } ++} ++ ++/* Reduces enclosed clauses. */ ++ ++static void ++reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect) ++{ ++ NODE_T *p = q; ++ ++ if (SUB (p) == NO_NODE) ++ { ++ if (IS (p, FOR_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, FOR_PART, FOR_SYMBOL, DEFINING_IDENTIFIER, STOP); ++ else if (IS (p, OPEN_SYMBOL)) ++ { ++ if (expect == ENQUIRY_CLAUSE) ++ reduce (p, NO_NOTE, NO_TICK, OPEN_PART, OPEN_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ else if (expect == ARGUMENT) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, ARGUMENT_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, ARGUMENT, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == GENERIC_ARGUMENT) ++ { ++ if (a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) ++ { ++ pad_node (p, TRIMMER); ++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, OPEN_SYMBOL, TRIMMER, CLOSE_SYMBOL, STOP); ++ } ++ reduce (p, NO_NOTE, NO_TICK, ++ GENERIC_ARGUMENT, OPEN_SYMBOL, GENERIC_ARGUMENT_LIST, CLOSE_SYMBOL, STOP); ++ } ++ else if (expect == BOUNDS) ++ { ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, OPEN_SYMBOL, BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAL_BOUNDS, OPEN_SYMBOL, ALT_FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); ++ } ++ else ++ { ++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, OPEN_SYMBOL, SERIAL_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, UNIT_LIST, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, ++ CLOSED_CLAUSE, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); ++ } ++ } ++ else if (IS (p, SUB_SYMBOL)) ++ { ++ if (expect == GENERIC_ARGUMENT) ++ { ++ if (a68_whether (p, SUB_SYMBOL, BUS_SYMBOL, STOP)) ++ { ++ pad_node (p, TRIMMER); ++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, SUB_SYMBOL, TRIMMER, BUS_SYMBOL, STOP); ++ } ++ reduce (p, NO_NOTE, NO_TICK, ++ GENERIC_ARGUMENT, SUB_SYMBOL, GENERIC_ARGUMENT_LIST, BUS_SYMBOL, STOP); ++ } ++ else if (expect == BOUNDS) ++ { ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, SUB_SYMBOL, BOUNDS_LIST, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, ALT_FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); ++ } ++ } ++ else if (IS (p, BEGIN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, UNIT_LIST, END_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, END_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, SERIAL_CLAUSE, END_SYMBOL, STOP); ++ reduce (p, empty_clause, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, INITIALISER_SERIES, END_SYMBOL, STOP); ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, PICTURE_LIST, FORMAT_DELIMITER_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP); ++ } ++ else if (IS (p, FORMAT_OPEN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ COLLECTION, FORMAT_OPEN_SYMBOL, PICTURE_LIST, FORMAT_CLOSE_SYMBOL, STOP); ++ } ++ else if (IS (p, ACCESS_SYMBOL)) ++ { ++ NODE_T *s; ++ for (s = p; s != NO_NODE; FORWARD (s)) ++ { ++ if (SUB (s) != NO_NODE) ++ { ++ // XXX why ++ if (IS (SUB (s), OPEN_SYMBOL)) ++ reduce_branch (s, SOME_CLAUSE); ++ else ++ reduce_branch (s, ENCLOSED_CLAUSE); ++ } ++ reduce (s, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); ++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); ++ } ++ // XXX reduce revelations ++ reduce (p, NO_NOTE, NO_TICK, ++ ACCESS_CLAUSE, ACCESS_SYMBOL, MODULE_INDICANT, ENCLOSED_CLAUSE, STOP); ++ } ++ else if (IS (p, IF_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, IF_PART, IF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, IF_PART, IF_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, THEN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, THEN_PART, THEN_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, THEN_PART, THEN_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELSE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELSE_PART, ELSE_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, ELSE_PART, ELSE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELIF_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELIF_IF_PART, ELIF_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ } ++ else if (IS (p, CASE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_PART, CASE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, CASE_PART, CASE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, IN_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_IN_PART, IN_SYMBOL, UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_IN_PART, IN_SYMBOL, SPECIFIED_UNIT_LIST, STOP); ++ } ++ else if (IS (p, OUT_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, OUT_PART, OUT_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, OUT_PART, OUT_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, OUSE_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, OUSE_PART, OUSE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ else if (IS (p, THEN_BAR_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CHOICE, THEN_BAR_SYMBOL, SERIAL_CLAUSE, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CHOICE_CLAUSE, THEN_BAR_SYMBOL, UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT_LIST, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT, STOP); ++ reduce (p, empty_clause, NO_TICK, CHOICE, THEN_BAR_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, ELSE_BAR_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, FROM_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, FROM_PART, FROM_SYMBOL, UNIT, STOP); ++ else if (IS (p, BY_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, BY_PART, BY_SYMBOL, UNIT, STOP); ++ else if (IS (p, TO_SYMBOL)) ++ reduce (p, NO_NOTE, NO_TICK, TO_PART, TO_SYMBOL, UNIT, STOP); ++ else if (IS (p, WHILE_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, WHILE_PART, WHILE_SYMBOL, ENQUIRY_CLAUSE, STOP); ++ reduce (p, empty_clause, NO_TICK, WHILE_PART, WHILE_SYMBOL, INITIALISER_SERIES, STOP); ++ } ++ else if (IS (p, DO_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, DO_PART, DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); ++ } ++ else if (IS (p, ALT_DO_SYMBOL)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ALT_DO_PART, ALT_DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); ++ } ++ } ++ p = q; ++ if (SUB (p) != NO_NODE) ++ { ++ if (IS (p, OPEN_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, ELSE_OPEN_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, ++ STOP); ++ } ++ else if (IS (p, IF_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELIF_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, FI_SYMBOL, STOP); ++ } ++ else if (IS (p, ELIF_IF_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, FI_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELIF_PART, STOP); ++ } ++ else if (IS (p, CASE_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, OUSE_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); ++ reduce (p, NO_NOTE, NO_TICK, ++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); ++ } ++ else if (IS (p, FOR_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, ++ LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, FROM_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, BY_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, TO_PART)) ++ { ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, WHILE_PART, ALT_DO_PART, STOP); ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, ALT_DO_PART, STOP); ++ } ++ else if (IS (p, WHILE_PART)) ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, WHILE_PART, ALT_DO_PART, STOP); ++ else if (IS (p, DO_PART)) ++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, DO_PART, STOP); ++ } ++} ++ ++/* Substitute reduction when a phrase could not be parsed. */ ++ ++static void ++recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress) ++{ ++ /* This routine does not do fancy things as that might introduce more ++ errors. */ ++ NODE_T *q = p; ++ if (p == NO_NODE) ++ return; ++ ++ if (expect == SOME_CLAUSE) ++ expect = serial_or_collateral (p); ++ ++ if (!suppress) ++ { ++ /* Give an error message. */ ++ NODE_T *w = p; ++ const char *seq = a68_phrase_to_text (p, &w); ++ if (strlen (seq) == 0) ++ { ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_error (w, "expected A", expect); ++ } ++ else ++ a68_error (w, "Y is an invalid A", seq, expect); ++ ++ if (ERROR_COUNT (&A68_JOB) >= MAX_ERRORS) ++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); ++ } ++ ++ /* Try to prevent spurious diagnostics by guessing what was expected. */ ++ while (NEXT (q) != NO_NODE) ++ FORWARD (q); ++ ++ if (a68_is_one_of (p, BEGIN_SYMBOL, OPEN_SYMBOL, STOP)) ++ { ++ if (expect == ARGUMENT || expect == COLLATERAL_CLAUSE ++ || expect == PARAMETER_PACK || expect == STRUCTURE_PACK ++ || expect == UNION_PACK) ++ a68_make_sub (p, q, expect); ++ else if (expect == ENQUIRY_CLAUSE) ++ a68_make_sub (p, q, OPEN_PART); ++ else if (expect == FORMAL_DECLARERS) ++ a68_make_sub (p, q, FORMAL_DECLARERS); ++ else ++ a68_make_sub (p, q, CLOSED_CLAUSE); ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && expect == FORMAT_TEXT) ++ a68_make_sub (p, q, FORMAT_TEXT); ++ else if (a68_is_one_of (p, THEN_BAR_SYMBOL, CHOICE, STOP)) ++ a68_make_sub (p, q, CHOICE); ++ else if (a68_is_one_of (p, IF_SYMBOL, IF_PART, STOP)) ++ a68_make_sub (p, q, IF_PART); ++ else if (a68_is_one_of (p, THEN_SYMBOL, THEN_PART, STOP)) ++ a68_make_sub (p, q, THEN_PART); ++ else if (a68_is_one_of (p, ELSE_SYMBOL, ELSE_PART, STOP)) ++ a68_make_sub (p, q, ELSE_PART); ++ else if (a68_is_one_of (p, ELIF_SYMBOL, ELIF_IF_PART, STOP)) ++ a68_make_sub (p, q, ELIF_IF_PART); ++ else if (a68_is_one_of (p, CASE_SYMBOL, CASE_PART, STOP)) ++ a68_make_sub (p, q, CASE_PART); ++ else if (a68_is_one_of (p, OUT_SYMBOL, OUT_PART, STOP)) ++ a68_make_sub (p, q, OUT_PART); ++ else if (a68_is_one_of (p, OUSE_SYMBOL, OUSE_PART, STOP)) ++ a68_make_sub (p, q, OUSE_PART); ++ else if (a68_is_one_of (p, FOR_SYMBOL, FOR_PART, STOP)) ++ a68_make_sub (p, q, FOR_PART); ++ else if (a68_is_one_of (p, FROM_SYMBOL, FROM_PART, STOP)) ++ a68_make_sub (p, q, FROM_PART); ++ else if (a68_is_one_of (p, BY_SYMBOL, BY_PART, STOP)) ++ a68_make_sub (p, q, BY_PART); ++ else if (a68_is_one_of (p, TO_SYMBOL, TO_PART, STOP)) ++ a68_make_sub (p, q, TO_PART); ++ else if (a68_is_one_of (p, WHILE_SYMBOL, WHILE_PART, STOP)) ++ a68_make_sub (p, q, WHILE_PART); ++ else if (a68_is_one_of (p, DO_SYMBOL, DO_PART, STOP)) ++ a68_make_sub (p, q, DO_PART); ++ else if (a68_is_one_of (p, ALT_DO_SYMBOL, ALT_DO_PART, STOP)) ++ a68_make_sub (p, q, ALT_DO_PART); ++ else if (a68_attribute_name (expect) != NO_TEXT) ++ a68_make_sub (p, q, expect); ++} ++ ++/* Heuristic aid in pinpointing errors. */ ++ ++static void ++reduce_erroneous_units (NODE_T *p) ++{ ++ /* Constructs are reduced to units in an attempt to limit spurious ++ diagnostics. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ /* Some implementations allow selection from a tertiary, when there is no ++ risk of ambiguity. GCC follows RR, so some extra attention here to ++ guide an unsuspecting user. */ ++ if (a68_whether (q, SELECTOR, -SECONDARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", SECONDARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, SELECTOR, WILDCARD, STOP); ++ } ++ ++ /* Attention for identity relations that require tertiaries. */ ++ if (a68_whether (q, -TERTIARY, IS_SYMBOL, TERTIARY, STOP) ++ || a68_whether (q, TERTIARY, IS_SYMBOL, -TERTIARY, STOP) ++ || a68_whether (q, -TERTIARY, IS_SYMBOL, -TERTIARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", TERTIARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, IS_SYMBOL, WILDCARD, STOP); ++ } ++ else if (a68_whether (q, -TERTIARY, ISNT_SYMBOL, TERTIARY, STOP) ++ || a68_whether (q, TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP) ++ || a68_whether (q, -TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP)) ++ { ++ a68_error (NEXT (q), "expected A", TERTIARY); ++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, ISNT_SYMBOL, WILDCARD, STOP); ++ } ++ } ++} ++ ++/* ++ * A posteriori checks of the syntax tree built by the BU parser. ++ */ ++ ++/* Driver for a posteriori error checking. */ ++ ++void ++a68_bottom_up_error_check (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOOLEAN_PATTERN)) ++ { ++ int k = 0; ++ a68_count_pictures (SUB (p), &k); ++ if (!(k == 0 || k == 2)) ++ a68_error (p, "incorrect number of pictures for A", ++ ATTRIBUTE (p)); ++ } ++ else if (IS (p, PUBLIC_SYMBOL)) ++ { ++ /* These should have been removed by a68_bottom_up_coalesce_pub. */ ++ gcc_unreachable (); ++ } ++ else if (a68_is_one_of (p, DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) ++ { ++ if (PUBLICIZED (p) && !PUBLIC_RANGE (TABLE (p))) ++ a68_error (p, ++ "%licized declaration not in a module definition"); ++ } ++ else ++ a68_bottom_up_error_check (SUB (p)); ++ } ++} ++ ++/* ++ * Next part rearranges and checks the tree after the symbol tables are finished. ++ */ ++ ++/* Transfer IDENTIFIER to JUMP where appropriate. */ ++ ++void ++a68_rearrange_goto_less_jumps (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ NODE_T *q = SUB (p); ++ if (IS (q, TERTIARY)) ++ { ++ NODE_T *tertiary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, SECONDARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (tertiary) = JUMP; ++ SUB (tertiary) = q; ++ } ++ } ++ } ++ } ++ } ++ } ++ else if (IS (p, TERTIARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, SECONDARY)) ++ { ++ NODE_T *secondary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (secondary) = JUMP; ++ SUB (secondary) = q; ++ } ++ } ++ } ++ } ++ } ++ else if (IS (p, SECONDARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, PRIMARY)) ++ { ++ NODE_T *primary = q; ++ q = SUB (q); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ { ++ ATTRIBUTE (primary) = JUMP; ++ SUB (primary) = q; ++ } ++ } ++ } ++ } ++ else if (IS (p, PRIMARY)) ++ { ++ NODE_T *q = SUB (p); ++ if (q != NO_NODE && IS (q, IDENTIFIER)) ++ { ++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) ++ a68_make_sub (q, q, JUMP); ++ } ++ } ++ a68_rearrange_goto_less_jumps (SUB (p)); ++ } ++} ++ ++/* ++ * Coalesce PUBLIC_SYMBOLs resulting from reductions, annotating the ++ * corresponding defining identifiers, indicators, operators and prios as ++ * publicized. ++ */ ++ ++void ++a68_bottom_up_coalesce_pub (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, ++ MODE_DECLARATION, PROCEDURE_DECLARATION, PRIORITY_DECLARATION, ++ PROCEDURE_VARIABLE_DECLARATION, BRIEF_OPERATOR_DECLARATION, ++ OPERATOR_DECLARATION, IDENTITY_DECLARATION, ++ VARIABLE_DECLARATION, STOP)) ++ { ++ if (SUB (p) != NO_NODE && IS (SUB (p), PUBLIC_SYMBOL)) ++ { ++ NODE_T *public_symbol = SUB (p); ++ ++ /* Mark the defining entity as PUBlicized. */ ++ /* XXX handle joined declarations. */ ++ NODE_T *defining_entity = NEXT (NEXT (SUB (p))); ++ if (!a68_is_one_of (defining_entity, ++ DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, ++ STOP)) ++ FORWARD (defining_entity); ++ gcc_assert (defining_entity != NO_NODE ++ && a68_is_one_of (defining_entity, ++ DEFINING_INDICANT, ++ DEFINING_IDENTIFIER, ++ DEFINING_OPERATOR, ++ STOP)); ++ PUBLICIZED (defining_entity) = true; ++ ++ /* Unlink the PUBLIC_SYMBOL node and get rid of it. */ ++ SUB (p) = NEXT (public_symbol); ++ PREVIOUS (NEXT (public_symbol)) = NO_NODE; ++ } ++ } ++ a68_bottom_up_coalesce_pub (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-brackets.cc +@@ -0,0 +1,223 @@ ++/* Recursive-descent parenthesis checker. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* After this checker, we know that at least brackets are matched. This ++ stabilises later parser phases. ++ ++ Note that this checker operates on a linear list of nodes. ++ ++ Error diagnostics are placed near offending lines. */ ++ ++/* Intelligible diagnostics for the bracket checker. */ ++ ++static void ++bracket_check_error (char *txt, int n, const char *bra, const char *ket) ++{ ++ BUFFER buf; ++ ++ if (n == 0) ++ return; ++ ++ const char *strop_ket = a68_strop_keyword (ket); ++ const char *strop_bra = a68_strop_keyword (bra); ++ ++ BUFCLR (buf); ++ if (snprintf (buf, SNPRINTF_SIZE, "missing matching %%<%s%%>", ++ (n > 0 ? strop_ket : strop_bra)) < 0) ++ gcc_unreachable (); ++ ++ if (strlen (txt) > 0) ++ a68_bufcat (txt, " or ", BUFFER_SIZE); ++ a68_bufcat (txt, buf, BUFFER_SIZE); ++} ++ ++/* Diagnose brackets in local branch of the tree. */ ++ ++static char * ++bracket_check_diagnose (NODE_T *p) ++{ ++ int begins = 0, opens = 0, format_delims = 0, format_opens = 0; ++ int subs = 0, ifs = 0, cases = 0, dos = 0; ++ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case BEGIN_SYMBOL: ++ begins++; ++ break; ++ case END_SYMBOL: ++ begins--; ++ break; ++ case OPEN_SYMBOL: ++ opens++; ++ break; ++ case CLOSE_SYMBOL: ++ opens--; ++ break; ++ case FORMAT_DELIMITER_SYMBOL: ++ if (format_delims == 0) ++ format_delims = 1; ++ else ++ format_delims = 0; ++ break; ++ case FORMAT_OPEN_SYMBOL: ++ format_opens++; ++ break; ++ case FORMAT_CLOSE_SYMBOL: ++ format_opens--; ++ break; ++ case SUB_SYMBOL: ++ subs++; ++ break; ++ case BUS_SYMBOL: ++ subs--; ++ break; ++ case IF_SYMBOL: ++ ifs++; ++ break; ++ case FI_SYMBOL: ++ ifs--; ++ break; ++ case CASE_SYMBOL: ++ cases++; ++ break; ++ case ESAC_SYMBOL: ++ cases--; ++ break; ++ case DO_SYMBOL: ++ dos++; ++ break; ++ case OD_SYMBOL: ++ dos--; ++ break; ++ default: ++ break; ++ } ++ } ++ ++ A68 (edit_line)[0] = '\0'; ++ bracket_check_error (A68 (edit_line), begins, "BEGIN", "END"); ++ bracket_check_error (A68 (edit_line), opens, "(", ")"); ++ bracket_check_error (A68 (edit_line), format_opens, "(", ")"); ++ bracket_check_error (A68 (edit_line), format_delims, "$", "$"); ++ bracket_check_error (A68 (edit_line), subs, "[", "]"); ++ bracket_check_error (A68 (edit_line), ifs, "IF", "FI"); ++ bracket_check_error (A68 (edit_line), cases, "CASE", "ESAC"); ++ bracket_check_error (A68 (edit_line), dos, "DO", "OD"); ++ return A68 (edit_line); ++} ++ ++/* Driver for locally diagnosing non-matching tokens. */ ++ ++static NODE_T * ++bracket_check_parse (NODE_T *top, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ int ket = STOP; ++ NODE_T *q = NO_NODE; ++ bool ignore_token = false; ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case BEGIN_SYMBOL: ++ ket = END_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case OPEN_SYMBOL: ++ ket = CLOSE_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case FORMAT_OPEN_SYMBOL: ++ ket = FORMAT_CLOSE_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case SUB_SYMBOL: ++ ket = BUS_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case IF_SYMBOL: ++ ket = FI_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case CASE_SYMBOL: ++ ket = ESAC_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case DO_SYMBOL: ++ ket = OD_SYMBOL; ++ q = bracket_check_parse (top, NEXT (p)); ++ break; ++ case END_SYMBOL: ++ case CLOSE_SYMBOL: ++ case FORMAT_CLOSE_SYMBOL: ++ case BUS_SYMBOL: ++ case FI_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ return p; ++ default: ++ ignore_token = true; ++ } ++ ++ if (ignore_token) ++ ; ++ else if (q != NO_NODE && IS (q, ket)) ++ p = q; ++ else if (q == NO_NODE) ++ { ++ char *diag = bracket_check_diagnose (top); ++ a68_error (p, "incorrect nesting, check for Y", ++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ char *diag = bracket_check_diagnose (top); ++ a68_error (q, "unexpected X, check for Y", ++ ATTRIBUTE (q), ++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ } ++ return NO_NODE; ++} ++ ++/* Driver for globally diagnosing non-matching tokens. */ ++ ++void ++a68_check_parenthesis (NODE_T *top) ++{ ++ if (!setjmp (A68_PARSER (top_down_crash_exit))) ++ { ++ if (bracket_check_parse (top, top) != NO_NODE) ++ a68_error (top, "incorrect nesting, check for Y", ++ "missing or unmatched keyword"); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-debug.cc +@@ -0,0 +1,255 @@ ++/* Debug facilities for the Algol 68 parser. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#define INCLUDE_VECTOR ++#include "system.h" ++#include "coretypes.h" ++#include "tree.h" ++#include "diagnostic.h" ++#include "text-art/types.h" ++#include "text-art/dump.h" ++#include "text-art/dump-widget-info.h" ++#include "text-art/canvas.h" ++#include "text-art/theme.h" ++#include "text-art/tree-widget.h" ++ ++#include "a68.h" ++ ++/* Write a printable representation of the parse tree with top node P to the ++ standard output. */ ++ ++static void ++a68_dump_parse_tree_1 (NODE_T *p, const text_art::dump_widget_info &dwi, ++ text_art::tree_widget &widget, bool tables, bool levels) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ char *symbol; ++ if (ATTRIBUTE (p) == IDENTIFIER ++ || ATTRIBUTE (p) == DEFINING_IDENTIFIER ++ || ATTRIBUTE (p) == DEFINING_OPERATOR ++ || ATTRIBUTE (p) == BOLD_TAG) ++ symbol = xasprintf (" %s", NSYMBOL (p)); ++ else ++ symbol = xstrdup (""); ++ ++ char *tableinfo; ++ if (tables && TABLE (p) != NO_TABLE) ++ tableinfo = xasprintf (" table=%p prev=%p", ++ (void *) TABLE (p), ++ (void *) PREVIOUS (TABLE (p))); ++ else ++ tableinfo = xstrdup (""); ++ ++ char *levelsinfo; ++ if (levels && TABLE (p) != NO_TABLE) ++ levelsinfo = xasprintf (" level=%d", LEVEL (TABLE (p))); ++ else ++ levelsinfo = xstrdup (""); ++ ++ char mode[BUFFER_SIZE]; ++ mode[0] = '\0'; ++ if (MOID (p) != NO_MOID) ++ { ++ MOID_T *moid = MOID (p); ++ mode[0] = '\0'; ++ ++ a68_bufcat (mode, " (", 2); ++ if (IS (moid, SERIES_MODE)) ++ { ++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) ++ a68_bufcat (mode, a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p), ++ BUFFER_SIZE); ++ else ++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); ++ } ++ else ++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); ++ a68_bufcat (mode, ")", 2); ++ } ++ ++ location_t loc = a68_get_node_location (p); ++ std::unique_ptr cwidget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, ++ "%s:%d:%d [%d] %s%s%s%s%s", ++ LOCATION_FILE (loc), ++ LOCATION_LINE (loc), ++ LOCATION_COLUMN (loc), ++ NUMBER (p), ++ a68_attribute_name (ATTRIBUTE (p)), ++ symbol, ++ mode, ++ tableinfo, ++ levelsinfo); ++ free (symbol); ++ free (tableinfo); ++ free (levelsinfo); ++ ++ a68_dump_parse_tree_1 (SUB (p), dwi, *cwidget, tables, levels); ++ widget.add_child (std::move (cwidget)); ++ } ++} ++ ++void ++a68_dump_parse_tree (NODE_T *p, bool tables, bool levels) ++{ ++ text_art::style_manager sm; ++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); ++ text_art::ascii_theme theme; ++ text_art::dump_widget_info dwi (sm, theme, default_style_id); ++ std::unique_ptr widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "Parse Tree"); ++ ++ a68_dump_parse_tree_1 (p, dwi, *widget, tables, levels); ++ ++ text_art::canvas c (widget->to_canvas (sm)); ++ pretty_printer *const pp = global_dc->get_reference_printer (); ++ pp_clear_output_area (pp); ++ c.print_to_pp (pp); ++ printf ("%s", pp_formatted_text (pp)); ++} ++ ++/* Dump the modes in the list MOID. */ ++ ++void ++a68_dump_modes (MOID_T *moid) ++{ ++ for (; moid != NO_MOID; FORWARD (moid)) ++ { ++ printf ("%p %s\n", (void *) moid, ++ a68_moid_to_string (moid, MOID_ERROR_WIDTH, NODE (moid), ++ true /* indicant_value */)); ++ } ++} ++ ++/* Dump a given MOIF. */ ++ ++void ++a68_dump_moif (MOIF_T *moif) ++{ ++ text_art::style_manager sm; ++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); ++ text_art::ascii_theme theme; ++ text_art::dump_widget_info dwi (sm, theme, default_style_id); ++ std::unique_ptr widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module interface: %s", NAME (moif)); ++ ++ std::unique_ptr prelude_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prelude: %s", PRELUDE (moif)); ++ widget->add_child (std::move (prelude_widget)); ++ ++ std::unique_ptr postlude_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "postlude: %s", POSTLUDE (moif)); ++ widget->add_child (std::move (postlude_widget)); ++ ++ /* Mode table. */ ++ std::unique_ptr modes_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "modes"); ++ for (MOID_T *mode : MODES (moif)) ++ { ++ const char *asm_label = ASM_LABEL (mode); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (mode, 80, NO_NODE, false); ++ std::unique_ptr mode_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode: %s: %s", ++ asm_label, ++ a68_moid_to_string (mode, 80, NO_NODE, true)); ++ modes_widget->add_child (std::move (mode_widget)); ++ } ++ widget->add_child (std::move (modes_widget)); ++ ++ /* Module extracts. */ ++ std::unique_ptr mod_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extracts"); ++ for (EXTRACT_T *e : MODULES (moif)) ++ { ++ std::unique_ptr mod_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extract: %s", EXTRACT_SYMBOL (e)); ++ mod_extracts_widget->add_child (std::move (mod_extract_widget)); ++ } ++ widget->add_child (std::move (mod_extracts_widget)); ++ ++ /* Mode extracts. */ ++ std::unique_ptr mode_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extracts"); ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ std::unique_ptr mode_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extract: %s [%s]", ++ EXTRACT_SYMBOL (e), asm_label); ++ mode_extracts_widget->add_child (std::move (mode_extract_widget)); ++ } ++ widget->add_child (std::move (mode_extracts_widget)); ++ ++ /* Priority extracts. */ ++ std::unique_ptr prio_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extracts"); ++ for (EXTRACT_T *e : PRIOS (moif)) ++ { ++ std::unique_ptr prio_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extract: %s [prio: %d]", ++ EXTRACT_SYMBOL (e), EXTRACT_PRIO (e)); ++ prio_extracts_widget->add_child (std::move (prio_extract_widget)); ++ } ++ widget->add_child (std::move (prio_extracts_widget)); ++ ++ /* Identifier extracts. */ ++ std::unique_ptr id_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "identifier extracts"); ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ std::unique_ptr id_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "iden extract: %s [%s] variable=%d inproc=%d", ++ EXTRACT_SYMBOL (e), asm_label, ++ EXTRACT_VARIABLE (e), ++ EXTRACT_IN_PROC (e)); ++ id_extracts_widget->add_child (std::move (id_extract_widget)); ++ } ++ widget->add_child (std::move (id_extracts_widget)); ++ ++ /* Operator extracts. */ ++ std::unique_ptr op_extracts_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "operator extracts"); ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ { ++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); ++ if (asm_label == NULL) ++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); ++ ++ std::unique_ptr op_extract_widget ++ = text_art::tree_widget::from_fmt (dwi, nullptr, "op extract: %s [%s] variable=%d inproc=%d", ++ EXTRACT_SYMBOL (e), asm_label, ++ EXTRACT_VARIABLE (e), ++ EXTRACT_IN_PROC (e)); ++ op_extracts_widget->add_child (std::move (op_extract_widget)); ++ } ++ widget->add_child (std::move (op_extracts_widget)); ++ ++ text_art::canvas c (widget->to_canvas (sm)); ++ pretty_printer *const pp = global_dc->get_reference_printer (); ++ pp_clear_output_area (pp); ++ c.print_to_pp (pp); ++ printf ("%s", pp_formatted_text (pp)); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-extract.cc +@@ -0,0 +1,895 @@ ++/* Extract tags from phrases. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* This is part of the bottom-up parser. Here is a set of routines that gather ++ definitions from phrases. This way we can apply tags before defining them. ++ These routines do not look very elegant as they have to scan through all kind ++ of symbols to find a pattern that they recognise. */ ++ ++/* Insert alt equals symbol. */ ++ ++static void ++insert_alt_equals (NODE_T *p) ++{ ++ NODE_T *q = a68_new_node (); ++ *q = *p; ++ INFO (q) = a68_new_node_info (); ++ *INFO (q) = *INFO (p); ++ GINFO (q) = a68_new_genie_info (); ++ *GINFO (q) = *GINFO (p); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), "=")); ++ NEXT (p) = q; ++ PREVIOUS (q) = p; ++ if (NEXT (q) != NO_NODE) ++ PREVIOUS (NEXT (q)) = q; ++} ++ ++/* Detect redefined keyword. */ ++ ++static void ++detect_redefined_keyword (NODE_T *p, int construct) ++{ ++ if (p != NO_NODE && a68_whether (p, KEYWORD, EQUALS_SYMBOL, STOP)) ++ a68_error (p, "attempt to redefine keyword Y in A", ++ NSYMBOL (p), construct); ++} ++ ++/* Skip anything until a FED or ALT_ACCESS_SYMBOL is found. */ ++ ++static NODE_T * ++skip_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FED_SYMBOL) || IS (p, ALT_ACCESS_SYMBOL)) ++ return p; ++ } ++ ++ return NO_NODE; ++} ++ ++/* Skip anything until a comma, semicolon or EXIT is found. */ ++ ++static NODE_T * ++skip_unit (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, COMMA_SYMBOL)) ++ return p; ++ else if (IS (p, SEMI_SYMBOL)) ++ return p; ++ else if (IS (p, EXIT_SYMBOL)) ++ return p; ++ } ++ return NO_NODE; ++} ++ ++/* Attribute of entry in symbol table. */ ++ ++static int ++find_tag_definition (TABLE_T *table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ int ret = 0; ++ bool found = false; ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += INDICANT; ++ found = true; ++ } ++ } ++ found = false; ++ for (TAG_T *s = OPERATORS (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += OPERATOR; ++ found = true; ++ } ++ } ++ found = false; ++ for (TAG_T *s = MODULES (table); s != NO_TAG && !found; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ { ++ ret += MODULE_INDICANT; ++ found = true; ++ } ++ } ++ ++ if (ret == 0) ++ return find_tag_definition (PREVIOUS (table), name); ++ else ++ return ret; ++ } ++ else ++ return 0; ++} ++ ++/* Fill in whether bold tag is operator, indicant or module indicant. */ ++ ++void ++a68_elaborate_bold_tags (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, BOLD_TAG)) ++ { ++ switch (find_tag_definition (TABLE (q), NSYMBOL (q))) ++ { ++ case 0: ++ a68_error (q, "tag S has not been declared properly"); ++ break; ++ case INDICANT: ++ ATTRIBUTE (q) = INDICANT; ++ break; ++ case OPERATOR: ++ ATTRIBUTE (q) = OPERATOR; ++ break; ++ case MODULE_INDICANT: ++ ATTRIBUTE (q) = MODULE_INDICANT; ++ break; ++ } ++ } ++ } ++} ++ ++/* Skip declarer, or argument pack and declarer. */ ++ ++static NODE_T * ++skip_pack_declarer (NODE_T *p) ++{ ++ /* Skip () REF [] REF FLEX [] [] ... */ ++ while (p != NO_NODE ++ && (a68_is_one_of (p, SUB_SYMBOL, OPEN_SYMBOL, REF_SYMBOL, ++ FLEX_SYMBOL, SHORT_SYMBOL, LONG_SYMBOL, STOP))) ++ { ++ FORWARD (p); ++ } ++ ++ /* Skip STRUCT (), UNION () or PROC [()]. */ ++ if (p != NO_NODE && (a68_is_one_of (p, STRUCT_SYMBOL, UNION_SYMBOL, STOP))) ++ return NEXT (p); ++ else if (p != NO_NODE && IS (p, PROC_SYMBOL)) ++ return skip_pack_declarer (NEXT (p)); ++ else ++ return p; ++} ++ ++/* Extract a revelation. */ ++ ++static void ++extract_revelation (NODE_T *q, bool is_public ATTRIBUTE_UNUSED) ++{ ++ /* Store in the symbol table. */ ++ TAG_T *tag = a68_add_tag (TABLE (q), MODULE_SYMBOL, q, NO_MOID, STOP); ++ gcc_assert (tag != NO_TAG); ++ EXPORTED (tag) = false; // XXX depends on PUB! ++ /* Import the MOIF and install it in the tag. */ ++ MOIF_T *moif = a68_open_packet (NSYMBOL (q)); ++ if (moif == NULL) ++ { ++ a68_error (q, "cannot find module Z", NSYMBOL (q)); ++ return; ++ } ++ MOIF (tag) = moif; // XXX add to existing list of moifs. ++ ++ /* Store all the modes from the MOIF in the moid list. ++ ++ The front-end depends on being able to compare any two modes by pointer ++ value. For example, the parser mode equivalence and coercion code relies ++ on this. The lowerer also relies on this to make sure the same lowered ++ trees are used for the same modes. */ ++ ++ for (MOID_T *m : MODES (moif)) ++ { ++ /* Note that m == NO_MOID if the imported mode was already known to the ++ compiler and has been replaced. */ ++ if (m != NO_MOID) ++ { ++ MOID_T *r = a68_register_extra_mode (&TOP_MOID (&A68_JOB), m); ++ if (r != m) ++ gcc_unreachable (); ++ } ++ } ++ ++ /* Store mode indicants from the MOIF in the symbol table, ++ and also in the moid list. */ ++ for (EXTRACT_T *e : INDICANTS (moif)) ++ { ++ /* Indicants stored in the indicants area of a symbol ++ table are expected to be INDICANT nodes originating in ++ parsing, with the following subtree: ++ ++ INDICANT - EQUALS_SYMBOL - DECLARER ++ ++ where MOID (DECLARER) is determined to be the mode ++ associated by INDICANT, or its "equivalent" mode. ++ Therefore we have to synthesize something like that ++ here, since the mode comes from a module interface and ++ we don't have a declarer tree for it.. */ ++ ++ /* INDICANT node. */ ++ NODE_T *n = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* EQUALS_SYMBOL node. */ ++ NEXT (n) = a68_some_node ("="); ++ ATTRIBUTE (NEXT (n)) = EQUALS_SYMBOL; ++ /* DECLARER node. */ ++ NEXT (NEXT (n)) = a68_some_node (""); ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ MOID (NEXT (NEXT (n))) = EXTRACT_MODE (e); ++ TABLE (n) = TABLE (q); ++ ++ /* Now add the INDICANT subtree to the symbol table of ++ this access clause lexical level. */ ++ TAG_T *tag = a68_add_tag (TABLE (q), INDICANT, n, NO_MOID, 0); ++ gcc_assert (tag != NO_TAG); ++ ++ /* Finally add the mode indicant to the moids list. Note ++ that the mode in DECLARER is associated to the ++ INDICANT in the table at some point later, via ++ EQUIVALENT. Hence the NO_MOID in the call to ++ a68_add_mode. */ ++ MOID_T *effective_mode = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, ++ 0, n, NO_MOID, NO_PACK); ++ gcc_assert (effective_mode != NO_MOID); ++ } ++ ++ /* Store priorities from the MOIF. */ ++ for (EXTRACT_T *e : PRIOS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* XXX sensible location somehow? */ ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ TAG_T *tag = a68_add_tag (TABLE (q), PRIO_SYMBOL, n, NO_MOID, ++ EXTRACT_PRIO (e)); ++ gcc_assert (tag != NO_TAG); ++ MOIF (tag) = moif; // XXX add to existing list of moifs. ++ } ++ ++ /* Store identifiers from the MOIF. */ ++ for (EXTRACT_T *e : IDENTIFIERS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e))); ++ /* XXX sensible location somehow? */ ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ ++ TAG_T *tag = a68_add_tag (TABLE (q), IDENTIFIER, ++ n, EXTRACT_MODE (e), NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); ++ VARIABLE (tag) = VARIABLE (e); ++ IN_PROC (tag) = IN_PROC (e); ++ HEAP (tag) = STATIC_SYMBOL; ++ MOIF (tag) = moif; ++ } ++ ++ /* Store operators from the MOIF. */ ++ for (EXTRACT_T *e : OPERATORS (moif)) ++ { ++ NODE_T *n ++ = a68_some_node (a68_demangle_symbol (NAME (moif), ++ EXTRACT_SYMBOL (e), ++ true /* operator */)); ++ MOID (n) = EXTRACT_MODE (e); ++ LINE (INFO (n)) = LINE (INFO (q)); ++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); ++ TABLE (n) = TABLE (q); ++ TAG_T *tag = a68_add_tag (TABLE (q), OP_SYMBOL, ++ n, EXTRACT_MODE (e), STOP); ++ gcc_assert (tag != NO_TAG); ++ VARIABLE (tag) = VARIABLE (e); ++ IN_PROC (tag) = IN_PROC (e); ++ HEAP (tag) = STATIC_SYMBOL; ++ MOIF (tag) = moif; ++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); ++ } ++} ++ ++/* Search [MODE|MODULE] A = .., B = .. ++ and ACCESS A, B, .. ++ and store indicants. */ ++ ++void ++a68_extract_indicants (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (IS (q, ACCESS_SYMBOL) || IS (q, ALT_ACCESS_SYMBOL)) ++ { ++ /* An access clause implies the declaration of module indicants, ++ provided they are found in a suitable packet. */ ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (IS (q, BOLD_TAG)) ++ { ++ extract_revelation (q, false /* is_public */); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, PUBLIC_SYMBOL, BOLD_TAG, STOP)) ++ { ++ extract_revelation (q, true /* is_public */); ++ FORWARD (q); ++ FORWARD (q); ++ } ++ } ++ while (q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else if (IS (q, MODULE_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ /* Store in the symbol table. ++ XXX also add to global list of modules? ++ Position of definition (q) connects to this lexical ++ level! */ ++ ATTRIBUTE (q) = DEFINING_MODULE_INDICANT; ++ TAG_T *tag = a68_add_tag (TABLE (p), MODULE_SYMBOL, q, NO_MOID, STOP); ++ gcc_assert (tag != NO_TAG); ++ EXPORTED (tag) = true; ++ FORWARD (q); ++ ATTRIBUTE (q) = EQUALS_SYMBOL; /* XXX why not ALT_EQUALS_SYMBOL */ ++ q = skip_module_text (NEXT (q)); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else if (IS (q, MODE_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, MODE_DECLARATION); ++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ /* Store in the symbol table, but also in the moid list. ++ Position of definition (q) connects to this lexical ++ level! */ ++ if (a68_add_tag (TABLE (p), INDICANT, q, NO_MOID, STOP) == NO_TAG) ++ gcc_unreachable (); ++ if (a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, q, NO_MOID, NO_PACK) == NO_MOID) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_INDICANT; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_pack_declarer (NEXT (q)); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++#define GET_PRIORITY(q, k) \ ++ do \ ++ { \ ++ errno=0; \ ++ (k) = atoi (NSYMBOL (q)); \ ++ if (errno != 0) { \ ++ a68_error ((q), "invalid priority declaration"); \ ++ (k) = MAX_PRIORITY; \ ++ } else if ((k) < 1 || (k) > MAX_PRIORITY) { \ ++ a68_error ((q), "invalid priority declaration"); \ ++ (k) = MAX_PRIORITY; \ ++ } \ ++ } \ ++ while (0) ++ ++/* Search PRIO X = .., Y = .. and store priorities. */ ++ ++void ++a68_extract_priorities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ while (q != NO_NODE) ++ { ++ if (IS (q, PRIO_SYMBOL)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, PRIORITY_DECLARATION); ++ /* An operator tag like ++ or && gives strange errors so we catch ++ it here. */ ++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) ++ { ++ NODE_T *y = q; ++ a68_error (q, "invalid operator tag"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ /* Remove one superfluous operator, and hope it was only ++ one. */ ++ NEXT (q) = NEXT_NEXT (q); ++ PREVIOUS (NEXT (q)) = q; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, INT_DENOTATION, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ NODE_T *y = q; ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) ++ { ++ siga = false; ++ } ++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ NODE_T *y = q; ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ FORWARD (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } else if (a68_whether (q, BOLD_TAG, INT_DENOTATION, STOP) ++ || a68_whether (q, OPERATOR, INT_DENOTATION, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, INT_DENOTATION, STOP)) ++ { ++ /* The scanner cannot separate operator and "=" sign so we do this here. */ ++ int len = (int) strlen (NSYMBOL (q)); ++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') ++ { ++ NODE_T *y = q; ++ char *sym = (char *) xmalloc ((size_t) (len + 1)); ++ a68_bufcpy (sym, NSYMBOL (q), len + 1); ++ sym[len - 1] = '\0'; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); ++ free (sym); ++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') ++ a68_error (q, "probably a missing symbol near invalid operator S"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ insert_alt_equals (q); ++ q = NEXT_NEXT (q); ++ int k; ++ GET_PRIORITY (q, k); ++ ATTRIBUTE (q) = PRIORITY; ++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) ++ gcc_unreachable (); ++ FORWARD (q); ++ } ++ else ++ siga = false; ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search OP [( .. ) ..] X = .., Y = .. and store operators. */ ++ ++void ++a68_extract_operators (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (!IS (q, OP_SYMBOL)) ++ FORWARD (q); ++ else ++ { ++ bool siga = true; ++ bool in_proc = true; ++ /* Skip operator plan. */ ++ if (NEXT (q) != NO_NODE && IS (NEXT (q), OPEN_SYMBOL)) ++ { ++ q = skip_pack_declarer (NEXT (q)); ++ in_proc = false; ++ } ++ /* Sample operators. */ ++ if (q != NO_NODE) ++ { ++ do ++ { ++ FORWARD (q); ++ detect_redefined_keyword (q, OPERATOR_DECLARATION); ++ /* Unacceptable operator tags like ++ or && could give ++ strange errors. */ ++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) ++ { ++ a68_error (q, "invalid operator tag"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ /* Remove one superfluous operator, and hope it was only one. */ ++ NEXT (q) = NEXT_NEXT (q); ++ PREVIOUS (NEXT (q)) = q; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, STOP) ++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, STOP)) ++ { ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) ++ { ++ siga = false; ++ } ++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) ++ { ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (q != NO_NODE && (a68_is_one_of (q, OPERATOR, BOLD_TAG, EQUALS_SYMBOL, STOP))) ++ { ++ /* The scanner cannot separate operator and "=" sign so ++ we do this here. */ ++ int len = (int) strlen (NSYMBOL (q)); ++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') ++ { ++ char *sym = (char *) xmalloc ((size_t) (len + 1)); ++ a68_bufcpy (sym, NSYMBOL (q), len + 1); ++ sym[len - 1] = '\0'; ++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); ++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') ++ a68_error (q, "probably a missing symbol near invalid operator S"); ++ ATTRIBUTE (q) = DEFINING_OPERATOR; ++ insert_alt_equals (q); ++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); ++ if (t == NO_TAG) ++ gcc_unreachable (); ++ IN_PROC (t) = in_proc; ++ FORWARD (q); ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ } ++ } ++} ++ ++/* Search and store labels. */ ++ ++void ++a68_extract_labels (NODE_T *p, int expect) ++{ ++ /* Only handle candidate phrases as not to search indexers!. */ ++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, IDENTIFIER, COLON_SYMBOL, STOP)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), LABEL, q, NO_MOID, LOCAL_LABEL); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ UNIT (z) = NO_NODE; ++ } ++ } ++ } ++} ++ ++/* Search MOID x = .., y = .. and store identifiers. */ ++ ++static void ++extract_identities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ if (a68_whether ((FORWARD (q)), IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ if (tag == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ FORWARD (q); ++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search MOID x [:= ..], y [:= ..] and store identifiers. */ ++ ++static void ++extract_variables (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, IDENTIFIER, STOP) ++ || a68_whether (q, LOC_SYMBOL, DECLARER, IDENTIFIER, STOP) ++ || a68_whether (q, DECLARER, IDENTIFIER, STOP)) ++ { ++ if (!IS (q, DECLARER)) ++ FORWARD (q); ++ ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, STOP)) ++ { ++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ ATTRIBUTE (NEXT (q)) = ASSIGN_SYMBOL; ++ } ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ if (tag == NO_TAG) ++ gcc_unreachable (); ++ VARIABLE (tag) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search PROC x = .., y = .. and stores identifiers. */ ++ ++static void ++extract_proc_identities (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ TAG_T *t = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ IN_PROC (t) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) ++ gcc_unreachable (); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; ++ q = skip_unit (q); ++ } ++ else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Search PROC x [:= ..], y [:= ..]; store identifiers. */ ++ ++static void ++extract_proc_variables (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, STOP)) ++ { ++ bool siga = true; ++ do ++ { ++ FORWARD (q); ++ if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) ++ { ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ VARIABLE (tag) = true; ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ q = skip_unit (FORWARD (q)); ++ } ++ else if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) ++ { ++ /* Handle common error in ALGOL 68 programs. */ ++ a68_error (q, "mixed identity-declaration and variable-declaration"); ++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); ++ gcc_assert (tag != NO_TAG); ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ ATTRIBUTE (FORWARD (q)) = ASSIGN_SYMBOL; ++ q = skip_unit (q); ++ } else ++ siga = false; ++ } ++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); ++ } ++ else ++ FORWARD (q); ++ } ++} ++ ++/* Schedule gathering of definitions in a phrase. */ ++ ++void ++a68_extract_declarations (NODE_T *p) ++{ ++ /* Get definitions so we know what is defined in this range. */ ++ extract_identities (p); ++ extract_variables (p); ++ extract_proc_identities (p); ++ extract_proc_variables (p); ++ /* By now we know whether "=" is an operator or not. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, EQUALS_SYMBOL)) ++ ATTRIBUTE (q) = OPERATOR; ++ else if (IS (q, ALT_EQUALS_SYMBOL)) ++ ATTRIBUTE (q) = EQUALS_SYMBOL; ++ } ++ ++ /* Get qualifiers. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (a68_whether (q, LOC_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, LOC_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ if (a68_whether (q, HEAP_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) ++ a68_make_sub (q, q, QUALIFIER); ++ } ++ ++ /* Give priorities to operators. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, OPERATOR)) ++ { ++ if (a68_find_tag_global (TABLE (q), OP_SYMBOL, NSYMBOL (q))) ++ { ++ TAG_T *s = a68_find_tag_global (TABLE (q), PRIO_SYMBOL, NSYMBOL (q)); ++ ++ if (s != NO_TAG) ++ PRIO (INFO (q)) = PRIO (s); ++ else ++ PRIO (INFO (q)) = 0; ++ } ++ else ++ { ++ a68_error (q, "tag S has not been declared properly"); ++ PRIO (INFO (q)) = 1; ++ } ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-keywords.cc +@@ -0,0 +1,254 @@ ++/* Keyword tables. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Apply stropping to the given keyword and return its written form, which must ++ be upper-case. */ ++ ++const char * ++a68_strop_keyword (const char *keyword) ++{ ++ char *stropped = (char *) alloca (strlen (keyword) + 1); ++ memcpy (stropped, keyword, strlen (keyword) + 1); ++ ++ if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING) ++ { ++ for (char *p = stropped; *p; ++p) ++ *p = TOLOWER (*p); ++ } ++ ++ return ggc_strdup (stropped); ++} ++ ++/* Add token to the token tree. */ ++ ++TOKEN_T * ++a68_add_token (TOKEN_T **p, const char *t) ++{ ++ while (*p != NO_TOKEN) ++ { ++ int k = strcmp (t, TEXT (*p)); ++ ++ if (k < 0) ++ p = &LESS (*p); ++ else if (k > 0) ++ p = &MORE (*p); ++ else ++ return *p; ++ } ++ ++ *p = (TOKEN_T *) ggc_cleared_alloc (); ++ TEXT (*p) = ggc_strdup (t); ++ LESS (*p) = MORE (*p) = NO_TOKEN; ++ return *p; ++} ++ ++/* Find keyword, from token name. */ ++ ++KEYWORD_T * ++a68_find_keyword (KEYWORD_T *p, const char *t) ++{ ++ while (p != NO_KEYWORD) ++ { ++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ int k = (case_insensitive ++ ? strcasecmp (t, TEXT (p)) ++ : strcmp (t, TEXT (p))); ++ ++ if (k < 0) ++ p = LESS (p); ++ else if (k > 0) ++ p = MORE (p); ++ else ++ return p; ++ } ++ ++ return NO_KEYWORD; ++} ++ ++/* Find keyword, from attribute. */ ++ ++KEYWORD_T * ++a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a) ++{ ++ if (p == NO_KEYWORD) ++ return NO_KEYWORD; ++ else if (a == ATTRIBUTE (p)) ++ return p; ++ else ++ { ++ KEYWORD_T *z; ++ ++ if ((z = a68_find_keyword_from_attribute (LESS (p), a)) != NO_KEYWORD) ++ return z; ++ else if ((z = a68_find_keyword_from_attribute (MORE (p), a)) != NO_KEYWORD) ++ return z; ++ } ++ ++ return NO_KEYWORD; ++} ++ ++/* Add keyword to the tree. */ ++ ++static void ++add_keyword (KEYWORD_T **p, enum a68_attribute a, const char *t) ++{ ++ while (*p != NO_KEYWORD) ++ { ++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); ++ int k = (case_insensitive ++ ? strcasecmp (t, TEXT (*p)) ++ : strcmp (t, TEXT (*p))); ++ if (k < 0) ++ p = &LESS (*p); ++ else ++ p = &MORE (*p); ++ } ++ ++ *p = (KEYWORD_T *) ggc_cleared_alloc (); ++ ATTRIBUTE (*p) = a; ++ TEXT (*p) = t; ++ LESS (*p) = MORE (*p) = NO_KEYWORD; ++} ++ ++/* Make tables of keywords and non-terminals. */ ++ ++void ++a68_set_up_tables (void) ++{ ++ /* Entries are randomised to balance the tree. */ ++ if (OPTION_STRICT (&A68_JOB) == false) ++ { ++ /* Symbols from GNU extensions. */ ++ add_keyword (&A68 (top_keyword), ANDF_SYMBOL, "ANDTH"); ++ add_keyword (&A68 (top_keyword), ORF_SYMBOL, "OREL"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_BEGIN_SYMBOL, "{"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "}"); ++ ++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) ++ { ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_BEGIN_SYMBOL, "NOTE"); ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_END_SYMBOL, "ETON"); ++ } ++ ++ /* Symbols from MR. */ ++ add_keyword (&A68 (top_keyword), ACCESS_SYMBOL, "ACCESS"); ++ add_keyword (&A68 (top_keyword), DEF_SYMBOL, "DEF"); ++ add_keyword (&A68 (top_keyword), POSTLUDE_SYMBOL, "POSTLUDE"); ++ add_keyword (&A68 (top_keyword), FED_SYMBOL, "FED"); ++ add_keyword (&A68 (top_keyword), FORMAL_NEST_SYMBOL, "NEST"); ++ add_keyword (&A68 (top_keyword), MODULE_SYMBOL, "MODULE"); ++ add_keyword (&A68 (top_keyword), EGG_SYMBOL, "EGG"); ++ add_keyword (&A68 (top_keyword), PUBLIC_SYMBOL, "PUB"); ++ } ++ ++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) ++ { ++ /* The following representations do not work well with stropping regimes ++ in which reserved words live in the same namespace than ++ tags/identifiers. The alternative "brief" representations for these ++ symbols shall be used instead. */ ++ add_keyword (&A68 (top_keyword), STYLE_I_COMMENT_SYMBOL, "CO"); ++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_SYMBOL, "COMMENT"); ++ add_keyword (&A68 (top_keyword), STYLE_II_COMMENT_SYMBOL, "#"); ++ } ++ ++ add_keyword (&A68 (top_keyword), POINT_SYMBOL, "."); ++ add_keyword (&A68 (top_keyword), COLON_SYMBOL, ":"); ++ add_keyword (&A68 (top_keyword), THEN_BAR_SYMBOL, "|"); ++ add_keyword (&A68 (top_keyword), SUB_SYMBOL, "["); ++ add_keyword (&A68 (top_keyword), BY_SYMBOL, "BY"); ++ add_keyword (&A68 (top_keyword), OP_SYMBOL, "OP"); ++ add_keyword (&A68 (top_keyword), COMMA_SYMBOL, ","); ++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "AT"); ++ add_keyword (&A68 (top_keyword), PRIO_SYMBOL, "PRIO"); ++ add_keyword (&A68 (top_keyword), END_SYMBOL, "END"); ++ add_keyword (&A68 (top_keyword), GO_SYMBOL, "GO"); ++ add_keyword (&A68 (top_keyword), TO_SYMBOL, "TO"); ++ add_keyword (&A68 (top_keyword), ELSE_BAR_SYMBOL, "|:"); ++ add_keyword (&A68 (top_keyword), THEN_SYMBOL, "THEN"); ++ add_keyword (&A68 (top_keyword), TRUE_SYMBOL, "TRUE"); ++ add_keyword (&A68 (top_keyword), PROC_SYMBOL, "PROC"); ++ add_keyword (&A68 (top_keyword), FOR_SYMBOL, "FOR"); ++ add_keyword (&A68 (top_keyword), GOTO_SYMBOL, "GOTO"); ++ add_keyword (&A68 (top_keyword), WHILE_SYMBOL, "WHILE"); ++ add_keyword (&A68 (top_keyword), IS_SYMBOL, ":=:"); ++ add_keyword (&A68 (top_keyword), ASSIGN_TO_SYMBOL, "=:"); ++ add_keyword (&A68 (top_keyword), COMPL_SYMBOL, "COMPL"); ++ add_keyword (&A68 (top_keyword), FROM_SYMBOL, "FROM"); ++ add_keyword (&A68 (top_keyword), BOLD_PRAGMAT_SYMBOL, "PRAGMAT"); ++ add_keyword (&A68 (top_keyword), DO_SYMBOL, "DO"); ++ add_keyword (&A68 (top_keyword), CASE_SYMBOL, "CASE"); ++ add_keyword (&A68 (top_keyword), LOC_SYMBOL, "LOC"); ++ add_keyword (&A68 (top_keyword), CHAR_SYMBOL, "CHAR"); ++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, ":/=:"); ++ add_keyword (&A68 (top_keyword), REF_SYMBOL, "REF"); ++ add_keyword (&A68 (top_keyword), NIL_SYMBOL, "NIL"); ++ add_keyword (&A68 (top_keyword), ASSIGN_SYMBOL, ":="); ++ add_keyword (&A68 (top_keyword), FI_SYMBOL, "FI"); ++ add_keyword (&A68 (top_keyword), FILE_SYMBOL, "FILE"); ++ add_keyword (&A68 (top_keyword), PAR_SYMBOL, "PAR"); ++ add_keyword (&A68 (top_keyword), ASSERT_SYMBOL, "ASSERT"); ++ add_keyword (&A68 (top_keyword), OUSE_SYMBOL, "OUSE"); ++ add_keyword (&A68 (top_keyword), IN_SYMBOL, "IN"); ++ add_keyword (&A68 (top_keyword), LONG_SYMBOL, "LONG"); ++ add_keyword (&A68 (top_keyword), SEMI_SYMBOL, ";"); ++ add_keyword (&A68 (top_keyword), EMPTY_SYMBOL, "EMPTY"); ++ add_keyword (&A68 (top_keyword), MODE_SYMBOL, "MODE"); ++ add_keyword (&A68 (top_keyword), IF_SYMBOL, "IF"); ++ add_keyword (&A68 (top_keyword), OD_SYMBOL, "OD"); ++ add_keyword (&A68 (top_keyword), OF_SYMBOL, "OF"); ++ add_keyword (&A68 (top_keyword), STRUCT_SYMBOL, "STRUCT"); ++ add_keyword (&A68 (top_keyword), STYLE_I_PRAGMAT_SYMBOL, "PR"); ++ add_keyword (&A68 (top_keyword), BUS_SYMBOL, "]"); ++ add_keyword (&A68 (top_keyword), SKIP_SYMBOL, "SKIP"); ++ add_keyword (&A68 (top_keyword), SHORT_SYMBOL, "SHORT"); ++ add_keyword (&A68 (top_keyword), IS_SYMBOL, "IS"); ++ add_keyword (&A68 (top_keyword), ESAC_SYMBOL, "ESAC"); ++ add_keyword (&A68 (top_keyword), CHANNEL_SYMBOL, "CHANNEL"); ++ add_keyword (&A68 (top_keyword), REAL_SYMBOL, "REAL"); ++ add_keyword (&A68 (top_keyword), STRING_SYMBOL, "STRING"); ++ add_keyword (&A68 (top_keyword), BOOL_SYMBOL, "BOOL"); ++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, "ISNT"); ++ add_keyword (&A68 (top_keyword), FALSE_SYMBOL, "FALSE"); ++ add_keyword (&A68 (top_keyword), UNION_SYMBOL, "UNION"); ++ add_keyword (&A68 (top_keyword), OUT_SYMBOL, "OUT"); ++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "{"); ++ add_keyword (&A68 (top_keyword), OPEN_SYMBOL, "("); ++ add_keyword (&A68 (top_keyword), BEGIN_SYMBOL, "BEGIN"); ++ add_keyword (&A68 (top_keyword), FLEX_SYMBOL, "FLEX"); ++ add_keyword (&A68 (top_keyword), VOID_SYMBOL, "VOID"); ++ add_keyword (&A68 (top_keyword), BITS_SYMBOL, "BITS"); ++ add_keyword (&A68 (top_keyword), ELSE_SYMBOL, "ELSE"); ++ add_keyword (&A68 (top_keyword), EXIT_SYMBOL, "EXIT"); ++ add_keyword (&A68 (top_keyword), HEAP_SYMBOL, "HEAP"); ++ add_keyword (&A68 (top_keyword), INT_SYMBOL, "INT"); ++ add_keyword (&A68 (top_keyword), BYTES_SYMBOL, "BYTES"); ++ add_keyword (&A68 (top_keyword), SEMA_SYMBOL, "SEMA"); ++ add_keyword (&A68 (top_keyword), CLOSE_SYMBOL, ")"); ++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "@"); ++ add_keyword (&A68 (top_keyword), ELIF_SYMBOL, "ELIF"); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-modes.cc +@@ -0,0 +1,1325 @@ ++/* Mode table management. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* ++ * Mode collection, equivalencing and derived modes. ++ */ ++ ++/* Few forward references. */ ++ ++static MOID_T *get_mode_from_declarer (NODE_T *p); ++ ++/* ++ * Mode service routines. ++ */ ++ ++/* Count bounds in declarer in tree. */ ++ ++static int ++count_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else ++ { ++ if (IS (p, BOUND)) ++ return 1 + count_bounds (NEXT (p)); ++ else ++ return count_bounds (NEXT (p)) + count_bounds (SUB (p)); ++ } ++} ++ ++/* Count number of SHORTs or LONGs. */ ++ ++static int ++count_sizety (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else if (IS (p, LONGETY)) ++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); ++ else if (IS (p, SHORTETY)) ++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); ++ else if (IS (p, LONG_SYMBOL)) ++ return 1; ++ else if (IS (p, SHORT_SYMBOL)) ++ return -1; ++ else ++ return 0; ++} ++ ++/* Count moids in a pack. */ ++ ++int ++a68_count_pack_members (PACK_T *u) ++{ ++ int k = 0; ++ ++ for (; u != NO_PACK; FORWARD (u)) ++ k++; ++ return k; ++} ++ ++/* Replace a mode by its equivalent mode. */ ++ ++static void ++resolve_equivalent (MOID_T **m) ++{ ++ while ((*m) != NO_MOID ++ && EQUIVALENT ((*m)) != NO_MOID ++ && (*m) != EQUIVALENT (*m)) ++ { ++ (*m) = EQUIVALENT (*m); ++ } ++} ++ ++/* Reset moid. */ ++ ++static void ++reset_moid_tree (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ MOID (p) = NO_MOID; ++ reset_moid_tree (SUB (p)); ++ } ++} ++ ++/* Renumber moids. */ ++ ++void ++a68_renumber_moids (MOID_T *p, int n) ++{ ++ if (p != NO_MOID) ++ { ++ NUMBER (p) = n; ++ a68_renumber_moids (NEXT (p), n + 1); ++ } ++} ++ ++/* See whether a mode equivalent to the mode M exists in the global mode table, ++ and return it. Return NO_MOID if no equivalent mode is found. */ ++ ++MOID_T * ++a68_search_equivalent_mode (MOID_T *m) ++{ ++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) ++ { ++ if (a68_prove_moid_equivalence (head, m)) ++ return head; ++ } ++ ++ return NO_MOID; ++} ++ ++/* Register mode in the global mode table, if mode is unique. */ ++ ++MOID_T * ++a68_register_extra_mode (MOID_T **z, MOID_T *u) ++{ ++ /* If we already know this mode, return the existing entry; otherwise link it ++ in. */ ++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) ++ { ++ if (a68_prove_moid_equivalence (head, u)) ++ return head; ++ } ++ ++ /* Link to chain and exit. */ ++ NUMBER (u) = A68 (mode_count)++; ++ NEXT (u) = (*z); ++ return *z = u; ++} ++ ++/* Create a new mode. */ ++ ++MOID_T * ++a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) ++{ ++ MOID_T *new_mode = a68_new_moid (); ++ ++ if (sub == NO_MOID) ++ { ++ if (att == REF_SYMBOL ++ || att == FLEX_SYMBOL ++ || att == ROW_SYMBOL) ++ gcc_unreachable (); ++ } ++ ++ USE (new_mode) = false; ++ ATTRIBUTE (new_mode) = att; ++ DIM (new_mode) = dim; ++ NODE (new_mode) = node; ++ HAS_ROWS (new_mode) = (att == ROW_SYMBOL); ++ SUB (new_mode) = sub; ++ PACK (new_mode) = pack; ++ NEXT (new_mode) = NO_MOID; ++ EQUIVALENT (new_mode) = NO_MOID; ++ SLICE (new_mode) = NO_MOID; ++ DEFLEXED (new_mode) = NO_MOID; ++ NAME (new_mode) = NO_MOID; ++ MULTIPLE (new_mode) = NO_MOID; ++ ROWED (new_mode) = NO_MOID; ++ ++ return new_mode; ++} ++ ++/* Create a new mode and add it to chain Z. */ ++ ++MOID_T * ++a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) ++{ ++ MOID_T *new_mode = a68_create_mode (att, dim, node, sub, pack); ++ return a68_register_extra_mode (z, new_mode); ++} ++ ++/* Contract a UNION. */ ++ ++void ++a68_contract_union (MOID_T *u) ++{ ++ for (PACK_T *s = PACK (u); s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t = s; ++ ++ while (t != NO_PACK) ++ { ++ if (NEXT (t) != NO_PACK && MOID (NEXT (t)) == MOID (s)) ++ { ++ MOID (t) = MOID (t); ++ NEXT (t) = NEXT_NEXT (t); ++ } ++ else ++ FORWARD (t); ++ } ++ } ++} ++ ++/* Absorb UNION pack. */ ++ ++PACK_T * ++a68_absorb_union_pack (PACK_T * u) ++{ ++ PACK_T *z; ++ bool siga; ++ ++ do ++ { ++ z = NO_PACK; ++ siga = false; ++ for (PACK_T *t = u; t != NO_PACK; FORWARD (t)) ++ { ++ if (IS (MOID (t), UNION_SYMBOL)) ++ { ++ siga = true; ++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) ++ (void) a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); ++ } ++ else ++ { ++ (void) a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); ++ } ++ } ++ u = z; ++ } ++ while (siga); ++ return z; ++} ++ ++/* Add row and its slices to chain, recursively. */ ++ ++static MOID_T * ++add_row (MOID_T **p, int dim, MOID_T *sub, NODE_T *n, bool derivate) ++{ ++ MOID_T *q = a68_add_mode (p, ROW_SYMBOL, dim, n, sub, NO_PACK); ++ ++ DERIVATE (q) |= derivate; ++ if (dim > 1) ++ SLICE (q) = add_row (&NEXT (q), dim - 1, sub, n, derivate); ++ else ++ SLICE (q) = sub; ++ return q; ++} ++ ++/* Add a moid to a pack, maybe with a (field) name. */ ++ ++void ++a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) ++{ ++ PACK_T *z = a68_new_pack (); ++ ++ MOID (z) = m; ++ TEXT (z) = text; ++ NODE (z) = node; ++ NEXT (z) = *p; ++ PREVIOUS (z) = NO_PACK; ++ if (NEXT (z) != NO_PACK) ++ PREVIOUS (NEXT (z)) = z; ++ ++ /* Link in chain. */ ++ *p = z; ++} ++ ++/* Add a moid to a pack, maybe with a (field) name. */ ++ ++void ++a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) ++{ ++ PACK_T *z = a68_new_pack (); ++ ++ MOID (z) = m; ++ TEXT (z) = text; ++ NODE (z) = node; ++ NEXT (z) = NO_PACK; ++ if (NEXT (z) != NO_PACK) ++ PREVIOUS (NEXT (z)) = z; ++ ++ /* Link in chain. */ ++ while ((*p) != NO_PACK) ++ p = &(NEXT (*p)); ++ PREVIOUS (z) = (*p); ++ (*p) = z; ++} ++ ++/* Absorb UNION members. */ ++ ++static void ++absorb_unions (MOID_T *m) ++{ ++ /* UNION (A, UNION (B, C)) = UNION (A, B, C) or ++ UNION (A, UNION (A, B)) = UNION (A, B). */ ++ for (; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS (m, UNION_SYMBOL)) ++ PACK (m) = a68_absorb_union_pack (PACK (m)); ++ } ++} ++ ++/* Contract UNIONs. */ ++ ++static void ++contract_unions (MOID_T *m) ++{ ++ /* UNION (A, B, A) -> UNION (A, B). */ ++ for (; m != NO_MOID; FORWARD (m)) ++ { ++ if (IS (m, UNION_SYMBOL) && EQUIVALENT (m) == NO_MOID) ++ a68_contract_union (m); ++ } ++} ++ ++/* ++ * Routines to collect MOIDs from the program text. ++ */ ++ ++/* Search standard mode in standard environ. */ ++ ++static MOID_T * ++search_standard_mode (int sizety, NODE_T *indicant) ++{ ++ /* Search standard mode. */ ++ for (MOID_T *p = TOP_MOID (&A68_JOB); p != NO_MOID; FORWARD (p)) ++ { ++ if (IS (p, STANDARD) ++ && DIM (p) == sizety ++ && NSYMBOL (NODE (p)) == NSYMBOL (indicant)) ++ return p; ++ } ++ ++ /* Map onto greater precision. */ ++ if (sizety < 0) ++ return search_standard_mode (sizety + 1, indicant); ++ else if (sizety > 0) ++ return search_standard_mode (sizety - 1, indicant); ++ else ++ return NO_MOID; ++} ++ ++/* Collect mode from STRUCT field. */ ++ ++static void ++get_mode_from_struct_field (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTIFIER)) ++ { ++ ATTRIBUTE (p) = FIELD_IDENTIFIER; ++ (void) a68_add_mode_to_pack (u, NO_MOID, NSYMBOL (p), p); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (p); ++ ++ get_mode_from_struct_field (NEXT (p), u); ++ for (PACK_T *t = *u; t && MOID (t) == NO_MOID; FORWARD (t)) ++ { ++ MOID (t) = new_one; ++ MOID (NODE (t)) = new_one; ++ } ++ } ++ else ++ { ++ get_mode_from_struct_field (NEXT (p), u); ++ get_mode_from_struct_field (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE from formal pack. */ ++ ++static void ++get_mode_from_formal_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER)) ++ { ++ get_mode_from_formal_pack (NEXT (p), u); ++ MOID_T *z = get_mode_from_declarer (p); ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_formal_pack (NEXT (p), u); ++ get_mode_from_formal_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE or VOID from formal UNION pack. */ ++ ++static void ++get_mode_from_union_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER) || IS (p, VOID_SYMBOL)) ++ { ++ get_mode_from_union_pack (NEXT (p), u); ++ MOID_T *z = get_mode_from_declarer (p); ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_union_pack (NEXT (p), u); ++ get_mode_from_union_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect mode from PROC, OP pack. */ ++ ++static void ++get_mode_from_routine_pack (NODE_T *p, PACK_T **u) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTIFIER)) ++ (void) a68_add_mode_to_pack (u, NO_MOID, NO_TEXT, p); ++ else if (IS (p, DECLARER)) ++ { ++ MOID_T *z = get_mode_from_declarer (p); ++ ++ for (PACK_T *t = *u; t != NO_PACK && MOID (t) == NO_MOID; FORWARD (t)) ++ { ++ MOID (t) = z; ++ MOID (NODE (t)) = z; ++ } ++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); ++ } ++ else ++ { ++ get_mode_from_routine_pack (NEXT (p), u); ++ get_mode_from_routine_pack (SUB (p), u); ++ } ++ } ++} ++ ++/* Collect MODE from DECLARER. */ ++ ++static MOID_T * ++get_mode_from_declarer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return NO_MOID; ++ else ++ { ++ if (IS (p, DECLARER)) ++ { ++ if (MOID (p) != NO_MOID) ++ return MOID (p); ++ else ++ return MOID (p) = get_mode_from_declarer (SUB (p)); ++ } ++ else ++ { ++ if (IS (p, VOID_SYMBOL)) ++ { ++ MOID (p) = M_VOID; ++ return MOID (p); ++ } ++ else if (IS (p, LONGETY)) ++ { ++ if (a68_whether (p, LONGETY, INDICANT, STOP)) ++ { ++ int k = count_sizety (SUB (p)); ++ MOID (p) = search_standard_mode (k, NEXT (p)); ++ return MOID (p); ++ } ++ else ++ { ++ return NO_MOID; ++ } ++ } ++ else if (IS (p, SHORTETY)) ++ { ++ if (a68_whether (p, SHORTETY, INDICANT, STOP)) ++ { ++ int k = count_sizety (SUB (p)); ++ MOID (p) = search_standard_mode (k, NEXT (p)); ++ return MOID (p); ++ } ++ else ++ return NO_MOID; ++ } ++ else if (IS (p, INDICANT)) ++ { ++ MOID_T *q = search_standard_mode (0, p); ++ if (q != NO_MOID) ++ MOID (p) = q; ++ else ++ { ++ /* Position of definition tells indicants apart. */ ++ TAG_T *y = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ if (y == NO_TAG) ++ a68_error ( p, "tag Z has not been declared properly", NSYMBOL (p)); ++ else ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, NODE (y), ++ NO_MOID, NO_PACK); ++ } ++ return MOID (p); ++ } ++ else if (IS_REF (p)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); ++ return MOID (p); ++ } ++ else if (IS_FLEX (p)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, p, new_one, NO_PACK); ++ SLICE (MOID (p)) = SLICE (new_one); ++ return MOID (p); ++ } ++ else if (IS (p, FORMAL_BOUNDS)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), ++ 1 + a68_count_formal_bounds (SUB (p)), new_one, p, false); ++ return MOID (p); ++ } ++ else if (IS (p, BOUNDS)) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), count_bounds (SUB (p)), new_one, p, false); ++ return MOID (p); ++ } ++ else if (IS (p, STRUCT_SYMBOL)) ++ { ++ PACK_T *u = NO_PACK; ++ get_mode_from_struct_field (NEXT (p), &u); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ STRUCT_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); ++ return MOID (p); ++ } ++ else if (IS (p, UNION_SYMBOL)) ++ { ++ PACK_T *u = NO_PACK; ++ get_mode_from_union_pack (NEXT (p), &u); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ UNION_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); ++ return MOID (p); ++ } ++ else if (IS (p, PROC_SYMBOL)) ++ { ++ NODE_T *save = p; ++ PACK_T *u = NO_PACK; ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ get_mode_from_formal_pack (SUB_NEXT (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = ++ a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); ++ MOID (save) = MOID (p); ++ return MOID (p); ++ } ++ else ++ return NO_MOID; ++ } ++ } ++} ++ ++/* Collect MODEs from a routine-text header. */ ++ ++static MOID_T * ++get_mode_from_routine_text (NODE_T *p) ++{ ++ PACK_T *u = NO_PACK; ++ NODE_T *q = p; ++ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ get_mode_from_routine_pack (SUB (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *n = get_mode_from_declarer (p); ++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), q, n, u); ++} ++ ++/* Collect modes from operator-plan. */ ++ ++static MOID_T * ++get_mode_from_operator (NODE_T *p) ++{ ++ PACK_T *u = NO_PACK; ++ NODE_T *save = p; ++ ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ get_mode_from_formal_pack (SUB_NEXT (p), &u); ++ FORWARD (p); ++ } ++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); ++ return MOID (p); ++} ++ ++/* Collect mode from denotation. */ ++ ++static void ++get_mode_from_denotation (NODE_T *p, int sizety) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, ROW_CHAR_DENOTATION)) ++ { ++ const char *s = NSYMBOL (p); ++ size_t len = strlen (s); ++ ++ if (len == 1 ++ || (len == 2 && s[0] == '\'') ++ || (len == 8 && s[0] == '\'' && s[1] == '(' && s[2] == 'u') ++ || (len == 12 && s[0] == '\'' && s[1] == '(' && s[2] == 'U')) ++ { ++ MOID (p) = M_CHAR; ++ } ++ else ++ MOID (p) = M_ROW_CHAR; ++ } ++ else if (IS (p, TRUE_SYMBOL) || IS (p, FALSE_SYMBOL)) ++ { ++ MOID (p) = M_BOOL; ++ } ++ else if (IS (p, INT_DENOTATION)) ++ { ++ if (sizety == -2) ++ MOID (p) = M_SHORT_SHORT_INT; ++ else if (sizety == -1) ++ MOID (p) = M_SHORT_INT; ++ else if (sizety == 0) ++ MOID (p) = M_INT; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_INT; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_INT; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_INT : M_INT); ++ } ++ else if (IS (p, REAL_DENOTATION)) ++ { ++ if (sizety == 0) ++ MOID (p) = M_REAL; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_REAL; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_REAL; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_REAL : M_REAL); ++ } ++ else if (IS (p, BITS_DENOTATION)) ++ { ++ if (sizety == -2) ++ MOID (p) = M_SHORT_SHORT_BITS; ++ else if (sizety == -1) ++ MOID (p) = M_SHORT_BITS; ++ else if (sizety == 0) ++ MOID (p) = M_BITS; ++ else if (sizety == 1) ++ MOID (p) = M_LONG_BITS; ++ else if (sizety == 2) ++ MOID (p) = M_LONG_LONG_BITS; ++ else ++ MOID (p) = (sizety > 0 ? M_LONG_LONG_BITS : M_BITS); ++ } ++ else if (IS (p, LONGETY) || IS (p, SHORTETY)) ++ { ++ get_mode_from_denotation (NEXT (p), count_sizety (SUB (p))); ++ MOID (p) = MOID (NEXT (p)); ++ } ++ else if (IS (p, EMPTY_SYMBOL)) ++ { ++ MOID (p) = M_VOID; ++ } ++ } ++} ++ ++/* Collect modes from the syntax tree. */ ++ ++static void ++get_modes_from_tree (NODE_T *p, int attribute) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, VOID_SYMBOL)) ++ MOID (q) = M_VOID; ++ else if (IS (q, DECLARER)) ++ { ++ if (attribute == VARIABLE_DECLARATION) ++ { ++ MOID_T *new_one = get_mode_from_declarer (q); ++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); ++ } ++ else ++ MOID (q) = get_mode_from_declarer (q); ++ } ++ else if (IS (q, ROUTINE_TEXT)) ++ { ++ MOID (q) = get_mode_from_routine_text (SUB (q)); ++ } ++ else if (IS (q, OPERATOR_PLAN)) ++ { ++ MOID (q) = get_mode_from_operator (SUB (q)); ++ } ++ else if (a68_is_one_of (q, LOC_SYMBOL, HEAP_SYMBOL, STOP)) ++ { ++ if (attribute == GENERATOR) ++ { ++ MOID_T *new_one = get_mode_from_declarer (NEXT (q)); ++ MOID (NEXT (q)) = new_one; ++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); ++ } ++ } ++ else ++ { ++ if (attribute == DENOTATION) ++ get_mode_from_denotation (q, 0); ++ } ++ } ++ ++ if (attribute != DENOTATION) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ get_modes_from_tree (SUB (q), ATTRIBUTE (q)); ++ } ++ } ++} ++ ++//! @brief Collect modes from proc variables. ++ ++static void ++get_mode_from_proc_variables (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ get_mode_from_proc_variables (SUB (p)); ++ get_mode_from_proc_variables (NEXT (p)); ++ } ++ else if (IS (p, QUALIFIER) || IS (p, PROC_SYMBOL) || IS (p, COMMA_SYMBOL)) ++ { ++ get_mode_from_proc_variables (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ MOID_T *new_one = MOID (NEXT_NEXT (p)); ++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); ++ } ++ } ++} ++ ++/* Collect modes from proc variable declarations. */ ++ ++static void ++get_mode_from_proc_var_declarations_tree (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ get_mode_from_proc_var_declarations_tree (SUB (p)); ++ ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ get_mode_from_proc_variables (p); ++ } ++} ++ ++/* ++ * Various routines to test modes. ++ */ ++ ++/* Whether a mode declaration refers to self or relates to void. ++ This uses Lindsey's ying-yang algorithm. */ ++ ++static bool ++is_well_formed (MOID_T *def, MOID_T *z, bool yin, bool yang, bool video) ++{ ++ if (z == NO_MOID) ++ return false; ++ else if (yin && yang) ++ return z == M_VOID ? video : true; ++ else if (z == M_VOID) ++ return video; ++ else if (IS (z, STANDARD)) ++ return true; ++ else if (IS (z, INDICANT)) ++ { ++ if (def == NO_MOID) ++ { ++ /* Check an applied indicant for relation to VOID. */ ++ while (z != NO_MOID) ++ z = EQUIVALENT (z); ++ if (z == M_VOID) ++ return video; ++ else ++ return true; ++ } ++ else ++ { ++ if (z == def || USE (z)) ++ return yin && yang; ++ else ++ { ++ USE (z) = true; ++ bool wwf = is_well_formed (def, EQUIVALENT (z), yin, yang, video); ++ USE (z) = false; ++ return wwf; ++ } ++ } ++ } ++ else if (IS_REF (z)) ++ return is_well_formed (def, SUB (z), true, yang, false); ++ else if (IS (z, PROC_SYMBOL)) ++ return PACK (z) != NO_PACK ? true : is_well_formed (def, SUB (z), true, yang, true); ++ else if (IS_ROW (z)) ++ return is_well_formed (def, SUB (z), yin, yang, false); ++ else if (IS_FLEX (z)) ++ return is_well_formed (def, SUB (z), yin, yang, false); ++ else if (IS (z, STRUCT_SYMBOL)) ++ { ++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ if (!is_well_formed (def, MOID (s), yin, true, false)) ++ return false; ++ } ++ return true; ++ } ++ else if (IS (z, UNION_SYMBOL)) ++ { ++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ if (!is_well_formed (def, MOID (s), yin, yang, true)) ++ return false; ++ } ++ return true; ++ } ++ else ++ { ++ return false; ++ } ++} ++ ++/* Replace a mode by its equivalent mode (walk chain). */ ++ ++static void ++resolve_eq_members (MOID_T *q) ++{ ++ resolve_equivalent (&SUB (q)); ++ resolve_equivalent (&DEFLEXED (q)); ++ resolve_equivalent (&MULTIPLE (q)); ++ resolve_equivalent (&NAME (q)); ++ resolve_equivalent (&SLICE (q)); ++ resolve_equivalent (&TRIM (q)); ++ resolve_equivalent (&ROWED (q)); ++ for (PACK_T *p = PACK (q); p != NO_PACK; FORWARD (p)) ++ resolve_equivalent (&MOID (p)); ++} ++ ++/* Track equivalent tags. */ ++ ++static void ++resolve_eq_tags (TAG_T *z) ++{ ++ for (; z != NO_TAG; FORWARD (z)) ++ { ++ if (MOID (z) != NO_MOID) ++ resolve_equivalent (&MOID (z)); ++ } ++} ++ ++/* Bind modes in syntax tree. */ ++ ++static void ++bind_modes (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ resolve_equivalent (&MOID (p)); ++ ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ { ++ TABLE_T *s = TABLE (SUB (p)); ++ for (TAG_T *z = INDICANTS (s); z != NO_TAG; FORWARD (z)) ++ { ++ if (NODE (z) != NO_NODE) ++ { ++ resolve_equivalent (&MOID (NEXT_NEXT (NODE (z)))); ++ MOID (z) = MOID (NEXT_NEXT (NODE (z))); ++ MOID (NODE (z)) = MOID (z); ++ } ++ } ++ } ++ bind_modes (SUB (p)); ++ } ++} ++ ++/* Routines for calculating subordinates for selections, for instance selection ++ from REF STRUCT (A) yields REF A fields and selection from [] STRUCT (A) ++ yields [] A fields. */ ++ ++/* Make name pack. ++ Given a pack with modes: M1, M2, ... ++ Build a pack with modes: REF M1, REF M2, ... */ ++ ++static void ++make_name_pack (PACK_T *src, PACK_T **dst, MOID_T **p) ++{ ++ if (src != NO_PACK) ++ { ++ make_name_pack (NEXT (src), dst, p); ++ MOID_T *z = a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, MOID (src), NO_PACK); ++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make flex multiple row pack. ++ Given a pack with modes: M1, M2, ... ++ Build a pack with modes: []M1, []M2, ... */ ++ ++static void ++make_flex_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) ++{ ++ if (src != NO_PACK) ++ { ++ make_flex_multiple_row_pack (NEXT (src), dst, p, dim); ++ MOID_T *z = add_row (p, dim, MOID (src), NO_NODE, false); ++ z = a68_add_mode (p, FLEX_SYMBOL, 0, NO_NODE, z, NO_PACK); ++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make name struct. */ ++ ++static MOID_T * ++make_name_struct (MOID_T *m, MOID_T **p) ++{ ++ PACK_T *u = NO_PACK; ++ make_name_pack (PACK (m), &u, p); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Make name row. */ ++ ++static MOID_T * ++make_name_row (MOID_T *m, MOID_T **p) ++{ ++ if (SLICE (m) != NO_MOID) ++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SLICE (m), NO_PACK); ++ else if (SUB (m) != NO_MOID) ++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SUB (m), NO_PACK); ++ else ++ /* weird, FLEX INT or so ... */ ++ return NO_MOID; ++} ++ ++/* Make multiple row pack. */ ++ ++static void ++make_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) ++{ ++ if (src != NO_PACK) ++ { ++ make_multiple_row_pack (NEXT (src), dst, p, dim); ++ (void) a68_add_mode_to_pack (dst, add_row (p, dim, MOID (src), NO_NODE, false), ++ TEXT (src), NODE (src)); ++ } ++} ++ ++/* Make flex multiple struct. */ ++ ++static MOID_T * ++make_flex_multiple_struct (MOID_T *m, MOID_T **p, int dim) ++{ ++ PACK_T *u = NO_PACK; ++ make_flex_multiple_row_pack (PACK (m), &u, p, dim); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Make multiple struct. */ ++ ++static MOID_T * ++make_multiple_struct (MOID_T *m, MOID_T **p, int dim) ++{ ++ PACK_T *u = NO_PACK; ++ make_multiple_row_pack (PACK (m), &u, p, dim); ++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); ++} ++ ++/* Whether mode has row. */ ++ ++static bool ++is_mode_has_row (MOID_T *m) ++{ ++ if (IS (m, STRUCT_SYMBOL) || IS (m, UNION_SYMBOL)) ++ { ++ bool k = false; ++ ++ for (PACK_T *p = PACK (m); p != NO_PACK && k == false; FORWARD (p)) ++ { ++ HAS_ROWS (MOID (p)) = is_mode_has_row (MOID (p)); ++ k |= (HAS_ROWS (MOID (p))); ++ } ++ return k; ++ } ++ else ++ return (HAS_ROWS (m) || IS_ROW (m) || IS_FLEX (m)); ++} ++ ++/* Compute derived modes. */ ++ ++static void ++compute_derived_modes (MODULE_T *mod) ++{ ++ MOID_T *z; ++ int len = 0, nlen = 1; ++ ++ /* UNION things. */ ++ absorb_unions (TOP_MOID (mod)); ++ contract_unions (TOP_MOID (mod)); ++ /* The for-statement below prevents an endless loop. */ ++ for (int k = 1; k <= 10 && len != nlen; k++) ++ { ++ /* Make deflexed modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (SUB (z) != NO_MOID) ++ { ++ if (IS_REF_FLEX (z) && DEFLEXED (SUB_SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), ++ DEFLEXED (SUB_SUB (z)), NO_PACK); ++ else if (IS_REF (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), ++ DEFLEXED (SUB (z)), NO_PACK); ++ else if (IS_ROW (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), ROW_SYMBOL, DIM (z), NODE (z), ++ DEFLEXED (SUB (z)), NO_PACK); ++ else if (IS_FLEX (z) && DEFLEXED (SUB (z)) != NO_MOID) ++ DEFLEXED (z) = DEFLEXED (SUB (z)); ++ else if (IS_FLEX (z)) ++ DEFLEXED (z) = SUB (z); ++ else ++ DEFLEXED (z) = z; ++ } ++ } ++ ++ /* Derived modes for stowed modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (NAME (z) == NO_MOID && IS_REF (z)) ++ { ++ if (IS (SUB (z), STRUCT_SYMBOL)) ++ NAME (z) = make_name_struct (SUB (z), &TOP_MOID (mod)); ++ else if (IS_ROW (SUB (z))) ++ NAME (z) = make_name_row (SUB (z), &TOP_MOID (mod)); ++ else if (IS_FLEX (SUB (z)) && SUB_SUB (z) != NO_MOID) ++ NAME (z) = make_name_row (SUB_SUB (z), &TOP_MOID (mod)); ++ } ++ ++ if (MULTIPLE (z) != NO_MOID) ++ ; ++ else if (IS_REF (z)) ++ { ++ if (MULTIPLE (SUB (z)) != NO_MOID) ++ MULTIPLE (z) = make_name_struct (MULTIPLE (SUB (z)), &TOP_MOID (mod)); ++ } ++ else if (IS_ROW (z)) ++ { ++ if (IS (SUB (z), STRUCT_SYMBOL)) ++ MULTIPLE (z) = make_multiple_struct (SUB (z), &TOP_MOID (mod), DIM (z)); ++ } ++ } ++ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (TRIM (z) == NO_MOID && IS_FLEX (z)) ++ TRIM (z) = SUB (z); ++ if (TRIM (z) == NO_MOID && IS_REF_FLEX (z)) ++ TRIM (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), SUB_SUB (z), NO_PACK); ++ } ++ ++ /* Fill out stuff for rows, f.i. inverse relations. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_ROW (z) && DIM (z) > 0 && SUB (z) != NO_MOID && !DERIVATE (z)) ++ (void) add_row (&TOP_MOID (mod), DIM (z) + 1, SUB (z), NODE (z), true); ++ else if (IS_REF (z) && IS (SUB (z), ROW_SYMBOL) && !DERIVATE (SUB (z))) ++ { ++ MOID_T *x = add_row (&TOP_MOID (mod), DIM (SUB (z)) + 1, SUB_SUB (z), NODE (SUB (z)), true); ++ MOID_T *y = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), x, NO_PACK); ++ NAME (y) = z; ++ } ++ } ++ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_ROW (z) && SLICE (z) != NO_MOID) ++ ROWED (SLICE (z)) = z; ++ if (IS_REF (z)) ++ { ++ MOID_T *y = SUB (z); ++ if (SLICE (y) != NO_MOID && IS_ROW (SLICE (y)) && NAME (z) != NO_MOID) ++ ROWED (NAME (z)) = z; ++ } ++ } ++ ++ bind_modes (TOP_NODE (mod)); ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && NODE (z) != NO_NODE) ++ EQUIVALENT (z) = MOID (NODE (z)); ++ } ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ resolve_eq_members (z); ++ resolve_eq_tags (INDICANTS (A68_STANDENV)); ++ resolve_eq_tags (IDENTIFIERS (A68_STANDENV)); ++ resolve_eq_tags (OPERATORS (A68_STANDENV)); ++ resolve_equivalent (&M_STRING); ++ resolve_equivalent (&M_COMPLEX); ++ resolve_equivalent (&M_LONG_COMPLEX); ++ resolve_equivalent (&M_LONG_LONG_COMPLEX); ++ resolve_equivalent (&M_SEMA); ++ /* UNION members could be resolved. */ ++ absorb_unions (TOP_MOID (mod)); ++ contract_unions (TOP_MOID (mod)); ++ /* FLEX INDICANT could be resolved. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_FLEX (z) && SUB (z) != NO_MOID) ++ { ++ if (SUB_SUB (z) != NO_MOID && IS (SUB_SUB (z), STRUCT_SYMBOL)) ++ MULTIPLE (z) = make_flex_multiple_struct (SUB_SUB (z), &TOP_MOID (mod), DIM (SUB (z))); ++ } ++ } ++ /* See what new known modes we have generated by resolving.. */ ++ for (z = TOP_MOID (mod); z != STANDENV_MOID (&A68_JOB); FORWARD (z)) ++ { ++ MOID_T *v; ++ ++ for (v = NEXT (z); v != NO_MOID; FORWARD (v)) ++ { ++ if (a68_prove_moid_equivalence (z, v)) ++ { ++ EQUIVALENT (z) = v; ++ EQUIVALENT (v) = NO_MOID; ++ } ++ } ++ } ++ ++ /* Count the modes to check self consistency. */ ++ len = nlen; ++ for (nlen = 0, z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ nlen++; ++ } ++ ++ gcc_assert (M_STRING == M_FLEX_ROW_CHAR); ++ ++ /* Find out what modes contain rows. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ HAS_ROWS (z) = is_mode_has_row (z); ++ ++ /* Check flexible modes. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS_FLEX (z) && !IS (SUB (z), ROW_SYMBOL)) ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ } ++ ++ /* Check on fields in structured modes f.i. STRUCT (REAL x, INT n, REAL x) is ++ wrong. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, STRUCT_SYMBOL) && EQUIVALENT (z) == NO_MOID) ++ { ++ PACK_T *s = PACK (z); ++ ++ for (; s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t = NEXT (s); ++ bool x = true; ++ ++ for (t = NEXT (s); t != NO_PACK && x; FORWARD (t)) ++ { ++ if (TEXT (s) == TEXT (t)) ++ { ++ a68_error (NODE (z), "multiple declaration of field S"); ++ while (NEXT (s) != NO_PACK && TEXT (NEXT (s)) == TEXT (t)) ++ FORWARD (s); ++ x = false; ++ } ++ } ++ } ++ } ++ } ++ ++ /* Various union test. */ ++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, UNION_SYMBOL) && EQUIVALENT (z) == NO_MOID) ++ { ++ PACK_T *s = PACK (z); ++ /* Discard unions with one member. */ ++ if (a68_count_pack_members (s) == 1) ++ a68_error (NODE (z), "M must have at least two components", z); ++ /* Discard incestuous unions with firmly related modes. */ ++ for (; s != NO_PACK; FORWARD (s)) ++ { ++ PACK_T *t; ++ ++ for (t = NEXT (s); t != NO_PACK; FORWARD (t)) ++ { ++ if (MOID (t) != MOID (s)) ++ { ++ if (a68_is_firm (MOID (s), MOID (t))) ++ a68_error (NODE (z), "M has firmly related components", z); ++ } ++ } ++ } ++ ++ /* Discard incestuous unions with firmly related subsets. */ ++ for (s = PACK (z); s != NO_PACK; FORWARD (s)) ++ { ++ MOID_T *n = a68_depref_completely (MOID (s)); ++ ++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, z, NO_DEFLEXING)) ++ a68_error (NODE (z), "M has firmly related subset M", z, n); ++ } ++ } ++ } ++ ++ /* Wrap up and exit. */ ++ a68_free_postulate_list (A68 (top_postulate), NO_POSTULATE); ++ A68 (top_postulate) = NO_POSTULATE; ++} ++ ++/* Make list of all modes in the program. */ ++ ++void ++a68_make_moid_list (MODULE_T *mod) ++{ ++ bool cont = true; ++ ++ /* Collect modes from the syntax tree. */ ++ reset_moid_tree (TOP_NODE (mod)); ++ get_modes_from_tree (TOP_NODE (mod), STOP); ++ get_mode_from_proc_var_declarations_tree (TOP_NODE (mod)); ++ ++ /* Connect indicants to their declarers. */ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT)) ++ { ++ NODE_T *u = NODE (z); ++ gcc_assert (NEXT (u) != NO_NODE); ++ gcc_assert (NEXT_NEXT (u) != NO_NODE); ++ gcc_assert (MOID (NEXT_NEXT (u)) != NO_MOID); ++ EQUIVALENT (z) = MOID (NEXT_NEXT (u)); ++ } ++ } ++ ++ /* Checks on wrong declarations. */ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ USE (z) = false; ++ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) ++ { ++ if (!is_well_formed (z, EQUIVALENT (z), false, false, true)) ++ { ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ cont = false; ++ } ++ } ++ } ++ ++ for (MOID_T *z = TOP_MOID (mod); cont && z != NO_MOID; FORWARD (z)) ++ { ++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) ++ ; ++ else if (NODE (z) != NO_NODE) ++ { ++ if (!is_well_formed (NO_MOID, z, false, false, true)) ++ a68_error (NODE (z), "M does not specify a well formed mode", z); ++ } ++ } ++ ++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) ++ { ++ if (USE (z)) ++ gcc_unreachable (); ++ } ++ ++ if (ERROR_COUNT (mod) != 0) ++ return; ++ ++ compute_derived_modes (mod); ++ a68_init_postulates (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-check.cc +@@ -0,0 +1,1878 @@ ++/* Mode checker routines. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC and fixes by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* ALGOL 68 contexts are SOFT, WEAK, MEEK, FIRM and STRONG. ++ These contexts are increasing in strength: ++ ++ SOFT: Deproceduring ++ ++ WEAK: Dereferencing to REF [] or REF STRUCT ++ ++ MEEK: Deproceduring and dereferencing ++ ++ FIRM: MEEK followed by uniting ++ ++ STRONG: FIRM followed by rowing, widening or voiding ++ ++ Furthermore you will see in this file next switches: ++ ++ (1) FORCE_DEFLEXING allows assignment compatibility between FLEX and non FLEX ++ rows. This can only be the case when there is no danger of altering bounds of a ++ non FLEX row. ++ ++ (2) ALIAS_DEFLEXING prohibits aliasing a FLEX row to a non FLEX row (vice versa ++ is no problem) so that one cannot alter the bounds of a non FLEX row by ++ aliasing it to a FLEX row. This is particularly the case when passing names as ++ parameters to procedures: ++ ++ PROC x = (REF STRING s) VOID: ..., PROC y = (REF [] CHAR c) VOID: ...; ++ ++ x (LOC STRING); # OK # ++ ++ x (LOC [10] CHAR); # Not OK, suppose x changes bounds of s! # ++ ++ y (LOC STRING); # OK # ++ ++ y (LOC [10] CHAR); # OK # ++ ++ (3) SAFE_DEFLEXING sets FLEX row apart from non FLEX row. This holds for names, ++ not for values, so common things are not rejected, for instance ++ ++ STRING x = read string; ++ ++ [] CHAR y = read string ++ ++ (4) NO_DEFLEXING sets FLEX row apart from non FLEX row. */ ++ ++/* ++ In the RR grammar: ++ ++ SORT: strong; firm; weak; meek; soft. ++ SORT MOID serial clause; ++ strong void unit, go on token, SORT MOID serial clause; ++ declaration, go on token, SORT MOID serial clause; ++ SORT MOID unit ++ ++ And it is the SORT MOID sequence of metanotions, which shall evaluate the ++ same in the complete rule, that control the balancing! o_O ++ ++ Also, it denotes how the SORT MOID of the serial clause gets "passed" to the ++ last unit in the serial clause. Other units have SOID `strong void'. ++ ++ It is used to pass down the required mode on whatever context. Like, ++ PARTICULAR_PROGRAM evaluates in strong context and requires VOID. ++ ++ The ATTRIBUTE in the soid is used to pass down the kind of construct that ++ introduces the context+required mode. This is used in ++ a68_determine_unique_mode in order to know whether balancing shall be ++ performed or not. ++*/ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static void mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y); ++static void mode_check_module_declaration (NODE_T *p); ++static void mode_check_module_text (NODE_T *p); ++static void mode_check_module_declaration (NODE_T *p); ++ ++/* Driver for mode checker. */ ++ ++void ++a68_mode_checker (NODE_T *p) ++{ ++ if (IS (p, PACKET)) ++ { ++ p = SUB (p); ++ ++ if (IS (p, PARTICULAR_PROGRAM)) ++ { ++ A68 (top_soid_list) = NO_SOID; ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_VOID, 0); ++ mode_check_enclosed (SUB (p), &x, &y); ++ MOID (p) = MOID (&y); ++ } ++ else if (IS (p, PRELUDE_PACKET)) ++ mode_check_module_declaration (SUB (p)); ++ } ++} ++ ++/* Mode check on bounds. */ ++ ++static void ++mode_check_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ mode_check_unit (p, &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), M_INT, MEEK, SAFE_DEFLEXING, UNIT); ++ mode_check_bounds (NEXT (p)); ++ } ++ else ++ { ++ mode_check_bounds (SUB (p)); ++ mode_check_bounds (NEXT (p)); ++ } ++} ++ ++/* Mode check declarer. */ ++ ++static void ++mode_check_declarer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, BOUNDS)) ++ { ++ mode_check_bounds (SUB (p)); ++ mode_check_declarer (NEXT (p)); ++ } ++ else ++ { ++ mode_check_declarer (SUB (p)); ++ mode_check_declarer (NEXT (p)); ++ } ++} ++ ++/* Mode check identity declaration. */ ++ ++static void ++mode_check_identity_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ mode_check_declarer (SUB (p)); ++ mode_check_identity_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); ++ else if (MOID (&x) != MOID (&y)) ++ /* Check for instance, REF INT i = LOC REF INT. */ ++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), IDENTITY_DECLARATION, GENERATOR); ++ break; ++ } ++ default: ++ mode_check_identity_declaration (SUB (p)); ++ mode_check_identity_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check variable declaration. */ ++ ++static void ++mode_check_variable_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ mode_check_declarer (SUB (p)); ++ mode_check_variable_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, SUB_MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, FORCE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, FORCE_DEFLEXING, UNIT); ++ else if (SUB_MOID (&x) != MOID (&y)) ++ /* Check for instance, REF INT i = LOC REF INT. */ ++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), VARIABLE_DECLARATION, GENERATOR); ++ } ++ break; ++ default: ++ mode_check_variable_declaration (SUB (p)); ++ mode_check_variable_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check routine text. */ ++ ++static void ++mode_check_routine_text (NODE_T *p, SOID_T *y) ++{ ++ SOID_T w; ++ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ mode_check_declarer (SUB (p)); ++ FORWARD (p); ++ } ++ ++ mode_check_declarer (SUB (p)); ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &w, y); ++ if (!a68_is_coercible_in_context (y, &w, FORCE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (y), MOID (&w), STRONG, FORCE_DEFLEXING, UNIT); ++} ++ ++/* Mode check proc declaration. */ ++ ++static void ++mode_check_proc_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, NO_MOID, 0); ++ mode_check_routine_text (SUB (p), &y); ++ } ++ else ++ { ++ mode_check_proc_declaration (SUB (p)); ++ mode_check_proc_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check brief op declaration. */ ++ ++static void ++mode_check_brief_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T y; ++ ++ if (MOID (p) != MOID (NEXT_NEXT (p))) ++ { ++ SOID_T y2, x; ++ a68_make_soid (&y2, NO_SORT, MOID (NEXT_NEXT (p)), 0); ++ a68_make_soid (&x, NO_SORT, MOID (p), 0); ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y2), MOID (&x), STRONG, SKIP_DEFLEXING, ROUTINE_TEXT); ++ } ++ mode_check_routine_text (SUB (NEXT_NEXT (p)), &y); ++ } ++ else ++ { ++ mode_check_brief_op_declaration (SUB (p)); ++ mode_check_brief_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check op declaration. */ ++ ++static void ++mode_check_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T y, x; ++ a68_make_soid (&x, STRONG, MOID (p), 0); ++ mode_check_unit (NEXT_NEXT (p), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); ++ } ++ else ++ { ++ mode_check_op_declaration (SUB (p)); ++ mode_check_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Mode check declaration list. */ ++ ++static void ++mode_check_declaration_list (NODE_T * p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case IDENTITY_DECLARATION: ++ mode_check_identity_declaration (SUB (p)); ++ break; ++ case VARIABLE_DECLARATION: ++ mode_check_variable_declaration (SUB (p)); ++ break; ++ case MODE_DECLARATION: ++ mode_check_declarer (SUB (p)); ++ break; ++ case PROCEDURE_DECLARATION: ++ case PROCEDURE_VARIABLE_DECLARATION: ++ mode_check_proc_declaration (SUB (p)); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ mode_check_brief_op_declaration (SUB (p)); ++ break; ++ case OPERATOR_DECLARATION: ++ mode_check_op_declaration (SUB (p)); ++ break; ++ default: ++ mode_check_declaration_list (SUB (p)); ++ mode_check_declaration_list (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Mode check serial clause. */ ++ ++static void ++mode_check_serial (SOID_T **r, NODE_T *p, SOID_T *x, bool k) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, INITIALISER_SERIES)) ++ { ++ mode_check_serial (r, SUB (p), x, false); ++ mode_check_serial (r, NEXT (p), x, k); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ mode_check_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ mode_check_serial (r, NEXT (p), x, k); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ if (NEXT (p) != NO_NODE) ++ { ++ if (IS (NEXT (p), EXIT_SYMBOL) || IS (NEXT (p), END_SYMBOL) || IS (NEXT (p), CLOSE_SYMBOL)) ++ mode_check_serial (r, SUB (p), x, true); ++ else ++ mode_check_serial (r, SUB (p), x, false); ++ mode_check_serial (r, NEXT (p), x, k); ++ } ++ else ++ mode_check_serial (r, SUB (p), x, true); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ mode_check_serial (r, SUB (p), x, k); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ ++ if (k) ++ mode_check_unit (p, x, &y); ++ else ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ mode_check_unit (p, &w, &y); ++ } ++ if (NEXT (p) != NO_NODE) ++ mode_check_serial (r, NEXT (p), x, k); ++ else ++ { ++ if (k) ++ a68_add_to_soid_list (r, p, &y); ++ } ++ } ++} ++ ++/* Mode check serial clause units. */ ++ ++static void ++mode_check_serial_units (NODE_T *p, SOID_T *x, SOID_T *y, ++ int att __attribute__((unused))) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ mode_check_serial (&top_sl, SUB (p), x, true); ++ if (a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ MOID_T *result = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), result, SERIAL_CLAUSE); ++ } ++ else ++ a68_make_soid (y, SORT (x), (MOID (x) != NO_MOID ? MOID (x) : M_ERROR), 0); ++ ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check unit list. */ ++ ++static void ++mode_check_unit_list (SOID_T **r, NODE_T *p, SOID_T *x) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ mode_check_unit_list (r, SUB (p), x); ++ mode_check_unit_list (r, NEXT (p), x); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ mode_check_unit_list (r, NEXT (p), x); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ mode_check_unit (p, x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ mode_check_unit_list (r, NEXT (p), x); ++ } ++} ++ ++/* Mode check struct display. */ ++ ++static void ++mode_check_struct_display (SOID_T **r, NODE_T *p, PACK_T **fields) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ mode_check_struct_display (r, SUB (p), fields); ++ mode_check_struct_display (r, NEXT (p), fields); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ mode_check_struct_display (r, NEXT (p), fields); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T x, y; ++ ++ if (*fields != NO_PACK) ++ { ++ a68_make_soid (&x, STRONG, MOID (*fields), 0); ++ FORWARD (*fields); ++ } ++ else ++ a68_make_soid (&x, STRONG, NO_MOID, 0); ++ mode_check_unit (p, &x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ mode_check_struct_display (r, NEXT (p), fields); ++ } ++} ++ ++/* Mode check get specified moids. */ ++ ++static void ++mode_check_get_specified_moids (NODE_T *p, MOID_T *u) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ mode_check_get_specified_moids (SUB (p), u); ++ else if (IS (p, SPECIFIER)) ++ { ++ MOID_T *m = MOID (NEXT_SUB (p)); ++ a68_add_mode_to_pack (&(PACK (u)), m, NO_TEXT, NODE (m)); ++ } ++ } ++} ++ ++/* Mode check specified unit list. */ ++ ++void ++mode_check_specified_unit_list (SOID_T **r, NODE_T *p, SOID_T *x, MOID_T *u) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ mode_check_specified_unit_list (r, SUB (p), x, u); ++ else if (IS (p, SPECIFIER)) ++ { ++ MOID_T *m = MOID (NEXT_SUB (p)); ++ if (u != NO_MOID && !a68_is_unitable (m, u, SAFE_DEFLEXING)) ++ a68_error (p, "M is neither component nor subset of M", m, u); ++ ++ } ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y; ++ mode_check_unit (p, x, &y); ++ a68_add_to_soid_list (r, p, &y); ++ } ++ } ++} ++ ++/* Mode check united case parts. */ ++ ++static void ++mode_check_united_case_parts (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ MOID_T *u = NO_MOID, *v = NO_MOID, *w = NO_MOID; ++ /* Check the CASE part and deduce the united mode. */ ++ a68_make_soid (&enq_expct, MEEK, NO_MOID, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ /* Deduce the united mode from the enquiry clause. ++ This requires balancing. */ ++ u = MOID (&enq_yield); ++ a68_absorb_series_pack (&u); ++ DIM (u) = a68_count_pack_members (PACK (u)); ++ if (DIM (u) == 1) ++ u = MOID (PACK (u)); ++ else ++ { ++ MOID_T *united, *balanced; ++ united = a68_make_united_mode (u); ++ balanced = a68_get_balanced_mode_or_no_mode (united, ++ STRONG, A68_NO_DEPREF, ++ SAFE_DEFLEXING); ++ if (balanced != NO_MOID) ++ u = balanced; ++ } ++ u = a68_depref_completely (u); ++ /* Also deduce the united mode from the specifiers. */ ++ v = a68_new_moid (); ++ ATTRIBUTE (v) = SERIES_MODE; ++ mode_check_get_specified_moids (NEXT_SUB (NEXT (p)), v); ++ v = a68_make_united_mode (v); ++ /* Determine a resulting union. */ ++ if (u == M_HIP) ++ w = v; ++ else ++ { ++ if (IS (u, UNION_SYMBOL)) ++ { ++ bool uv, vu, some; ++ a68_investigate_firm_relations (PACK (u), PACK (v), &uv, &some); ++ a68_investigate_firm_relations (PACK (v), PACK (u), &vu, &some); ++ if (uv && vu) ++ { ++ /* Every component has a specifier. */ ++ w = u; ++ } ++ else if (!uv && !vu) ++ { ++ /* Hmmmm ... let the coercer sort it out. */ ++ w = u; ++ } ++ else ++ { ++ /* This is all the balancing we allow here for the moment. Firmly ++ related subsets are not valid so we absorb them. If this ++ doesn't solve it then we get a coercion-error later. */ ++ w = a68_absorb_related_subsets (u); ++ } ++ } ++ else ++ { ++ a68_error (NEXT_SUB (p), "M is not a united mode", u); ++ return; ++ } ++ } ++ MOID (SUB (p)) = w; ++ FORWARD (p); ++ /* Check the IN part. */ ++ mode_check_specified_unit_list (ry, NEXT_SUB (p), x, w); ++ /* OUSE, OUT, ESAC. */ ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ mode_check_united_case_parts (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check united case. */ ++ ++static void ++mode_check_united_case (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ mode_check_united_case_parts (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CONFORMITY_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CONFORMITY_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check unit list 2. */ ++ ++static void ++mode_check_unit_list_2 (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ ++ if (MOID (x) != NO_MOID) ++ { ++ if (IS_FLEX (MOID (x))) ++ { ++ SOID_T y2; ++ a68_make_soid (&y2, SORT (x), SLICE (SUB_MOID (x)), 0); ++ mode_check_unit_list (&top_sl, SUB (p), &y2); ++ } ++ else if (IS_ROW (MOID (x))) ++ { ++ SOID_T y2; ++ a68_make_soid (&y2, SORT (x), SLICE (MOID (x)), 0); ++ mode_check_unit_list (&top_sl, SUB (p), &y2); ++ } ++ else if (IS (MOID (x), STRUCT_SYMBOL)) ++ { ++ PACK_T *y2 = PACK (MOID (x)); ++ mode_check_struct_display (&top_sl, SUB (p), &y2); ++ } ++ else ++ mode_check_unit_list (&top_sl, SUB (p), x); ++ } ++ else ++ mode_check_unit_list (&top_sl, SUB (p), x); ++ ++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check access. */ ++ ++static void ++mode_check_access (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ENCLOSED_CLAUSE)) ++ { ++ mode_check_enclosed (q, x, y); ++ MOID (p) = MOID (y); ++ } ++ } ++} ++ ++/* Mode check closed. */ ++ ++static void ++mode_check_closed (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, SERIAL_CLAUSE)) ++ mode_check_serial_units (p, x, y, SERIAL_CLAUSE); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ mode_check_closed (NEXT (p), x, y); ++ MOID (p) = MOID (y); ++} ++ ++/* Mode check collateral. */ ++ ++void ++mode_check_collateral (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) ++ { ++ if (SORT (x) == STRONG) ++ { ++ if (MOID (x) == NO_MOID) ++ a68_error (p, "vacuum cannot have row elements (use a Y generator)", ++ "REF MODE"); ++ else if (IS_FLEXETY_ROW (MOID (x))) ++ a68_make_soid (y, STRONG, M_VACUUM, 0); ++ else ++ { ++ /* The syntax only allows vacuums in strong contexts with rowed ++ modes. See rule 33d. */ ++ a68_error (p, "a vacuum is not a valid M", MOID (x)); ++ a68_make_soid (y, STRONG, M_ERROR, 0); ++ } ++ } ++ else ++ a68_make_soid (y, STRONG, M_UNDEFINED, 0); ++ } ++ else ++ { ++ if (IS (p, UNIT_LIST)) ++ mode_check_unit_list_2 (p, x, y); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ mode_check_collateral (NEXT (p), x, y); ++ MOID (p) = MOID (y); ++ } ++} ++ ++/* Mode check conditional 2. */ ++ ++static void ++mode_check_conditional_2 (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ ++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ FORWARD (p); ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ mode_check_conditional_2 (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check conditional. */ ++ ++static void ++mode_check_conditional (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_conditional_2 (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CONDITIONAL_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CONDITIONAL_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check int case 2. */ ++ ++static void ++mode_check_int_case_2 (SOID_T **ry, NODE_T *p, SOID_T *x) ++{ ++ SOID_T enq_expct, enq_yield; ++ a68_make_soid (&enq_expct, MEEK, M_INT, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ FORWARD (p); ++ mode_check_unit_list (ry, NEXT_SUB (p), x); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ mode_check_serial (ry, NEXT_SUB (p), x, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ mode_check_int_case_2 (ry, SUB (p), x); ++ } ++} ++ ++/* Mode check int case. */ ++ ++static void ++mode_check_int_case (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_int_case_2 (&top_sl, p, x); ++ if (!a68_is_balanced (p, top_sl, SORT (x))) ++ { ++ if (MOID (x) != NO_MOID) ++ a68_make_soid (y, SORT (x), MOID (x), CASE_CLAUSE); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); ++ a68_make_soid (y, SORT (x), z, CASE_CLAUSE); ++ } ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check loop 2. */ ++ ++static void ++mode_check_loop_2 (NODE_T *p, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, FOR_PART)) ++ mode_check_loop_2 (NEXT (p), y); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ SOID_T ix, iy; ++ a68_make_soid (&ix, STRONG, M_INT, 0); ++ mode_check_unit (NEXT_SUB (p), &ix, &iy); ++ if (!a68_is_coercible_in_context (&iy, &ix, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT_SUB (p), MOID (&iy), M_INT, MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ mode_check_loop_2 (NEXT (p), y); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ SOID_T enq_expct, enq_yield; ++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); ++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); ++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); ++ mode_check_loop_2 (NEXT (p), y); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ SOID_T *z = NO_SOID; ++ NODE_T *do_p = NEXT_SUB (p); ++ SOID_T ix; ++ a68_make_soid (&ix, STRONG, M_VOID, 0); ++ if (IS (do_p, SERIAL_CLAUSE)) ++ mode_check_serial (&z, do_p, &ix, true); ++ a68_free_soid_list (z); ++ } ++} ++ ++/* Mode check loop. */ ++ ++static void ++mode_check_loop (NODE_T *p, SOID_T *y) ++{ ++ SOID_T *z = NO_SOID; ++ mode_check_loop_2 (p, z); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++} ++ ++/* Mode check enclosed. */ ++ ++static void ++mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ mode_check_enclosed (SUB (p), x, y); ++ else if (IS (p, CLOSED_CLAUSE)) ++ mode_check_closed (SUB (p), x, y); ++ else if (IS (p, ACCESS_CLAUSE)) ++ mode_check_access (SUB (p), x, y); ++ else if (IS (p, PARALLEL_CLAUSE)) ++ { ++ mode_check_collateral (SUB (NEXT_SUB (p)), x, y); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++ MOID (NEXT_SUB (p)) = M_VOID; ++ } ++ else if (IS (p, COLLATERAL_CLAUSE)) ++ mode_check_collateral (SUB (p), x, y); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ mode_check_conditional (SUB (p), x, y); ++ else if (IS (p, CASE_CLAUSE)) ++ mode_check_int_case (SUB (p), x, y); ++ else if (IS (p, CONFORMITY_CLAUSE)) ++ mode_check_united_case (SUB (p), x, y); ++ else if (IS (p, LOOP_CLAUSE)) ++ mode_check_loop (SUB (p), y); ++ ++ MOID (p) = MOID (y); ++} ++ ++/* Search table for operator. */ ++ ++static TAG_T * ++search_table_for_operator (TAG_T *t, const char *n, MOID_T *x, MOID_T *y) ++{ ++ if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ for (; t != NO_TAG; FORWARD (t)) ++ { ++ if (NSYMBOL (NODE (t)) == n || strcmp (NSYMBOL (NODE (t)), n) == 0) ++ { ++ PACK_T *p = PACK (MOID (t)); ++ if (a68_is_coercible (x, MOID (p), FIRM, ALIAS_DEFLEXING)) ++ { ++ FORWARD (p); ++ if (p == NO_PACK && y == NO_MOID) ++ /* Matched in case of a monadic. */ ++ return t; ++ else if (p != NO_PACK && y != NO_MOID ++ && a68_is_coercible (y, MOID (p), FIRM, ALIAS_DEFLEXING)) ++ /* Matched in case of a dyadic. */ ++ return t; ++ } ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Search chain of symbol tables and return matching operator "x n y" or ++ "n x". */ ++ ++static TAG_T * ++search_table_chain_for_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) ++{ ++ if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ while (s != NO_TABLE) ++ { ++ TAG_T *z = search_table_for_operator (OPERATORS (s), n, x, y); ++ if (z != NO_TAG) ++ return z; ++ BACKWARD (s); ++ } ++ return NO_TAG; ++} ++ ++/* Return a matching operator "x n y". */ ++ ++static TAG_T * ++find_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) ++{ ++ /* Coercions to operand modes are FIRM. */ ++ MOID_T *u, *v; TAG_T *z; ++ /* (A) Catch exceptions first. */ ++ if (x == NO_MOID && y == NO_MOID) ++ return NO_TAG; ++ else if (a68_is_mode_isnt_well (x)) ++ return A68_PARSER (error_tag); ++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) ++ return A68_PARSER (error_tag); ++ ++ /* (B) MONADs. */ ++ if (x != NO_MOID && y == NO_MOID) ++ { ++ z = search_table_chain_for_operator (s, n, x, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ else ++ { ++ /* (B.2) A little trick to allow - (0, 1) or ABS (1, long pi). */ ++ if (a68_is_coercible (x, M_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible (x, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, NO_MOID); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible (x, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, NO_MOID); ++ } ++ return NO_TAG; ++ } ++ /* (C) DYADs. */ ++ z = search_table_chain_for_operator (s, n, x, y); ++ if (z != NO_TAG) ++ return z; ++ /* (C.2) Vector and matrix "strong coercions" in standard environ. */ ++ u = DEFLEX (a68_depref_completely (x)); ++ v = DEFLEX (a68_depref_completely (y)); ++ if ((u == M_ROW_REAL || u == M_ROW_ROW_REAL) ++ || (v == M_ROW_REAL || v == M_ROW_ROW_REAL) ++ || (u == M_ROW_COMPLEX || u == M_ROW_ROW_COMPLEX) ++ || (v == M_ROW_COMPLEX || v == M_ROW_ROW_COMPLEX)) ++ { ++ if (u == M_INT) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, y); ++ if (z != NO_TAG) ++ return z; ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (v == M_INT) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_REAL); ++ if (z != NO_TAG) ++ return z; ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (u == M_REAL) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); ++ if (z != NO_TAG) ++ return z; ++ } ++ else if (v == M_REAL) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ } ++ /* (C.3) Look in standenv for an appropriate cross-term. */ ++ u = a68_make_series_from_moids (x, y); ++ u = a68_make_united_mode (u); ++ v = a68_get_balanced_mode (u, STRONG, A68_NO_DEPREF, SAFE_DEFLEXING); ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); ++ if (z != NO_TAG) ++ return z; ++ if (a68_is_coercible_series (u, M_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, M_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_REAL, M_LONG_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_LONG_REAL, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_REAL, M_LONG_LONG_REAL); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, M_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, M_LONG_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ if (a68_is_coercible_series (u, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) ++ { ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX); ++ if (z != NO_TAG) ++ return z; ++ } ++ /* (C.4) Now allow for depreffing for REF REAL +:= INT and alike. */ ++ v = a68_get_balanced_mode (u, STRONG, A68_DEPREF, SAFE_DEFLEXING); ++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); ++ if (z != NO_TAG) ++ return z; ++ return NO_TAG; ++} ++ ++/* Mode check monadic operator. */ ++ ++static void ++mode_check_monadic_operator (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p != NO_NODE) ++ { ++ TAG_T *t; ++ MOID_T *u = a68_determine_unique_mode (y, SAFE_DEFLEXING); ++ if (a68_is_mode_isnt_well (u)) ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ else if (u == M_HIP) ++ { ++ a68_error (NEXT (p), "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ if (strchr (NOMADS, *(NSYMBOL (p))) != NO_TEXT) ++ { ++ t = NO_TAG; ++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ t = find_operator (TABLE (p), NSYMBOL (p), u, NO_MOID); ++ if (t == NO_TAG) ++ { ++ a68_error (p, "monadic operator S O has not been declared", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++ if (t != NO_TAG) ++ MOID (p) = MOID (t); ++ TAX (p) = t; ++ if (t != NO_TAG && t != A68_PARSER (error_tag)) ++ { ++ MOID (p) = MOID (t); ++ a68_make_soid (y, SORT (x), SUB_MOID (t), 0); ++ } ++ else ++ { ++ MOID (p) = M_ERROR; ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++ } ++} ++ ++/* Mode check monadic formula. */ ++ ++static void ++mode_check_monadic_formula (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_formula (NEXT (p), &e, y); ++ mode_check_monadic_operator (p, &e, y); ++ a68_make_soid (y, SORT (x), MOID (y), 0); ++} ++ ++/* Mode check formula. */ ++ ++static void ++mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T ls; ++ if (IS (p, MONADIC_FORMULA)) ++ mode_check_monadic_formula (SUB (p), x, &ls); ++ else if (IS (p, FORMULA)) ++ mode_check_formula (SUB (p), x, &ls); ++ else if (IS (p, SECONDARY)) ++ { ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_unit (SUB (p), &e, &ls); ++ } ++ MOID_T *u = a68_determine_unique_mode (&ls, SAFE_DEFLEXING); ++ MOID (p) = u; ++ SOID_T rs; ++ if (NEXT (p) == NO_NODE) ++ a68_make_soid (y, SORT (x), u, 0); ++ else ++ { ++ NODE_T *q = NEXT_NEXT (p); ++ if (IS (q, MONADIC_FORMULA)) ++ mode_check_monadic_formula (SUB (NEXT_NEXT (p)), x, &rs); ++ else if (IS (q, FORMULA)) ++ mode_check_formula (SUB (NEXT_NEXT (p)), x, &rs); ++ else if (IS (q, SECONDARY)) ++ { ++ SOID_T e; ++ a68_make_soid (&e, FIRM, NO_MOID, 0); ++ mode_check_unit (SUB (q), &e, &rs); ++ } ++ MOID_T *v = a68_determine_unique_mode (&rs, SAFE_DEFLEXING); ++ MOID (q) = v; ++ if (a68_is_mode_isnt_well (u) || a68_is_mode_isnt_well (v)) ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ else if (u == M_HIP) ++ { ++ a68_error (p, "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else if (v == M_HIP) ++ { ++ a68_error (q, "M construct is an invalid operand", u); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ TAG_T *op = find_operator (TABLE (NEXT (p)), NSYMBOL (NEXT (p)), u, v); ++ if (op == NO_TAG) ++ { ++ a68_error (NEXT (p), "dyadic operator O S O has not been declared", u, v); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ if (op != NO_TAG) ++ MOID (NEXT (p)) = MOID (op); ++ TAX (NEXT (p)) = op; ++ if (op != NO_TAG && op != A68_PARSER (error_tag)) ++ a68_make_soid (y, SORT (x), SUB_MOID (op), 0); ++ else ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ } ++} ++ ++/* Mode check assignation. */ ++ ++static void ++mode_check_assignation (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ /* Get destination mode. */ ++ SOID_T name, tmp, value; ++ a68_make_soid (&name, SOFT, NO_MOID, 0); ++ mode_check_unit (SUB (p), &name, &tmp); ++ /* SOFT coercion. */ ++ MOID_T *ori = a68_determine_unique_mode (&tmp, SAFE_DEFLEXING); ++ MOID_T *name_moid = a68_deproc_completely (ori); ++ if (ATTRIBUTE (name_moid) != REF_SYMBOL) ++ { ++ if (A68_IF_MODE_IS_WELL (name_moid)) ++ a68_error (p, "M A does not yield a name", ori, ATTRIBUTE (SUB (p))); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return; ++ } ++ MOID (p) = name_moid; ++ /* Get source mode. */ ++ a68_make_soid (&name, STRONG, SUB (name_moid), 0); ++ mode_check_unit (NEXT_NEXT (p), &name, &value); ++ if (!a68_is_coercible_in_context (&value, &name, FORCE_DEFLEXING)) ++ { ++ a68_cannot_coerce (p, MOID (&value), MOID (&name), STRONG, FORCE_DEFLEXING, UNIT); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ a68_make_soid (y, SORT (x), name_moid, 0); ++} ++ ++/* Mode check identity relation. */ ++ ++static void ++mode_check_identity_relation (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ NODE_T *ln = p, *rn = NEXT_NEXT (p); ++ SOID_T e, l, r; ++ a68_make_soid (&e, SOFT, NO_MOID, 0); ++ mode_check_unit (SUB (ln), &e, &l); ++ mode_check_unit (SUB (rn), &e, &r); ++ /* SOFT coercion. */ ++ MOID_T *oril = a68_determine_unique_mode (&l, SAFE_DEFLEXING); ++ MOID_T *orir = a68_determine_unique_mode (&r, SAFE_DEFLEXING); ++ MOID_T *lhs = a68_deproc_completely (oril); ++ MOID_T *rhs = a68_deproc_completely (orir); ++ if (A68_IF_MODE_IS_WELL (lhs) && lhs != M_HIP && ATTRIBUTE (lhs) != REF_SYMBOL) ++ { ++ a68_error (ln, "M A does not yield a name", oril, ATTRIBUTE (SUB (ln))); ++ lhs = M_ERROR; ++ } ++ if (A68_IF_MODE_IS_WELL (rhs) && rhs != M_HIP && ATTRIBUTE (rhs) != REF_SYMBOL) ++ { ++ a68_error (rn, "M A does not yield a name", orir, ATTRIBUTE (SUB (rn))); ++ rhs = M_ERROR; ++ } ++ if (lhs == M_HIP && rhs == M_HIP) ++ a68_error (p, "construct has no unique mode"); ++ ++ if (a68_is_coercible (lhs, rhs, STRONG, SAFE_DEFLEXING)) ++ lhs = rhs; ++ else if (a68_is_coercible (rhs, lhs, STRONG, SAFE_DEFLEXING)) ++ rhs = lhs; ++ else ++ { ++ a68_cannot_coerce (NEXT (p), rhs, lhs, SOFT, SKIP_DEFLEXING, TERTIARY); ++ lhs = rhs = M_ERROR; ++ } ++ MOID (ln) = lhs; ++ MOID (rn) = rhs; ++ a68_make_soid (y, SORT (x), M_BOOL, 0); ++} ++ ++/* Mode check bool functions ANDF and ORF. */ ++ ++static void ++mode_check_bool_function (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T e, l, r; ++ NODE_T *ln = p, *rn = NEXT_NEXT (p); ++ a68_make_soid (&e, STRONG, M_BOOL, 0); ++ mode_check_unit (SUB (ln), &e, &l); ++ if (!a68_is_coercible_in_context (&l, &e, SAFE_DEFLEXING)) ++ a68_cannot_coerce (ln, MOID (&l), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); ++ mode_check_unit (SUB (rn), &e, &r); ++ if (!a68_is_coercible_in_context (&r, &e, SAFE_DEFLEXING)) ++ a68_cannot_coerce (rn, MOID (&r), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); ++ MOID (ln) = M_BOOL; ++ MOID (rn) = M_BOOL; ++ a68_make_soid (y, SORT (x), M_BOOL, 0); ++} ++ ++/* Mode check cast. */ ++ ++static void ++mode_check_cast (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T w; ++ mode_check_declarer (p); ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ CAST (&w) = true; ++ mode_check_enclosed (SUB_NEXT (p), &w, y); ++ if (!a68_is_coercible_in_context (y, &w, SAFE_DEFLEXING)) ++ a68_cannot_coerce (NEXT (p), MOID (y), MOID (&w), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++} ++ ++/* Mode check assertion. */ ++ ++static void ++mode_check_assertion (NODE_T *p) ++{ ++ SOID_T w, y; ++ a68_make_soid (&w, STRONG, M_BOOL, 0); ++ mode_check_enclosed (SUB_NEXT (p), &w, &y); ++ SORT (&y) = SORT (&w); ++ if (!a68_is_coercible_in_context (&y, &w, NO_DEFLEXING)) ++ a68_cannot_coerce (NEXT (p), MOID (&y), MOID (&w), MEEK, NO_DEFLEXING, ENCLOSED_CLAUSE); ++} ++ ++/* Mode check argument list. */ ++ ++static void ++mode_check_argument_list (SOID_T **r, NODE_T *p, PACK_T **x, PACK_T **v, PACK_T **w) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, GENERIC_ARGUMENT_LIST)) ++ ATTRIBUTE (p) = ARGUMENT_LIST; ++ ++ if (IS (p, ARGUMENT_LIST)) ++ mode_check_argument_list (r, SUB (p), x, v, w); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T y, z; ++ if (*x != NO_PACK) ++ { ++ a68_make_soid (&z, STRONG, MOID (*x), 0); ++ a68_add_mode_to_pack_end (v, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else ++ a68_make_soid (&z, STRONG, NO_MOID, 0); ++ mode_check_unit (p, &z, &y); ++ a68_add_to_soid_list (r, p, &y); ++ } ++ else if (IS (p, TRIMMER)) ++ { ++ SOID_T z; ++ if (SUB (p) != NO_NODE) ++ { ++ a68_error (p, "syntax error detected in A", ARGUMENT); ++ a68_make_soid (&z, STRONG, M_ERROR, 0); ++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); ++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else if (*x != NO_PACK) ++ { ++ a68_make_soid (&z, STRONG, MOID (*x), 0); ++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); ++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); ++ FORWARD (*x); ++ } ++ else ++ a68_make_soid (&z, STRONG, NO_MOID, 0); ++ a68_add_to_soid_list (r, p, &z); ++ } ++ else if (IS (p, SUB_SYMBOL) && !OPTION_BRACKETS (&A68_JOB)) ++ a68_error (p, "syntax error detected in A", CALL); ++ } ++} ++ ++/* Mode check argument list 2. */ ++ ++static void ++mode_check_argument_list_2 (NODE_T *p, PACK_T *x, SOID_T *y, PACK_T **v, PACK_T **w) ++{ ++ SOID_T *top_sl = NO_SOID; ++ mode_check_argument_list (&top_sl, SUB (p), &x, v, w); ++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); ++ a68_free_soid_list (top_sl); ++} ++ ++/* Mode check meek int. */ ++ ++static void ++mode_check_meek_int (NODE_T *p) ++{ ++ SOID_T x, y; ++ a68_make_soid (&x, MEEK, M_INT, 0); ++ mode_check_unit (p, &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), MEEK, SAFE_DEFLEXING, 0); ++} ++ ++/* Mode check trimmer. */ ++ ++static void ++mode_check_trimmer (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, TRIMMER)) ++ mode_check_trimmer (SUB (p)); ++ else if (IS (p, UNIT)) ++ { ++ mode_check_meek_int (p); ++ mode_check_trimmer (NEXT (p)); ++ } ++ else ++ mode_check_trimmer (NEXT (p)); ++} ++ ++/* Mode check indexer. */ ++ ++static void ++mode_check_indexer (NODE_T *p, int *subs, int *trims) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, TRIMMER)) ++ { ++ (*trims)++; ++ mode_check_trimmer (SUB (p)); ++ } ++ else if (IS (p, UNIT)) ++ { ++ (*subs)++; ++ mode_check_meek_int (p); ++ } ++ else ++ { ++ mode_check_indexer (SUB (p), subs, trims); ++ mode_check_indexer (NEXT (p), subs, trims); ++ } ++} ++ ++/* Mode check call. */ ++ ++static void ++mode_check_call (NODE_T *p, MOID_T *n, SOID_T *x, SOID_T *y) ++{ ++ MOID (p) = n; ++ /* "partial_locale" is the mode of the locale. */ ++ PARTIAL_LOCALE (GINFO (p)) = a68_new_moid (); ++ ATTRIBUTE (PARTIAL_LOCALE (GINFO (p))) = PROC_SYMBOL; ++ PACK (PARTIAL_LOCALE (GINFO (p))) = NO_PACK; ++ SUB (PARTIAL_LOCALE (GINFO (p))) = SUB (n); ++ /* "partial_proc" is the mode of the resulting proc. */ ++ PARTIAL_PROC (GINFO (p)) = a68_new_moid (); ++ ATTRIBUTE (PARTIAL_PROC (GINFO (p))) = PROC_SYMBOL; ++ PACK (PARTIAL_PROC (GINFO (p))) = NO_PACK; ++ SUB (PARTIAL_PROC (GINFO (p))) = SUB (n); ++ /* Check arguments and construct modes. */ ++ SOID_T d; ++ mode_check_argument_list_2 (NEXT (p), PACK (n), &d, &PACK (PARTIAL_LOCALE (GINFO (p))), ++ &PACK (PARTIAL_PROC (GINFO (p)))); ++ DIM (PARTIAL_PROC (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_PROC (GINFO (p)))); ++ DIM (PARTIAL_LOCALE (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_LOCALE (GINFO (p)))); ++ PARTIAL_PROC (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_PROC (GINFO (p))); ++ PARTIAL_LOCALE (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_LOCALE (GINFO (p))); ++ if (DIM (MOID (&d)) != DIM (n)) ++ { ++ a68_error (p, "incorrect number of arguments for M", n); ++ a68_make_soid (y, SORT (x), SUB (n), 0); ++ /* a68_make_soid (y, SORT (x), M_ERROR, 0);. */ ++ } ++ else ++ { ++ if (!a68_is_coercible (MOID (&d), n, STRONG, ALIAS_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&d), n, STRONG, ALIAS_DEFLEXING, ARGUMENT); ++ if (DIM (PARTIAL_PROC (GINFO (p))) == 0) ++ a68_make_soid (y, SORT (x), SUB (n), 0); ++ else ++ { ++ a68_warning (NEXT (p), OPT_Wextensions, "@ is an extension"); ++ a68_make_soid (y, SORT (x), PARTIAL_PROC (GINFO (p)), 0); ++ } ++ } ++} ++ ++/* Mode check slice. */ ++ ++static void ++mode_check_slice (NODE_T *p, MOID_T *ori, SOID_T *x, SOID_T *y) ++{ ++ MOID_T *m = a68_depref_completely (ori), *n = ori; ++ /* WEAK coercion. */ ++ while ((IS_REF (n) && !a68_is_ref_row (n)) || (IS (n, PROC_SYMBOL) && PACK (n) == NO_PACK)) ++ n = a68_depref_once (n); ++ ++ if (n == NO_MOID || !(SLICE (DEFLEX (n)) != NO_MOID || a68_is_ref_row (n))) ++ { ++ if (A68_IF_MODE_IS_WELL (n)) ++ a68_error (p, "M A does not yield a row or procedure", ++ n, ATTRIBUTE (SUB (p))); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ ++ MOID (p) = n; ++ int dim = 0, subs = 0, trims = 0; ++ mode_check_indexer (SUB_NEXT (p), &subs, &trims); ++ bool is_ref; ++ if ((is_ref = a68_is_ref_row (n)) != 0) ++ dim = DIM (DEFLEX (SUB (n))); ++ else ++ dim = DIM (DEFLEX (n)); ++ ++ if ((subs + trims) != dim) ++ { ++ a68_error (p, "incorrect number of indexers for M", n); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ } ++ else ++ { ++ if (subs > 0 && trims == 0) ++ { ++ ANNOTATION (NEXT (p)) = SLICE; ++ m = n; ++ } ++ else ++ { ++ ANNOTATION (NEXT (p)) = TRIMMER; ++ m = n; ++ } ++ while (subs > 0) ++ { ++ if (is_ref) ++ m = NAME (m); ++ else ++ { ++ if (IS_FLEX (m)) ++ m = SUB (m); ++ m = SLICE (m); ++ } ++ gcc_assert (m != NO_MOID); ++ subs--; ++ } ++ /* A trim cannot be but deflexed. */ ++ if (ANNOTATION (NEXT (p)) == TRIMMER && TRIM (m) != NO_MOID) ++ { ++ gcc_assert (TRIM (m) != NO_MOID); ++ a68_make_soid (y, SORT (x), TRIM (m), 0); ++ } ++ else ++ a68_make_soid (y, SORT (x), m, 0); ++ } ++} ++ ++/* Mode check specification. */ ++ ++static enum a68_attribute ++mode_check_specification (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ SOID_T w, d; ++ a68_make_soid (&w, WEAK, NO_MOID, 0); ++ mode_check_unit (SUB (p), &w, &d); ++ MOID_T *ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); ++ MOID_T *m = a68_depref_completely (ori); ++ if (IS (m, PROC_SYMBOL)) ++ { ++ /* Assume CALL. */ ++ mode_check_call (p, m, x, y); ++ return CALL; ++ } ++ else if (IS_ROW (m) || IS_FLEX (m)) ++ { ++ /* Assume SLICE. */ ++ mode_check_slice (p, ori, x, y); ++ return SLICE; ++ } ++ else ++ { ++ if (m != M_ERROR) ++ a68_error (p, "M construct must yield a routine or a row value", m); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return PRIMARY; ++ } ++} ++ ++/* Mode check selection. */ ++ ++static void ++mode_check_selection (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ bool deflex = false; ++ NODE_T *secondary = SUB_NEXT (p); ++ SOID_T w, d; ++ a68_make_soid (&w, WEAK, NO_MOID, 0); ++ mode_check_unit (secondary, &w, &d); ++ MOID_T *n, *ori; ++ n = ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); ++ PACK_T *t = NO_PACK, *t_2 = NO_PACK; ++ bool coerce = true; ++ while (coerce) ++ { ++ if (IS (n, STRUCT_SYMBOL)) ++ { ++ coerce = false; ++ t = PACK (n); ++ } ++ else if (IS_REF (n) && (IS_ROW (SUB (n)) || IS_FLEX (SUB (n))) && MULTIPLE (n) != NO_MOID) ++ { ++ coerce = false; ++ deflex = true; ++ t = PACK (MULTIPLE (n)); ++ } ++ else if ((IS_ROW (n) || IS_FLEX (n)) && MULTIPLE (n) != NO_MOID) ++ { ++ coerce = false; ++ deflex = true; ++ t = PACK (MULTIPLE (n)); ++ } ++ else if (IS_REF (n) && a68_is_name_struct (n)) ++ { ++ coerce = false; ++ t = PACK (NAME (n)); ++ } ++ else if (a68_is_deprefable (n)) ++ { ++ coerce = true; ++ n = SUB (n); ++ t = NO_PACK; ++ } ++ else ++ { ++ coerce = false; ++ t = NO_PACK; ++ } ++ } ++ if (t == NO_PACK) ++ { ++ if (A68_IF_MODE_IS_WELL (MOID (&d))) ++ a68_error (secondary, "M A does not yield a structured value", ori, ATTRIBUTE (secondary)); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++ return; ++ } ++ ++ MOID (NEXT (p)) = n; ++ const char *fs = NSYMBOL (SUB (p)); ++ MOID_T *str = n; ++ while (IS_REF (str)) ++ str = SUB (str); ++ if (IS_FLEX (str)) ++ str = SUB (str); ++ if (IS_ROW (str)) ++ str = SUB (str); ++ t_2 = PACK (str); ++ while (t != NO_PACK && t_2 != NO_PACK) ++ { ++ if (TEXT (t) == fs || strcmp (TEXT (t), fs) == 0) ++ { ++ MOID_T *ret = MOID (t); ++ if (deflex && TRIM (ret) != NO_MOID) ++ ret = TRIM (ret); ++ a68_make_soid (y, SORT (x), ret, 0); ++ MOID (p) = ret; ++ NODE_PACK (SUB (p)) = t_2; ++ return; ++ } ++ FORWARD (t); ++ FORWARD (t_2); ++ } ++ a68_make_soid (&d, NO_SORT, n, 0); ++ a68_error (p, "M has no field Z", str, fs); ++ a68_make_soid (y, SORT (x), M_ERROR, 0); ++} ++ ++/* Mode check format text. */ ++ ++static void ++mode_check_format_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ mode_check_format_text (SUB (p)); ++ if (IS (p, FORMAT_PATTERN)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_FORMAT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ { ++ SOID_T x, y; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); ++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) ++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); ++ } ++ } ++} ++ ++/* Mode check unit. */ ++ ++static void ++mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ mode_check_unit (SUB (p), x, y); ++ /* Ex primary. */ ++ else if (IS (p, SPECIFICATION)) ++ { ++ ATTRIBUTE (p) = mode_check_specification (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, ATTRIBUTE (p)); ++ } ++ else if (IS (p, CAST)) ++ { ++ mode_check_cast (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, CAST); ++ } ++ else if (IS (p, DENOTATION)) ++ { ++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); ++ a68_warn_for_voiding (p, x, y, DENOTATION); ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ if ((TAX (p) == NO_TAG) && (MOID (p) == NO_MOID)) ++ { ++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); ++ if (att == STOP) ++ { ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ a68_error (p, "tag S has not been declared properly"); ++ MOID (p) = M_ERROR; ++ } ++ else ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); ++ if (att == IDENTIFIER && z != NO_TAG) ++ MOID (p) = MOID (z); ++ else ++ { ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ a68_error (p, "tag S has not been declared properly"); ++ MOID (p) = M_ERROR; ++ } ++ } ++ } ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++ a68_warn_for_voiding (p, x, y, IDENTIFIER); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ mode_check_enclosed (SUB (p), x, y); ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ mode_check_format_text (p); ++ a68_make_soid (y, SORT (x), M_FORMAT, 0); ++ a68_warn_for_voiding (p, x, y, FORMAT_TEXT); ++ /* Ex secondary. */ ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ mode_check_declarer (SUB (p)); ++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); ++ a68_warn_for_voiding (p, x, y, GENERATOR); ++ } ++ else if (IS (p, SELECTION)) ++ { ++ mode_check_selection (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, SELECTION); ++ /* Ex tertiary. */ ++ } ++ else if (IS (p, NIHIL)) ++ a68_make_soid (y, STRONG, M_HIP, 0); ++ else if (IS (p, FORMULA)) ++ { ++ mode_check_formula (p, x, y); ++ if (!IS_REF (MOID (y))) ++ a68_warn_for_voiding (p, x, y, FORMULA); ++ } ++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) ++ { ++ if (SORT (x) != STRONG) ++ a68_warning (p, 0, "@ should not be in C context", SORT (x)); ++ /* a68_make_soid (y, STRONG, M_HIP, 0); */ ++ a68_make_soid (y, SORT (x), M_HIP, 0); ++ } ++ else if (IS (p, ASSIGNATION)) ++ mode_check_assignation (SUB (p), x, y); ++ else if (IS (p, IDENTITY_RELATION)) ++ { ++ mode_check_identity_relation (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, IDENTITY_RELATION); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ mode_check_routine_text (SUB (p), y); ++ a68_make_soid (y, SORT (x), MOID (p), 0); ++ a68_warn_for_voiding (p, x, y, ROUTINE_TEXT); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ mode_check_assertion (SUB (p)); ++ a68_make_soid (y, STRONG, M_VOID, 0); ++ } ++ else if (IS (p, AND_FUNCTION)) ++ { ++ mode_check_bool_function (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, AND_FUNCTION); ++ } ++ else if (IS (p, OR_FUNCTION)) ++ { ++ mode_check_bool_function (SUB (p), x, y); ++ a68_warn_for_voiding (p, x, y, OR_FUNCTION); ++ } ++ ++ MOID (p) = MOID (y); ++} ++ ++/* Mode check a module text. */ ++ ++static void ++mode_check_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) ++ { ++ /* XXX unde def is an enquiry clause */ ++ SOID_T *z = NO_SOID; ++ SOID_T ix; ++ a68_make_soid (&ix, STRONG, M_VOID, 0); ++ mode_check_serial (&z, NEXT_SUB (p), &ix, true); ++ a68_free_soid_list (z); ++ } ++ } ++} ++ ++/* Mode check a module declaration. */ ++ ++static void ++mode_check_module_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODULE_TEXT)) ++ mode_check_module_text (SUB (p)); ++ else ++ mode_check_module_declaration (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-coerce.cc +@@ -0,0 +1,925 @@ ++/* Mode coercion driver. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++#define A68_INSERT_COERCIONS(n, p, q) a68_make_strong ((n), (p), MOID (q)) ++ ++/* A few forward references of functions defined below. */ ++ ++static void coerce_unit (NODE_T *p, SOID_T *q); ++static void coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))); ++static void coerce_operand (NODE_T *p, SOID_T *q); ++static void coerce_enclosed (NODE_T *p, SOID_T *q); ++ ++/* Coerce bounds. */ ++ ++static void ++coerce_bounds (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, MEEK, M_INT, 0); ++ coerce_unit (p, &q); ++ } ++ else ++ coerce_bounds (SUB (p)); ++ } ++} ++ ++/* Coerce declarer. */ ++ ++static void ++coerce_declarer (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, BOUNDS)) ++ coerce_bounds (SUB (p)); ++ else ++ coerce_declarer (SUB (p)); ++ } ++} ++ ++/* Coerce identity declaration. */ ++ ++static void ++coerce_identity_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ coerce_declarer (SUB (p)); ++ coerce_identity_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ break; ++ } ++ default: ++ coerce_identity_declaration (SUB (p)); ++ coerce_identity_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce variable declaration. */ ++ ++static void ++coerce_variable_declaration (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DECLARER: ++ coerce_declarer (SUB (p)); ++ coerce_variable_declaration (NEXT (p)); ++ break; ++ case DEFINING_IDENTIFIER: ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, SUB_MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ break; ++ } ++ /* Fallthrough. */ ++ default: ++ coerce_variable_declaration (SUB (p)); ++ coerce_variable_declaration (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce routine text. */ ++ ++static void ++coerce_routine_text (NODE_T *p) ++{ ++ if (IS (p, PARAMETER_PACK)) ++ FORWARD (p); ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &w); ++} ++ ++/* Coerce proc declaration. */ ++ ++static void ++coerce_proc_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, ROUTINE_TEXT)) ++ coerce_routine_text (SUB (p)); ++ else ++ { ++ coerce_proc_declaration (SUB (p)); ++ coerce_proc_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce_op_declaration. */ ++ ++static void ++coerce_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &q); ++ } ++ else ++ { ++ coerce_op_declaration (SUB (p)); ++ coerce_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce brief op declaration. */ ++ ++static void ++coerce_brief_op_declaration (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, DEFINING_OPERATOR)) ++ coerce_routine_text (SUB (NEXT_NEXT (p))); ++ else ++ { ++ coerce_brief_op_declaration (SUB (p)); ++ coerce_brief_op_declaration (NEXT (p)); ++ } ++} ++ ++/* Coerce declaration list. */ ++ ++static void ++coerce_declaration_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case IDENTITY_DECLARATION: ++ coerce_identity_declaration (SUB (p)); ++ break; ++ case VARIABLE_DECLARATION: ++ coerce_variable_declaration (SUB (p)); ++ break; ++ case MODE_DECLARATION: ++ coerce_declarer (SUB (p)); ++ break; ++ case PROCEDURE_DECLARATION: ++ case PROCEDURE_VARIABLE_DECLARATION: ++ coerce_proc_declaration (SUB (p)); ++ break; ++ case BRIEF_OPERATOR_DECLARATION: ++ coerce_brief_op_declaration (SUB (p)); ++ break; ++ case OPERATOR_DECLARATION: ++ coerce_op_declaration (SUB (p)); ++ break; ++ default: ++ coerce_declaration_list (SUB (p)); ++ coerce_declaration_list (NEXT (p)); ++ break; ++ } ++ } ++} ++ ++/* Coerce serial. */ ++ ++static void ++coerce_serial (NODE_T *p, SOID_T *q, bool k) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, INITIALISER_SERIES)) ++ { ++ coerce_serial (SUB (p), q, false); ++ coerce_serial (NEXT (p), q, k); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ coerce_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ coerce_serial (NEXT (p), q, k); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ NODE_T *z = NEXT (p); ++ if (z != NO_NODE) ++ { ++ if (IS (z, EXIT_SYMBOL) || IS (z, END_SYMBOL) || IS (z, CLOSE_SYMBOL)) ++ coerce_serial (SUB (p), q, true); ++ else ++ coerce_serial (SUB (p), q, false); ++ } ++ else ++ coerce_serial (SUB (p), q, true); ++ coerce_serial (NEXT (p), q, k); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ coerce_serial (SUB (p), q, k); ++ else if (IS (p, UNIT)) ++ { ++ if (k) ++ coerce_unit (p, q); ++ else ++ { ++ SOID_T strongvoid; ++ a68_make_soid (&strongvoid, STRONG, M_VOID, 0); ++ coerce_unit (p, &strongvoid); ++ } ++ } ++} ++ ++/* Coerce closed. */ ++ ++static void ++coerce_closed (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, SERIAL_CLAUSE)) ++ coerce_serial (p, q, true); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ coerce_closed (NEXT (p), q); ++} ++ ++/* Coerce access clause. */ ++ ++static void ++coerce_access (NODE_T *p, SOID_T *q) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ENCLOSED_CLAUSE)) ++ coerce_enclosed (p, q); ++ } ++} ++ ++/* Coerce conditional. */ ++ ++static void ++coerce_conditional (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_serial (NEXT_SUB (p), q, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ coerce_conditional (SUB (p), q); ++ } ++} ++ ++/* Coerce unit list. */ ++ ++static void ++coerce_unit_list (NODE_T *p, SOID_T *q) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ coerce_unit_list (SUB (p), q); ++ coerce_unit_list (NEXT (p), q); ++ } ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) ++ coerce_unit_list (NEXT (p), q); ++ else if (IS (p, UNIT)) ++ { ++ coerce_unit (p, q); ++ coerce_unit_list (NEXT (p), q); ++ } ++} ++ ++/* Coerce int case. */ ++ ++static void ++coerce_int_case (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_INT, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_unit_list (NEXT_SUB (p), q); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ coerce_int_case (SUB (p), q); ++ } ++} ++ ++/* Coerce spec unit list. */ ++ ++static void ++coerce_spec_unit_list (NODE_T *p, SOID_T *q) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) ++ coerce_spec_unit_list (SUB (p), q); ++ else if (IS (p, UNIT)) ++ coerce_unit (p, q); ++ } ++} ++ ++/* Coerce united case. */ ++ ++static void ++coerce_united_case (NODE_T *p, SOID_T *q) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, MOID (SUB (p)), 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ FORWARD (p); ++ coerce_spec_unit_list (NEXT_SUB (p), q); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ coerce_serial (NEXT_SUB (p), q, true); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ coerce_united_case (SUB (p), q); ++ } ++} ++ ++/* Coerce loop. */ ++ ++static void ++coerce_loop (NODE_T *p) ++{ ++ if (IS (p, FOR_PART)) ++ coerce_loop (NEXT (p)); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_INT, 0); ++ coerce_unit (NEXT_SUB (p), &w); ++ coerce_loop (NEXT (p)); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ coerce_loop (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ SOID_T w; ++ NODE_T *do_p = NEXT_SUB (p); ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ coerce_serial (do_p, &w, true); ++ } ++} ++ ++/* Coerce struct display. */ ++ ++static void ++coerce_struct_display (PACK_T **r, NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (IS (p, UNIT_LIST)) ++ { ++ coerce_struct_display (r, SUB (p)); ++ coerce_struct_display (r, NEXT (p)); ++ } ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) ++ coerce_struct_display (r, NEXT (p)); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T s; ++ a68_make_soid (&s, STRONG, MOID (*r), 0); ++ coerce_unit (p, &s); ++ FORWARD (*r); ++ coerce_struct_display (r, NEXT (p)); ++ } ++} ++ ++/* Coerce collateral. */ ++ ++static void ++coerce_collateral (NODE_T *p, SOID_T *q) ++{ ++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) ++ { ++ if (IS (MOID (q), STRUCT_SYMBOL)) ++ { ++ PACK_T *t = PACK (MOID (q)); ++ coerce_struct_display (&t, p); ++ } ++ else if (IS_FLEX (MOID (q))) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, SLICE (SUB_MOID (q)), 0); ++ coerce_unit_list (p, &w); ++ } ++ else if (IS_ROW (MOID (q))) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, SLICE (MOID (q)), 0); ++ coerce_unit_list (p, &w); ++ } ++ else ++ { ++ /* if (MOID (q) != M_VOID). */ ++ coerce_unit_list (p, q); ++ } ++ } ++} ++ ++/* Coerce_enclosed. */ ++ ++static void ++coerce_enclosed (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, ENCLOSED_CLAUSE)) ++ coerce_enclosed (SUB (p), q); ++ else if (IS (p, CLOSED_CLAUSE)) ++ coerce_closed (SUB (p), q); ++ else if (IS (p, COLLATERAL_CLAUSE)) ++ coerce_collateral (SUB (p), q); ++ else if (IS (p, ACCESS_CLAUSE)) ++ coerce_access (SUB (p), q); ++ else if (IS (p, PARALLEL_CLAUSE)) ++ coerce_collateral (SUB (NEXT_SUB (p)), q); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ coerce_conditional (SUB (p), q); ++ else if (IS (p, CASE_CLAUSE)) ++ coerce_int_case (SUB (p), q); ++ else if (IS (p, CONFORMITY_CLAUSE)) ++ coerce_united_case (SUB (p), q); ++ else if (IS (p, LOOP_CLAUSE)) ++ coerce_loop (SUB (p)); ++ ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++} ++ ++/* Get monad moid. */ ++ ++static MOID_T * ++get_monad_moid (NODE_T *p) ++{ ++ if (TAX (p) != NO_TAG && TAX (p) != A68_PARSER (error_tag)) ++ { ++ MOID (p) = MOID (TAX (p)); ++ return MOID (PACK (MOID (p))); ++ } ++ else ++ return M_ERROR; ++} ++ ++/* Coerce monad oper. */ ++ ++static void ++coerce_monad_oper (NODE_T *p, SOID_T *q) ++{ ++ if (p != NO_NODE) ++ { ++ SOID_T z; ++ a68_make_soid (&z, FIRM, MOID (PACK (MOID (TAX (p)))), 0); ++ A68_INSERT_COERCIONS (NEXT (p), MOID (q), &z); ++ } ++} ++ ++/* Coerce monad formula. */ ++ ++static void ++coerce_monad_formula (NODE_T *p) ++{ ++ SOID_T e; ++ a68_make_soid (&e, STRONG, get_monad_moid (p), 0); ++ coerce_operand (NEXT (p), &e); ++ coerce_monad_oper (p, &e); ++} ++ ++/* Coerce operand. */ ++ ++static void ++coerce_operand (NODE_T *p, SOID_T *q) ++{ ++ if (IS (p, MONADIC_FORMULA)) ++ { ++ coerce_monad_formula (SUB (p)); ++ if (MOID (p) != MOID (q)) ++ { ++ a68_make_sub (p, p, FORMULA); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ a68_make_sub (p, p, TERTIARY); ++ } ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, FORMULA)) ++ { ++ coerce_formula (SUB (p), q); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, SECONDARY)) ++ { ++ coerce_unit (SUB (p), q); ++ MOID (p) = MOID (SUB (p)); ++ } ++} ++ ++/* Coerce formula. */ ++ ++static void ++coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))) ++{ ++ if (IS (p, MONADIC_FORMULA) && NEXT (p) == NO_NODE) ++ coerce_monad_formula (SUB (p)); ++ else ++ { ++ if (TAX (NEXT (p)) != NO_TAG && TAX (NEXT (p)) != A68_PARSER (error_tag)) ++ { ++ SOID_T s; ++ NODE_T *op = NEXT (p), *nq = NEXT_NEXT (p); ++ MOID_T *w = MOID (op); ++ MOID_T *u = MOID (PACK (w)), *v = MOID (NEXT (PACK (w))); ++ a68_make_soid (&s, STRONG, u, 0); ++ coerce_operand (p, &s); ++ a68_make_soid (&s, STRONG, v, 0); ++ coerce_operand (nq, &s); ++ } ++ } ++} ++ ++/* Coerce assignation. */ ++ ++static void ++coerce_assignation (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, SOFT, MOID (p), 0); ++ coerce_unit (SUB (p), &w); ++ a68_make_soid (&w, STRONG, SUB_MOID (p), 0); ++ coerce_unit (NEXT_NEXT (p), &w); ++} ++ ++/* Coerce relation. */ ++ ++static void ++coerce_relation (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_unit (SUB (p), &w); ++ a68_make_soid (&w, STRONG, MOID (NEXT_NEXT (p)), 0); ++ coerce_unit (SUB (NEXT_NEXT (p)), &w); ++} ++ ++/* Coerce bool function. */ ++ ++static void ++coerce_bool_function (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_BOOL, 0); ++ coerce_unit (SUB (p), &w); ++ coerce_unit (SUB (NEXT_NEXT (p)), &w); ++} ++ ++/* Coerce assertion. */ ++ ++static void ++coerce_assertion (NODE_T *p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, MEEK, M_BOOL, 0); ++ coerce_enclosed (SUB_NEXT (p), &w); ++} ++ ++/* Coerce selection. */ ++ ++static void ++coerce_selection (NODE_T * p) ++{ ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (NEXT (p)), 0); ++ coerce_unit (SUB_NEXT (p), &w); ++} ++ ++/* Coerce cast. */ ++ ++static void ++coerce_cast (NODE_T * p) ++{ ++ coerce_declarer (p); ++ SOID_T w; ++ a68_make_soid (&w, STRONG, MOID (p), 0); ++ coerce_enclosed (NEXT (p), &w); ++} ++ ++/* Coerce argument list. */ ++ ++static void ++coerce_argument_list (PACK_T **r, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ARGUMENT_LIST)) ++ coerce_argument_list (r, SUB (p)); ++ else if (IS (p, UNIT)) ++ { ++ SOID_T s; ++ a68_make_soid (&s, STRONG, MOID (*r), 0); ++ coerce_unit (p, &s); ++ FORWARD (*r); ++ } ++ else if (IS (p, TRIMMER)) ++ FORWARD (*r); ++ } ++} ++ ++/* Coerce call. */ ++ ++static void ++coerce_call (NODE_T *p) ++{ ++ MOID_T *proc = MOID (p); ++ SOID_T w; ++ a68_make_soid (&w, MEEK, proc, 0); ++ coerce_unit (SUB (p), &w); ++ FORWARD (p); ++ PACK_T *t = PACK (proc); ++ coerce_argument_list (&t, SUB (p)); ++} ++ ++/* Coerce meek int. */ ++ ++static void ++coerce_meek_int (NODE_T *p) ++{ ++ SOID_T x; ++ a68_make_soid (&x, MEEK, M_INT, 0); ++ coerce_unit (p, &x); ++} ++ ++/* Coerce trimmer. */ ++ ++static void ++coerce_trimmer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, UNIT)) ++ { ++ coerce_meek_int (p); ++ coerce_trimmer (NEXT (p)); ++ } ++ else ++ coerce_trimmer (NEXT (p)); ++ } ++} ++ ++/* Coerce indexer. */ ++ ++static void ++coerce_indexer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, TRIMMER)) ++ coerce_trimmer (SUB (p)); ++ else if (IS (p, UNIT)) ++ coerce_meek_int (p); ++ else ++ { ++ coerce_indexer (SUB (p)); ++ coerce_indexer (NEXT (p)); ++ } ++ } ++} ++ ++/* Coerce_slice. */ ++ ++static void ++coerce_slice (NODE_T *p) ++{ ++ SOID_T w; ++ MOID_T *row = MOID (p); ++ a68_make_soid (&w, STRONG, row, 0); ++ coerce_unit (SUB (p), &w); ++ coerce_indexer (SUB_NEXT (p)); ++} ++ ++/* Coerce format text. */ ++ ++static void ++coerce_format_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ coerce_format_text (SUB (p)); ++ if (IS (p, FORMAT_PATTERN)) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_FORMAT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ { ++ SOID_T x; ++ a68_make_soid (&x, STRONG, M_INT, 0); ++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); ++ } ++ } ++} ++ ++/* Coerce unit. */ ++ ++static void ++coerce_unit (NODE_T *p, SOID_T *q) ++{ ++ if (p == NO_NODE) ++ return; ++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) ++ { ++ coerce_unit (SUB (p), q); ++ MOID (p) = MOID (SUB (p)); ++ /* Ex primary. */ ++ } ++ else if (IS (p, CALL)) ++ { ++ coerce_call (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, SLICE)) ++ { ++ coerce_slice (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, CAST)) ++ { ++ coerce_cast (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (a68_is_one_of (p, DENOTATION, IDENTIFIER, STOP)) ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ coerce_format_text (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ { ++ coerce_enclosed (p, q); ++ /* Ex secondary. */ ++ } ++ else if (IS (p, SELECTION)) ++ { ++ coerce_selection (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ coerce_declarer (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ /* Ex tertiary. */ ++ } ++ else if (IS (p, NIHIL)) ++ { ++ if (ATTRIBUTE (MOID (q)) != REF_SYMBOL && MOID (q) != M_VOID) ++ a68_error (p, "context does not require a name"); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, FORMULA)) ++ { ++ coerce_formula (SUB (p), q); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, JUMP)) ++ { ++ if (MOID (q) == M_PROC_VOID) ++ a68_make_sub (p, p, PROCEDURING); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, SKIP)) ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ else if (IS (p, ASSIGNATION)) ++ { ++ coerce_assignation (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); ++ } ++ else if (IS (p, IDENTITY_RELATION)) ++ { ++ coerce_relation (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ { ++ coerce_routine_text (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (a68_is_one_of (p, AND_FUNCTION, OR_FUNCTION, STOP)) ++ { ++ coerce_bool_function (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ coerce_assertion (SUB (p)); ++ A68_INSERT_COERCIONS (p, MOID (p), q); ++ } ++} ++ ++/* Coerce module text. */ ++ ++static void ++coerce_module_text (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) ++ { ++ SOID_T w; ++ a68_make_soid (&w, STRONG, M_VOID, 0); ++ coerce_serial (NEXT_SUB (p), &w, true); ++ } ++ } ++} ++ ++/* Coerce module declaration. */ ++ ++static void ++coerce_module_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODULE_TEXT)) ++ coerce_module_text (SUB (p)); ++ else ++ coerce_module_declaration (SUB (p)); ++ } ++} ++ ++/* Driver for coercion insertions. */ ++ ++void ++a68_coercion_inserter (NODE_T *p) ++{ ++ if (IS (p, PACKET)) ++ { ++ p = SUB (p); ++ if (IS (p, PARTICULAR_PROGRAM)) ++ { ++ SOID_T q; ++ a68_make_soid (&q, STRONG, M_VOID, 0); ++ coerce_enclosed (SUB (p), &q); ++ } ++ else if (IS (p, PRELUDE_PACKET)) ++ coerce_module_declaration (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-moids-equivalence.cc +@@ -0,0 +1,183 @@ ++/* Prove equivalence of modes. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Routines for establishing equivalence of modes. ++ After I made this mode equivalencer (in 1993), I found: ++ ++ Algol Bulletin 30.3.3 C.H.A. Koster: On infinite modes, 86-89 [1969], ++ ++ which essentially concurs with this test on mode equivalence I wrote. ++ It is elementary logic anyway: prove equivalence, assuming equivalence. */ ++ ++/* Forward declarations of some of the functions defined below. */ ++ ++static bool are_modes_equivalent (MOID_T * a, MOID_T * b); ++ ++/* Whether packs are equivalent, same sequence of equivalence modes. */ ++ ++static bool ++are_packs_equivalent (PACK_T *s, PACK_T *t, ++ bool compare_names = true) ++{ ++ for (; s != NO_PACK && t != NO_PACK; s = s->next, t = t->next) ++ { ++ if (!are_modes_equivalent (MOID (s), MOID (t))) ++ return false; ++ if (compare_names) ++ { ++ if (TEXT (s) != TEXT (t) ++ && TEXT (s) != NO_TEXT ++ && TEXT (t) != NO_TEXT ++ && strcmp (TEXT (s), TEXT (t)) != 0) ++ return false; ++ } ++ } ++ ++ return s == NO_PACK && t == NO_PACK; ++} ++ ++/* Whether packs are subsets. */ ++ ++static bool ++is_united_subset (PACK_T *s, PACK_T *t) ++{ ++ /* For all modes in 's' there must be an equivalent in 't'. */ ++ for (PACK_T *p = s; p != NO_PACK; p = p->next) ++ { ++ bool f = false; ++ for (PACK_T *q = t; q != NO_PACK && !f; q = q->next) ++ f = are_modes_equivalent (MOID (p), MOID (q)); ++ ++ if (!f) ++ return false; ++ } ++ ++ return true; ++} ++ ++/* Whether packs are subsets. */ ++ ++static bool ++are_united_packs_equivalent (PACK_T *s, PACK_T *t) ++{ ++ return is_united_subset (s, t) && is_united_subset (t, s); ++} ++ ++/* Whether moids A and B are structurally equivalent. */ ++ ++static bool ++are_modes_equivalent (MOID_T * a, MOID_T * b) ++{ ++ /* First lets try some cheap heuristics. */ ++ ++ if (a == NO_MOID || b == NO_MOID) ++ /* Modes can be NO_MOID in partial argument lists. */ ++ return false; ++ else if (a == M_ERROR || b == M_ERROR) ++ return false; ++ else if (a == b) ++ return true; ++ else if (ATTRIBUTE (a) != ATTRIBUTE (b)) ++ return false; ++ else if (DIM (a) != DIM (b)) ++ return false; ++ else if (IS (a, STANDARD)) ++ return (a == b); ++ else if (EQUIVALENT (a) == b || EQUIVALENT (b) == a) ++ return true; ++ else if (a68_is_postulated_pair (A68 (top_postulate), a, b) ++ || a68_is_postulated_pair (A68 (top_postulate), b, a)) ++ return true; ++ else if (IS (a, INDICANT)) ++ { ++ if (NODE (a) == NO_NODE || NODE (b) == NO_NODE) ++ return false; ++ else ++ return (NODE (a) == NODE (b) ++ || strcmp (NSYMBOL (NODE (a)), NSYMBOL (NODE (b))) == 0); ++ } ++ ++ /* Investigate structure. */ ++ ++ /* We now know that 'a' and 'b' have same attribute, dimension, ... */ ++ if (IS (a, REF_SYMBOL)) ++ /* REF MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, ROW_SYMBOL)) ++ /* [] MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, FLEX_SYMBOL)) ++ /* FLEX [...] MODE */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, STRUCT_SYMBOL)) ++ { ++ /* STRUCT (...) */ ++ POSTULATE_T *save = A68 (top_postulate); ++ a68_make_postulate (&A68 (top_postulate), a, b); ++ bool z = are_packs_equivalent (PACK (a), PACK (b)); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++ } ++ else if (IS (a, UNION_SYMBOL)) ++ /* UNION (...) */ ++ return are_united_packs_equivalent (PACK (a), PACK (b)); ++ else if (IS (a, PROC_SYMBOL) && PACK (a) == NO_PACK && PACK (b) == NO_PACK) ++ /* PROC MOID */ ++ return are_modes_equivalent (a->sub, b->sub); ++ else if (IS (a, PROC_SYMBOL) && PACK (a) != NO_PACK && PACK (b) != NO_PACK) ++ { ++ /* PROC (...) MOID */ ++ POSTULATE_T *save = A68 (top_postulate); ++ a68_make_postulate (&A68 (top_postulate), a, b); ++ bool z = are_modes_equivalent (a->sub, b->sub); ++ if (z) ++ z = are_packs_equivalent (PACK (a), PACK (b), ++ false /* compare_names */); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++ } ++ else if (IS (a, SERIES_MODE) || IS (a, STOWED_MODE)) ++ /* Modes occurring in displays. */ ++ return are_packs_equivalent (PACK (a), PACK (b)); ++ ++ return false; ++} ++ ++//! @brief Whether two modes are structurally equivalent. ++ ++bool ++a68_prove_moid_equivalence (MOID_T *p, MOID_T *q) ++{ ++// Prove two modes to be equivalent under assumption that they indeed are. ++ POSTULATE_T *save = A68 (top_postulate); ++ bool z = are_modes_equivalent (p, q); ++ a68_free_postulate_list (A68 (top_postulate), save); ++ A68 (top_postulate) = save; ++ return z; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-pragmat.cc +@@ -0,0 +1,202 @@ ++/* Handling of compiler pragmats. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Utility macros useful for parsing pragmat contents. */ ++ ++#define SKIP_WHITESPACES(P) \ ++ while (ISSPACE (*(P))) (P)++ ++ ++#define PARSE_WORD(P,W) \ ++ do \ ++ { \ ++ (W) = (char *) alloca (strlen ((P))); \ ++ size_t i = 0; \ ++ while (ISALPHA (*(P))) \ ++ (W)[i++] = *((P)++); \ ++ (W)[i] = '\0'; \ ++ } while (0) ++ ++/* Parse a string denotation and return its value in an allocated buffer in ++ *STR. It is up to the caller to dispose of the allocated memory. ++ ++ This function returns a pointer to the character following the string ++ denotation in P, or P in case of parse error. ++ ++ In case of parse error *STR is also set to NULL. */ ++ ++const char * ++parse_string_denotation (const char *p, char **str) ++{ ++ const char *orig = p; ++ size_t i = 0; ++ char *s = (char *) xmalloc (2 * strlen (p)); ++ ++ if (*(p++) != '\"') ++ goto error; ++ while (*p != '\0' && *p != '\"') ++ { ++ if (*p == '\'' && *(p + 1) == '\"') ++ { ++ s[i++] = '\"'; ++ p += 2; ++ } ++ else ++ { ++ s[i++] = *p; ++ p++; ++ } ++ } ++ if (*p != '\"') ++ goto error; ++ ++ *str = s; ++ return p + 1; ++ error: ++ free (s); ++ *str = NULL; ++ return orig; ++} ++ ++/* PR access MODULE in "filename" PR */ ++ ++const char * ++handle_access_in_pragmat (NODE_T *p, const char *pragmat, size_t pos) ++{ ++ const char *beginning = pragmat; ++ ++ SKIP_WHITESPACES (pragmat); ++ /* Parse module name. */ ++ char *module; ++ PARSE_WORD (pragmat, module); ++ if (*module == '\0') ++ { ++ a68_error (p, "invalid pragmat: expected module name after %"); ++ return NULL; ++ } ++ SKIP_WHITESPACES (pragmat); ++ /* Parse "in " */ ++ if (strncmp (pragmat, "in ", 3) != 0) ++ { ++ a68_error (p, "invalid pragmat: expected % after module name"); ++ return NULL; ++ } ++ pragmat += 3; ++ SKIP_WHITESPACES (pragmat); ++ /* Parse a string denotation. */ ++ char *filename; ++ pragmat = parse_string_denotation (pragmat, &filename); ++ if (filename == NULL) ++ { ++ size_t off = pos + pragmat - beginning; ++ char *found; ++ PARSE_WORD (pragmat, found); ++ a68_error_in_pragmat (p, off, ++ "in % pragmat, expected string, found Z", ++ found); ++ return NULL; ++ } ++ /* Add entry in the module files map. */ ++ const char **pmodule = A68_MODULE_FILES->get (module); ++ if (pmodule != NULL) ++ { ++ a68_error_in_pragmat (p, pos + pragmat - beginning, ++ "module Z cannot appear in multiple % pragmats", ++ module); ++ return NULL; ++ } ++ ++ SKIP_WHITESPACES (pragmat); ++ /* Skip closing PR or PRAGMAT. */ ++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) ++ pragmat += 2; ++ else ++ pragmat += 7; ++ ++ A68_MODULE_FILES->put (ggc_strdup (module), ggc_strdup (filename)); ++ free (filename); ++ return pragmat; ++} ++ ++/* Parse and action on a pragmat. */ ++ ++void ++handle_pragmat (NODE_T *p) ++{ ++ const char *pragmat = NPRAGMAT (p); ++ if (pragmat != NULL ++ && (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL ++ || NPRAGMAT_TYPE (p) == BOLD_PRAGMAT_SYMBOL)) ++ { ++ /* Process pragmat commands. */ ++ do ++ { ++ SKIP_WHITESPACES (pragmat); ++ /* Skip PR or PRAGMAT. */ ++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) ++ pragmat += 2; ++ else ++ pragmat += 7; ++ SKIP_WHITESPACES (pragmat); ++ /* Get first word in pragmat and dispatch. */ ++ SKIP_WHITESPACES (pragmat); ++ char *word = (char *) alloca (strlen (pragmat)); ++ size_t i = 0; ++ while (ISALPHA (*pragmat) || *pragmat == '\n') ++ word[i++] = *(pragmat++); ++ word[i] = '\0'; ++ ++ if (strcmp (word, "access") == 0) ++ { ++ pragmat ++ = handle_access_in_pragmat (p, pragmat, pragmat - NPRAGMAT (p)); ++ if (pragmat == NULL) ++ break; ++ } ++ else if (strcmp (word, "include") == 0) ++ /* Include pragmats are handled in the scanner. */ ++ return; ++ else ++ { ++ a68_error_in_pragmat (p, pragmat - NPRAGMAT (p), ++ "unrecognized pragmat Z", word); ++ break; ++ } ++ } ++ while (*pragmat != '\0'); ++ } ++} ++ ++/* Entry point: handle all pragmats in the given parse tree. */ ++ ++void ++a68_handle_pragmats (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_handle_pragmats (SUB (p)); ++ handle_pragmat (p); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-prelude.cc +@@ -0,0 +1,1502 @@ ++/* Standard prelude definitions. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++#define A68_STD true ++#define A68_EXT false ++ ++/* ALGOL68C type procs. */ ++ ++#define A68C_DEFIO(name, mode) \ ++ do \ ++ { \ ++ m = a68_proc (MODE (mode), M_REF_FILE, NO_MOID); \ ++ a68_idf (A68_EXT, "get" #name, m); \ ++ m = a68_proc (M_VOID, M_REF_FILE, MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "put" #name, m); \ ++ m = a68_proc (MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "read" #name, m); \ ++ m = a68_proc (M_VOID, MODE (mode), NO_MOID); \ ++ a68_idf (A68_EXT, "print" #name, m); \ ++ } \ ++ while (0) ++ ++/* Enter tag in standenv symbol table. */ ++ ++static void ++add_a68_standenv (bool portable, int a, NODE_T* n, char *c, MOID_T *m, ++ int p, LOWERER_T l = NO_LOWERER) ++{ ++#define INSERT_TAG(l, n) \ ++ do { \ ++ NEXT (n) = *(l); \ ++ *(l) = (n); \ ++ } while (0) ++ ++ TAG_T *new_one = a68_new_tag (); ++ ++ PROCEDURE_LEVEL (INFO (n)) = 0; ++ USE (new_one) = false; ++ HEAP (new_one) = HEAP_SYMBOL; ++ TAG_TABLE (new_one) = A68_STANDENV; ++ NODE (new_one) = n; ++ if (c != NO_TEXT) ++ VALUE (new_one) = TEXT (a68_add_token (&A68 (top_token), c)); ++ else ++ VALUE (new_one) = NO_TEXT; ++ PRIO (new_one) = p; ++ TAX_TREE_DECL (new_one) = NULL; ++ LOWERER (new_one) = l; ++ UNIT (new_one) = NULL; ++ PORTABLE (new_one) = portable; ++ MOID (new_one) = m; ++ NEXT (new_one) = NO_TAG; ++ if (a == IDENTIFIER) ++ INSERT_TAG (&IDENTIFIERS (A68_STANDENV), new_one); ++ else if (a == OP_SYMBOL) ++ INSERT_TAG (&OPERATORS (A68_STANDENV), new_one); ++ else if (a == PRIO_SYMBOL) ++ INSERT_TAG (&PRIO (A68_STANDENV), new_one); ++ else if (a == INDICANT) ++ INSERT_TAG (&INDICANTS (A68_STANDENV), new_one); ++ else if (a == LABEL) ++ INSERT_TAG (&LABELS (A68_STANDENV), new_one); ++#undef INSERT_TAG ++} ++ ++/* Compose PROC moid from arguments - first result, than arguments. */ ++ ++static MOID_T * ++a68_proc (MOID_T *m, ...) ++{ ++ PACK_T *p = NO_PACK, *q = NO_PACK; ++ MOID_T *y; ++ ++ va_list attribute; ++ va_start (attribute, m); ++ while ((y = va_arg (attribute, MOID_T *)) != NO_MOID) ++ { ++ PACK_T *new_one = a68_new_pack (); ++ ++ MOID (new_one) = y; ++ TEXT (new_one) = NO_TEXT; ++ NEXT (new_one) = NO_PACK; ++ if (q != NO_PACK) ++ NEXT (q) = new_one; ++ else ++ p = new_one; ++ q = new_one; ++ } ++ ++ va_end (attribute); ++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, ++ a68_count_pack_members (p), NO_NODE, m, p); ++} ++ ++/* Enter an identifier in standenv. */ ++ ++static void ++a68_idf (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) ++{ ++ add_a68_standenv (portable, IDENTIFIER, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), ++ NO_TEXT, m, 0, l); ++} ++ ++/* Enter a moid in standenv. */ ++ ++static void ++a68_mode (int p, const char *t, MOID_T **m) ++{ ++ (*m) = a68_add_mode (&TOP_MOID (&A68_JOB), ++ STANDARD, p, ++ a68_some_node (TEXT (a68_find_keyword (A68 (top_keyword), t))), ++ NO_MOID, NO_PACK); ++} ++ ++/* Enter a priority in standenv. */ ++ ++static void ++a68_prio (const char *p, int b) ++{ ++ add_a68_standenv (true, PRIO_SYMBOL, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), p))), ++ NO_TEXT, NO_MOID, b, NO_LOWERER); ++} ++ ++/* Enter operator in standenv. */ ++ ++static void ++a68_op (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) ++{ ++ add_a68_standenv (portable, OP_SYMBOL, ++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), ++ NO_TEXT, m, 0, l); ++} ++ ++/* Enter standard modes in standenv. */ ++ ++static void ++stand_moids (void) ++{ ++ /* Primitive A68 moids. */ ++ a68_mode (0, "VOID", &M_VOID); ++ /* Standard precision. */ ++ a68_mode (0, "INT", &M_INT); ++ a68_mode (0, "REAL", &M_REAL); ++ a68_mode (0, "COMPL", &M_COMPLEX); ++ a68_mode (0, "BITS", &M_BITS); ++ a68_mode (0, "BYTES", &M_BYTES); ++ /* Multiple precision. */ ++ a68_mode (-2, "INT", &M_SHORT_SHORT_INT); ++ a68_mode (-2, "BITS", &M_SHORT_SHORT_BITS); ++ a68_mode (-1, "INT", &M_SHORT_INT); ++ a68_mode (-1, "BITS", &M_SHORT_BITS); ++ a68_mode (1, "INT", &M_LONG_INT); ++ a68_mode (1, "REAL", &M_LONG_REAL); ++ a68_mode (1, "COMPL", &M_LONG_COMPLEX); ++ a68_mode (1, "BITS", &M_LONG_BITS); ++ a68_mode (1, "BYTES", &M_LONG_BYTES); ++ a68_mode (2, "REAL", &M_LONG_LONG_REAL); ++ a68_mode (2, "INT", &M_LONG_LONG_INT); ++ a68_mode (2, "BITS", &M_LONG_LONG_BITS); ++ a68_mode (2, "COMPL", &M_LONG_LONG_COMPLEX); ++ /* Other. */ ++ a68_mode (0, "BOOL", &M_BOOL); ++ a68_mode (0, "CHAR", &M_CHAR); ++ a68_mode (0, "STRING", &M_STRING); ++ a68_mode (0, "FILE", &M_FILE); ++ a68_mode (0, "CHANNEL", &M_CHANNEL); ++ a68_mode (0, "SEMA", &M_SEMA); ++ /* Rows. */ ++ M_ROWS = a68_add_mode (&TOP_MOID (&A68_JOB), ROWS_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); ++ /* REFs. */ ++ M_REF_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_INT, NO_PACK); ++ M_REF_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REAL, NO_PACK); ++ M_REF_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_COMPLEX, NO_PACK); ++ M_REF_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BITS, NO_PACK); ++ M_REF_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BYTES, NO_PACK); ++ /* Multiple precision. */ ++ M_REF_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_INT, NO_PACK); ++ M_REF_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_REAL, NO_PACK); ++ M_REF_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_COMPLEX, NO_PACK); ++ M_REF_LONG_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_INT, NO_PACK); ++ M_REF_LONG_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_REAL, NO_PACK); ++ M_REF_LONG_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_COMPLEX, NO_PACK); ++ M_REF_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BITS, NO_PACK); ++ M_REF_LONG_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_BITS, NO_PACK); ++ M_REF_LONG_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BYTES, NO_PACK); ++ M_REF_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_INT, NO_PACK); ++ M_REF_SHORT_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_INT, NO_PACK ++); ++ M_REF_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_BITS, NO_PACK); ++ M_REF_SHORT_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_BITS, NO_PACK); ++ /* Other. */ ++ M_REF_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BOOL, NO_PACK); ++ M_REF_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_CHAR, NO_PACK); ++ M_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_FILE, NO_PACK); ++ M_REF_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REF_FILE, NO_PACK); ++ /* [] INT. */ ++ M_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_INT, NO_PACK); ++ HAS_ROWS (M_ROW_INT) = true; ++ SLICE (M_ROW_INT) = M_INT; ++ M_REF_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_INT, NO_PACK); ++ NAME (M_REF_ROW_INT) = M_REF_INT; ++ /* [] REAL. */ ++ M_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_REAL, NO_PACK); ++ HAS_ROWS (M_ROW_REAL) = true; ++ SLICE (M_ROW_REAL) = M_REAL; ++ M_REF_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_REAL, NO_PACK); ++ NAME (M_REF_ROW_REAL) = M_REF_REAL; ++ /* [,] REAL. */ ++ M_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_REAL, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_REAL) = true; ++ SLICE (M_ROW_ROW_REAL) = M_ROW_REAL; ++ M_REF_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_REAL, NO_PACK); ++ NAME (M_REF_ROW_ROW_REAL) = M_REF_ROW_REAL; ++ /* [] COMPLEX. */ ++ M_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_COMPLEX, NO_PACK); ++ HAS_ROWS (M_ROW_COMPLEX) = true; ++ SLICE (M_ROW_COMPLEX) = M_COMPLEX; ++ M_REF_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_COMPLEX, NO_PACK); ++ NAME (M_REF_ROW_COMPLEX) = M_REF_COMPLEX; ++ /* [,] COMPLEX. */ ++ M_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_COMPLEX, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_COMPLEX) = true; ++ SLICE (M_ROW_ROW_COMPLEX) = M_ROW_COMPLEX; ++ M_REF_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_COMPLEX, NO_PACK); ++ NAME (M_REF_ROW_ROW_COMPLEX) = M_REF_ROW_COMPLEX; ++ /* [] BOOL. */ ++ M_ROW_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BOOL, NO_PACK); ++ HAS_ROWS (M_ROW_BOOL) = true; ++ SLICE (M_ROW_BOOL) = M_BOOL; ++ /* FLEX [] BOOL. */ ++ MOID_T *m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_BOOL, NO_PACK); ++ HAS_ROWS (m) = true; ++ M_FLEX_ROW_BOOL = m; ++ /* [] BITS. */ ++ M_ROW_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BITS, NO_PACK); ++ HAS_ROWS (M_ROW_BITS) = true; ++ SLICE (M_ROW_BITS) = M_BITS; ++ /* [] CHAR. */ ++ M_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_CHAR, NO_PACK); ++ HAS_ROWS (M_ROW_CHAR) = true; ++ SLICE (M_ROW_CHAR) = M_CHAR; ++ /* [][] CHAR. */ ++ M_ROW_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_ROW_CHAR, NO_PACK); ++ HAS_ROWS (M_ROW_ROW_CHAR) = true; ++ SLICE (M_ROW_ROW_CHAR) = M_ROW_CHAR; ++ /* MODE STRING = FLEX [] CHAR. */ ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ HAS_ROWS (m) = true; ++ M_FLEX_ROW_CHAR = m; ++ EQUIVALENT (M_STRING) = m; ++ /* REF [] CHAR. */ ++ M_REF_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ NAME (M_REF_ROW_CHAR) = M_REF_CHAR; ++ /* PROC [] CHAR. */ ++ M_PROC_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); ++ /* REF STRING = REF FLEX [] CHAR. */ ++ M_REF_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, EQUIVALENT (M_STRING), NO_PACK); ++ NAME (M_REF_STRING) = M_REF_CHAR; ++ DEFLEXED (M_REF_STRING) = M_REF_ROW_CHAR; ++ /* [] STRING. */ ++ M_ROW_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_STRING, NO_PACK); ++ HAS_ROWS (M_ROW_STRING) = true; ++ SLICE (M_ROW_STRING) = M_STRING; ++ DEFLEXED (M_ROW_STRING) = M_ROW_ROW_CHAR; ++ /* PROC STRING. */ ++ M_PROC_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_STRING, NO_PACK); ++ DEFLEXED (M_PROC_STRING) = M_PROC_ROW_CHAR; ++ /* COMPLEX. */ ++ PACK_T *z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_COMPLEX) = m; ++ /* LONG COMPLEX. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_LONG_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_LONG_COMPLEX) = m; ++ /* LONG_LONG COMPLEX. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ EQUIVALENT (M_LONG_LONG_COMPLEX) = m; ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); ++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ NAME (M_REF_LONG_LONG_COMPLEX) = m; ++ /* SEMA. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_INT, NO_TEXT, NO_NODE); ++ EQUIVALENT (M_SEMA) = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ /* PROC VOID. */ ++ z = NO_PACK; ++ M_PROC_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); ++ /* PROC (REAL) REAL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); ++ M_PROC_REAL_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_REAL, z); ++ /* PROC (LONG_REAL) LONG_REAL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); ++ M_PROC_LONG_REAL_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_LONG_REAL, z); ++ /* IO: PROC (REF FILE) BOOL. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); ++ M_PROC_REF_FILE_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_BOOL, z); ++ /* IO: PROC (REF FILE) VOID. */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); ++ M_PROC_REF_FILE_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); ++ /* IO: SIMPLIN and SIMPLOUT. */ ++ M_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), IN_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); ++ M_ROW_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLIN, NO_PACK); ++ SLICE (M_ROW_SIMPLIN) = M_SIMPLIN; ++ M_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), OUT_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); ++ M_ROW_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLOUT, NO_PACK); ++ SLICE (M_ROW_SIMPLOUT) = M_SIMPLOUT; ++} ++ ++/* Set up standenv - general RR but not transput. */ ++ ++static void ++stand_prelude (void) ++{ ++ /* Identifiers. */ ++ a68_idf (A68_STD, "intlengths", M_INT, a68_lower_intlengths); ++ a68_idf (A68_STD, "intshorths", M_INT, a68_lower_intshorths); ++ a68_idf (A68_STD, "maxint", M_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "longmaxint", M_LONG_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "longlongmaxint", M_LONG_LONG_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "shortmaxint", M_SHORT_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "shortshortmaxint", M_SHORT_SHORT_INT, a68_lower_maxint); ++ a68_idf (A68_STD, "maxreal", M_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "longmaxreal", M_LONG_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "longlongmaxreal", M_LONG_LONG_REAL, a68_lower_maxreal); ++ a68_idf (A68_STD, "smallreal", M_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "longsmallreal", M_LONG_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "longlongsmallreal", M_LONG_LONG_REAL, a68_lower_smallreal); ++ a68_idf (A68_STD, "reallengths", M_INT, a68_lower_reallengths); ++ a68_idf (A68_STD, "realshorths", M_INT, a68_lower_realshorths); ++ a68_idf (A68_STD, "bitslengths", M_INT, a68_lower_bitslengths); ++ a68_idf (A68_STD, "bitsshorths", M_INT, a68_lower_bitsshorths); ++ a68_idf (A68_STD, "bitswidth", M_INT, a68_lower_bitswidth); ++ a68_idf (A68_STD, "longbitswidth", M_INT, a68_lower_longbitswidth); ++ a68_idf (A68_STD, "longlongbitswidth", M_INT, a68_lower_longlongbitswidth); ++ a68_idf (A68_STD, "shortbitswidth", M_INT, a68_lower_shortbitswidth); ++ a68_idf (A68_STD, "shortshortbitswidth", M_INT, a68_lower_shortshortbitswidth); ++ a68_idf (A68_STD, "maxbits", M_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "longmaxbits", M_LONG_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "longlongmaxbits", M_LONG_LONG_BITS, a68_lower_maxbits); ++ a68_idf (A68_STD, "maxabschar", M_INT, a68_lower_maxabschar); ++ a68_idf (A68_STD, "intwidth", M_INT, a68_lower_intwidth); ++ a68_idf (A68_STD, "longintwidth", M_INT, a68_lower_longintwidth); ++ a68_idf (A68_STD, "longlongintwidth", M_INT, a68_lower_longlongintwidth); ++ a68_idf (A68_STD, "shortintwidth", M_INT, a68_lower_shortintwidth); ++ a68_idf (A68_STD, "shortshortintwidth", M_INT, a68_lower_shortshortintwidth); ++ a68_idf (A68_STD, "realwidth", M_INT, a68_lower_realwidth); ++ a68_idf (A68_STD, "longrealwidth", M_INT, a68_lower_longrealwidth); ++ a68_idf (A68_STD, "longlongrealwidth", M_INT, a68_lower_longlongrealwidth); ++ a68_idf (A68_STD, "expwidth", M_INT, a68_lower_expwidth); ++ a68_idf (A68_STD, "longexpwidth", M_INT, a68_lower_longexpwidth); ++ a68_idf (A68_STD, "longlongexpwidth", M_INT, a68_lower_longlongexpwidth); ++ a68_idf (A68_STD, "pi", M_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "longpi", M_LONG_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "longlongpi", M_LONG_LONG_REAL, a68_lower_pi); ++ a68_idf (A68_STD, "compllengths", M_INT); ++ a68_idf (A68_STD, "complshorths", M_INT); ++ a68_idf (A68_STD, "byteslengths", M_INT); ++ a68_idf (A68_STD, "bytesshorths", M_INT); ++ a68_idf (A68_STD, "byteswidth", M_INT); ++ a68_idf (A68_STD, "longbyteswidth", M_INT); ++ a68_idf (A68_STD, "flip", M_CHAR, a68_lower_flip); ++ a68_idf (A68_STD, "flop", M_CHAR, a68_lower_flop); ++ a68_idf (A68_STD, "errorchar", M_CHAR, a68_lower_errorchar); ++ a68_idf (A68_STD, "nullcharacter", M_CHAR, a68_lower_nullcharacter); ++ a68_idf (A68_STD, "blank", M_CHAR, a68_lower_blank); ++ /* BITS procedures. */ ++ MOID_T *m = a68_proc (M_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "bitspack", m); ++ /* SHORT BITS procedures. */ ++ m = a68_proc (M_SHORT_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "shortbitspack", m); ++ /* SHORT SHORT BITS procedures. */ ++ m = a68_proc (M_SHORT_SHORT_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "shortshortbitspack", m); ++ /* LONG BITS procedures. */ ++ m = a68_proc (M_LONG_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "longbitspack", m); ++ /* LONG LONG BITS procedures. */ ++ m = a68_proc (M_LONG_LONG_BITS, M_ROW_BOOL, NO_MOID); ++ a68_idf (A68_STD, "longlongbitspack", m); ++ /* RNG procedures. */ ++ m = a68_proc (M_VOID, M_INT, NO_MOID); ++ a68_idf (A68_STD, "firstrandom", m); ++ /* REAL procedures. */ ++ m = A68_MCACHE (proc_real); ++ a68_idf (A68_STD, "nextrandom", m); ++ a68_idf (A68_STD, "random", m, a68_lower_random); ++ a68_idf (A68_STD, "rnd", m); ++ m = A68_MCACHE (proc_real_real); ++ a68_idf (A68_STD, "arccos", m, a68_lower_acos); ++ a68_idf (A68_STD, "arcsin", m, a68_lower_asin); ++ a68_idf (A68_STD, "arctan", m, a68_lower_atan); ++ a68_idf (A68_STD, "cos", m, a68_lower_cos); ++ a68_idf (A68_STD, "exp", m, a68_lower_exp); ++ a68_idf (A68_STD, "ln", m, a68_lower_ln); ++ a68_idf (A68_STD, "sin", m, a68_lower_sin); ++ a68_idf (A68_STD, "sqrt", m, a68_lower_sqrt); ++ a68_idf (A68_STD, "tan", m, a68_lower_tan); ++ /* LONG REAL procedures. */ ++ m = a68_proc (M_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longnextrandom", m); ++ a68_idf (A68_STD, "longrandom", m, a68_lower_longrandom); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longarccos", m, a68_lower_long_acos); ++ a68_idf (A68_STD, "longarcsin", m, a68_lower_long_asin); ++ a68_idf (A68_STD, "longarctan", m, a68_lower_long_atan); ++ a68_idf (A68_STD, "longcos", m, a68_lower_long_cos); ++ a68_idf (A68_STD, "longexp", m, a68_lower_long_exp); ++ a68_idf (A68_STD, "longln", m, a68_lower_long_ln); ++ a68_idf (A68_STD, "longsin", m, a68_lower_long_sin); ++ a68_idf (A68_STD, "longsqrt", m, a68_lower_long_sqrt); ++ a68_idf (A68_STD, "longtan", m, a68_lower_long_tan); ++ /* LONG LONG REAL procedures. */ ++ m = a68_proc (M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longlongnextrandom", m); ++ a68_idf (A68_STD, "longlongrandom", m, a68_lower_longlongrandom); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_STD, "longlongarccos", m, a68_lower_long_long_acos); ++ a68_idf (A68_STD, "longlongarcsin", m, a68_lower_long_long_asin); ++ a68_idf (A68_STD, "longlongarctan", m, a68_lower_long_long_atan); ++ a68_idf (A68_STD, "longlongcos", m, a68_lower_long_long_cos); ++ a68_idf (A68_STD, "longlongexp", m, a68_lower_long_long_exp); ++ a68_idf (A68_STD, "longlongln", m, a68_lower_long_long_ln); ++ a68_idf (A68_STD, "longlongsin", m, a68_lower_long_long_sin); ++ a68_idf (A68_STD, "longlongsqrt", m, a68_lower_long_long_sqrt); ++ a68_idf (A68_STD, "longlongtan", m, a68_lower_long_long_tan); ++ /* Priorities. */ ++ a68_prio ("+:=", 1); ++ a68_prio ("-:=", 1); ++ a68_prio ("*:=", 1); ++ a68_prio ("/:=", 1); ++ a68_prio ("%:=", 1); ++ a68_prio ("%*:=", 1); ++ a68_prio ("+=:", 1); ++ a68_prio ("PLUSAB", 1); ++ a68_prio ("MINUSAB", 1); ++ a68_prio ("TIMESAB", 1); ++ a68_prio ("DIVAB", 1); ++ a68_prio ("OVERAB", 1); ++ a68_prio ("MODAB", 1); ++ a68_prio ("PLUSTO", 1); ++ a68_prio ("OR", 2); ++ a68_prio ("AND", 3); ++ a68_prio ("XOR", 3); ++ a68_prio ("=", 4); ++ a68_prio ("/=", 4); ++ a68_prio ("<", 5); ++ a68_prio ("<=", 5); ++ a68_prio (">", 5); ++ a68_prio (">=", 5); ++ a68_prio ("EQ", 4); ++ a68_prio ("NE", 4); ++ a68_prio ("LT", 5); ++ a68_prio ("LE", 5); ++ a68_prio ("GT", 5); ++ a68_prio ("GE", 5); ++ a68_prio ("+", 6); ++ a68_prio ("-", 6); ++ a68_prio ("*", 7); ++ a68_prio ("/", 7); ++ a68_prio ("OVER", 7); ++ a68_prio ("%", 7); ++ a68_prio ("MOD", 7); ++ a68_prio ("%*", 7); ++ a68_prio ("ELEM", 7); ++ a68_prio ("**", 8); ++ a68_prio ("SHL", 8); ++ a68_prio ("SHR", 8); ++ a68_prio ("UP", 8); ++ a68_prio ("DOWN", 8); ++ a68_prio ("^", 8); ++ a68_prio ("LWB", 8); ++ a68_prio ("UPB", 8); ++ a68_prio ("I", 9); ++ a68_prio ("+*", 9); ++ /* BOOL operators. */ ++ m = a68_proc (M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_not2); ++ a68_op (A68_STD, "~", m, a68_lower_not2); ++ m = a68_proc (M_INT, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_boolabs2); ++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_STD, "OR", m, a68_lower_or3); ++ a68_op (A68_STD, "AND", m, a68_lower_and3); ++ a68_op (A68_STD, "=", m, a68_lower_bool_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bool_ne3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bool_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_bool_ne3); ++ /* CHAR operators. */ ++ m = a68_proc (M_BOOL, M_CHAR, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_char_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_char_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_char_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_char_le3); ++ a68_op (A68_STD, ">", m, a68_lower_char_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_char_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_char_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_char_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_char_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_char_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_char_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_char_ge3); ++ m = a68_proc (M_INT, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_charabs2); ++ m = a68_proc (M_CHAR, M_INT, NO_MOID); ++ a68_op (A68_STD, "REPR", m, a68_lower_repr2); ++ /* STRING operators. */ ++ m = a68_proc (M_BOOL, M_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_string_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_string_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_string_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_string_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_string_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_string_gt3); ++ a68_op (A68_STD, "EQ", m, a68_lower_string_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_string_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_string_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_string_le3); ++ a68_op (A68_STD, "GE", m, a68_lower_string_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_string_gt3); ++ m = a68_proc (M_STRING, M_CHAR, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_char_plus3); ++ m = a68_proc (M_STRING, M_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_string_plus3); ++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_STRING, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_string_plusab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_string_plusab3); ++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_INT, NO_MOID); ++ a68_op (A68_STD, "*:=", m, a68_lower_string_multab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_string_multab3); ++ m = a68_proc (M_REF_STRING, M_STRING, M_REF_STRING, NO_MOID); ++ a68_op (A68_STD, "+=:", m, a68_lower_string_plusto3); ++ a68_op (A68_STD, "PLUSTO", m, a68_lower_string_plusto3); ++ m = a68_proc (M_STRING, M_STRING, M_INT, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); ++ m = a68_proc (M_STRING, M_INT, M_STRING, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); ++ m = a68_proc (M_STRING, M_INT, M_CHAR, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); ++ m = a68_proc (M_STRING, M_CHAR, M_INT, NO_MOID); ++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); ++ /* SHORT SHORT INT operators. */ ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_SHORT_SHORT_INT, M_REF_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* SHORT INT operators. */ ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_BOOL, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_SHORT_INT, M_REF_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_SHORT_INT, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* INT operators. */ ++ m = a68_proc (M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_SHORT_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_BOOL, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_INT, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ m = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_REF_INT, M_REF_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ /* LONG INT operators */ ++ m = a68_proc (M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); ++ m = a68_proc (M_BOOL, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_LONG_INT, M_REF_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_BOOL, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ m = a68_proc (M_LONG_REAL, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* LONG LONG INT operators. */ ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); ++ m = a68_proc (M_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); ++ m = a68_proc (M_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); ++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_int); ++ a68_op (A68_STD, "-", m, a68_lower_minus_int); ++ a68_op (A68_STD, "*", m, a68_lower_mult_int); ++ a68_op (A68_STD, "OVER", m, a68_lower_over3); ++ a68_op (A68_STD, "%", m, a68_lower_over3); ++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); ++ a68_op (A68_STD, "%*", m, a68_lower_mod3); ++ m = a68_proc (M_REF_LONG_LONG_INT, M_REF_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); ++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); ++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); ++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); ++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); ++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); ++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); ++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); ++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); ++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); ++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); ++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_int); ++ a68_op (A68_STD, "^", m, a68_lower_pow_int); ++ /* SHORT SHORT BITS operators */ ++ m = a68_proc (M_BOOL, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* SHORT BITS operatos. */ ++ m = a68_proc (M_SHORT_INT, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ m = a68_proc (M_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* BITS operators. */ ++ m = a68_proc (M_INT, M_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_BITS, M_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_LONG_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ m = a68_proc (M_SHORT_BITS, M_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ /* LONG BITS operatos. */ ++ m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_BOOL, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); ++ /* LONG LONG BITS operators */ ++ m = a68_proc (M_BOOL, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); ++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); ++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); ++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); ++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_INT, NO_MOID); ++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); ++ a68_op (A68_STD, "UP", m, a68_lower_shl3); ++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); ++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); ++ m = a68_proc (M_BOOL, M_INT, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); ++ m = a68_proc (M_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); ++ /* REAL operators. */ ++ m = A68_MCACHE (proc_real_real); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ m = a68_proc (M_INT, M_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ m = a68_proc (M_BOOL, M_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = A68_MCACHE (proc_real_real_real); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_REAL, M_REF_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_LONG_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); ++ /* LONG REAL operators */ ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); ++ m = a68_proc (M_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ m = a68_proc (M_INT, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ m = a68_proc (M_LONG_INT, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_LONG_REAL, M_REF_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_BOOL, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ /* LONG LONG REAL operators. */ ++ m = a68_proc (M_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); ++ a68_op (A68_STD, "+", m, a68_lower_confirm2); ++ a68_op (A68_STD, "-", m, a68_lower_negate2); ++ m = a68_proc (M_INT, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); ++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); ++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+", m, a68_lower_plus_real); ++ a68_op (A68_STD, "-", m, a68_lower_minus_real); ++ a68_op (A68_STD, "*", m, a68_lower_mult_real); ++ a68_op (A68_STD, "/", m, a68_lower_div3); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ m = a68_proc (M_REF_LONG_LONG_REAL, M_REF_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); ++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); ++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); ++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); ++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); ++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); ++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); ++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); ++ m = a68_proc (M_BOOL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); ++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); ++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); ++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); ++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); ++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); ++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); ++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); ++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m, a68_lower_pow_real); ++ a68_op (A68_STD, "^", m, a68_lower_pow_real); ++ /* ROWS operators. */ ++ m = a68_proc (M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_STD, "LWB", m, a68_lower_lwb2); ++ a68_op (A68_STD, "UPB", m, a68_lower_upb2); ++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_STD, "LWB", m, a68_lower_lwb3); ++ a68_op (A68_STD, "UPB", m, a68_lower_upb3); ++ /* BYTES operators. */ ++ m = a68_proc (M_BYTES, M_STRING, NO_MOID); ++ a68_idf (A68_STD, "bytespack", m); ++ m = a68_proc (M_CHAR, M_INT, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "ELEM", m); ++ m = a68_proc (M_BYTES, M_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ m = a68_proc (M_REF_BYTES, M_REF_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ m = a68_proc (M_BOOL, M_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "<", m); ++ a68_op (A68_STD, "<=", m); ++ a68_op (A68_STD, ">", m); ++ a68_op (A68_STD, ">=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ a68_op (A68_STD, "LT", m); ++ a68_op (A68_STD, "LE", m); ++ a68_op (A68_STD, "GT", m); ++ a68_op (A68_STD, "GE", m); ++ /* LONG BYTES operators. */ ++ m = a68_proc (M_LONG_BYTES, M_BYTES, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_idf (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_BYTES, M_STRING, NO_MOID); ++ a68_idf (A68_STD, "longbytespack", m); ++ m = a68_proc (M_CHAR, M_INT, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "ELEM", m); ++ m = a68_proc (M_LONG_BYTES, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ m = a68_proc (M_REF_LONG_BYTES, M_REF_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ m = a68_proc (M_BOOL, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "<", m); ++ a68_op (A68_STD, "<=", m); ++ a68_op (A68_STD, ">", m); ++ a68_op (A68_STD, ">=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ a68_op (A68_STD, "LT", m); ++ a68_op (A68_STD, "LE", m); ++ a68_op (A68_STD, "GT", m); ++ a68_op (A68_STD, "GE", m); ++ /* COMPLEX operators. */ ++ m = a68_proc (M_COMPLEX, M_REAL, M_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_reali); ++ a68_op (A68_STD, "+*", m, a68_lower_reali); ++ m = a68_proc (M_COMPLEX, M_INT, M_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_inti); ++ a68_op (A68_STD, "+*", m, a68_lower_inti); ++ m = a68_proc (M_REAL, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ABS", m); ++ a68_op (A68_STD, "ARG", m); ++ m = A68_MCACHE (proc_complex_complex); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_BOOL, M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_REF_COMPLEX, M_REF_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ m = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ /* LONG COMPLEX operators */ ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_INT, M_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longinti); ++ a68_op (A68_STD, "+*", m, a68_lower_longinti); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longreali); ++ a68_op (A68_STD, "+*", m, a68_lower_longreali); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_COMPLEX, M_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ m = a68_proc (M_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "SHORTEN", m); ++ m = a68_proc (M_LONG_REAL, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ARG", m); ++ a68_op (A68_STD, "ABS", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_BOOL, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_REF_LONG_COMPLEX, M_REF_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ /* LONG LONG COMPLEX operators. */ ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longlonginti); ++ a68_op (A68_STD, "+*", m, a68_lower_longlonginti); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_op (A68_STD, "I", m, a68_lower_longlongreali); ++ a68_op (A68_STD, "+*", m, a68_lower_longlongreali); ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "RE", m, a68_lower_re2); ++ a68_op (A68_STD, "IM", m, a68_lower_im2); ++ a68_op (A68_STD, "ARG", m); ++ a68_op (A68_STD, "ABS", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+", m); ++ a68_op (A68_STD, "-", m); ++ a68_op (A68_STD, "*", m); ++ a68_op (A68_STD, "/", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_INT, NO_MOID); ++ a68_op (A68_STD, "**", m); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "^", m); ++ m = a68_proc (M_BOOL, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "=", m); ++ a68_op (A68_STD, "EQ", m); ++ a68_op (A68_STD, "/=", m); ++ a68_op (A68_STD, "NE", m); ++ m = a68_proc (M_REF_LONG_LONG_COMPLEX, M_REF_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "+:=", m); ++ a68_op (A68_STD, "-:=", m); ++ a68_op (A68_STD, "*:=", m); ++ a68_op (A68_STD, "/:=", m); ++ a68_op (A68_STD, "PLUSAB", m); ++ a68_op (A68_STD, "MINUSAB", m); ++ a68_op (A68_STD, "TIMESAB", m); ++ a68_op (A68_STD, "DIVAB", m); ++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); ++ a68_op (A68_STD, "LENG", m); ++ /* SEMA operators. */ ++ m = a68_proc (M_SEMA, M_INT, NO_MOID); ++ a68_op (A68_STD, "LEVEL", m); ++ m = a68_proc (M_INT, M_SEMA, NO_MOID); ++ a68_op (A68_STD, "LEVEL", m); ++ m = a68_proc (M_VOID, M_SEMA, NO_MOID); ++ a68_op (A68_STD, "UP", m); ++ a68_op (A68_STD, "DOWN", m); ++} ++ ++/* GNU extensions for the standenv. */ ++ ++static void ++gnu_prelude (void) ++{ ++ MOID_T *m = NO_MOID; ++ /* Priorities. */ ++ a68_prio ("ELEMS", 8); ++ /* Identifiers. */ ++ a68_idf (A68_EXT, "infinity", M_REAL, a68_lower_infinity); ++ a68_idf (A68_EXT, "minusinfinity", M_REAL, a68_lower_minusinfinity); ++ a68_idf (A68_EXT, "longlonginfinity", M_LONG_LONG_REAL); ++ a68_idf (A68_EXT, "longlongminusinfinity", M_LONG_LONG_REAL); ++ a68_idf (A68_EXT, "longinfinity", M_LONG_REAL); ++ a68_idf (A68_EXT, "longminusinfinity", M_LONG_REAL); ++ a68_idf (A68_EXT, "minint", M_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "longminint", M_LONG_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "longlongminint", M_LONG_LONG_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "shortminint", M_SHORT_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "shortshortminint", M_SHORT_SHORT_INT, a68_lower_minint); ++ a68_idf (A68_EXT, "minreal", M_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "longminreal", M_LONG_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "longlongminreal", M_LONG_LONG_REAL, a68_lower_minreal); ++ a68_idf (A68_EXT, "eofchar", M_CHAR, a68_lower_eofchar); ++ a68_idf (A68_EXT, "replacementchar", M_CHAR, a68_lower_replacementchar); ++ /* REAL procedures. */ ++ m = A68_MCACHE (proc_real_real); ++ a68_idf (A68_EXT, "log", m, a68_lower_log); ++ /* LONG REAL procedures. */ ++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); ++ a68_idf (A68_EXT, "longlog", m, a68_lower_long_log); ++ /* LONG LONG REAL procedures. */ ++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); ++ a68_idf (A68_EXT, "longlonglog", m, a68_lower_long_long_log); ++ /* BOOL operators. */ ++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_xor3); ++ /* SHORT SHORT BITS operators. */ ++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* SHORT BITS operators. */ ++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* BITS operators. */ ++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* LONG BITS operators. */ ++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* LONG LONG BITS operators. */ ++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); ++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); ++ /* ROWS operators. */ ++ m = a68_proc (M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems2); ++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); ++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems3); ++} ++ ++/* POSIX prelude. */ ++ ++static void ++posix_prelude (void) ++{ ++ MOID_T *m = NO_MOID; ++ ++ /* Environment variables. */ ++ m = a68_proc (M_STRING, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "getenv", m, a68_lower_posixgetenv); ++ /* Exit status handling. */ ++ m = a68_proc (M_VOID, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "setexitstatus", m, a68_lower_setexitstatus); ++ /* Argument handling. */ ++ m = A68_MCACHE (proc_int); ++ a68_idf (A68_EXT, "argc", m, a68_lower_posixargc); ++ m = a68_proc (M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "argv", m, a68_lower_posixargv); ++ /* Error procedures. */ ++ m = A68_MCACHE (proc_int); ++ a68_idf (A68_EXT, "errno", m, a68_lower_posixerrno); ++ m = a68_proc (M_VOID, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "perror", m, a68_lower_posixperror); ++ m = a68_proc (M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "strerror", m, a68_lower_posixstrerror); ++ /* I/O identifiers. */ ++ a68_idf (A68_EXT, "stdin", M_INT, a68_lower_posixstdinfiledes); ++ a68_idf (A68_EXT, "stdout", M_INT, a68_lower_posixstdoutfiledes); ++ a68_idf (A68_EXT, "stderr", M_INT, a68_lower_posixstderrfiledes); ++ a68_idf (A68_EXT, "fileodefault", M_BITS, a68_lower_posixfileodefault); ++ a68_idf (A68_EXT, "fileordwr", M_BITS, a68_lower_posixfileordwr); ++ a68_idf (A68_EXT, "fileordonly", M_BITS, a68_lower_posixfileordonly); ++ a68_idf (A68_EXT, "fileowronly", M_BITS, a68_lower_posixfileowronly); ++ a68_idf (A68_EXT, "fileotrunc", M_BITS, a68_lower_posixfileotrunc); ++ /* Opening and closing files. */ ++ m = a68_proc (M_INT, M_STRING, M_BITS, NO_MOID); ++ a68_idf (A68_EXT, "fopen", m, a68_lower_posixfopen); ++ a68_idf (A68_EXT, "fcreate", m, a68_lower_posixfcreate); ++ m = A68_MCACHE (proc_int_int); ++ a68_idf (A68_EXT, "fclose", m, a68_lower_posixfclose); ++ /* Getting properties of files. */ ++ m = a68_proc (M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fsize", m, a68_lower_posixfsize); ++ m = a68_proc (M_LONG_LONG_INT, M_INT, M_LONG_LONG_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "lseek", m, a68_lower_posixlseek); ++ a68_idf (A68_EXT, "seekcur", M_INT, a68_lower_posixseekcur); ++ a68_idf (A68_EXT, "seekend", M_INT, a68_lower_posixseekend); ++ a68_idf (A68_EXT, "seekset", M_INT, a68_lower_posixseekset); ++ /* Sockets. */ ++ m = a68_proc (M_INT, M_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fconnect", m, a68_lower_posixfconnect); ++ /* String and character output. */ ++ m = a68_proc (M_CHAR, M_CHAR, NO_MOID); ++ a68_idf (A68_EXT, "putchar", m, a68_lower_posixputchar); ++ m = a68_proc (M_VOID, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "puts", m, a68_lower_posixputs); ++ m = a68_proc (M_CHAR, M_INT, M_CHAR, NO_MOID); ++ a68_idf (A68_EXT, "fputc", m, a68_lower_posixfputc); ++ m = a68_proc (M_INT, M_INT, M_STRING, NO_MOID); ++ a68_idf (A68_EXT, "fputs", m, a68_lower_posixfputs); ++ /* String and character input. */ ++ m = A68_MCACHE (proc_char); ++ a68_idf (A68_EXT, "getchar", m, a68_lower_posixgetchar); ++ m = a68_proc (M_CHAR, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fgetc", m, a68_lower_posixfgetc); ++ m = a68_proc (M_REF_STRING, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "gets", m, a68_lower_posixgets); ++ m = a68_proc (M_REF_STRING, M_INT, M_INT, NO_MOID); ++ a68_idf (A68_EXT, "fgets", m, a68_lower_posixfgets); ++} ++ ++/* Transput. */ ++ ++static void ++stand_transput (void) ++{ ++ PACK_T *z = NO_PACK; ++ MOID_T *m = NO_MOID; ++ ++ /* Modes. */ ++ ++ /* NUMBER */ ++ z = NO_PACK; ++ (void) a68_add_mode_to_pack (&z, M_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_SHORT_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_SHORT_SHORT_INT, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); ++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, NO_TEXT, NO_NODE); ++ M_NUMBER = a68_add_mode (&TOP_MOID (&A68_JOB), UNION_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); ++ ++ /* Layout procedures. */ ++ ++ /* Conversion procedures. */ ++ m = a68_proc (M_STRING, M_NUMBER, M_INT, NO_MOID); ++ a68_idf (A68_STD, "whole", m); ++} ++ ++/* Build the standard environ symbol table. */ ++ ++void ++a68_make_standard_environ (void) ++{ ++ stand_moids (); ++ A68_MCACHE (proc_bool) = a68_proc (M_BOOL, NO_MOID); ++ A68_MCACHE (proc_char) = a68_proc (M_CHAR, NO_MOID); ++ A68_MCACHE (proc_complex_complex) = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); ++ A68_MCACHE (proc_int) = a68_proc (M_INT, NO_MOID); ++ A68_MCACHE (proc_int_int) = a68_proc (M_INT, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_int_real) = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_real) = a68_proc (M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_int_real_real) = a68_proc (M_REAL, M_INT, M_REAL, NO_MOID); ++ A68_MCACHE (proc_int_real_real_real) = a68_proc (M_REAL, M_INT, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real) = a68_proc (M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_int_real) = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_real_real_int_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_INT, NO_MOID); ++ A68_MCACHE (proc_real_real) = M_PROC_REAL_REAL; ++ A68_MCACHE (proc_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_int) = a68_proc (M_INT, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); ++ A68_MCACHE (proc_real_ref_real_ref_int_void) = a68_proc (M_VOID, M_REAL, M_REF_REAL, M_REF_INT, NO_MOID); ++ A68_MCACHE (proc_void) = a68_proc (M_VOID, NO_MOID); ++ stand_prelude (); ++ if (!OPTION_STRICT (&A68_JOB)) ++ { ++ gnu_prelude (); ++ posix_prelude (); ++ } ++ stand_transput (); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-scanner.cc +@@ -0,0 +1,2346 @@ ++/* Context-dependent ALGOL 68 tokeniser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* Context-dependent ALGOL 68 tokeniser. */ ++ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++#include "options.h" ++#include "vec.h" ++ ++#include "a68.h" ++ ++/* A few forward references of static functions defined in this file. */ ++ ++static void include_files (LINE_T *top); ++ ++/* Standard prelude and postlude for source files. ++ ++ These are used for particular programs only. Not for prelude packets. ++ We need several versions for the several supported stropping regimes. */ ++ ++static const char * ++upper_prelude_start[] = { ++ "BEGIN", ++ " BEGIN", ++ NO_TEXT ++}; ++ ++static const char * ++upper_postlude[] = { ++ " END;", ++ " stop: SKIP", ++ "END", ++ NO_TEXT ++}; ++ ++static const char * ++supper_prelude_start[] = { ++ "begin", ++ " begin", ++ NO_TEXT ++}; ++ ++static const char * ++supper_postlude[] = { ++ " end;", ++ " stop: skip", ++ "end", ++ NO_TEXT ++}; ++ ++/* Macros. */ ++ ++#define NULL_CHAR '\0' ++#define STOP_CHAR 127 ++#define FORMFEED_CHAR '\f' ++#define CR_CHAR '\r' ++#define QUOTE_CHAR '"' ++#define APOSTROPHE_CHAR '\'' ++#define BACKSLASH_CHAR '\\' ++#define NEWLINE_CHAR '\n' ++#define EXPONENT_CHAR 'e' ++#define RADIX_CHAR 'r' ++#define POINT_CHAR '.' ++#define TAB_CHAR '\t' ++ ++#define MAX_RESTART 256 ++ ++#define EOL(c) ((c) == NEWLINE_CHAR || (c) == NULL_CHAR) ++#define SCAN_ERROR(c, u, v, txt) if (c) \ ++ do \ ++ { \ ++ a68_scan_error (u, v, txt); \ ++ } \ ++ while (0) ++ ++ ++#define SCAN_DIGITS(c) \ ++ while (ISDIGIT (c)) \ ++ { \ ++ (sym++)[0] = (c); \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ } ++ ++#define SCAN_EXPONENT_PART(c) \ ++ do \ ++ { \ ++ (sym++)[0] = EXPONENT_CHAR; \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ if ((c) == '+' || (c) == '-') { \ ++ (sym++)[0] = (c); \ ++ (c) = next_char (ref_l, ref_s, true); \ ++ } \ ++ SCAN_ERROR (!ISDIGIT (c), *start_l, *start_c, \ ++ "invalid exponent digit"); \ ++ SCAN_DIGITS (c); \ ++ } \ ++ while (0) ++ ++/* Read bytes from file into buffer. */ ++ ++static ssize_t ++io_read (FILE *file, void *buf, size_t n) ++{ ++ int fd = fileno (file); ++ size_t to_do = n; ++ int restarts = 0; ++ char *z = (char *) buf; ++ while (to_do > 0) ++ { ++ ssize_t bytes_read; ++ ++ errno = 0; ++ bytes_read = read (fd, z, to_do); ++ if (bytes_read < 0) ++ { ++ if (errno == EINTR) ++ { ++ /* interrupt, retry. */ ++ bytes_read = 0; ++ if (restarts++ > MAX_RESTART) ++ { ++ return -1; ++ } ++ } ++ else ++ { ++ /* read error. */ ++ return -1; ++ } ++ } ++ else if (bytes_read == 0) ++ { ++ /* EOF_CHAR */ ++ break; ++ } ++ to_do -= (size_t) bytes_read; ++ z += bytes_read; ++ } ++ ++ /* return >= 0 */ ++ return (ssize_t) n - (ssize_t) to_do; ++} ++ ++/* Save scanner state, for character look-ahead. */ ++ ++static void ++save_state (LINE_T *ref_l, char *ref_s, char ch) ++{ ++ SCAN_STATE_L (&A68_JOB) = ref_l; ++ SCAN_STATE_S (&A68_JOB) = ref_s; ++ SCAN_STATE_C (&A68_JOB) = ch; ++} ++ ++/* Restore scanner state, for character look-ahead. */ ++ ++static void ++restore_state (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ *ref_l = SCAN_STATE_L (&A68_JOB); ++ *ref_s = SCAN_STATE_S (&A68_JOB); ++ *ch = SCAN_STATE_C (&A68_JOB); ++} ++ ++/* New_source_line. */ ++ ++static LINE_T * ++new_source_line (void) ++{ ++ LINE_T *z = ggc_cleared_alloc (); ++ ++ MARKER (z)[0] = '\0'; ++ STRING (z) = NO_TEXT; ++ FILENAME (z) = NO_TEXT; ++ NUMBER (z) = 0; ++ NEXT (z) = NO_LINE; ++ PREVIOUS (z) = NO_LINE; ++ return z; ++} ++ ++/* Append a source line to the internal source file. */ ++ ++static void ++append_source_line (const char *str, LINE_T **ref_l, int *line_num, ++ const char *filename) ++{ ++ LINE_T *z = new_source_line (); ++ ++ /* Link line into the chain. */ ++ STRING (z) = xstrdup (str); ++ FILENAME (z) = ggc_strdup (filename); ++ NUMBER (z) = (*line_num)++; ++ NEXT (z) = NO_LINE; ++ PREVIOUS (z) = *ref_l; ++ if (TOP_LINE (&A68_JOB) == NO_LINE) ++ TOP_LINE (&A68_JOB) = z; ++ if (*ref_l != NO_LINE) ++ NEXT (*ref_l) = z; ++ *ref_l = z; ++} ++ ++/* Append environment source lines. */ ++ ++static void ++append_environ (const char *str[], LINE_T **ref_l, int *line_num, const char *name) ++{ ++ for (int k = 0; str[k] != NO_TEXT; k++) ++ { ++ int zero_line_num = 0; ++ (*line_num)++; ++ append_source_line (str[k], ref_l, &zero_line_num, name); ++ } ++} ++ ++/* ++ * Scanner, tokenises the source code. ++ */ ++ ++/* Emit a diagnostic if CH is an unworthy character. */ ++ ++static void ++unworthy (LINE_T *u, char *v, char ch) ++{ ++ if (ISPRINT (ch)) ++ { ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s", ++ "unworthy character") < 0) ++ gcc_unreachable (); ++ } ++ else ++ { ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s %c", ++ "unworthy character", ch) < 0) ++ gcc_unreachable (); ++ } ++ ++ a68_scan_error (u, v, A68 (edit_line)); ++} ++ ++/* Concatenate lines that terminate in '\' with next line. */ ++ ++static void ++concatenate_lines (LINE_T * top) ++{ ++ LINE_T *q; ++ /* Work from bottom backwards. */ ++ for (q = top; q != NO_LINE && NEXT (q) != NO_LINE; FORWARD (q)) ++ ; ++ ++ for (; q != NO_LINE; BACKWARD (q)) ++ { ++ char *z = STRING (q); ++ size_t len = strlen (z); ++ ++ if (len >= 2 ++ && z[len - 2] == BACKSLASH_CHAR ++ && z[len - 1] == NEWLINE_CHAR ++ && NEXT (q) != NO_LINE ++ && STRING (NEXT (q)) != NO_TEXT) ++ { ++ z[len - 2] = '\0'; ++ len += (int) strlen (STRING (NEXT (q))); ++ z = (char *) xmalloc (len + 1); ++ a68_bufcpy (z, STRING (q), len + 1); ++ a68_bufcat (z, STRING (NEXT (q)), len + 1); ++ STRING (NEXT (q))[0] = '\0'; ++ STRING (q) = z; ++ } ++ } ++} ++ ++/* Size of source file. */ ++ ++static int ++get_source_size (void) ++{ ++ FILE *f = FILE_SOURCE_FD (&A68_JOB); ++ return (int) lseek (fileno (f), 0, SEEK_END); ++} ++ ++/* Read source file FILENAME and make internal copy. */ ++ ++static bool ++read_source_file (const char *filename) ++{ ++ struct stat statbuf; ++ LINE_T *ref_l = NO_LINE; ++ int line_num = 0; ++ size_t k; ++ size_t bytes_read; ++ ssize_t l; ++ size_t source_file_size; ++ char *buffer; ++ FILE *f; ++ bool ret = true; ++ ++ /* First open the given file. */ ++ if (!(FILE_SOURCE_FD (&A68_JOB) = fopen (filename, "r"))) ++ fatal_error (UNKNOWN_LOCATION, "could not open source file %s", ++ filename); ++ FILE_SOURCE_NAME (&A68_JOB) = ggc_strdup (filename); ++ f = FILE_SOURCE_FD (&A68_JOB); ++ ++ if (fstat (fileno (f), &statbuf) ++ || !(S_ISREG (statbuf.st_mode) || S_ISCHR (statbuf.st_mode))) ++ fatal_error (UNKNOWN_LOCATION, "specified file %s is a directory", ++ filename); ++ ++ if ((source_file_size = get_source_size ()) == 0) ++ { ++ /* The source file is empty. */ ++ ret = false; ++ goto done; ++ } ++ ++ /* Allocate A68_PARSER (scan_buf), which is an auxiliary buffer used by the ++ scanner known to be big enough to hold any string contained in the source ++ file. */ ++ A68_PARSER (max_scan_buf_length) = source_file_size + 1; ++ A68_PARSER (max_scan_buf_length) += 1024; /* For the environment. */ ++ A68_PARSER (scan_buf) = (char *) xmalloc (A68_PARSER (max_scan_buf_length)); ++ ++ /* Prelude. */ ++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING ++ ? upper_prelude_start : supper_prelude_start, ++ &ref_l, &line_num, "prelude"); ++ ++ /* Read the file into a single buffer, so we save on system calls. */ ++ line_num = 1; ++ errno = 0; ++ buffer = (char *) xmalloc (8 + source_file_size); ++ if (lseek (fileno (f), 0, SEEK_SET) < 0) ++ gcc_unreachable (); ++ errno = 0; ++ bytes_read = io_read (f, buffer, source_file_size); ++ gcc_assert (errno == 0 && bytes_read == source_file_size); ++ ++ /* Link all lines into the list. */ ++ k = 0; ++ while (k < source_file_size) ++ { ++ l = 0; ++ A68_PARSER (scan_buf)[0] = '\0'; ++ while (k < source_file_size && buffer[k] != NEWLINE_CHAR) ++ { ++ if (k < source_file_size - 1 ++ && buffer[k] == CR_CHAR && buffer[k + 1] == NEWLINE_CHAR) ++ k++; ++ else ++ { ++ A68_PARSER (scan_buf)[l++] = buffer[k++]; ++ A68_PARSER (scan_buf)[l] = '\0'; ++ } ++ } ++ A68_PARSER (scan_buf)[l++] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[l] = '\0'; ++ if (k < source_file_size) ++ k++; ++ append_source_line (A68_PARSER (scan_buf), &ref_l, &line_num, ++ FILE_SOURCE_NAME (&A68_JOB)); ++ SCAN_ERROR (l != (ssize_t) strlen (A68_PARSER (scan_buf)), ++ NO_LINE, NO_TEXT, "invalid characters in source file"); ++ } ++ ++ /* Postlude. */ ++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING ++ ? upper_postlude : supper_postlude, ++ &ref_l, &line_num, "postlude"); ++ ++ /* Concatenate lines that end with \. */ ++ concatenate_lines (TOP_LINE (&A68_JOB)); ++ ++ /* Include files. */ ++ include_files (TOP_LINE (&A68_JOB)); ++ ++ done: ++ if (fclose (FILE_SOURCE_FD (&A68_JOB)) != 0) ++ gcc_unreachable (); ++ return ret; ++} ++ ++/* Get next character from internal copy of source file. ++ ++ If ALLOW_TYPO is true then typographical display features are skipped. ++ ++ If ALLOW_ONE_UNDER is true then a single underscore character is ++ skipped. */ ++ ++static char ++next_char (LINE_T **ref_l, char **ref_s, bool allow_typo, ++ bool allow_one_under = false, bool *found_under = NULL) ++{ ++ char ch; ++ ++ /* Empty source. */ ++ if (*ref_l == NO_LINE) ++ return STOP_CHAR; ++ ++ if ((*ref_s)[0] == NEWLINE_CHAR || (*ref_s)[0] == '\0') ++ { ++ /* Go to new line. */ ++ *ref_l = NEXT (*ref_l); ++ if (*ref_l == NO_LINE) ++ return STOP_CHAR; ++ *ref_s = STRING (*ref_l); ++ } ++ else ++ (*ref_s)++; ++ ++ /* Deliver next char. */ ++ ch = (*ref_s)[0]; ++ if ((allow_typo && (ISSPACE (ch) || ch == FORMFEED_CHAR)) ++ || (allow_one_under && ch == '_')) ++ { ++ if (ch == '_' && found_under != NULL) ++ *found_under = true; ++ ch = next_char (ref_l, ref_s, allow_typo); ++ } ++ return ch; ++} ++ ++/* Find first character that can start a valid symbol. */ ++ ++static void ++get_good_char (char *ref_c, LINE_T **ref_l, char **ref_s) ++{ ++ while (*ref_c != STOP_CHAR && (ISSPACE (*ref_c) || (*ref_c == '\0'))) ++ *ref_c = next_char (ref_l, ref_s, false); ++} ++ ++/* Case insensitive strncmp for at most the number of chars in V. */ ++ ++static int ++streq (const char *u, const char *v) ++{ ++ int diff; ++ for (diff = 0; diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR; u++, v++) ++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); ++ return diff; ++} ++ ++/* Case insensitive strncmp for at most N chars. */ ++ ++static int ++strneq (const char *u, const char *v, size_t n) ++{ ++ int diff; ++ size_t pos = 0; ++ for (diff = 0; ++ diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR && pos < n; ++ u++, v++, pos++) ++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); ++ return diff; ++} ++ ++ ++/* Determine whether u is bold tag v, independent of stropping regime. */ ++ ++static bool ++is_bold (char *u, const char *v) ++{ ++ size_t len = strlen (v); ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ /* UPPER stropping. */ ++ return strncmp (u, v, len) == 0 && !ISUPPER (u[len]); ++ else ++ /* SUPPER stropping. */ ++ return (strlen (u) >= len ++ && ISLOWER (u[0]) ++ && strneq (u, v, len) == 0 ++ && !ISALPHA (u[len]) ++ && !ISDIGIT (u[len])); ++} ++ ++/* Skip a string denotation. ++ ++ This function returns true if the end of the string denotation is found. ++ Returns false otherwise. */ ++ ++static bool ++skip_string (LINE_T **top, char **ch) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ v++; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (v[0] == QUOTE_CHAR && v[1] != QUOTE_CHAR) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (v[0] == QUOTE_CHAR && v[1] == QUOTE_CHAR) ++ { ++ v += 2; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) { ++ v = &(STRING (u)[0]); ++ } else { ++ v = NO_TEXT; ++ } ++ } ++ return false; ++} ++ ++/* Skip a comment. ++ ++ This function returns true if the end of the comment is found. Returns ++ false otherwise. */ ++ ++static bool ++skip_comment (LINE_T **top, char **ch, int delim) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ int nesting_level = 1; ++ v++; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ LINE_T *l = u; ++ char *c = v; ++ ++ if (v[0] == QUOTE_CHAR && skip_string (&l, &c) ++ && (delim == BOLD_COMMENT_BEGIN_SYMBOL || delim == BRIEF_COMMENT_BEGIN_SYMBOL)) ++ { ++ u = l; ++ v = c; ++ } ++ else if (is_bold (v, "COMMENT") && delim == BOLD_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "CO") && delim == STYLE_I_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (v[0] == '#' && delim == STYLE_II_COMMENT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "ETON") && delim == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ if (nesting_level == 0) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ } ++ else if (v[0] == '}' && delim == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ if (nesting_level == 0) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ } ++ else ++ { ++ if ((is_bold (v, "NOTE") && delim == BOLD_COMMENT_BEGIN_SYMBOL) ++ || (v[0] == '{' && delim == BRIEF_COMMENT_BEGIN_SYMBOL)) ++ { ++ nesting_level += 1; ++ } ++ ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return false; ++} ++ ++/* Skip rest of pragmat. ++ ++ This function returns true if the end of the pragmat is found, false ++ otherwise. */ ++ ++static bool ++skip_pragmat (LINE_T **top, char **ch, int delim, bool whitespace) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (is_bold (v, "PRAGMAT") && delim == BOLD_PRAGMAT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else if (is_bold (v, "PR") && delim == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ *top = u; ++ *ch = &v[1]; ++ return true; ++ } ++ else ++ { ++ if (whitespace && !ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) ++ { ++ SCAN_ERROR (true, u, v, "error in pragment"); ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) ++ { ++ /* Skip a bold word as you may trigger on REPR, for ++ instance. */ ++ while (ISUPPER (v[0])) ++ v++; ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) ++ { ++ /* Skip a tag as you may trigger on expr, for instance. */ ++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') ++ v++; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ } ++ ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return false; ++} ++ ++/* Return pointer to next token within pragmat. */ ++ ++static char * ++get_pragmat_item (LINE_T **top, char **ch) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ if (!ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) ++ { ++ *top = u; ++ *ch = v; ++ return v; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ return NO_TEXT; ++} ++ ++/* Scan for the next pragmat and yield the first item within it. */ ++ ++static char * ++next_preprocessor_item (LINE_T **top, char **ch, int *delim) ++{ ++ LINE_T *u = *top; ++ char *v = *ch; ++ *delim = 0; ++ while (u != NO_LINE) ++ { ++ while (v[0] != NULL_CHAR) ++ { ++ LINE_T *start_l = u; ++ char *start_c = v; ++ ++ if (v[0] == QUOTE_CHAR) ++ { ++ /* Skip string denotation. */ ++ SCAN_ERROR (!skip_string (&u, &v), start_l, start_c, ++ "unterminated string"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "COMMENT") != NO_KEYWORD ++ && is_bold (v, "COMMENT")) ++ { ++ /* Skip comment. */ ++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "CO") != NO_KEYWORD ++ && is_bold (v, "CO")) ++ { ++ /* skip comment. */ ++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_I_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "#") != NO_KEYWORD ++ && v[0] == '#') ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_II_COMMENT_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "NOTE") != NO_KEYWORD ++ && is_bold (v, "NOTE")) ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_BEGIN_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (a68_find_keyword (A68 (top_keyword), "{") != NO_KEYWORD ++ && v[0] == '{') ++ { ++ SCAN_ERROR (!skip_comment (&u, &v, BRIEF_COMMENT_BEGIN_SYMBOL), start_l, start_c, ++ "unterminated comment"); ++ } ++ else if (is_bold (v, "PRAGMAT") || is_bold (v, "PR")) ++ { ++ /* We caught a PRAGMAT. */ ++ char *item; ++ if (is_bold (v, "PRAGMAT")) ++ { ++ *delim = BOLD_PRAGMAT_SYMBOL; ++ v = &v[strlen ("PRAGMAT")]; ++ } ++ else if (is_bold (v, "PR")) ++ { ++ *delim = STYLE_I_PRAGMAT_SYMBOL; ++ v = &v[strlen ("PR")]; ++ } ++ item = get_pragmat_item (&u, &v); ++ SCAN_ERROR (item == NO_TEXT, start_l, start_c, ++ "unterminated pragmat"); ++ ++ if (streq (item, "INCLUDE") == 0) ++ { ++ /* Item "INCLUDE" includes a file. */ ++ *top = u; ++ *ch = v; ++ return item; ++ } ++ else ++ { ++ /* Unrecognised item - probably options handled later by the ++ tokeniser. */ ++ SCAN_ERROR (!skip_pragmat (&u, &v, *delim, false), start_l, start_c, ++ "unterminated pragmat"); ++ } ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) ++ { ++ /* Skip a bold word as you may trigger on REPR, for instance. */ ++ while (ISUPPER (v[0])) ++ v++; ++ } ++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) ++ { ++ /* Skip a tag as you may trigger on expr, for instance. */ ++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') ++ v++; ++ } ++ else ++ { ++ v++; ++ } ++ } ++ ++ FORWARD (u); ++ if (u != NO_LINE) ++ v = &(STRING (u)[0]); ++ else ++ v = NO_TEXT; ++ } ++ ++ *top = u; ++ *ch = v; ++ return NO_TEXT; ++} ++ ++/* Concatenate the two paths P1 and P2. */ ++ ++static char * ++a68_relpath (const char *p1, const char *p2, const char *fn) ++{ ++#if defined(__GNU__) ++ /* The Hurd doesn't define PATH_MAX. */ ++# define PATH_MAX 4096 ++#endif ++ ++ char q[PATH_MAX + 1]; ++ a68_bufcpy (q, p1, PATH_MAX); ++ a68_bufcat (q, "/", PATH_MAX); ++ a68_bufcat (q, p2, PATH_MAX); ++ a68_bufcat (q, "/", PATH_MAX); ++ a68_bufcat (q, fn, PATH_MAX); ++ /* Home directory shortcut ~ is a shell extension. */ ++ if (strchr (q, '~') != NO_TEXT) { ++ return NO_TEXT; ++ } ++ char *r = (char *) xmalloc (PATH_MAX + 1); ++ gcc_assert (r != NULL); ++ /* Error handling in the caller! */ ++ errno = 0; ++ r = lrealpath (q); ++ return r; ++} ++ ++/* Return true if we can open the file for reading. False otherwise. */ ++ ++static bool ++file_read_p (const char *filename) ++{ ++ return access (filename, R_OK) == 0 ? true : false; ++} ++ ++/* Find a file to include into the current source being parsed. Search the file ++ system for FILENAME and return a string with the file path. If the file is ++ not found, return NULL. ++ ++ When FILENAME is not an absolute path we first try to find it relative to the ++ current file being parsed (CURFILE). Failing to do that we use the search ++ paths provided by the -I option. */ ++ ++static char * ++find_include_file (const char *curfile, const char *filename) ++{ ++ char *filepath = NO_TEXT; ++ char *tmpfpath = NO_TEXT; ++ char *fnbdir = ldirname (filename); ++ const char *incfile = lbasename (filename); ++ ++ if (fnbdir == NULL || incfile == NULL) ++ gcc_unreachable (); ++ ++ if (!IS_ABSOLUTE_PATH (filename)) ++ { ++ char *sourcedir = ldirname (curfile); ++ ++ if (sourcedir == NULL || fnbdir == NULL) ++ gcc_unreachable (); ++ ++ if (strlen (sourcedir) == 0 && strlen (fnbdir) == 0) ++ { ++ free (sourcedir); ++ sourcedir = (char *) xmalloc (2); ++ a68_bufcpy (sourcedir, ".", 2); ++ } ++ ++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto cleanup; ++ } ++ ++ for (unsigned ix = 0; ix != vec_safe_length (A68_INCLUDE_PATHS); ix++) ++ { ++ const char *include_dir = (*(A68_INCLUDE_PATHS))[ix]; ++ tmpfpath = a68_relpath (include_dir, fnbdir, incfile); ++ if (!IS_ABSOLUTE_PATH (tmpfpath)) ++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto cleanup; ++ } ++ } ++ ++ cleanup: ++ free (sourcedir); ++ goto end; ++ } ++ else ++ { ++ size_t fnwid = (int) strlen (filename) + 1; ++ tmpfpath = (char *) xmalloc ((size_t) fnwid); ++ a68_bufcpy (tmpfpath, filename, fnwid); ++ ++ if (file_read_p (tmpfpath)) ++ { ++ filepath = tmpfpath; ++ goto end; ++ } ++ } ++ ++end: ++ free (fnbdir); ++ return filepath; ++} ++ ++/* Include files. ++ This function handles the INCLUDE pragmat in the source file. */ ++ ++static void ++include_files (LINE_T *top) ++{ ++ /* syntax: PR include "filename" PR ++ ++ The file gets inserted before the line containing the pragmat. In this way ++ correct line numbers are preserved which helps diagnostics. A file that ++ has been included will not be included a second time - it will be ignored. ++ A rigorous fail-safe, but there is no mechanism to prevent recursive ++ includes in A68 source code. User reports do not indicate sophisticated ++ use of INCLUDE, so this is fine for now. ++ */ ++ ++ bool make_pass = true; ++ while (make_pass) ++ { ++ LINE_T *s, *t, *u = top; ++ char *v = &(STRING (u)[0]); ++ make_pass = false; ++ errno = 0; ++ while (u != NO_LINE) ++ { ++ int pr_lim; ++ char *item = next_preprocessor_item (&u, &v, &pr_lim); ++ LINE_T *start_l = u; ++ char *start_c = v; ++ /* Search for PR include "filename" PR. */ ++ if (item != NO_TEXT && streq (item, "INCLUDE") == 0) ++ { ++ FILE *fp; ++ int fd; ++ size_t fsize, k; ++ int n, linum, bytes_read; ++ char *fbuf, delim; ++ BUFFER fnb; ++ char *fn = NO_TEXT; ++ /* Skip to filename. */ ++ while (ISALPHA (v[0])) ++ v++; ++ while (ISSPACE (v[0])) ++ v++; ++ /* Scan quoted filename. */ ++ SCAN_ERROR ((v[0] != QUOTE_CHAR && v[0] != '\''), start_l, start_c, ++ "incorrect filename"); ++ delim = (v++)[0]; ++ n = 0; ++ fnb[0] = NULL_CHAR; ++ /* Scan Algol 68 string (note: "" denotes a ", while in C it ++ concatenates). */ ++ do ++ { ++ SCAN_ERROR (EOL (v[0]), start_l, start_c, ++ "incorrect filename"); ++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, ++ "incorrect filename"); ++ if (v[0] == delim) ++ { ++ while (v[0] == delim && v[1] == delim) ++ { ++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, ++ "incorrect filename"); ++ fnb[n++] = delim; ++ fnb[n] = NULL_CHAR; ++ v += 2; ++ } ++ } ++ else if (ISPRINT (v[0])) ++ { ++ fnb[n++] = *(v++); ++ fnb[n] = NULL_CHAR; ++ } ++ else ++ { ++ SCAN_ERROR (true, start_l, start_c, ++ "incorrect filename"); ++ } ++ } ++ while (v[0] != delim); ++ ++ /* Insist that the pragmat is closed properly. */ ++ v = &v[1]; ++ SCAN_ERROR (!skip_pragmat (&u, &v, pr_lim, true), start_l, start_c, ++ "unterminated pragmat"); ++ SCAN_ERROR (n == 0, start_l, start_c, ++ "incorrect filename"); ++ ++ char *sourcefile = NO_TEXT; ++ if (FILENAME (u) != NO_TEXT) ++ { ++ sourcefile = xstrdup (FILENAME (u)); ++ } ++ else ++ { ++ sourcefile = (char *) xmalloc (2); ++ a68_bufcpy (sourcefile, ".", 1); ++ } ++ fn = find_include_file (sourcefile, fnb); ++ free (sourcefile); ++ ++ /* Do not check errno, since errno may be undefined here ++ after a successful call. */ ++ if (fn != NO_TEXT) ++ a68_bufcpy (fnb, fn, BUFFER_SIZE); ++ else ++ { ++ SCAN_ERROR (true, start_l, start_c, ++ "included file not found"); ++ } ++ size_t fnwid = (int) strlen (fnb) + 1; ++ fn = (char *) xmalloc ((size_t) fnwid); ++ a68_bufcpy (fn, fnb, fnwid); ++ ++ /* Ignore the file when included more than once. */ ++ for (t = top; t != NO_LINE; t = NEXT (t)) ++ { ++ if (strcmp (FILENAME (t), fn) == 0) ++ goto search_next_pragmat; ++ } ++ t = NO_LINE; ++ ++ /* Access the file. */ ++ errno = 0; ++ fp = fopen (fn, "r"); ++ SCAN_ERROR (fp == NULL, start_l, start_c, ++ "error opening included file"); ++ fd = fileno (fp); ++ errno = 0; ++ off_t off = lseek (fd, 0, SEEK_END); ++ gcc_assert (off >= 0); ++ fsize = (size_t) off; ++ SCAN_ERROR (errno != 0, start_l, start_c, ++ "error while reading file"); ++ fbuf = (char *) xmalloc (8 + fsize); ++ errno = 0; ++ if (lseek (fd, 0, SEEK_SET) < 0) ++ gcc_unreachable (); ++ SCAN_ERROR (errno != 0, start_l, start_c, ++ "error while reading file"); ++ errno = 0; ++ bytes_read = (int) io_read (fp, fbuf, (size_t) fsize); ++ SCAN_ERROR (errno != 0 || (size_t) bytes_read != fsize, start_l, start_c, ++ "error while reading file"); ++ ++ /* Buffer still usable?. */ ++ if (fsize > A68_PARSER (max_scan_buf_length)) ++ { ++ A68_PARSER (max_scan_buf_length) = fsize; ++ A68_PARSER (scan_buf) = (char *) xmalloc (8 + A68_PARSER (max_scan_buf_length)); ++ } ++ ++ /* Link all lines into the list. */ ++ linum = 1; ++ s = u; ++ t = PREVIOUS (u); ++ k = 0; ++ if (fsize == 0) ++ { ++ /* If file is empty, insert single empty line. */ ++ A68_PARSER (scan_buf)[0] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[1] = NULL_CHAR; ++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); ++ } ++ else ++ { ++ while (k < fsize) ++ { ++ n = 0; ++ A68_PARSER (scan_buf)[0] = NULL_CHAR; ++ while (k < fsize && fbuf[k] != NEWLINE_CHAR) ++ { ++ SCAN_ERROR ((ISCNTRL (fbuf[k]) && !ISSPACE (fbuf[k])) ++ || fbuf[k] == STOP_CHAR, ++ start_l, start_c, ++ "invalid characters in included file"); ++ A68_PARSER (scan_buf)[n++] = fbuf[k++]; ++ A68_PARSER (scan_buf)[n] = NULL_CHAR; ++ } ++ A68_PARSER (scan_buf)[n++] = NEWLINE_CHAR; ++ A68_PARSER (scan_buf)[n] = NULL_CHAR; ++ if (k < fsize) ++ k++; ++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); ++ } ++ } ++ ++ /* Conclude and go find another include directive, if any. */ ++ NEXT (t) = s; ++ PREVIOUS (s) = t; ++ concatenate_lines (top); ++ if (fclose (fp) != 0) ++ gcc_unreachable (); ++ make_pass = true; ++ } ++ search_next_pragmat: ++ { (void) 0; }; ++ } ++ } ++} ++ ++/* Handle a pragment (pragmat or comment). */ ++ ++static char * ++pragment (int type, LINE_T **ref_l, char **ref_c) ++{ ++#define INIT_BUFFER \ ++ do \ ++ { \ ++ chars_in_buf = 0; \ ++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ ++ } \ ++ while (0) ++ ++#define ADD_ONE_CHAR(CH) \ ++ do \ ++ { \ ++ A68_PARSER (scan_buf)[chars_in_buf ++] = (CH); \ ++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ ++ } \ ++ while (0) ++ ++ const char *term_s = NO_TEXT; ++ const char *beg_s = NO_TEXT; ++ char c = **ref_c, *start_c = *ref_c; ++ char *z = NO_TEXT; ++ LINE_T *start_l = *ref_l; ++ int beg_s_length, term_s_length, chars_in_buf; ++ bool stop, pragmat = false; ++ ++ /* Set terminator to look for. */ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ if (type == STYLE_I_COMMENT_SYMBOL) ++ term_s = "CO"; ++ else if (type == STYLE_II_COMMENT_SYMBOL) ++ term_s = "#"; ++ else if (type == BOLD_COMMENT_SYMBOL) ++ term_s = "COMMENT"; ++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "NOTE"; ++ term_s = "ETON"; ++ } ++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "{"; ++ term_s = "}"; ++ } ++ else if (type == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ term_s = "PR"; ++ pragmat = true; ++ } ++ else if (type == BOLD_PRAGMAT_SYMBOL) ++ { ++ term_s = "PRAGMAT"; ++ pragmat = true; ++ } ++ } ++ else ++ { ++ /* SUPPER stropping. */ ++ if (type == STYLE_I_COMMENT_SYMBOL) ++ term_s = "co"; ++ else if (type == STYLE_II_COMMENT_SYMBOL) ++ term_s = "#"; ++ else if (type == BOLD_COMMENT_SYMBOL) ++ term_s = "comment"; ++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "note"; ++ term_s = "eton"; ++ } ++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ beg_s = "{"; ++ term_s = "}"; ++ } ++ else if (type == STYLE_I_PRAGMAT_SYMBOL) ++ { ++ term_s = "pr"; ++ pragmat = true; ++ } ++ else if (type == BOLD_PRAGMAT_SYMBOL) ++ { ++ term_s = "pragmat"; ++ pragmat = true; ++ } ++ } ++ ++ beg_s_length = (beg_s != NO_TEXT ? (int) strlen (beg_s) : 0); ++ term_s_length = (int) strlen (term_s); ++ ++ /* Scan for terminator. */ ++ bool nestable_comment = (beg_s != NO_TEXT); ++ int nesting_level = 1; ++ INIT_BUFFER; ++ stop = false; ++ while (stop == false) ++ { ++ SCAN_ERROR (c == STOP_CHAR, start_l, start_c, ++ "unterminated pragment"); ++ ++ /* A ".." or '..' delimited string in a PRAGMAT, or ++ a ".." in a nestable comment. */ ++ if ((pragmat && (c == QUOTE_CHAR || c == '\'')) ++ || (nestable_comment && c == QUOTE_CHAR)) ++ { ++ char delim = c; ++ bool eos = false; ++ ADD_ONE_CHAR (c); ++ c = next_char (ref_l, ref_c, false); ++ while (!eos) ++ { ++ SCAN_ERROR (EOL (c), start_l, start_c, ++ "string within pragment exceeds end of line"); ++ ++ if (c == delim) ++ { ++ ADD_ONE_CHAR (delim); ++ save_state (*ref_l, *ref_c, c); ++ c = next_char (ref_l, ref_c, false); ++ if (c == delim) ++ c = next_char (ref_l, ref_c, false); ++ else ++ { ++ restore_state (ref_l, ref_c, &c); ++ eos = true; ++ } ++ } ++ else if (ISPRINT (c)) ++ { ++ ADD_ONE_CHAR (c); ++ c = next_char (ref_l, ref_c, false); ++ } ++ else ++ unworthy (start_l, start_c, c); ++ } ++ } ++ else if (EOL (c)) ++ ADD_ONE_CHAR (NEWLINE_CHAR); ++ else if (ISPRINT (c) || ISSPACE (c)) ++ ADD_ONE_CHAR (c); ++ ++ if (nestable_comment && chars_in_buf >= beg_s_length) ++ { ++ /* If we find another instance of the nestable begin mark, bump the ++ nesting level and continue scanning. */ ++ if (strcmp (beg_s, ++ &(A68_PARSER (scan_buf)[chars_in_buf - beg_s_length])) == 0) ++ { ++ nesting_level += 1; ++ goto nextchar; ++ } ++ } ++ ++ if (chars_in_buf >= term_s_length) ++ { ++ /* Check whether we encountered the terminator. Mind nesting if ++ necessary. */ ++ if (strcmp (term_s, ++ &(A68_PARSER (scan_buf)[chars_in_buf - term_s_length])) == 0) ++ { ++ if (nestable_comment) ++ { ++ gcc_assert (nesting_level > 0); ++ nesting_level -= 1; ++ stop = (nesting_level == 0); ++ } ++ else ++ stop = true; ++ } ++ } ++ ++ nextchar: ++ c = next_char (ref_l, ref_c, false); ++ } ++ ++ A68_PARSER (scan_buf)[chars_in_buf - term_s_length] = '\0'; ++ z = a68_new_string (term_s, A68_PARSER (scan_buf), term_s, NO_TEXT); ++ return z; ++#undef ADD_ONE_CHAR ++#undef INIT_BUFFER ++} ++ ++/* Whether input shows exponent character. */ ++ ++static bool ++is_exp_char (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ char exp_syms[3]; ++ ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ exp_syms[0] = EXPONENT_CHAR; ++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); ++ exp_syms[2] = '\0'; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ if (strchr (exp_syms, *ch) != NO_TEXT) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Whether input shows radix character. */ ++ ++static bool ++is_radix_char (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ if (*ch == RADIX_CHAR) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("0123456789abcdef", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Whether input shows decimal point. */ ++ ++static bool ++is_decimal_point (LINE_T **ref_l, char **ref_s, char *ch) ++{ ++ bool ret = false; ++ ++ save_state (*ref_l, *ref_s, *ch); ++ if (*ch == POINT_CHAR) ++ { ++ char exp_syms[3]; ++ ++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ ++ exp_syms[0] = EXPONENT_CHAR; ++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); ++ exp_syms[2] = '\0'; ++ ++ *ch = next_char (ref_l, ref_s, true); ++ if (strchr (exp_syms, *ch) != NO_TEXT) ++ { ++ *ch = next_char (ref_l, ref_s, true); ++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); ++ } ++ else ++ ret = (strchr ("0123456789", *ch) != NO_TEXT); ++ } ++ restore_state (ref_l, ref_s, ch); ++ return ret; ++} ++ ++/* Attribute for format item. */ ++ ++static enum a68_attribute ++get_format_item (char ch) ++{ ++ switch (TOLOWER (ch)) ++ { ++ case 'a': ++ return FORMAT_ITEM_A; ++ case 'b': ++ return FORMAT_ITEM_B; ++ case 'c': ++ return FORMAT_ITEM_C; ++ case 'd': ++ return FORMAT_ITEM_D; ++ case 'e': ++ return FORMAT_ITEM_E; ++ case 'f': ++ return FORMAT_ITEM_F; ++ case 'g': ++ return FORMAT_ITEM_G; ++ case 'h': ++ return FORMAT_ITEM_H; ++ case 'i': ++ return FORMAT_ITEM_I; ++ case 'j': ++ return FORMAT_ITEM_J; ++ case 'k': ++ return FORMAT_ITEM_K; ++ case 'l': ++ case '/': ++ return FORMAT_ITEM_L; ++ case 'm': ++ return FORMAT_ITEM_M; ++ case 'n': ++ return FORMAT_ITEM_N; ++ case 'o': ++ return FORMAT_ITEM_O; ++ case 'p': ++ return FORMAT_ITEM_P; ++ case 'q': ++ return FORMAT_ITEM_Q; ++ case 'r': ++ return FORMAT_ITEM_R; ++ case 's': ++ return FORMAT_ITEM_S; ++ case 't': ++ return FORMAT_ITEM_T; ++ case 'u': ++ return FORMAT_ITEM_U; ++ case 'v': ++ return FORMAT_ITEM_V; ++ case 'w': ++ return FORMAT_ITEM_W; ++ case 'x': ++ return FORMAT_ITEM_X; ++ case 'y': ++ return FORMAT_ITEM_Y; ++ case 'z': ++ return FORMAT_ITEM_Z; ++ case '+': ++ return FORMAT_ITEM_PLUS; ++ case '-': ++ return FORMAT_ITEM_MINUS; ++ case POINT_CHAR: ++ return FORMAT_ITEM_POINT; ++ case '%': ++ return FORMAT_ITEM_ESCAPE; ++ default: ++ return STOP; ++ } ++} ++ ++/* Get next token from internal copy of source file. ++ ++ The kind of token is set via the passed pointer ATTR. ++ The contents of token is set in the scan_buf via SYM. ++ ++ The recognized tokens are, by reported ATTR: ++ ++ ++ End of file. ++ FORMAT_ITEM_* ++ Item in a format. ++ STATIC_REPLICATOR ++ INT denotation for a static replicator in a format. ++ BOLD_TAG ++ Bold tag. ++ IDENTIFIER ++ A "lower case" identifier. ++ IDENTIFIER_WITH_UNDERSCORES ++ A "lower case" identifier whose's at least one taggle ++ was found adjacent to an underscore. ++ REAL_DENOTATION ++ A REAL denotation. ++ POINT_SYMBOL ++ . ++ BITS_DENOTATION ++ A BITS denotation like 16rffff ++ INT_DENOTATION ++ An INT denotation. ++ ROW_CHAR_DENOTATION ++ A STRING denotation. ++ LITERAL ++ A literal denotation in a format. ++ STOP ++ Single-character symbols #$()[]{},;@|: ++ := /= :=: :/=: ++ The character is placed in SYM. ++ EQUALS_SYMBOL ++ The equality symbol. ++ OPERATOR ++ A predefined operator. ++*/ ++ ++static void ++get_next_token (bool in_format, ++ LINE_T **ref_l, char **ref_s, ++ LINE_T **start_l, char **start_c, enum a68_attribute *att) ++{ ++ char c = **ref_s; ++ char *sym = A68_PARSER (scan_buf); ++ ++ sym[0] = '\0'; ++ get_good_char (&c, ref_l, ref_s); ++ *start_l = *ref_l; ++ *start_c = *ref_s; ++ if (c == STOP_CHAR) ++ { ++ /* We are at EOF. */ ++ (sym++)[0] = STOP_CHAR; ++ sym[0] = '\0'; ++ return; ++ } ++ ++ if (in_format) ++ { ++ /* In a format. */ ++ const char *format_items = "/%\\+-.abcdefghijklmnopqrstuvwxyz"; ++ if (strchr (format_items, c) != NO_TEXT) ++ { ++ /* General format items. */ ++ (sym++)[0] = c; ++ sym[0] = NULL_CHAR; ++ *att = get_format_item (c); ++ (void) next_char (ref_l, ref_s, false); ++ return; ++ } ++ if (ISDIGIT (c)) ++ { ++ /* INT denotation for static replicator. */ ++ SCAN_DIGITS (c); ++ sym[0] = NULL_CHAR; ++ *att = STATIC_REPLICATOR; ++ return; ++ } ++ } ++ ++ if (ISUPPER (c)) ++ { ++ /* Bold taggles are enabled only in gnu68. */ ++ bool allow_one_under = !OPTION_STRICT (&A68_JOB); ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ /* In UPPER stropping a bold tag is an upper case word. */ ++ while (ISUPPER (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false, allow_one_under); ++ } ++ sym[0] = '\0'; ++ *att = BOLD_TAG; ++ } ++ else ++ { ++ /* In SUPPER stropping a bold tag is a capitalized word that may ++ contain letters and digits. */ ++ while (ISALPHA (c) || ISDIGIT (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false, allow_one_under); ++ } ++ sym[0] = '\0'; ++ *att = BOLD_TAG; ++ } ++ } ++ else if (ISLOWER (c)) ++ { ++ /* In both UPPER and SUPPER stropping regimes a tag is a lower case word ++ which may contain letters and digits. ++ ++ In SUPPER stropping, however, it is not allowed to have blanks ++ separating the taggles within tags. */ ++ ++ bool allow_one_under = true; ++ bool found_under = false; ++ bool allow_typo = OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING; ++ ++ /* Lower case word - identifier. */ ++ while (ISLOWER (c) || ISDIGIT (c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, allow_typo, allow_one_under, ++ &found_under); ++ } ++ ++ sym[0] = '\0'; ++ *att = found_under ? IDENTIFIER_WITH_UNDERSCORES : IDENTIFIER; ++ } ++ else if (c == POINT_CHAR) ++ { ++ /* Begins with a point symbol - point, L REAL denotation. */ ++ if (is_decimal_point (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = '0'; ++ (sym++)[0] = POINT_CHAR; ++ c = next_char (ref_l, ref_s, true); ++ SCAN_DIGITS (c); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ SCAN_EXPONENT_PART (c); ++ sym[0] = '\0'; ++ *att = REAL_DENOTATION; ++ } ++ else ++ { ++ c = next_char (ref_l, ref_s, true); ++ (sym++)[0] = POINT_CHAR; ++ sym[0] = '\0'; ++ *att = POINT_SYMBOL; ++ } ++ } ++ else if (ISDIGIT (c)) ++ { ++ /* Something that begins with a digit: ++ L INT denotation, L REAL denotation. */ ++ SCAN_DIGITS (c); ++ ++ if (is_decimal_point (ref_l, ref_s, &c)) ++ { ++ c = next_char (ref_l, ref_s, true); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = POINT_CHAR; ++ (sym++)[0] = '0'; ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ else ++ { ++ (sym++)[0] = POINT_CHAR; ++ SCAN_DIGITS (c); ++ if (is_exp_char (ref_l, ref_s, &c)) ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ } ++ else if (is_exp_char (ref_l, ref_s, &c)) ++ { ++ SCAN_EXPONENT_PART (c); ++ *att = REAL_DENOTATION; ++ } ++ else if (is_radix_char (ref_l, ref_s, &c)) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, true); ++ /* This is valid for both UPPER and SUPPER stropping. */ ++ while (ISDIGIT (c) || strchr ("abcdef", c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, true); ++ } ++ *att = BITS_DENOTATION; ++ } ++ else ++ { ++ *att = INT_DENOTATION; ++ } ++ sym[0] = '\0'; ++ } ++ else if (c == QUOTE_CHAR) ++ { ++ /* STRING denotation. */ ++ bool stop = false; ++ ++ while (!stop) ++ { ++ c = next_char (ref_l, ref_s, false); ++ while (c != QUOTE_CHAR && c != STOP_CHAR) ++ { ++ if (c == APOSTROPHE_CHAR) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ switch (c) ++ { ++ case APOSTROPHE_CHAR: ++ case 'n': ++ case 'f': ++ case 'r': ++ case 't': ++ (sym++)[0] = c; ++ break; ++ case '(': ++ { ++ unsigned int num_code_points = 0; ++ ++ (sym++)[0] = c; ++ /* Process code points. */ ++ while (1) ++ { ++ /* Skip white spaces. */ ++ while (1) ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!ISSPACE (c)) ++ break; ++ } ++ ++ /* See if we are done. */ ++ if (c == ')') ++ { ++ SCAN_ERROR (num_code_points == 0, *start_l, *ref_s, ++ "expected at least one character point in string break"); ++ (sym++)[0] = c; ++ break; ++ } ++ else if (c == 'u' || c == 'U') ++ { ++ (sym++)[0] = c; ++ /* Process a code point. */ ++ char u = c; ++ int numdigits = (u == 'u' ? 4 : 8); ++ char *startpos = *ref_s; ++ int i = 0; ++ do ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!(ISDIGIT (c) ++ || ((c >= 'a') && (c <= 'f')) ++ || ((c >= 'A') && (c <= 'F')))) ++ { ++ SCAN_ERROR (true, *start_l, startpos, ++ (u == 'u' ++ ? "expected four hex digits in \ ++string break character point" ++ : "expected eight hex digits in \ ++string break character point")); ++ } ++ (sym++)[0] = c; ++ i += 1; ++ } ++ while (i < numdigits); ++ ++ /* Skip white spaces. */ ++ while (1) ++ { ++ c = next_char (ref_l, ref_s, false); ++ if (!ISSPACE (c)) ++ break; ++ } ++ ++ /* Comma or end of list. */ ++ if (c == ')') ++ { ++ (sym++)[0] = c; ++ break; ++ } ++ ++ SCAN_ERROR (c != ',', *start_l, *ref_s, ++ "expected , or ) in string break"); ++ } ++ else ++ { ++ SCAN_ERROR (true, *start_l, *ref_s, ++ "unterminated list of character codes"); ++ } ++ } ++ break; ++ } ++ default: ++ SCAN_ERROR (true, *start_l, *ref_s, "invalid string break sequence"); ++ } ++ } ++ else ++ { ++ SCAN_ERROR (EOL (c), *start_l, *start_c, "string exceeds end of line"); ++ (sym++)[0] = c; ++ } ++ c = next_char (ref_l, ref_s, false); ++ } ++ SCAN_ERROR (*ref_l == NO_LINE, *start_l, *start_c, "unterminated string"); ++ c = next_char (ref_l, ref_s, false); ++ if (c == QUOTE_CHAR) ++ (sym++)[0] = QUOTE_CHAR; ++ else ++ stop = true; ++ } ++ sym[0] = '\0'; ++ *att = (in_format ? LITERAL : ROW_CHAR_DENOTATION); ++ } ++ else if (strchr ("#$()[]{},;@", c) != NO_TEXT) ++ { ++ /* Single character symbols. */ ++ (sym++)[0] = c; ++ (void) next_char (ref_l, ref_s, false); ++ sym[0] = '\0'; ++ *att = STOP; ++ } ++ else if (c == '|') ++ { ++ /* Bar. */ ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (c == ':') ++ { ++ (sym++)[0] = c; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ sym[0] = '\0'; ++ *att = STOP; ++ } ++ else if (c == ':') ++ { ++ /* Colon, semicolon, IS, ISNT. */ ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == ':') ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ } ++ else if (c == '/') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == '=') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == ':') ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ if ((c = next_char (ref_l, ref_s, false)) == '=') ++ (sym++)[0] = c; ++ } ++ ++ sym[0] = '\0'; ++ *att = STOP; ++ ++ } ++ else if (c == '=') ++ { ++ /* Operator starting with "=". */ ++ char *scanned = sym; ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (strchr (NOMADS, c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if (next_char (ref_l, ref_s, false) == ':') ++ { ++ (sym++)[0] = ':'; ++ c = next_char (ref_l, ref_s, false); ++ if (strlen (sym) < 4 && c == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ sym[0] = '\0'; ++ if (next_char (ref_l, ref_s, false) == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ else ++ { ++ SCAN_ERROR (!(strcmp (scanned, "=:") == 0 || strcmp (scanned, "==:") == 0), ++ *start_l, *start_c, "invalid operator tag"); ++ } ++ } ++ sym[0] = '\0'; ++ if (strcmp (scanned, "=") == 0) ++ *att = EQUALS_SYMBOL; ++ else ++ *att = OPERATOR; ++ } ++ else if (strchr (MONADS, c) != NO_TEXT || strchr (NOMADS, c) != NO_TEXT) ++ { ++ /* Operator. */ ++ char *scanned = sym; ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ if (strchr (NOMADS, c) != NO_TEXT) ++ { ++ (sym++)[0] = c; ++ c = next_char (ref_l, ref_s, false); ++ } ++ if (c == '=') ++ { ++ (sym++)[0] = c; ++ if (next_char (ref_l, ref_s, false) == ':') ++ { ++ (sym++)[0] = ':'; ++ c = next_char (ref_l, ref_s, false); ++ if (strlen (scanned) < 4 && c == '=') ++ { ++ (sym++)[0] = '='; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ } ++ } ++ else if (c == ':') ++ { ++ (sym++)[0] = c; ++ sym[0] = '\0'; ++ if (next_char (ref_l, ref_s, false) == '=') ++ { ++ (sym++)[0] = '='; ++ sym[0] = '\0'; ++ (void) next_char (ref_l, ref_s, false); ++ } ++ else ++ { ++ SCAN_ERROR (strcmp (&(scanned[1]), "=:") != 0, ++ *start_l, *start_c, "invalid operator tag"); ++ } ++ } ++ sym[0] = '\0'; ++ *att = OPERATOR; ++ } ++ else ++ { ++ /* Afuuus ... strange characters!. */ ++ unworthy (*start_l, *start_c, (int) c); ++ } ++} ++ ++/* Whether att opens an embedded clause. */ ++ ++static bool ++open_nested_clause (int att) ++{ ++ switch (att) ++ { ++ case OPEN_SYMBOL: ++ case BEGIN_SYMBOL: ++ case PAR_SYMBOL: ++ case IF_SYMBOL: ++ case CASE_SYMBOL: ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case BY_SYMBOL: ++ case TO_SYMBOL: ++ case WHILE_SYMBOL: ++ case DO_SYMBOL: ++ case SUB_SYMBOL: ++ return true; ++ } ++ return false; ++} ++ ++/* Whether att closes an embedded clause. */ ++ ++static bool ++close_nested_clause (int att) ++{ ++ switch (att) ++ { ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case FI_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case BUS_SYMBOL: ++ return true; ++ } ++ return false; ++} ++ ++/* Cast a string to lower case. */ ++ ++static void ++make_lower_case (char *p) ++{ ++ for (; p != NO_TEXT && p[0] != '\0'; p++) ++ p[0] = TOLOWER (p[0]); ++} ++ ++/* Cast a string to upper case. */ ++ ++static void ++make_upper_case (char *p) ++{ ++ for (; p != NO_TEXT && p[0] != '\0'; p++) ++ p[0] = TOUPPER (p[0]); ++} ++ ++/* Construct a linear list of tokens. */ ++ ++static void ++tokenise_source (NODE_T **root, int level, bool in_format, ++ LINE_T **l, char **s, LINE_T **start_l, ++ char **start_c) ++{ ++ char *pragmat_lpr = NO_TEXT; ++ int pragmat_lprt = 0; ++ LINE_T *pragmat_lprl = NO_LINE; ++ char *pragmat_lprc = NULL; ++ ++ char *comment_lpr = NO_TEXT; ++ int comment_lprt = 0; ++ LINE_T *comment_lprl = NO_LINE; ++ char *comment_lprc = NULL; ++ ++ while (l != NO_VAR && !A68_PARSER (stop_scanner)) ++ { ++ enum a68_attribute att = STOP; ++ get_next_token (in_format, l, s, start_l, start_c, &att); ++ ++ if (A68_PARSER (scan_buf)[0] == STOP_CHAR) ++ A68_PARSER (stop_scanner) = true; ++ else if (strlen (A68_PARSER (scan_buf)) > 0 || att == ROW_CHAR_DENOTATION || att == LITERAL) ++ { ++ KEYWORD_T *kw; ++ const char *c = NO_TEXT; ++ bool make_node = true; ++ const char *trailing = NO_TEXT; ++ ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ /* In UPPER stropping all symbols in R9.4.1 are expressed as bold ++ tags like "BEGIN", or symbols like "@". */ ++ ++ /* In this stropping regime there is no need to handle ++ identifiers for which taggles were adjacent to underscores ++ specially. */ ++ if (att != IDENTIFIER && att != IDENTIFIER_WITH_UNDERSCORES) ++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); ++ else ++ kw = NO_KEYWORD; ++ } ++ else ++ { ++ /* In SUPPER stropping all symbols in R9.4.1 are expressed as ++ tags like "begin", or symbols like "@". */ ++ ++ /* Normalize bold tags to all upper-case letters. */ ++ if (att == BOLD_TAG) ++ make_upper_case (A68_PARSER (scan_buf)); ++ ++ /* If any of the taggles of the scanned identifier were adjacent ++ to an underscore, that inhibits interpreting it as a ++ keyword. */ ++ if (att != BOLD_TAG && att != IDENTIFIER_WITH_UNDERSCORES) ++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); ++ else ++ kw = NO_KEYWORD; ++ } ++ ++ /* Beyond this point it is irrelevant whether an identifier had ++ taggles adjacent to an underscore. */ ++ if (att == IDENTIFIER_WITH_UNDERSCORES) ++ att = IDENTIFIER; ++ ++ if (kw == NO_KEYWORD || att == ROW_CHAR_DENOTATION) ++ { ++ if (att == IDENTIFIER) ++ make_lower_case (A68_PARSER (scan_buf)); ++ if (att != ROW_CHAR_DENOTATION && att != LITERAL) ++ { ++ size_t len = strlen (A68_PARSER (scan_buf)); ++ while (len >= 1 && A68_PARSER (scan_buf)[len - 1] == '_') ++ { ++ trailing = "_"; ++ A68_PARSER (scan_buf)[len - 1] = NULL_CHAR; ++ len--; ++ } ++ } ++ c = TEXT (a68_add_token (&A68 (top_token), A68_PARSER (scan_buf))); ++ } ++ else ++ { ++ if (IS (kw, TO_SYMBOL)) ++ { ++ /* Merge GO and TO to GOTO. */ ++ if (*root != NO_NODE && IS (*root, GO_SYMBOL)) ++ { ++ ATTRIBUTE (*root) = GOTO_SYMBOL; ++ NSYMBOL (*root) = TEXT (a68_find_keyword (A68 (top_keyword), "GOTO")); ++ make_node = false; ++ } ++ else ++ { ++ att = ATTRIBUTE (kw); ++ c = TEXT (kw); ++ } ++ } ++ else ++ { ++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) ++ { ++ if (att == 0 || att == BOLD_TAG) ++ att = ATTRIBUTE (kw); ++ } ++ else ++ { ++ if (att == 0 || att == IDENTIFIER) ++ att = ATTRIBUTE (kw); ++ } ++ ++ c = TEXT (kw); ++ /* Handle pragments. */ ++ if (att == STYLE_II_COMMENT_SYMBOL ++ || att == STYLE_I_COMMENT_SYMBOL ++ || att == BOLD_COMMENT_SYMBOL ++ || att == BOLD_COMMENT_BEGIN_SYMBOL ++ || att == BRIEF_COMMENT_BEGIN_SYMBOL) ++ { ++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); ++ ++ if (comment_lpr == NO_TEXT ++ || (int) strlen (comment_lpr) == 0) ++ comment_lpr = nlpr; ++ else ++ { ++ char *stale = comment_lpr; ++ comment_lpr ++ = a68_new_string (comment_lpr, "n\n", nlpr, NO_TEXT); ++ free (stale); ++ } ++ comment_lprt = att; ++ comment_lprl = *start_l; ++ comment_lprc = *start_c; ++ make_node = false; ++ } ++ else if (att == STYLE_I_PRAGMAT_SYMBOL ++ || att == BOLD_PRAGMAT_SYMBOL) ++ { ++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); ++ if (pragmat_lpr == NO_TEXT ++ || (int) strlen (pragmat_lpr) == 0) ++ pragmat_lpr = nlpr; ++ else ++ { ++ char *stale = pragmat_lpr; ++ pragmat_lpr ++ = a68_new_string (pragmat_lpr, " ", nlpr, NO_TEXT); ++ free (stale); ++ } ++ pragmat_lprt = att; ++ pragmat_lprl = *start_l; ++ pragmat_lprc = *start_c; ++ if (!A68_PARSER (stop_scanner)) ++ make_node = false; ++ } ++ } ++ } ++ /* Add token to the tree. */ ++ if (make_node) ++ { ++ NODE_T *q = a68_new_node (); ++ INFO (q) = a68_new_node_info (); ++ ++ switch (att) ++ { ++ case ASSIGN_SYMBOL: ++ case END_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case OF_SYMBOL: ++ case FI_SYMBOL: ++ case CLOSE_SYMBOL: ++ case BUS_SYMBOL: ++ case COLON_SYMBOL: ++ case COMMA_SYMBOL: ++ case SEMI_SYMBOL: ++ GINFO (q) = NO_GINFO; ++ break; ++ default: ++ GINFO (q) = a68_new_genie_info (); ++ break; ++ } ++ ++ STATUS (q) = (STATUS_MASK_T) 0; ++ LINE (INFO (q)) = *start_l; ++ CHAR_IN_LINE (INFO (q)) = *start_c; ++ PRIO (INFO (q)) = 0; ++ PROCEDURE_LEVEL (INFO (q)) = 0; ++ ATTRIBUTE (q) = att; ++ NSYMBOL (q) = c; ++ PREVIOUS (q) = *root; ++ SUB (q) = NEXT (q) = NO_NODE; ++ TABLE (q) = NO_TABLE; ++ MOID (q) = NO_MOID; ++ TAX (q) = NO_TAG; ++ if (pragmat_lpr != NO_TEXT) ++ { ++ NPRAGMAT (q) = pragmat_lpr; ++ NPRAGMAT_TYPE (q) = pragmat_lprt; ++ NPRAGMAT_LINE (q) = pragmat_lprl; ++ NPRAGMAT_CHAR_IN_LINE (q) = pragmat_lprc; ++ pragmat_lpr = NO_TEXT; ++ pragmat_lprt = 0; ++ } ++ if (comment_lpr != NO_TEXT) ++ { ++ NCOMMENT (q) = comment_lpr; ++ NCOMMENT_TYPE (q) = comment_lprt; ++ NCOMMENT_LINE (q) = comment_lprl; ++ NCOMMENT_CHAR_IN_LINE (q) = comment_lprc; ++ comment_lpr = NO_TEXT; ++ comment_lprt = 0; ++ } ++ if (*root != NO_NODE) ++ NEXT (*root) = q; ++ if (TOP_NODE (&A68_JOB) == NO_NODE) ++ TOP_NODE (&A68_JOB) = q; ++ *root = q; ++ if (trailing != NO_TEXT) ++ a68_warning (q, 0, ++ "ignoring trailing character H in A", ++ trailing, att); ++ } ++ /* Redirection in tokenising formats. The scanner is a recursive-descent type as ++ to know when it scans a format text and when not. */ ++ if (in_format && att == FORMAT_DELIMITER_SYMBOL) ++ return; ++ else if (!in_format && att == FORMAT_DELIMITER_SYMBOL) ++ tokenise_source (root, level + 1, true, l, s, start_l, start_c); ++ else if (in_format && open_nested_clause (att)) ++ { ++ NODE_T *z = PREVIOUS (*root); ++ ++ if (z != NO_NODE && a68_is_one_of (z, FORMAT_ITEM_N, FORMAT_ITEM_G, FORMAT_ITEM_H, ++ FORMAT_ITEM_F, STOP)) ++ { ++ tokenise_source (root, level, false, l, s, start_l, start_c); ++ } ++ else if (att == OPEN_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; ++ else if (OPTION_BRACKETS (&A68_JOB) && att == SUB_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; ++ } ++ else if (!in_format && level > 0 && open_nested_clause (att)) ++ tokenise_source (root, level + 1, false, l, s, start_l, start_c); ++ else if (!in_format && level > 0 && close_nested_clause (att)) ++ return; ++ else if (in_format && att == CLOSE_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; ++ else if (OPTION_BRACKETS (&A68_JOB) && in_format && att == BUS_SYMBOL) ++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; ++ } ++ } ++} ++ ++/* Tokenise source file, build initial syntax tree. */ ++ ++bool ++a68_lexical_analyser (const char *filename) ++{ ++ LINE_T *l = NO_LINE, *start_l = NO_LINE; ++ char *s = NO_TEXT, *start_c = NO_TEXT; ++ NODE_T *root = NO_NODE; ++ ++ /* Read the source file into lines. */ ++ if (!read_source_file (filename)) ++ return false; ++ ++ /* Start tokenising. */ ++ A68_PARSER (stop_scanner) = false; ++ if ((l = TOP_LINE (&A68_JOB)) != NO_LINE) ++ s = STRING (l); ++ tokenise_source (&root, 0, false, &l, &s, &start_l, &start_c); ++ ++ /* If the source is a prelude packet then we should remove the prelude and ++ postlude nodes from the token stream. We distinguish these nodes by ++ location. ++ ++ Yes this is crude and creepy but it works and it is less annoying than not ++ adding the prelude/postlude in read_source_file and I got other fish to ++ fry at this moment. Somebody please fix this in a decent way, thanks - ++ jemarch. */ ++ ++ NODE_T *p = TOP_NODE (&A68_JOB); ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ LINE_T *l = LINE (INFO (p)); ++ if (strcmp (FILENAME (l), "prelude") != 0) ++ break; ++ } ++ ++ if (p != NO_NODE && IS (p, MODULE_SYMBOL)) ++ { ++ p = TOP_NODE (&A68_JOB); ++ while (p != NO_NODE) ++ { ++ LINE_T *l = LINE (INFO (p)); ++ if (strcmp (FILENAME (l), "prelude") == 0 ++ || strcmp (FILENAME (l), "postlude") == 0) ++ { ++ if (PREVIOUS (p) != NO_NODE) ++ NEXT (PREVIOUS (p)) = NEXT (p); ++ else ++ TOP_NODE (&A68_JOB) = NEXT (p); ++ ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = PREVIOUS (p); ++ ++ NODE_T *next = NEXT (p); ++ p = next; ++ } ++ else ++ p = FORWARD (p); ++ } ++ } ++ ++ /* Note that A68_PARSER (scan_buf) and A68_PARSER (max_scan_buf_length) are ++ allocated by read_source_line. */ ++ free (A68_PARSER (scan_buf)); ++ A68_PARSER (scan_buf) = NULL; ++ A68_PARSER (max_scan_buf_length) = 0; ++ return true; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-scope.cc +@@ -0,0 +1,986 @@ ++/* Static scope checker. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* A static scope checker inspects the source. Note that ALGOL 68 also needs ++ dynamic scope checking. This phase concludes the parser. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++typedef struct TUPLE_T TUPLE_T; ++typedef struct SCOPE_T SCOPE_T; ++ ++struct TUPLE_T ++{ ++ int level; ++ bool transient; ++}; ++ ++struct SCOPE_T ++{ ++ NODE_T *where; ++ TUPLE_T tuple; ++ SCOPE_T *next; ++}; ++ ++enum { NOT_TRANSIENT = 0, TRANSIENT }; ++ ++static void gather_scopes_for_youngest (NODE_T *, SCOPE_T **); ++static void scope_statement (NODE_T *, SCOPE_T **); ++static void scope_enclosed_clause (NODE_T *, SCOPE_T **); ++static void scope_formula (NODE_T *, SCOPE_T **); ++static void scope_routine_text (NODE_T *, SCOPE_T **); ++ ++/* ++ * Static scope checker. ++ */ ++ ++/* Scope_make_tuple. */ ++ ++static TUPLE_T ++scope_make_tuple (int e, int t) ++{ ++ static TUPLE_T z; ++ LEVEL (&z) = e; ++ TRANSIENT (&z) = t; ++ return z; ++} ++ ++/* Link scope information into the list. */ ++ ++static void ++scope_add (SCOPE_T **sl, NODE_T *p, TUPLE_T tup) ++{ ++ if (sl != NO_VAR) ++ { ++ SCOPE_T *ns = (SCOPE_T *) xmalloc (sizeof (SCOPE_T)); ++ WHERE (ns) = p; ++ TUPLE (ns) = tup; ++ NEXT (ns) = *sl; ++ *sl = ns; ++ } ++} ++ ++/* Scope_check. */ ++ ++static bool ++scope_check (SCOPE_T *top, int mask, int dest) ++{ ++ int errors = 0; ++ ++ /* Transient names cannot be stored. */ ++ if (mask & TRANSIENT) ++ { ++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (TRANSIENT (&TUPLE (s)) & TRANSIENT) ++ { ++ a68_error (WHERE (s), "attempt at storing a transient name"); ++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); ++ errors++; ++ } ++ } ++ } ++ ++ /* Potential scope violations. */ ++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (dest < LEVEL (&TUPLE (s)) && !STATUS_TEST (WHERE (s), SCOPE_ERROR_MASK)) ++ { ++ MOID_T *ws = MOID (WHERE (s)); ++ ++ if (ws != NO_MOID) ++ { ++ if (IS_REF (ws) || IS (ws, PROC_SYMBOL) || IS (ws, FORMAT_SYMBOL) || IS (ws, UNION_SYMBOL)) ++ a68_warning (WHERE (s), OPT_Wscope, "M A is a potential scope violation", ++ MOID (WHERE (s)), ATTRIBUTE (WHERE (s))); ++ } ++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); ++ errors++; ++ } ++ } ++ return (errors == 0); ++} ++ ++/* Scope_check_multiple. */ ++ ++static bool ++scope_check_multiple (SCOPE_T *top, int mask, SCOPE_T *dest) ++{ ++ bool no_err = true; ++ ++ for (; dest != NO_SCOPE; FORWARD (dest)) ++ no_err = no_err && scope_check (top, mask, LEVEL (&TUPLE (dest))); ++ return no_err; ++} ++ ++/* Check_identifier_usage. */ ++ ++static void ++check_identifier_usage (TAG_T *t, NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, IDENTIFIER) && TAX (p) == t && ATTRIBUTE (MOID (t)) != PROC_SYMBOL) ++ a68_warning (p, OPT_Wuninitialized, "identifier S might be used uninitialised"); ++ check_identifier_usage (t, SUB (p)); ++ } ++} ++ ++/* Scope_find_youngest_outside. */ ++ ++static TUPLE_T ++scope_find_youngest_outside (SCOPE_T *s, int treshold) ++{ ++ TUPLE_T z = scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT); ++ ++ for (; s != NO_SCOPE; FORWARD (s)) ++ { ++ if (LEVEL (&TUPLE (s)) > LEVEL (&z) && LEVEL (&TUPLE (s)) <= treshold) ++ z = TUPLE (s); ++ } ++ return z; ++} ++ ++/* Scope_find_youngest. */ ++ ++static TUPLE_T ++scope_find_youngest (SCOPE_T *s) ++{ ++ return scope_find_youngest_outside (s, INT_MAX); ++} ++ ++/* ++ * Routines for determining scope of ROUTINE TEXT or FORMAT TEXT. ++ */ ++ ++/* Get_declarer_elements. */ ++ ++static void ++get_declarer_elements (NODE_T *p, SCOPE_T **r, bool no_ref) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BOUNDS)) ++ gather_scopes_for_youngest (SUB (p), r); ++ else if (IS (p, INDICANT)) ++ { ++ if (MOID (p) != NO_MOID && TAX (p) != NO_TAG && HAS_ROWS (MOID (p)) && no_ref) ++ scope_add (r, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS_REF (p)) ++ get_declarer_elements (NEXT (p), r, false); ++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) ++ ; ++ else ++ { ++ get_declarer_elements (SUB (p), r, no_ref); ++ get_declarer_elements (NEXT (p), r, no_ref); ++ } ++ } ++} ++ ++/* Gather_scopes_for_youngest. */ ++ ++static void ++gather_scopes_for_youngest (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if ((a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) ++ && (YOUNGEST_ENVIRON (TAX (p)) == PRIMAL_SCOPE)) ++ { ++ SCOPE_T *t = NO_SCOPE; ++ TUPLE_T tup; ++ ++ gather_scopes_for_youngest (SUB (p), &t); ++ tup = scope_find_youngest_outside (t, LEX_LEVEL (p)); ++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); ++ /* Direct link into list iso "gather_scopes_for_youngest (SUB (p), ++ s);". */ ++ if (t != NO_SCOPE) ++ { ++ SCOPE_T *u = t; ++ while (NEXT (u) != NO_SCOPE) { ++ FORWARD (u); ++ } ++ NEXT (u) = *s; ++ (*s) = t; ++ } ++ } ++ else if (a68_is_one_of (p, IDENTIFIER, OPERATOR, STOP)) ++ { ++ if (TAX (p) != NO_TAG && TAG_LEX_LEVEL (TAX (p)) != PRIMAL_SCOPE) ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, DECLARER)) ++ get_declarer_elements (p, s, true); ++ else ++ gather_scopes_for_youngest (SUB (p), s); ++ } ++} ++ ++/* Get_youngest_environs. */ ++ ++static void ++get_youngest_environs (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) ++ { ++ SCOPE_T *s = NO_SCOPE; ++ TUPLE_T tup; ++ gather_scopes_for_youngest (SUB (p), &s); ++ tup = scope_find_youngest_outside (s, LEX_LEVEL (p)); ++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); ++ } ++ else ++ get_youngest_environs (SUB (p)); ++ } ++} ++ ++/* Bind_scope_to_tag. */ ++ ++static void ++bind_scope_to_tag (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_IDENTIFIER) && MOID (p) == M_FORMAT) ++ { ++ if (IS (NEXT_NEXT (p), FORMAT_TEXT)) ++ { ++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ if (IS (NEXT_NEXT (p), ROUTINE_TEXT)) ++ { ++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ else ++ bind_scope_to_tag (SUB (p)); ++ } ++} ++ ++/* Bind_scope_to_tags. */ ++ ++static void ++bind_scope_to_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (a68_is_one_of (p, PROCEDURE_DECLARATION, IDENTITY_DECLARATION, STOP)) ++ bind_scope_to_tag (SUB (p)); ++ else ++ bind_scope_to_tags (SUB (p)); ++ } ++} ++ ++/* Scope_bounds. */ ++ ++static void ++scope_bounds (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ scope_statement (p, NO_VAR); ++ else ++ scope_bounds (SUB (p)); ++ } ++} ++ ++/* Scope_declarer. */ ++ ++static void ++scope_declarer (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BOUNDS)) ++ scope_bounds (SUB (p)); ++ else if (IS (p, INDICANT)) ++ ; ++ else if (IS_REF (p)) ++ scope_declarer (NEXT (p)); ++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) ++ ; ++ else ++ { ++ scope_declarer (SUB (p)); ++ scope_declarer (NEXT (p)); ++ } ++ } ++} ++ ++/* Scope_identity_declaration. */ ++ ++static void ++scope_identity_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_identity_declaration (SUB (p)); ++ ++ if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ TUPLE_T tup; ++ int z = PRIMAL_SCOPE; ++ ++ if (ATTRIBUTE (MOID (TAX (p))) != PROC_SYMBOL) ++ check_identifier_usage (TAX (p), unit); ++ scope_statement (unit, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ tup = scope_find_youngest (s); ++ z = LEVEL (&tup); ++ if (z < LEX_LEVEL (p)) ++ { ++ SCOPE (TAX (p)) = z; ++ SCOPE_ASSIGNED (TAX (p)) = true; ++ } ++ return; ++ } ++ } ++} ++ ++/* Scope_variable_declaration. */ ++ ++static void ++scope_variable_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_variable_declaration (SUB (p)); ++ if (IS (p, DECLARER)) ++ scope_declarer (SUB (p)); ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ check_identifier_usage (TAX (p), unit); ++ scope_statement (unit, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ return; ++ } ++ } ++ } ++} ++ ++/* Scope_procedure_declaration. */ ++ ++static void ++scope_procedure_declaration (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ scope_procedure_declaration (SUB (p)); ++ ++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) ++ { ++ NODE_T *unit = NEXT_NEXT (p); ++ SCOPE_T *s = NO_SCOPE; ++ ++ scope_statement (unit, &s); ++ (void) scope_check (s, NOT_TRANSIENT, LEX_LEVEL (p)); ++ return; ++ } ++ } ++} ++ ++/* Scope_declaration_list. */ ++ ++static void ++scope_declaration_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ scope_identity_declaration (SUB (p)); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ scope_variable_declaration (SUB (p)); ++ else if (IS (p, MODE_DECLARATION)) ++ scope_declarer (SUB (p)); ++ else if (IS (p, PRIORITY_DECLARATION)) ++ ; ++ else if (IS (p, PROCEDURE_DECLARATION)) ++ scope_procedure_declaration (SUB (p)); ++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ scope_procedure_declaration (SUB (p)); ++ else if (a68_is_one_of (p, BRIEF_OPERATOR_DECLARATION, OPERATOR_DECLARATION, STOP)) ++ scope_procedure_declaration (SUB (p)); ++ else ++ { ++ scope_declaration_list (SUB (p)); ++ scope_declaration_list (NEXT (p)); ++ } ++ } ++} ++ ++/* Scope_arguments. */ ++ ++static void ++scope_arguments (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ { ++ SCOPE_T *s = NO_SCOPE; ++ scope_statement (p, &s); ++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); ++ } ++ else ++ scope_arguments (SUB (p)); ++ } ++} ++ ++/* Is_coercion. */ ++ ++static bool ++is_coercion (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ switch (ATTRIBUTE (p)) ++ { ++ case DEPROCEDURING: ++ case DEREFERENCING: ++ case UNITING: ++ case ROWING: ++ case WIDENING: ++ case VOIDING: ++ case PROCEDURING: ++ return true; ++ default: ++ return false; ++ } ++ } ++ else ++ return false; ++} ++ ++/* Scope_coercion. */ ++ ++static void ++scope_coercion (NODE_T *p, SCOPE_T **s) ++{ ++ if (is_coercion (p)) ++ { ++ if (IS (p, VOIDING)) ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, DEREFERENCING)) ++ /* Leave this to the dynamic scope checker. */ ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, DEPROCEDURING)) ++ scope_coercion (SUB (p), NO_VAR); ++ else if (IS (p, ROWING)) ++ { ++ SCOPE_T *z = NO_SCOPE; ++ ++ scope_coercion (SUB (p), &z); ++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); ++ if (IS_REF_FLEX (MOID (SUB (p)))) ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); ++ } ++ else if (IS (p, PROCEDURING)) ++ { ++ /* Can only be a JUMP. */ ++ NODE_T *q = SUB_SUB (p); ++ if (IS (q, GOTO_SYMBOL)) ++ FORWARD (q); ++ ++ scope_add (s, q, scope_make_tuple (TAG_LEX_LEVEL (TAX (q)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, UNITING)) ++ { ++ SCOPE_T *z = NO_SCOPE; ++ ++ scope_coercion (SUB (p), &z); ++ if (z != NO_SCOPE) ++ { ++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); ++ scope_add (s, p, scope_find_youngest (z)); ++ } ++ } ++ else ++ scope_coercion (SUB (p), s); ++ } ++ else ++ scope_statement (p, s); ++} ++ ++/* Scope_format_text. */ ++ ++static void ++scope_format_text (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FORMAT_PATTERN)) ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); ++ else if (IS (p, FORMAT_ITEM_G) && NEXT (p) != NO_NODE) ++ scope_enclosed_clause (SUB_NEXT (p), s); ++ else if (IS (p, DYNAMIC_REPLICATOR)) ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); ++ else ++ scope_format_text (SUB (p), s); ++ } ++} ++ ++/* Scope_operand. */ ++ ++static void ++scope_operand (NODE_T *p, SCOPE_T **s) ++{ ++ if (IS (p, MONADIC_FORMULA)) ++ scope_operand (NEXT_SUB (p), s); ++ else if (IS (p, FORMULA)) ++ scope_formula (p, s); ++ else if (IS (p, SECONDARY)) ++ scope_statement (SUB (p), s); ++} ++ ++/* Scope_formula. */ ++ ++static void ++scope_formula (NODE_T *p, SCOPE_T **s) ++{ ++ NODE_T *q = SUB (p); ++ SCOPE_T *s2 = NO_SCOPE; ++ ++ scope_operand (q, &s2); ++ (void) scope_check (s2, TRANSIENT, LEX_LEVEL (p)); ++ if (NEXT (q) != NO_NODE) ++ { ++ SCOPE_T *s3 = NO_SCOPE; ++ scope_operand (NEXT_NEXT (q), &s3); ++ (void) scope_check (s3, TRANSIENT, LEX_LEVEL (p)); ++ } ++ (void) s; ++} ++ ++/* Scope_routine_text. */ ++ ++static void ++scope_routine_text (NODE_T *p, SCOPE_T **s) ++{ ++ NODE_T *q = SUB (p); ++ NODE_T *routine = (IS (q, PARAMETER_PACK) ? NEXT (q) : q); ++ SCOPE_T *x = NO_SCOPE; ++ ++ scope_statement (NEXT_NEXT (routine), &x); ++ (void) scope_check (x, TRANSIENT, LEX_LEVEL (p)); ++ TUPLE_T routine_tuple = scope_make_tuple (YOUNGEST_ENVIRON (TAX (p)), NOT_TRANSIENT); ++ scope_add (s, p, routine_tuple); ++} ++ ++/* Scope_statement. */ ++ ++static void ++scope_statement (NODE_T *p, SCOPE_T **s) ++{ ++ if (is_coercion (p)) ++ scope_coercion (p, s); ++ else if (a68_is_one_of (p, PRIMARY, SECONDARY, TERTIARY, UNIT, STOP)) ++ scope_statement (SUB (p), s); ++ else if (a68_is_one_of (p, NIHIL, STOP)) ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ else if (IS (p, DENOTATION)) ++ ; ++ else if (IS (p, IDENTIFIER)) ++ { ++ if (IS_REF (MOID (p))) ++ { ++ if (PRIO (TAX (p)) == PARAMETER_IDENTIFIER) ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)) - 1, NOT_TRANSIENT)); ++ else ++ { ++ if (HEAP (TAX (p)) == HEAP_SYMBOL) ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ else if (SCOPE_ASSIGNED (TAX (p))) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); ++ } ++ } ++ else if (ATTRIBUTE (MOID (p)) == PROC_SYMBOL && SCOPE_ASSIGNED (TAX (p)) == true) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ else if (MOID (p) == M_FORMAT && SCOPE_ASSIGNED (TAX (p)) == true) ++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); ++ } ++ else if (IS (p, ENCLOSED_CLAUSE)) ++ scope_enclosed_clause (SUB (p), s); ++ else if (IS (p, CALL)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ ++ scope_statement (SUB (p), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ scope_arguments (NEXT_SUB (p)); ++ } ++ else if (IS (p, SLICE)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ MOID_T *m = MOID (SUB (p)); ++ ++ if (IS_REF (m)) ++ { ++ if (ATTRIBUTE (SUB (p)) == PRIMARY && ATTRIBUTE (SUB_SUB (p)) == SLICE) ++ scope_statement (SUB (p), s); ++ else ++ { ++ scope_statement (SUB (p), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ if (IS_FLEX (SUB (m))) ++ scope_add (s, SUB (p), scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ scope_bounds (SUB (NEXT_SUB (p))); ++ } ++ if (IS_REF (MOID (p))) ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, FORMAT_TEXT)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ scope_format_text (SUB (p), &x); ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, CAST)) ++ { ++ SCOPE_T *x = NO_SCOPE; ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &x); ++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); ++ scope_add (s, p, scope_find_youngest (x)); ++ } ++ else if (IS (p, SELECTION)) ++ { ++ SCOPE_T *ns = NO_SCOPE; ++ scope_statement (NEXT_SUB (p), &ns); ++ (void) scope_check (ns, NOT_TRANSIENT, LEX_LEVEL (p)); ++ if (a68_is_ref_refety_flex (MOID (NEXT_SUB (p)))) ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); ++ scope_add (s, p, scope_find_youngest (ns)); ++ } ++ else if (IS (p, GENERATOR)) ++ { ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++ if (NON_LOCAL (p) != NO_TABLE) ++ scope_add (s, p, scope_make_tuple (LEVEL (NON_LOCAL (p)), NOT_TRANSIENT)); ++ else ++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); ++ } ++ else ++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); ++ scope_declarer (SUB (NEXT_SUB (p))); ++ } ++ else if (IS (p, FORMULA)) ++ scope_formula (p, s); ++ else if (IS (p, ASSIGNATION)) ++ { ++ NODE_T *unit = NEXT (NEXT_SUB (p)); ++ SCOPE_T *ns = NO_SCOPE, *nd = NO_SCOPE; ++ TUPLE_T tup; ++ scope_statement (SUB_SUB (p), &nd); ++ scope_statement (unit, &ns); ++ (void) scope_check_multiple (ns, TRANSIENT, nd); ++ tup = scope_find_youngest (nd); ++ scope_add (s, p, scope_make_tuple (LEVEL (&tup), NOT_TRANSIENT)); ++ } ++ else if (IS (p, ROUTINE_TEXT)) ++ scope_routine_text (p, s); ++ else if (a68_is_one_of (p, IDENTITY_RELATION, AND_FUNCTION, OR_FUNCTION, STOP)) ++ { ++ SCOPE_T *n = NO_SCOPE; ++ scope_statement (SUB (p), &n); ++ scope_statement (NEXT (NEXT_SUB (p)), &n); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ else if (IS (p, ASSERTION)) ++ { ++ SCOPE_T *n = NO_SCOPE; ++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &n); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ } ++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) ++ { ++ ; ++ } ++} ++ ++/* Scope_statement_list. */ ++ ++static void ++scope_statement_list (NODE_T *p, SCOPE_T **s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, UNIT)) ++ scope_statement (p, s); ++ else ++ scope_statement_list (SUB (p), s); ++ } ++} ++ ++/* Scope_serial_clause. */ ++ ++static void ++scope_serial_clause (NODE_T *p, SCOPE_T **s, bool terminator) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, INITIALISER_SERIES)) ++ { ++ scope_serial_clause (SUB (p), s, false); ++ scope_serial_clause (NEXT (p), s, terminator); ++ } ++ else if (IS (p, DECLARATION_LIST)) ++ scope_declaration_list (SUB (p)); ++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) ++ scope_serial_clause (NEXT (p), s, terminator); ++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) ++ { ++ if (NEXT (p) != NO_NODE) ++ { ++ int j = ATTRIBUTE (NEXT (p)); ++ if (j == EXIT_SYMBOL || j == END_SYMBOL || j == CLOSE_SYMBOL) ++ scope_serial_clause (SUB (p), s, true); ++ else ++ scope_serial_clause (SUB (p), s, false); ++ } ++ else ++ scope_serial_clause (SUB (p), s, true); ++ scope_serial_clause (NEXT (p), s, terminator); ++ } ++ else if (IS (p, LABELED_UNIT)) ++ scope_serial_clause (SUB (p), s, terminator); ++ else if (IS (p, UNIT)) ++ { ++ if (terminator) ++ scope_statement (p, s); ++ else ++ scope_statement (p, NO_VAR); ++ } ++ } ++} ++ ++/* Scope_closed_clause. */ ++ ++static void ++scope_closed_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, SERIAL_CLAUSE)) ++ scope_serial_clause (p, s, true); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) ++ scope_closed_clause (NEXT (p), s); ++ } ++} ++ ++/* Scope_collateral_clause. */ ++ ++static void ++scope_collateral_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (p != NO_NODE) ++ { ++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) ++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) ++ { ++ scope_statement_list (p, s); ++ } ++ } ++} ++ ++/* Scope_conditional_clause. */ ++ ++static void ++scope_conditional_clause (NODE_T *p, SCOPE_T **s) ++{ ++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); ++ FORWARD (p); ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) ++ scope_conditional_clause (SUB (p), s); ++ } ++} ++ ++/* Scope_case_clause. */ ++ ++static void ++scope_case_clause (NODE_T *p, SCOPE_T **s) ++{ ++ SCOPE_T *n = NO_SCOPE; ++ scope_serial_clause (NEXT_SUB (p), &n, true); ++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); ++ FORWARD (p); ++ scope_statement_list (NEXT_SUB (p), s); ++ if ((FORWARD (p)) != NO_NODE) ++ { ++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) ++ scope_serial_clause (NEXT_SUB (p), s, true); ++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) ++ scope_case_clause (SUB (p), s); ++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) ++ scope_case_clause (SUB (p), s); ++ } ++} ++ ++/* Scope_loop_clause. */ ++ ++static void ++scope_loop_clause (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, FOR_PART)) ++ scope_loop_clause (NEXT (p)); ++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) ++ { ++ scope_statement (NEXT_SUB (p), NO_VAR); ++ scope_loop_clause (NEXT (p)); ++ } ++ else if (IS (p, WHILE_PART)) ++ { ++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); ++ scope_loop_clause (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) ++ { ++ NODE_T *do_p = NEXT_SUB (p); ++ ++ if (IS (do_p, SERIAL_CLAUSE)) ++ scope_serial_clause (do_p, NO_VAR, true); ++ } ++ } ++} ++ ++/* Scope_enclosed_clause. */ ++ ++static void ++scope_enclosed_clause (NODE_T *p, SCOPE_T **s) ++{ ++ if (IS (p, ENCLOSED_CLAUSE)) ++ scope_enclosed_clause (SUB (p), s); ++ else if (IS (p, CLOSED_CLAUSE)) ++ scope_closed_clause (SUB (p), s); ++ else if (a68_is_one_of (p, COLLATERAL_CLAUSE, PARALLEL_CLAUSE, STOP)) ++ scope_collateral_clause (SUB (p), s); ++ else if (IS (p, CONDITIONAL_CLAUSE)) ++ scope_conditional_clause (SUB (p), s); ++ else if (a68_is_one_of (p, CASE_CLAUSE, CONFORMITY_CLAUSE, STOP)) ++ scope_case_clause (SUB (p), s); ++ else if (IS (p, LOOP_CLAUSE)) ++ scope_loop_clause (SUB (p)); ++} ++ ++/* Whether a symbol table contains no (anonymous) definition. */ ++ ++static bool ++empty_table (TABLE_T * t) ++{ ++ if (IDENTIFIERS (t) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else if (PRIO (IDENTIFIERS (t)) == LOOP_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else if (PRIO (IDENTIFIERS (t)) == SPECIFIER_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) ++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); ++ else ++ return false; ++} ++ ++/* Indicate non-local environs. */ ++ ++static void ++get_non_local_environs (NODE_T *p, int max) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ROUTINE_TEXT)) ++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); ++ else if (IS (p, FORMAT_TEXT)) ++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); ++ else ++ { ++ get_non_local_environs (SUB (p), max); ++ NON_LOCAL (p) = NO_TABLE; ++ if (TABLE (p) != NO_TABLE) ++ { ++ TABLE_T *q = TABLE (p); ++ while (q != NO_TABLE && empty_table (q) ++ && PREVIOUS (q) != NO_TABLE && LEVEL (PREVIOUS (q)) >= max) ++ { ++ NON_LOCAL (p) = PREVIOUS (q); ++ q = PREVIOUS (q); ++ } ++ } ++ } ++ } ++} ++ ++/* The static scope checker. */ ++ ++void ++a68_scope_checker (NODE_T *p) ++{ ++ if (SUB (p)) ++ { ++ if (IS (SUB (p), PARTICULAR_PROGRAM)) ++ p = SUB (p); ++ else if (IS (SUB (p), PRELUDE_PACKET)) ++ { ++ /* XXX writeme. */ ++ return; ++ } ++ } ++ ++ /* Establish scopes of routine texts and format texts. */ ++ get_youngest_environs (p); ++ /* Find non-local environs. */ ++ get_non_local_environs (p, PRIMAL_SCOPE); ++ /* PROC and FORMAT identities can now be assigned a scope. */ ++ bind_scope_to_tags (p); ++ /* Now check evertyhing else. */ ++ scope_enclosed_clause (SUB (p), NO_VAR); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-serial-dsa.cc +@@ -0,0 +1,114 @@ ++/* Check dynamic stack usage in serial clauses. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Written by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This file implements a phase that determines what serial clauses contain ++ phrases whose elaboration may involve dynamic stack allocation. It ++ annotates the SERIAL_CLAUSE parse nodes by setting the DYNAMIC_STACK_ALLOCS ++ flag. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* Uncomment the following line for debugging traces. */ ++/* #define SERIAL_DSA_DEBUG */ ++ ++static void ++serial_dsa_check_serial_clause (NODE_T *p, bool *dsa) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, GENERATOR)) ++ { ++ /* LOC generators always result in dyamic stack allocation regardless ++ of the mode of the allocated value. */ ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++#ifdef SERIAL_DSA_DEBUG ++ fprintf (stderr, "serial_dsa: %s:%d: loc generator implies DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p)); ++#endif ++ *dsa = true; ++ return; ++ } ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ /* Variable declarations of values with sample loc generators will ++ result in dynamic stack allocation. ++ ++ Note that label declarations do no have a mode, so we have to ++ check for MOID (p). */ ++ ++ if (MOID (p) != NO_MOID && IS_REF (MOID (p))) ++ { ++ bool heap = HEAP (TAX (p)) == HEAP_SYMBOL; ++ if (HAS_ROWS (SUB (MOID (p))) && !heap) ++ { ++#ifdef SERIAL_DSA_DEBUG ++ fprintf (stderr, ++ "serial_dsa: %s:%d: defining identifier %s implies DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p), ++ NSYMBOL (p)); ++#endif ++ *dsa = true; ++ return; ++ } ++ } ++ } ++ else ++ { ++ /* Inner serial clauses will take care of their own. Code in routine ++ texts will not impact the stack of the containing serial ++ clause. */ ++ if (!IS (p, SERIAL_CLAUSE) && !IS (p, ROUTINE_TEXT)) ++ serial_dsa_check_serial_clause (SUB (p), dsa); ++ } ++ } ++} ++ ++void ++a68_serial_dsa (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_serial_dsa (SUB (p)); ++ if (IS (p, SERIAL_CLAUSE)) ++ { ++ bool dsa = false; ++ serial_dsa_check_serial_clause (SUB (p), &dsa); ++ DYNAMIC_STACK_ALLOCS (p) = dsa; ++#ifdef SERIAL_DSA_DEBUG ++ if (dsa) ++ { ++ fprintf (stderr, "serial_dsa: %s:%d: marking serial clause %p as DSA\n", ++ FILENAME (LINE (INFO (p))), ++ LINE_NUMBER (p), ++ (void *) p); ++ } ++ ++#endif ++ } ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-taxes.cc +@@ -0,0 +1,1806 @@ ++/* Symbol table management. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++/* ++ * Symbol table handling, managing TAGS. ++ */ ++ ++/* Forward declarations for several functions defined below. */ ++ ++static TAG_T *find_tag_local (TABLE_T *table, int a, const char *name); ++ ++/* Set level for procedures. */ ++ ++void ++a68_set_proc_level (NODE_T *p, int n) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ PROCEDURE_LEVEL (INFO (p)) = n; ++ if (IS (p, ROUTINE_TEXT)) ++ a68_set_proc_level (SUB (p), n + 1); ++ else ++ a68_set_proc_level (SUB (p), n); ++ } ++} ++ ++/* Set nests for diagnostics. */ ++ ++void ++a68_set_nest (NODE_T *p, NODE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ NEST (p) = s; ++ if (IS (p, PARTICULAR_PROGRAM)) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CLOSED_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, COLLATERAL_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CONDITIONAL_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CASE_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, CONFORMITY_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else if (IS (p, LOOP_CLAUSE) && LINE_NUMBER (p) != 0) ++ a68_set_nest (SUB (p), p); ++ else ++ a68_set_nest (SUB (p), s); ++ } ++} ++ ++/* ++ * Routines that work with tags and symbol tables. ++ */ ++ ++static void tax_tags (NODE_T *); ++static void tax_specifier_list (NODE_T *); ++static void tax_parameter_list (NODE_T *); ++static void tax_format_texts (NODE_T *); ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++int ++a68_first_tag_global (TABLE_T * table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return IDENTIFIER; ++ } ++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return INDICANT; ++ } ++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return LABEL; ++ } ++ for (TAG_T *s = OPERATORS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return OP_SYMBOL; ++ } ++ for (TAG_T *s = MODULES (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return MODULE_SYMBOL; ++ } ++ for (TAG_T *s = PRIO (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return PRIO_SYMBOL; ++ } ++ return a68_first_tag_global (PREVIOUS (table), name); ++ } ++ else ++ return STOP; ++} ++ ++/* Whether routine can be "lengthety-mapped". */ ++ ++static bool ++is_mappable_routine (const char *z) ++{ ++#define ACCEPT(u, v) {\ ++ if (strlen (u) >= strlen (v)) {\ ++ if (strcmp (&u[strlen (u) - strlen (v)], v) == 0) {\ ++ return true;\ ++ }}} ++ ++ /* Math routines. */ ++ ACCEPT (z, "arccos"); ++ ACCEPT (z, "arccosdg"); ++ ACCEPT (z, "arccot"); ++ ACCEPT (z, "arccotdg"); ++ ACCEPT (z, "arcsin"); ++ ACCEPT (z, "arcsindg"); ++ ACCEPT (z, "arctan"); ++ ACCEPT (z, "arctandg"); ++ ACCEPT (z, "beta"); ++ ACCEPT (z, "betainc"); ++ ACCEPT (z, "cbrt"); ++ ACCEPT (z, "cos"); ++ ACCEPT (z, "cosdg"); ++ ACCEPT (z, "cospi"); ++ ACCEPT (z, "cot"); ++ ACCEPT (z, "cot"); ++ ACCEPT (z, "cotdg"); ++ ACCEPT (z, "cotpi"); ++ ACCEPT (z, "curt"); ++ ACCEPT (z, "erf"); ++ ACCEPT (z, "erfc"); ++ ACCEPT (z, "exp"); ++ ACCEPT (z, "gamma"); ++ ACCEPT (z, "gammainc"); ++ ACCEPT (z, "gammaincg"); ++ ACCEPT (z, "gammaincgf"); ++ ACCEPT (z, "ln"); ++ ACCEPT (z, "log"); ++ ACCEPT (z, "pi"); ++ ACCEPT (z, "sin"); ++ ACCEPT (z, "sindg"); ++ ACCEPT (z, "sinpi"); ++ ACCEPT (z, "sqrt"); ++ ACCEPT (z, "tan"); ++ ACCEPT (z, "tandg"); ++ ACCEPT (z, "tanpi"); ++ /* Random generator. */ ++ ACCEPT (z, "nextrandom"); ++ ACCEPT (z, "random"); ++ /* BITS. */ ++ ACCEPT (z, "bitspack"); ++ /* Enquiries. */ ++ ACCEPT (z, "maxint"); ++ ACCEPT (z, "intwidth"); ++ ACCEPT (z, "maxreal"); ++ ACCEPT (z, "realwidth"); ++ ACCEPT (z, "expwidth"); ++ ACCEPT (z, "maxbits"); ++ ACCEPT (z, "bitswidth"); ++ ACCEPT (z, "byteswidth"); ++ ACCEPT (z, "smallreal"); ++ return false; ++#undef ACCEPT ++} ++ ++/* Map "short sqrt" onto "sqrt" etcetera. */ ++ ++static TAG_T * ++bind_lengthety_identifier (const char *u) ++{ ++#define CAR(u, v) (strncmp (u, v, strlen(v)) == 0) ++ /* We can only map routines blessed by "is_mappable_routine", so there is no ++ "short print" or "long char in string". */ ++ if (CAR (u, "short")) ++ { ++ do ++ { ++ u = &u[strlen ("short")]; ++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); ++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); ++ if (w != NO_TAG && is_mappable_routine (v)) ++ return w; ++ } ++ while (CAR (u, "short")); ++ } ++ else if (CAR (u, "long")) ++ { ++ do ++ { ++ u = &u[strlen ("long")]; ++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); ++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); ++ if (w != NO_TAG && is_mappable_routine (v)) ++ return w; ++ } ++ while (CAR (u, "long")); ++ } ++ ++ return NO_TAG; ++#undef CAR ++} ++ ++/* Bind identifier tags to the symbol table. */ ++ ++static void ++bind_identifier_tag_to_symbol_table (NODE_T * p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ bind_identifier_tag_to_symbol_table (SUB (p)); ++ ++ if (a68_is_one_of (p, IDENTIFIER, DEFINING_IDENTIFIER, STOP)) ++ { ++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); ++ ++ if (att == STOP) ++ { ++ TAG_T *z = bind_lengthety_identifier (NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ MOID (p) = MOID (z); ++ TAX (p) = z; ++ } ++ else ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); ++ ++ if (att == IDENTIFIER && z != NO_TAG) ++ MOID (p) = MOID (z); ++ else if (att == LABEL && z != NO_TAG) ++ ; ++ else if ((z = bind_lengthety_identifier (NSYMBOL (p))) != NO_TAG) ++ MOID (p) = MOID (z); ++ else ++ { ++ a68_error (p, "tag S has not been declared properly"); ++ z = a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); ++ MOID (p) = M_ERROR; ++ } ++ TAX (p) = z; ++ if (IS (p, DEFINING_IDENTIFIER)) ++ NODE (z) = p; ++ } ++ } ++ } ++} ++ ++/* Tell whether the given tree refers to the applied indicant INDICANT in an ++ actual declarer. */ ++ ++static bool ++declarer_contains_indicant (NODE_T *p, NODE_T *indicant) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, DECLARER) ++ && IS (SUB (q), INDICANT) ++ && ((TAX (SUB (q)) && IS_RECURSIVE (TAX (SUB (q)))) ++ || IS_LITERALLY (SUB (q), NSYMBOL (indicant)))) ++ { ++ return true; ++ } ++ ++ if (declarer_contains_indicant (SUB (q), indicant)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Bind indicant tags to the symbol table. */ ++ ++static void ++bind_indicant_tag_to_symbol_table (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ bind_indicant_tag_to_symbol_table (SUB (p)); ++ ++ if (a68_is_one_of (p, INDICANT, DEFINING_INDICANT, STOP)) ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ { ++ MOID (p) = MOID (z); ++ TAX (p) = z; ++ if (IS (p, DEFINING_INDICANT)) ++ { ++ NODE (z) = p; ++ IS_RECURSIVE (z) = declarer_contains_indicant (NEXT_NEXT (p), p); ++ } ++ } ++ } ++ } ++} ++ ++/* Enter specifier identifiers in the symbol table. */ ++ ++static void ++tax_specifiers (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_specifiers (SUB (p)); ++ ++ if (SUB (p) != NO_NODE && IS (p, SPECIFIER)) ++ tax_specifier_list (SUB (p)); ++ } ++} ++ ++/* Enter specifier identifiers in the symbol table. */ ++ ++static void ++tax_specifier_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, OPEN_SYMBOL)) ++ tax_specifier_list (NEXT (p)); ++ else if (a68_is_one_of (p, CLOSE_SYMBOL, VOID_SYMBOL, STOP)) ++ ; ++ else if (IS (p, IDENTIFIER)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, SPECIFIER_IDENTIFIER); ++ HEAP (z) = LOC_SYMBOL; ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_specifiers (SUB (p)); ++ tax_specifier_list (NEXT (p)); ++ /* last identifier entry is identifier with this declarer. */ ++ if (IDENTIFIERS (TABLE (p)) != NO_TAG ++ && PRIO (IDENTIFIERS (TABLE (p))) == SPECIFIER_IDENTIFIER) ++ MOID (IDENTIFIERS (TABLE (p))) = MOID (p); ++ } ++ } ++} ++ ++/* Enter parameter identifiers in the symbol table. */ ++ ++static void ++tax_parameters (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ tax_parameters (SUB (p)); ++ if (IS (p, PARAMETER_PACK)) ++ tax_parameter_list (SUB (p)); ++ } ++ } ++} ++ ++/* Enter parameter identifiers in the symbol table. */ ++ ++static void ++tax_parameter_list (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ tax_parameter_list (NEXT (p)); ++ else if (IS (p, CLOSE_SYMBOL)) ++ ; ++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) ++ { ++ tax_parameter_list (NEXT (p)); ++ tax_parameter_list (SUB (p)); ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ /* parameters are always local. */ ++ HEAP (a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, PARAMETER_IDENTIFIER)) = LOC_SYMBOL; ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_parameter_list (NEXT (p)); ++ /* last identifier entries are identifiers with this declarer. */ ++ for (TAG_T *s = IDENTIFIERS (TABLE (p)); s != NO_TAG && MOID (s) == NO_MOID; FORWARD (s)) ++ MOID (s) = MOID (p); ++ tax_parameters (SUB (p)); ++ } ++ } ++} ++ ++/* Enter FOR identifiers in the symbol table. */ ++ ++static void ++tax_for_identifiers (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_for_identifiers (SUB (p)); ++ ++ if (IS (p, FOR_SYMBOL)) ++ { ++ if ((FORWARD (p)) != NO_NODE) ++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_INT, LOOP_IDENTIFIER); ++ } ++ } ++} ++ ++/* Enter routine texts in the symbol table. */ ++ ++static void ++tax_routine_texts (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_routine_texts (SUB (p)); ++ ++ if (IS (p, ROUTINE_TEXT)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, MOID (p), ROUTINE_TEXT); ++ TAX (p) = z; ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ } ++ } ++} ++ ++/* Enter format texts in the symbol table. */ ++ ++static void ++tax_format_texts (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_format_texts (SUB (p)); ++ ++ if (IS (p, FORMAT_TEXT)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_TEXT); ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_IDENTIFIER); ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ } ++} ++ ++/* Enter FORMAT pictures in the symbol table. */ ++ ++static void ++tax_pictures (NODE_T * p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_pictures (SUB (p)); ++ ++ if (IS (p, PICTURE)) ++ TAX (p) = a68_add_tag (TABLE (p), ANONYMOUS, p, M_COLLITEM, FORMAT_IDENTIFIER); ++ } ++} ++ ++/* Enter generators in the symbol table. */ ++ ++static void ++tax_generators (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ tax_generators (SUB (p)); ++ ++ if (IS (p, GENERATOR)) ++ { ++ if (IS (SUB (p), LOC_SYMBOL)) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (SUB (p)), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ TAX (p) = z; ++ } ++ } ++ } ++} ++ ++/* Find a firmly related operator for operands. */ ++ ++static TAG_T * ++find_firmly_related_op (TABLE_T *c, const char *n, MOID_T *l, MOID_T *r, TAG_T *self) ++{ ++ if (c != NO_TABLE) ++ { ++ TAG_T *s = OPERATORS (c); ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (s != self && NSYMBOL (NODE (s)) == n) ++ { ++ PACK_T *t = PACK (MOID (s)); ++ if (t != NO_PACK && a68_is_firm (MOID (t), l)) ++ { ++ /* catch monadic operator. */ ++ if ((FORWARD (t)) == NO_PACK) ++ { ++ if (r == NO_MOID) ++ return s; ++ } ++ else ++ { ++ /* catch dyadic operator. */ ++ if (r != NO_MOID && a68_is_firm (MOID (t), r)) ++ return s; ++ } ++ } ++ } ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Check for firmly related operators in this range. */ ++ ++static void ++test_firmly_related_ops_local (NODE_T *p, TAG_T *s) ++{ ++ if (s != NO_TAG) ++ { ++ PACK_T *u = PACK (MOID (s)); ++ ++ if (u != NO_PACK) ++ { ++ MOID_T *l = MOID (u); ++ MOID_T *r = (NEXT (u) != NO_PACK ? MOID (NEXT (u)) : NO_MOID); ++ TAG_T *t = find_firmly_related_op (TAG_TABLE (s), NSYMBOL (NODE (s)), l, r, s); ++ ++ if (t != NO_TAG) ++ { ++ a68_error (p, "M Z is firmly related to M Z", ++ MOID (s), NSYMBOL (NODE (s)), MOID (t), ++ NSYMBOL (NODE (t))); ++ } ++ else ++ { ++ /* Warn for hidden firmly related operators defined in outer ++ ranges, if requested. */ ++ for (TABLE_T *prev = PREVIOUS (TAG_TABLE (s)); ++ prev != NO_TABLE; ++ prev = PREVIOUS (prev)) ++ { ++ TAG_T *t = find_firmly_related_op (prev, NSYMBOL (NODE (s)), l, r, ++ NO_TAG /* self */); ++ if (t != NO_TAG) ++ { ++ if (TAG_TABLE (t) == A68_STANDENV ++ && warn_algol68_hidden_declarations > 0) ++ { ++ if (a68_warning (p, OPT_Whidden_declarations_, ++ "Z hides a firmly related operator in a larger reach", ++ NSYMBOL (NODE (s)))) ++ { ++ a68_inform (NO_NODE, ++ "operator M Z defined in the standard prelude", ++ MOID (t), NSYMBOL (NODE (t))); ++ } ++ } ++ else if (warn_algol68_hidden_declarations > 1) ++ { ++ if (a68_warning (p, OPT_Whidden_declarations_, ++ "Z hides a firmly related operator in a larger reach", ++ NSYMBOL (NODE (s)))) ++ { ++ a68_inform (NODE (t), ++ "previous hidden declaration of S declared here", ++ NSYMBOL (NODE (s))); ++ } ++ } ++ ++ /* Report only one level of hidding or it gets messy. */ ++ break; ++ } ++ } ++ } ++ } ++ if (NEXT (s) != NO_TAG) ++ test_firmly_related_ops_local ((p == NO_NODE ? NO_NODE : NODE (NEXT (s))), NEXT (s)); ++ } ++} ++ ++/* Find firmly related operators in this program. */ ++ ++static void ++test_firmly_related_ops (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ { ++ TAG_T *oops = OPERATORS (TABLE (SUB (p))); ++ ++ if (oops != NO_TAG) ++ test_firmly_related_ops_local (NODE (oops), oops); ++ } ++ test_firmly_related_ops (SUB (p)); ++ } ++} ++ ++/* Driver for the processing of TAXes. */ ++ ++void ++a68_collect_taxes (NODE_T *p) ++{ ++ tax_tags (p); ++ tax_specifiers (p); ++ tax_parameters (p); ++ tax_for_identifiers (p); ++ tax_routine_texts (p); ++ tax_pictures (p); ++ tax_format_texts (p); ++ tax_generators (p); ++ bind_identifier_tag_to_symbol_table (p); ++ bind_indicant_tag_to_symbol_table (p); ++ test_firmly_related_ops (p); ++ test_firmly_related_ops_local (NO_NODE, OPERATORS (A68_STANDENV)); ++} ++ ++/* Whether tag has already been declared in this range. */ ++ ++static void ++already_declared (NODE_T *n, int a) ++{ ++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) ++ a68_error (n, "multiple declaration of tag S"); ++} ++ ++/* Whether tag has already been declared in this range. */ ++ ++static void ++already_declared_hidden (NODE_T *n, int a) ++{ ++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) ++ a68_error (n, "multiple declaration of tag S"); ++ ++ TAG_T *s = a68_find_tag_global (PREVIOUS (TABLE (n)), a, NSYMBOL (n)); ++ ++ if (s != NO_TAG ++ && ((TAG_TABLE (s) == A68_STANDENV && warn_algol68_hidden_declarations > 0) ++ || (TAG_TABLE (s) != A68_STANDENV && warn_algol68_hidden_declarations > 1))) ++ { ++ if (a68_warning (n, OPT_Whidden_declarations_, ++ "Z hides a declaration with larger reach", ++ NSYMBOL (n))) ++ { ++ if (TAG_TABLE (s) == A68_STANDENV) ++ a68_inform (NO_NODE, ++ "M Z defined in the standard prelude", ++ MOID (s), NSYMBOL (NODE (s))); ++ else ++ a68_inform (NODE (s), ++ "previous hidden declaration of S declared here", ++ NSYMBOL (n)); ++ } ++ } ++} ++ ++/* Add tag to local symbol table. */ ++ ++TAG_T * ++a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p) ++{ ++#define INSERT_TAG(l, n) {NEXT (n) = *(l); *(l) = (n);} ++ if (s != NO_TABLE) ++ { ++ TAG_T *z = a68_new_tag (); ++ ++ TAG_TABLE (z) = s; ++ PRIO (z) = p; ++ MOID (z) = m; ++ NODE (z) = n; ++ /* TAX(n) = z;. */ ++ switch (a) ++ { ++ case IDENTIFIER: ++ already_declared_hidden (n, IDENTIFIER); ++ already_declared_hidden (n, LABEL); ++ INSERT_TAG (&IDENTIFIERS (s), z); ++ break; ++ case INDICANT: ++ already_declared_hidden (n, INDICANT); ++ already_declared (n, OP_SYMBOL); ++ already_declared (n, PRIO_SYMBOL); ++ INSERT_TAG (&INDICANTS (s), z); ++ break; ++ case LABEL: ++ already_declared_hidden (n, LABEL); ++ already_declared_hidden (n, IDENTIFIER); ++ INSERT_TAG (&LABELS (s), z); ++ break; ++ case OP_SYMBOL: ++ already_declared (n, INDICANT); ++ INSERT_TAG (&OPERATORS (s), z); ++ break; ++ case MODULE_SYMBOL: ++ already_declared (n, INDICANT); ++ INSERT_TAG (&MODULES (s), z); ++ break; ++ case PRIO_SYMBOL: ++ already_declared (n, PRIO_SYMBOL); ++ already_declared (n, INDICANT); ++ INSERT_TAG (&PRIO (s), z); ++ break; ++ case ANONYMOUS: ++ INSERT_TAG (&ANONYMOUS (s), z); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return z; ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Find a tag, searching symbol tables towards the root. */ ++ ++TAG_T * ++a68_find_tag_global (TABLE_T *table, int a, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ TAG_T *s = NO_TAG; ++ switch (a) ++ { ++ case IDENTIFIER: ++ s = IDENTIFIERS (table); ++ break; ++ case INDICANT: ++ s = INDICANTS (table); ++ break; ++ case LABEL: ++ s = LABELS (table); ++ break; ++ case OP_SYMBOL: ++ s = OPERATORS (table); ++ break; ++ case MODULE_SYMBOL: ++ s = MODULES (table); ++ break; ++ case PRIO_SYMBOL: ++ s = PRIO (table); ++ break; ++ default: ++ gcc_unreachable (); ++ break; ++ } ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return s; ++ } ++ return a68_find_tag_global (PREVIOUS (table), a, name); ++ } ++ else ++ return NO_TAG; ++} ++ ++/* Whether identifier or label global. */ ++ ++int ++a68_is_identifier_or_label_global (TABLE_T *table, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return IDENTIFIER; ++ } ++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return LABEL; ++ } ++ return a68_is_identifier_or_label_global (PREVIOUS (table), name); ++ } ++ else ++ return 0; ++} ++ ++/* Find a tag, searching only local symbol table. */ ++ ++static TAG_T * ++find_tag_local (TABLE_T *table, int a, const char *name) ++{ ++ if (table != NO_TABLE) ++ { ++ TAG_T *s = NO_TAG; ++ ++ if (a == OP_SYMBOL) ++ s = OPERATORS (table); ++ else if (a == MODULE_SYMBOL) ++ s = MODULES (table); ++ else if (a == PRIO_SYMBOL) ++ s = PRIO (table); ++ else if (a == IDENTIFIER) ++ s = IDENTIFIERS (table); ++ else if (a == INDICANT) ++ s = INDICANTS (table); ++ else if (a == LABEL) ++ s = LABELS (table); ++ else ++ gcc_unreachable (); ++ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) ++ return s; ++ } ++ } ++ return NO_TAG; ++} ++ ++/* Whether context specifies HEAP or LOC for an identifier. ++ ++ The boolean *E is set to true if an explicit qualifier was found, false ++ otherwise. */ ++ ++static int ++tab_qualifier (NODE_T *p, bool *e) ++{ ++ *e = false; ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, UNIT, ASSIGNATION, TERTIARY, SECONDARY, GENERATOR, STOP)) ++ return tab_qualifier (SUB (p), e); ++ else if (a68_is_one_of (p, LOC_SYMBOL, HEAP_SYMBOL, STOP)) ++ { ++ *e = true; ++ return ATTRIBUTE (p) == LOC_SYMBOL ? LOC_SYMBOL : HEAP_SYMBOL; ++ } ++ else ++ return LOC_SYMBOL; ++ } ++ else ++ return LOC_SYMBOL; ++} ++ ++/* Enter identity declarations in the symbol table. ++ ++ E is true if HEAP or LOC got specified explicitly in the identity ++ declaration's formal parameter. */ ++ ++static void ++tax_identity_dec (NODE_T *p, MOID_T **m) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ { ++ tax_identity_dec (SUB (p), m); ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_identity_dec (NEXT (p), m); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ gcc_assert (entry != NO_TAG); ++ ++ MOID (p) = *m; ++ HEAP (entry) = LOC_SYMBOL; ++ TAX (p) = entry; ++ MOID (entry) = *m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ bool e; ++ if (ATTRIBUTE (*m) == REF_SYMBOL) ++ { ++ HEAP (entry) = tab_qualifier (NEXT_NEXT (p), &e); ++ if (e && HEAP (entry) == LOC_SYMBOL && PUBLICIZED (entry)) ++ a68_warning (p, 0, "value of local generator will be out of scope"); ++ } ++ tax_identity_dec (NEXT_NEXT (p), m); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter variable declarations in the symbol table. ++ ++ E is true if an explicit sample generator was specified in the variable ++ declaration. */ ++ ++static void ++tax_variable_dec (NODE_T *p, int *q, MOID_T **m, bool e) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, VARIABLE_DECLARATION)) ++ { ++ tax_variable_dec (SUB (p), q, m, e); ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, QUALIFIER)) ++ { ++ *q = ATTRIBUTE (SUB (p)); ++ tax_variable_dec (NEXT (p), q, m, true); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ MOID (p) = *m; ++ TAX (p) = entry; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ ++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) ++ a68_error (p, "publicized variable should not be allocated on the stack"); ++ ++ if (PUBLICIZED (p)) ++ HEAP (entry) = STATIC_SYMBOL; ++ else ++ HEAP (entry) = *q; ++ ++ if (HEAP (entry) == LOC_SYMBOL) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB (*m), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ BODY (entry) = z; ++ } ++ else ++ { ++ BODY (entry) = NO_TAG; ++ } ++ MOID (entry) = *m; ++ tax_variable_dec (NEXT (p), q, m, e); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter procedure variable declarations in the symbol table. ++ ++ E is true if an explicit sample generator was specified in the procedure ++ variable declaration. */ ++ ++static void ++tax_proc_variable_dec (NODE_T *p, int *q, bool e) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ { ++ tax_proc_variable_dec (SUB (p), q, e); ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else if (IS (p, QUALIFIER)) ++ { ++ *q = ATTRIBUTE (SUB (p)); ++ tax_proc_variable_dec (NEXT (p), q, true); ++ } ++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ TAX (p) = entry; ++ MOID (entry) = MOID (p); ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ ++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) ++ a68_error (p, "publicized variable should not be allocated on the stack"); ++ ++ if (PUBLICIZED (p)) ++ HEAP (entry) = STATIC_SYMBOL; ++ else ++ HEAP (entry) = *q; ++ ++ if (HEAP (entry) == LOC_SYMBOL) ++ { ++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (p), GENERATOR); ++ HEAP (z) = LOC_SYMBOL; ++ USE (z) = true; ++ BODY (entry) = z; ++ } ++ else ++ { ++ BODY (entry) = NO_TAG; ++ } ++ tax_proc_variable_dec (NEXT (p), q, e); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Enter procedure declarations in the symbol table. */ ++ ++static void ++tax_proc_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PROCEDURE_DECLARATION)) ++ { ++ tax_proc_dec (SUB (p)); ++ tax_proc_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_proc_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_IDENTIFIER)) ++ { ++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); ++ ++ MOID_T *m = MOID (NEXT_NEXT (p)); ++ MOID (p) = m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_proc_dec (NEXT (p)); ++ } ++ else ++ tax_tags (p); ++ } ++} ++ ++/* Check validity of operator declaration. */ ++ ++static void ++check_operator_dec (NODE_T *p, MOID_T *u) ++{ ++ int k = 0; ++ ++ if (u == NO_MOID) ++ { ++ NODE_T *pack = SUB_SUB (NEXT_NEXT (p)); /* Where the parameter pack ++ is. */ ++ if (ATTRIBUTE (NEXT_NEXT (p)) != ROUTINE_TEXT) ++ pack = SUB (pack); ++ k = 1 + a68_count_operands (pack); ++ } ++ else ++ k = a68_count_pack_members (PACK (u)); ++ ++ if (k < 1 || k > 2) ++ { ++ a68_error (p, "incorrect number of operands for S"); ++ k = 0; ++ } ++ ++ if (k == 1 && strchr (NOMADS, NSYMBOL (p)[0]) != NO_TEXT) ++ { ++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); ++ } ++ else if (k == 2 && !a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) ++ { ++ a68_error (p, "dyadic S has no priority declaration"); ++ } ++} ++ ++/* Enter operator declarations in the symbol table. */ ++ ++static void ++tax_op_dec (NODE_T *p, MOID_T **m) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, OPERATOR_DECLARATION)) ++ { ++ tax_op_dec (SUB (p), m); ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, OPERATOR_PLAN)) ++ { ++ tax_tags (SUB (p)); ++ *m = MOID (p); ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, OP_SYMBOL)) ++ { ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_op_dec (NEXT (p), m); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = OPERATORS (TABLE (p)); ++ check_operator_dec (p, *m); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = *m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = *m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_op_dec (NEXT (p), m); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter module declarations in the symbol table. */ ++ ++static void ++tax_module_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, MODULE_DECLARATION)) ++ { ++ tax_module_dec (SUB (p)); ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, MODULE_SYMBOL)) ++ { ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, COMMA_SYMBOL)) ++ { ++ tax_module_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_MODULE_INDICANT)) ++ { ++ TAG_T *entry = MODULES (TABLE (p)); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = NO_MOID; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = NO_MOID; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_module_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter brief operator declarations in the symbol table. */ ++ ++static void ++tax_brief_op_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, BRIEF_OPERATOR_DECLARATION)) ++ { ++ tax_brief_op_dec (SUB (p)); ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, OP_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = OPERATORS (TABLE (p)); ++ MOID_T *m = MOID (NEXT_NEXT (p)); ++ check_operator_dec (p, NO_MOID); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = m; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ MOID (entry) = m; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_brief_op_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter priority declarations in the symbol table. */ ++ ++static void tax_prio_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PRIORITY_DECLARATION)) ++ { ++ tax_prio_dec (SUB (p)); ++ tax_prio_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, PRIO_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ tax_prio_dec (NEXT (p)); ++ } ++ else if (IS (p, DEFINING_OPERATOR)) ++ { ++ TAG_T *entry = PRIO (TABLE (p)); ++ while (entry != NO_TAG && NODE (entry) != p) ++ FORWARD (entry); ++ MOID (p) = NO_MOID; ++ TAX (p) = entry; ++ HEAP (entry) = LOC_SYMBOL; ++ PUBLICIZED (entry) = PUBLICIZED (p); ++ tax_prio_dec (NEXT (p)); ++ } ++ else ++ { ++ tax_tags (p); ++ } ++ } ++} ++ ++/* Enter TAXes in the symbol table. */ ++ ++static void ++tax_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ int heap = LOC_SYMBOL; ++ MOID_T *m = NO_MOID; ++ ++ if (IS (p, IDENTITY_DECLARATION)) ++ tax_identity_dec (p, &m); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ tax_variable_dec (p, &heap, &m, false); ++ else if (IS (p, PROCEDURE_DECLARATION)) ++ tax_proc_dec (p); ++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) ++ tax_proc_variable_dec (p, &heap, false); ++ else if (IS (p, OPERATOR_DECLARATION)) ++ tax_op_dec (p, &m); ++ else if (IS (p, BRIEF_OPERATOR_DECLARATION)) ++ tax_brief_op_dec (p); ++ else if (IS (p, PRIORITY_DECLARATION)) ++ tax_prio_dec (p); ++ else if (IS (p, MODULE_DECLARATION)) ++ tax_module_dec (p); ++ else ++ tax_tags (SUB (p)); ++ } ++} ++ ++/* Reset symbol table nest count. */ ++ ++void ++a68_reset_symbol_table_nest_count (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) ++ NEST (TABLE (SUB (p))) = A68 (symbol_table_count)++; ++ a68_reset_symbol_table_nest_count (SUB (p)); ++ } ++} ++ ++//! @brief Bind routines in symbol table to the tree. ++ ++void ++a68_bind_routine_tags_to_tree (NODE_T *p) ++{ ++ /* By inserting coercions etc. some may have shifted. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, ROUTINE_TEXT) && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ a68_bind_routine_tags_to_tree (SUB (p)); ++ } ++} ++ ++/* Bind formats in symbol table to tree. */ ++ ++static void ++bind_format_tags_to_tree (NODE_T *p) ++{ ++ /* By inserting coercions etc. some may have shifted. */ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, FORMAT_TEXT) && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE && TAX (p) != NO_TAG) ++ NODE (TAX (p)) = p; ++ ++ bind_format_tags_to_tree (SUB (p)); ++ } ++} ++ ++/* Fill outer level of symbol table. */ ++ ++void ++a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (TABLE (p) != NO_TABLE) ++ OUTER (TABLE (p)) = s; ++ ++ if (SUB (p) != NO_NODE && IS (p, ROUTINE_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else if (SUB (p) != NO_NODE && IS (p, FORMAT_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else if (SUB (p) != NO_NODE && IS (p, MODULE_TEXT)) ++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); ++ else ++ a68_fill_symbol_table_outer (SUB (p), s); ++ } ++} ++ ++/* Flood branch in tree with local symbol table S. */ ++ ++static void ++flood_with_symbol_table_restricted (NODE_T *p, TABLE_T *s) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ TABLE (p) = s; ++ if (ATTRIBUTE (p) != ROUTINE_TEXT && ATTRIBUTE (p) != SPECIFIED_UNIT) ++ { ++ if (a68_is_new_lexical_level (p)) ++ PREVIOUS (TABLE (SUB (p))) = s; ++ else ++ flood_with_symbol_table_restricted (SUB (p), s); ++ } ++ } ++} ++ ++/* Final structure of symbol table after parsing. */ ++ ++void ++a68_finalise_symbol_table_setup (NODE_T *p, int l) ++{ ++ TABLE_T *s = TABLE (p); ++ NODE_T *q = p; ++ ++ while (q != NO_NODE) ++ { ++ /* routine texts are ranges. */ ++ if (IS (q, ROUTINE_TEXT)) ++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); ++ ++ /* specifiers are ranges. */ ++ else if (IS (q, SPECIFIED_UNIT)) ++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); ++ ++ /* level count and recursion. */ ++ if (SUB (q) != NO_NODE) ++ { ++ if (a68_is_new_lexical_level (q)) ++ { ++ LEX_LEVEL (SUB (q)) = l + 1; ++ gcc_assert (TABLE (SUB (q)) != s); ++ PREVIOUS (TABLE (SUB (q))) = s; ++ a68_finalise_symbol_table_setup (SUB (q), l + 1); ++ if (IS (q, WHILE_PART)) ++ { ++ /* This was a bug that went unnoticed for 15 years!. */ ++ TABLE_T *s2 = TABLE (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ return; ++ if (IS (q, ALT_DO_PART)) ++ { ++ PREVIOUS (TABLE (SUB (q))) = s2; ++ LEX_LEVEL (SUB (q)) = l + 2; ++ a68_finalise_symbol_table_setup (SUB (q), l + 2); ++ } ++ } ++ if (IS (q, DEF_PART)) ++ { ++ TABLE_T *s2 = TABLE (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ return; ++ if (IS (q, POSTLUDE_PART)) ++ { ++ PREVIOUS (TABLE (SUB (q))) = s2; ++ LEX_LEVEL (SUB (q)) = l + 2; ++ a68_finalise_symbol_table_setup (SUB (q), l + 2); ++ } ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = s; ++ a68_finalise_symbol_table_setup (SUB (q), l); ++ } ++ } ++ TABLE (q) = s; ++ ++ if (IS (q, FOR_SYMBOL)) ++ FORWARD (q); ++ FORWARD (q); ++ } ++ ++ /* FOR identifiers are in the DO ... OD range. */ ++ for (q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FOR_SYMBOL)) ++ TABLE (NEXT (q)) = TABLE (SEQUENCE (NEXT (q))); ++ } ++} ++ ++/* First structure of symbol table for parsing. */ ++ ++void ++a68_preliminary_symbol_table_setup (NODE_T *p) ++{ ++ TABLE_T *s = TABLE (p); ++ bool not_a_for_range = false; ++ ++ /* Let the tree point to the current symbol table. */ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ TABLE (q) = s; ++ ++ /* insert new tables when required. */ ++ for (NODE_T *q = p; q != NO_NODE && !not_a_for_range; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ { ++ /* BEGIN ... END, CODE ... EDOC, DO ... OD, $ ... $, { ... } are ++ ranges. */ ++ if (a68_is_one_of (q, BEGIN_SYMBOL, DO_SYMBOL, ALT_DO_SYMBOL, ++ FORMAT_DELIMITER_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ /* ( ... ) is a range. */ ++ else if (IS (q, OPEN_SYMBOL)) ++ { ++ if (a68_whether (q, OPEN_SYMBOL, THEN_BAR_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ { ++ if (IS (q, THEN_BAR_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, OPEN_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ else ++ { ++ /* Don't worry about STRUCT (...), UNION (...), PROC (...) ++ yet. */ ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* IF ... THEN ... ELSE ... FI are ranges. */ ++ else if (IS (q, IF_SYMBOL)) ++ { ++ if (a68_whether (q, IF_SYMBOL, THEN_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ if (IS (q, ELSE_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, IF_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* CASE ... IN ... OUT ... ESAC are ranges. */ ++ else if (IS (q, CASE_SYMBOL)) ++ { ++ if (a68_whether (q, CASE_SYMBOL, IN_SYMBOL, STOP)) ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ FORWARD (q); ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else ++ { ++ if (IS (q, OUT_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ if (IS (q, CASE_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ else ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (s); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* WHILE ... DO ... OD are ranges. */ ++ else if (IS (q, WHILE_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if ((FORWARD (q)) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS (q, ALT_DO_SYMBOL)) ++ { ++ TABLE (SUB (q)) = a68_new_symbol_table (u); ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* ACCESS ... DEF ...POSTLUDE ...FED are ranges. */ ++ else if (IS (q, ALT_ACCESS_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS ((FORWARD (q)), DEF_SYMBOL)) ++ { ++ TABLE_T *v = a68_new_symbol_table (u); ++ TABLE (SUB (q)) = v; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* DEF ... POSTLUDE ... FED are ranges. */ ++ else if (IS (q, DEF_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ PUBLIC_RANGE (u) = true; ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ else if (IS ((FORWARD (q)), POSTLUDE_SYMBOL)) ++ { ++ TABLE_T *v = a68_new_symbol_table (u); ++ TABLE (SUB (q)) = v; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ /* ACCESS ... CONTROLLED_CLAUSE are ranges. */ ++ else if (IS (q, ACCESS_SYMBOL)) ++ { ++ TABLE_T *u = a68_new_symbol_table (s); ++ TABLE (SUB (q)) = u; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ if (NEXT (q) == NO_NODE) ++ not_a_for_range = true; ++ } ++ else ++ { ++ TABLE (SUB (q)) = s; ++ a68_preliminary_symbol_table_setup (SUB (q)); ++ } ++ } ++ } ++ /* FOR identifiers will go to the DO ... OD range. */ ++ if (!not_a_for_range) ++ { ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FOR_SYMBOL)) ++ { ++ NODE_T *r = q; ++ TABLE (NEXT (q)) = NO_TABLE; ++ for (; r != NO_NODE && TABLE (NEXT (q)) == NO_TABLE; FORWARD (r)) ++ { ++ if ((a68_is_one_of (r, WHILE_SYMBOL, ALT_DO_SYMBOL, STOP)) ++ && (NEXT (q) != NO_NODE && SUB (r) != NO_NODE)) ++ { ++ TABLE (NEXT (q)) = TABLE (SUB (r)); ++ SEQUENCE (NEXT (q)) = SUB (r); ++ } ++ } ++ } ++ } ++ } ++} ++ ++/* Mark a mode as in use. */ ++ ++static void ++mark_mode (MOID_T *m) ++{ ++ if (m != NO_MOID && USE (m) == false) ++ { ++ PACK_T *p = PACK (m); ++ USE (m) = true; ++ for (; p != NO_PACK; FORWARD (p)) ++ { ++ mark_mode (MOID (p)); ++ mark_mode (SUB (m)); ++ mark_mode (SLICE (m)); ++ } ++ } ++} ++ ++//! @brief Traverse tree and mark modes as used. ++ ++void ++a68_mark_moids (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_mark_moids (SUB (p)); ++ if (MOID (p) != NO_MOID) ++ mark_mode (MOID (p)); ++ } ++} ++ ++/* Mark various tags as used. */ ++ ++void ++a68_mark_auxilliary (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ /* You get no warnings on unused PROC parameters. That is ok since ++ A68 has some parameters that you may not use at all - think of ++ PROC (REF FILE) BOOL event routines in transput. */ ++ a68_mark_auxilliary (SUB (p)); ++ } ++ else if (IS (p, OPERATOR)) ++ { ++ TAG_T *z; ++ ++ if (TAX (p) != NO_TAG) ++ USE (TAX (p)) = true; ++ ++ if ((z = a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) != NO_TAG) ++ USE (z) = true; ++ } ++ else if (IS (p, INDICANT)) ++ { ++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); ++ ++ if (z != NO_TAG) ++ { ++ TAX (p) = z; ++ USE (z) = true; ++ } ++ } ++ else if (IS (p, IDENTIFIER)) ++ { ++ if (TAX (p) != NO_TAG) ++ USE (TAX (p)) = true; ++ } ++ } ++} ++ ++/* Check a single tag. */ ++ ++static void ++unused (TAG_T *s) ++{ ++ for (; s != NO_TAG; FORWARD (s)) ++ { ++ if (LINE_NUMBER (NODE (s)) > 0 && !USE (s)) ++ a68_warning (NODE (s), OPT_Wunused, "tag S is not used", NODE (s)); ++ } ++} ++ ++/* Driver for traversing tree and warn for unused tags. */ ++ ++void ++a68_warn_for_unused_tags (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (SUB (p) != NO_NODE) ++ { ++ if (a68_is_new_lexical_level (p)) ++ { ++ unused (MODULES (TABLE (SUB (p)))); ++ unused (OPERATORS (TABLE (SUB (p)))); ++ unused (PRIO (TABLE (SUB (p)))); ++ unused (IDENTIFIERS (TABLE (SUB (p)))); ++ unused (LABELS (TABLE (SUB (p)))); ++ unused (INDICANTS (TABLE (SUB (p)))); ++ } ++ } ++ a68_warn_for_unused_tags (SUB (p)); ++ } ++} ++ ++/* Mark jumps and procedured jumps. */ ++ ++void ++a68_jumps_from_procs (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, PROCEDURING)) ++ { ++ NODE_T *u = SUB_SUB (p); ++ ++ if (IS (u, GOTO_SYMBOL)) ++ FORWARD (u); ++ USE (TAX (u)) = true; ++ } ++ else if (IS (p, JUMP)) ++ { ++ NODE_T *u = SUB (p); ++ ++ if (IS (u, GOTO_SYMBOL)) ++ FORWARD (u); ++ if ((TAX (u) == NO_TAG) && (MOID (u) == NO_MOID) ++ && (a68_find_tag_global (TABLE (u), LABEL, NSYMBOL (u)) == NO_TAG)) ++ { ++ (void) a68_add_tag (TABLE (u), LABEL, u, NO_MOID, LOCAL_LABEL); ++ a68_error (u, "tag S has not been declared properly"); ++ } ++ else ++ USE (TAX (u)) = true; ++ } ++ else ++ a68_jumps_from_procs (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-top-down.cc +@@ -0,0 +1,894 @@ ++/* Top-down parser for control structure. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* A few forward prototypes of functions defined below. */ ++ ++static NODE_T *top_down_loop (NODE_T *p); ++static NODE_T *top_down_skip_unit (NODE_T *p); ++static NODE_T *top_down_def (NODE_T *def_p); ++ ++/* Substitute brackets. ++ ++ Traditional ALGOL 68 syntax allows ( .. ) to replace [ .. ] in bounds and ++ slices. This top-down pass substitutes [ .. ] occurrences into ( .. ). */ ++ ++void ++a68_substitute_brackets (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ a68_substitute_brackets (SUB (p)); ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case SUB_SYMBOL: ++ ATTRIBUTE (p) = OPEN_SYMBOL; ++ break; ++ case BUS_SYMBOL: ++ ATTRIBUTE (p) = CLOSE_SYMBOL; ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++/* Intelligible diagnostic from syntax tree branch. */ ++ ++const char * ++a68_phrase_to_text (NODE_T * p, NODE_T ** w) ++{ ++#define MAX_TERMINALS 8 ++ int count = 0, line = -1; ++ static BUFFER buffer; ++ ++ for (buffer[0] = '\0'; p != NO_NODE && count < MAX_TERMINALS; FORWARD (p)) ++ { ++ if (LINE_NUMBER (p) == 0) ++ continue; ++ ++ enum a68_attribute gatt = a68_get_good_attribute (p); ++ const char *z = a68_attribute_name (gatt); ++ ++ /* Where to put the error message? Bob Uzgalis noted that actual ++ content of a diagnostic is not as important as accurately ++ indicating *were* the problem is! */ ++ if (w != NO_VAR) ++ { ++ if (count == 0 || (*w) == NO_NODE) ++ *w = p; ++ else if (a68_dont_mark_here (*w)) ++ *w = p; ++ } ++ ++ /* Add initiation. */ ++ if (count == 0) ++ { ++ if (w != NO_VAR) ++ a68_bufcat (buffer, "construct beginning with", BUFFER_SIZE); ++ } ++ else if (count == 1) ++ a68_bufcat (buffer, " followed by", BUFFER_SIZE); ++ else if (count == 2) ++ a68_bufcat (buffer, " and then", BUFFER_SIZE); ++ else if (count >= 3) ++ a68_bufcat (buffer, " and", BUFFER_SIZE); ++ ++ /* Attribute or symbol. */ ++ if (z != NO_TEXT && SUB (p) != NO_NODE) ++ { ++ if (gatt == IDENTIFIER || gatt == OPERATOR || gatt == DENOTATION) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ else ++ { ++ if (strchr ("aeio", z[0]) != NO_TEXT) ++ a68_bufcat (buffer, " an", BUFFER_SIZE); ++ else ++ a68_bufcat (buffer, " a", BUFFER_SIZE); ++ ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %s", z) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ } ++ else if (z != NO_TEXT && SUB (p) == NO_NODE) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ else if (NSYMBOL (p) != NO_TEXT) ++ { ++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ /* Add "starting in line nn". */ ++ if (z != NO_TEXT && line != LINE_NUMBER (p)) ++ { ++ line = LINE_NUMBER (p); ++ if (gatt == SERIAL_CLAUSE || gatt == ENQUIRY_CLAUSE || gatt == INITIALISER_SERIES) ++ a68_bufcat (buffer, " starting", BUFFER_SIZE); ++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " in line %d", line) < 0) ++ gcc_unreachable (); ++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); ++ } ++ count++; ++ } ++ ++ if (p != NO_NODE && count == MAX_TERMINALS) ++ a68_bufcat (buffer, " etcetera", BUFFER_SIZE); ++ return buffer; ++} ++ ++/* Next is a top-down parser that branches out the basic blocks. ++ After this we can assign symbol tables to basic blocks. ++ This renders the two-level grammar LALR. */ ++ ++/* Give diagnose from top-down parser. */ ++ ++static void ++top_down_diagnose (NODE_T *start, NODE_T *p, int clause, int expected) ++{ ++ NODE_T *issue = (p != NO_NODE ? p : start); ++ const char *strop_keyword = a68_strop_keyword (NSYMBOL (start)); ++ ++ if (expected != 0) ++ a68_error (issue, "B expected in A, near Z L", ++ expected, clause, strop_keyword, LINE (INFO (start))); ++ else ++ a68_error (issue, "missing or unbalanced keyword in A, near Z L", ++ clause, strop_keyword, LINE (INFO (start))); ++} ++ ++/* Check for premature exhaustion of tokens. */ ++ ++static void ++tokens_exhausted (NODE_T *p, NODE_T *q) ++{ ++ if (p == NO_NODE) ++ { ++ a68_error (q, "check for missing or unmatched keyword in clause starting at S"); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++} ++ ++/* ++ * This part specifically branches out loop clauses. ++ */ ++ ++/* Whether in cast or formula with loop clause. */ ++ ++static int ++is_loop_cast_formula (NODE_T *p) ++{ ++ /* Accept declarers that can appear in such casts but not much more. */ ++ if (IS (p, VOID_SYMBOL)) ++ return 1; ++ else if (IS (p, INT_SYMBOL)) ++ return 1; ++ else if (IS_REF (p)) ++ return 1; ++ else if (a68_is_one_of (p, OPERATOR, BOLD_TAG, STOP)) ++ return 1; ++ else if (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP)) ++ return 2; ++ else if (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)) ++ { ++ int k = 0; ++ for (; p != NO_NODE && (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)); FORWARD (p), k++) ++ ; ++ return p != NO_NODE && (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP) ? k : 0); ++ } ++ return 0; ++} ++ ++/* Skip a unit in a loop clause (FROM u BY u TO u). */ ++ ++static NODE_T * ++top_down_skip_loop_unit (NODE_T *p) ++{ ++ /* Unit may start with, or consist of, a loop. */ ++ if (a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ ++ /* Skip rest of unit. */ ++ while (p != NO_NODE) ++ { ++ int k = is_loop_cast_formula (p); ++ ++ if (k != 0) ++ { ++ /* operator-cast series ... */ ++ while (p != NO_NODE && k != 0) ++ { ++ while (k != 0) ++ { ++ FORWARD (p); ++ k--; ++ } ++ k = is_loop_cast_formula (p); ++ } ++ ++ /* ... may be followed by a loop clause. */ ++ if (a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ } ++ else if (a68_is_loop_keyword (p) || IS (p, OD_SYMBOL)) ++ /* new loop or end-of-loop. */ ++ return p; ++ else if (IS (p, COLON_SYMBOL)) ++ { ++ FORWARD (p); ++ /* skip routine header: loop clause. */ ++ if (p != NO_NODE && a68_is_loop_keyword (p)) ++ p = top_down_loop (p); ++ } ++ else if (a68_is_one_of (p, SEMI_SYMBOL, COMMA_SYMBOL, STOP) || IS (p, EXIT_SYMBOL)) ++ /* Statement separators. */ ++ return p; ++ else ++ FORWARD (p); ++ } ++ return NO_NODE; ++} ++ ++/* Skip a loop clause. */ ++ ++static NODE_T * ++top_down_skip_loop_series (NODE_T *p) ++{ ++ bool siga; ++ ++ do ++ { ++ p = top_down_skip_loop_unit (p); ++ siga = (p != NO_NODE && (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, ++ COMMA_SYMBOL, COLON_SYMBOL, ++ STOP))); ++ if (siga) ++ FORWARD (p); ++ } ++ while (!(p == NO_NODE || !siga)); ++ ++ return p; ++} ++ ++/* Make branch of loop parts. */ ++ ++static NODE_T * ++top_down_loop (NODE_T *p) ++{ ++ NODE_T *start = p, *q = p; ++ ++ if (IS (q, FOR_SYMBOL)) ++ { ++ tokens_exhausted (FORWARD (q), start); ++ ++ if (IS (q, IDENTIFIER)) ++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, IDENTIFIER); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ tokens_exhausted (FORWARD (q), start); ++ ++ if (a68_is_one_of (q, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, ++ WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ } ++ ++ if (IS (q, FROM_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_unit (NEXT (q)); ++ tokens_exhausted (q, start); ++ if (a68_is_one_of (q, BY_SYMBOL, TO_SYMBOL, WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), FROM_SYMBOL); ++ } ++ ++ if (IS (q, BY_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (a68_is_one_of (q, TO_SYMBOL, WHILE_SYMBOL, STOP)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), BY_SYMBOL); ++ } ++ ++ if (a68_is_one_of (q, TO_SYMBOL, STOP)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (IS (q, WHILE_SYMBOL)) ++ ; ++ else if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), TO_SYMBOL); ++ } ++ ++ if (IS (q, WHILE_SYMBOL)) ++ { ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (IS (q, DO_SYMBOL)) ++ ATTRIBUTE (q) = ALT_DO_SYMBOL; ++ else ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, DO_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, PREVIOUS (q), WHILE_SYMBOL); ++ } ++ ++ if (a68_is_one_of (q, DO_SYMBOL, ALT_DO_SYMBOL, STOP)) ++ { ++ enum a68_attribute k = ATTRIBUTE (q); ++ ++ start = q; ++ q = top_down_skip_loop_series (NEXT (q)); ++ tokens_exhausted (q, start); ++ ++ if (!IS (q, OD_SYMBOL)) ++ { ++ top_down_diagnose (start, q, LOOP_CLAUSE, OD_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (start, q, k); ++ } ++ ++ NODE_T *save = NEXT (start); ++ a68_make_sub (p, start, LOOP_CLAUSE); ++ return save; ++} ++ ++/* Driver for making branches of loop parts. */ ++ ++static void ++top_down_loops (NODE_T *p) ++{ ++ NODE_T *q = p; ++ ++ for (; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_loops (SUB (q)); ++ } ++ ++ q = p; ++ while (q != NO_NODE) ++ { ++ if (a68_is_loop_keyword (q) != STOP) ++ q = top_down_loop (q); ++ else ++ FORWARD (q); ++ } ++} ++ ++/* ++ * Branch anything except parts of a loop. ++ */ ++ ++/* Skip serial/enquiry clause (unit series). */ ++ ++static NODE_T * ++top_down_series (NODE_T *p) ++{ ++ bool siga = true; ++ while (siga) ++ { ++ siga = false; ++ p = top_down_skip_unit (p); ++ if (p != NO_NODE) ++ { ++ if (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ siga = true; ++ FORWARD (p); ++ } ++ } ++ } ++ return p; ++} ++ ++/* Make branch of DEF .. POSTLUDE .. FED. */ ++ ++static NODE_T * ++top_down_def (NODE_T *def_p) ++{ ++ NODE_T *fed_p = top_down_series (NEXT (def_p)); ++ ++ if (fed_p == NO_NODE || !(IS (fed_p, FED_SYMBOL) || IS (fed_p, POSTLUDE_SYMBOL))) ++ { ++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (def_p, PREVIOUS (fed_p), DEF_SYMBOL); ++ ++ if (IS (fed_p, POSTLUDE_SYMBOL)) ++ { ++ NODE_T *postlude_p = top_down_series (NEXT (fed_p)); ++ ++ if (postlude_p == NO_NODE || !IS (postlude_p, FED_SYMBOL)) ++ { ++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (fed_p, PREVIOUS (postlude_p), POSTLUDE_SYMBOL); ++ } ++ ++ return NEXT (def_p); ++} ++ ++/* Make branch of ++ ++ ACCESS REVELATION [DEF_SYMBOL] ++ or ++ ACCESS REVELATION ENCLOSED_CLAUSE. */ ++ ++static void ++top_down_access (NODE_T *p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_access (SUB (q)); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, ACCESS_SYMBOL)) ++ { ++ NODE_T *end_p = NEXT (q); ++ ++ /* Skip joined list of revelations and make branch until the enclosed ++ clause, DEF_SYMBOL or POSTLUDE_SYMBOL. */ ++ while (a68_is_one_of (end_p, BOLD_TAG, PUBLIC_SYMBOL, COMMA_SYMBOL, STOP)) ++ FORWARD (end_p); ++ ++ if (IS (end_p, DEF_SYMBOL)) ++ { ++ FORWARD (end_p); ++ if (IS (end_p, POSTLUDE_SYMBOL)) ++ FORWARD (end_p); ++ if (IS (end_p, FED_SYMBOL)) ++ { ++ ATTRIBUTE (q) = ALT_ACCESS_SYMBOL; ++ a68_make_sub (q, end_p, ALT_ACCESS_SYMBOL); ++ } ++ } ++ else ++ a68_make_sub (q, end_p, ACCESS_SYMBOL); ++ } ++ } ++} ++ ++/* Make branch of BEGIN .. END. */ ++ ++static NODE_T * ++top_down_begin (NODE_T *begin_p) ++{ ++ NODE_T *end_p = top_down_series (NEXT (begin_p)); ++ ++ if (end_p == NO_NODE || !IS (end_p, END_SYMBOL)) ++ { ++ top_down_diagnose (begin_p, end_p, ENCLOSED_CLAUSE, END_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++ else ++ { ++ a68_make_sub (begin_p, end_p, BEGIN_SYMBOL); ++ return NEXT (begin_p); ++ } ++} ++ ++/* Make branch of ( .. ). */ ++ ++static NODE_T * ++top_down_open (NODE_T *open_p) ++{ ++ NODE_T *then_bar_p = top_down_series (NEXT (open_p)), *elif_bar_p; ++ ++ if (then_bar_p != NO_NODE && IS (then_bar_p, CLOSE_SYMBOL)) ++ { ++ a68_make_sub (open_p, then_bar_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (then_bar_p == NO_NODE || !IS (then_bar_p, THEN_BAR_SYMBOL)) ++ { ++ top_down_diagnose (open_p, then_bar_p, ENCLOSED_CLAUSE, STOP); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (open_p, PREVIOUS (then_bar_p), OPEN_SYMBOL); ++ elif_bar_p = top_down_series (NEXT (then_bar_p)); ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, CLOSE_SYMBOL)) ++ { ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, THEN_BAR_SYMBOL)) ++ { ++ NODE_T *close_p = top_down_series (NEXT (elif_bar_p)); ++ ++ if (close_p == NO_NODE || !IS (close_p, CLOSE_SYMBOL)) ++ { ++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (elif_bar_p, PREVIOUS (close_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, close_p, OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ ++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, ELSE_BAR_SYMBOL)) ++ { ++ NODE_T *close_p = top_down_open (elif_bar_p); ++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); ++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); ++ return close_p; ++ } ++ else ++ { ++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of [ .. ]. */ ++ ++static NODE_T * ++top_down_sub (NODE_T *sub_p) ++{ ++ NODE_T *bus_p = top_down_series (NEXT (sub_p)); ++ ++ if (bus_p != NO_NODE && IS (bus_p, BUS_SYMBOL)) ++ { ++ a68_make_sub (sub_p, bus_p, SUB_SYMBOL); ++ return NEXT (sub_p); ++ } ++ else ++ { ++ top_down_diagnose (sub_p, bus_p, 0, BUS_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of IF .. THEN .. ELSE .. FI. */ ++ ++static NODE_T * ++top_down_if (NODE_T * if_p) ++{ ++ NODE_T *then_p = top_down_series (NEXT (if_p)), *elif_p; ++ ++ if (then_p == NO_NODE || !IS (then_p, THEN_SYMBOL)) ++ { ++ top_down_diagnose (if_p, then_p, CONDITIONAL_CLAUSE, THEN_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (if_p, PREVIOUS (then_p), IF_SYMBOL); ++ ++ elif_p = top_down_series (NEXT (then_p)); ++ if (elif_p != NO_NODE && IS (elif_p, FI_SYMBOL)) ++ { ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (if_p, elif_p, IF_SYMBOL); ++ return NEXT (if_p); ++ } ++ ++ if (elif_p != NO_NODE && IS (elif_p, ELSE_SYMBOL)) ++ { ++ NODE_T *fi_p = top_down_series (NEXT (elif_p)); ++ ++ if (fi_p == NO_NODE || !IS (fi_p, FI_SYMBOL)) ++ { ++ top_down_diagnose (if_p, fi_p, CONDITIONAL_CLAUSE, FI_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (elif_p, PREVIOUS (fi_p), ELSE_SYMBOL); ++ a68_make_sub (if_p, fi_p, IF_SYMBOL); ++ return NEXT (if_p); ++ } ++ } ++ ++ if (elif_p != NO_NODE && IS (elif_p, ELIF_SYMBOL)) ++ { ++ NODE_T *fi_p = top_down_if (elif_p); ++ ++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); ++ a68_make_sub (if_p, elif_p, IF_SYMBOL); ++ return fi_p; ++ } ++ else ++ { ++ top_down_diagnose (if_p, elif_p, CONDITIONAL_CLAUSE, FI_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Make branch of CASE .. IN .. OUT .. ESAC. */ ++ ++static NODE_T * ++top_down_case (NODE_T *case_p) ++{ ++ NODE_T *in_p = top_down_series (NEXT (case_p)), *ouse_p; ++ ++ if (in_p == NO_NODE || !IS (in_p, IN_SYMBOL)) ++ { ++ top_down_diagnose (case_p, in_p, ENCLOSED_CLAUSE, IN_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ ++ a68_make_sub (case_p, PREVIOUS (in_p), CASE_SYMBOL); ++ ++ ouse_p = top_down_series (NEXT (in_p)); ++ if (ouse_p != NO_NODE && IS (ouse_p, ESAC_SYMBOL)) ++ { ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); ++ return NEXT (case_p); ++ } ++ ++ if (ouse_p != NO_NODE && IS (ouse_p, OUT_SYMBOL)) ++ { ++ NODE_T *esac_p = top_down_series (NEXT (ouse_p)); ++ ++ if (esac_p == NO_NODE || !IS (esac_p, ESAC_SYMBOL)) ++ { ++ top_down_diagnose (case_p, esac_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ { ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (ouse_p, PREVIOUS (esac_p), OUT_SYMBOL); ++ a68_make_sub (case_p, esac_p, CASE_SYMBOL); ++ return NEXT (case_p); ++ } ++ } ++ ++ if (ouse_p != NO_NODE && IS (ouse_p, OUSE_SYMBOL)) ++ { ++ NODE_T *esac_p = top_down_case (ouse_p); ++ ++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); ++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); ++ return esac_p; ++ } ++ else ++ { ++ top_down_diagnose (case_p, ouse_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Skip a unit. */ ++ ++static NODE_T * ++top_down_skip_unit (NODE_T *p) ++{ ++ while (p != NO_NODE && !a68_is_unit_terminator (p)) ++ { ++ if (IS (p, BEGIN_SYMBOL)) ++ p = top_down_begin (p); ++ else if (IS (p, SUB_SYMBOL)) ++ p = top_down_sub (p); ++ else if (IS (p, OPEN_SYMBOL)) ++ p = top_down_open (p); ++ else if (IS (p, IF_SYMBOL)) ++ p = top_down_if (p); ++ else if (IS (p, CASE_SYMBOL)) ++ p = top_down_case (p); ++ else ++ FORWARD (p); ++ } ++ return p; ++} ++ ++static NODE_T *top_down_skip_format (NODE_T *); ++ ++/* Make branch of ( .. ) in a format. */ ++ ++static NODE_T * ++top_down_format_open (NODE_T *open_p) ++{ ++ NODE_T *close_p = top_down_skip_format (NEXT (open_p)); ++ ++ if (close_p != NO_NODE && IS (close_p, FORMAT_CLOSE_SYMBOL)) ++ { ++ a68_make_sub (open_p, close_p, FORMAT_OPEN_SYMBOL); ++ return NEXT (open_p); ++ } ++ else ++ { ++ top_down_diagnose (open_p, close_p, 0, FORMAT_CLOSE_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ return NO_NODE; ++ } ++} ++ ++/* Skip a format text. */ ++ ++static NODE_T * ++top_down_skip_format (NODE_T *p) ++{ ++ while (p != NO_NODE) ++ { ++ if (IS (p, FORMAT_OPEN_SYMBOL)) ++ p = top_down_format_open (p); ++ else if (a68_is_one_of (p, FORMAT_CLOSE_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP)) ++ return p; ++ else ++ FORWARD (p); ++ } ++ return NO_NODE; ++} ++ ++/* Make branch of $ .. $. */ ++ ++static void ++top_down_formats (NODE_T * p) ++{ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (SUB (q) != NO_NODE) ++ top_down_formats (SUB (q)); ++ } ++ ++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) ++ { ++ if (IS (q, FORMAT_DELIMITER_SYMBOL)) ++ { ++ NODE_T *f = NEXT (q); ++ ++ while (f != NO_NODE && !IS (f, FORMAT_DELIMITER_SYMBOL)) ++ { ++ if (IS (f, FORMAT_OPEN_SYMBOL)) ++ f = top_down_format_open (f); ++ else ++ f = NEXT (f); ++ } ++ ++ if (f == NO_NODE) ++ { ++ top_down_diagnose (p, f, FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL); ++ longjmp (A68_PARSER (top_down_crash_exit), 1); ++ } ++ else ++ a68_make_sub (q, f, FORMAT_DELIMITER_SYMBOL); ++ } ++ } ++} ++ ++/* Skip prelude packet. */ ++ ++static NODE_T * ++top_down_prelude_packet (NODE_T *p) ++{ ++ while (p != NO_NODE) ++ { ++ if (IS (p, DEF_SYMBOL)) ++ p = top_down_def (p); ++ else ++ FORWARD (p); ++ } ++ ++ return p; ++} ++ ++/* Skip particular program. */ ++ ++static NODE_T * ++top_down_particular_program (NODE_T *p) ++{ ++ (void) top_down_series (p); ++ return p; ++} ++ ++/* Make branches of phrases for the bottom-up parser. */ ++ ++void ++a68_top_down_parser (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return; ++ ++ if (!setjmp (A68_PARSER (top_down_crash_exit))) ++ { ++ if (IS (p, MODULE_SYMBOL)) ++ (void) top_down_prelude_packet (p); ++ else ++ (void) top_down_particular_program (p); ++ } ++ ++ top_down_loops (p); ++ top_down_formats (p); ++ top_down_access (p); ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser-victal.cc +@@ -0,0 +1,362 @@ ++/* Syntax check for formal, actual and virtual declarers. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "options.h" ++ ++#include "a68.h" ++ ++static bool victal_check_declarer (NODE_T *, int); ++ ++/* Check generator. */ ++ ++static void ++victal_check_generator (NODE_T * p) ++{ ++ if (!victal_check_declarer (NEXT (p), ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++} ++ ++/* Check formal pack. */ ++ ++static void ++victal_check_formal_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, FORMAL_DECLARERS)) ++ victal_check_formal_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_formal_pack (NEXT (p), x, z); ++ else if (IS (p, FORMAL_DECLARERS_LIST)) ++ { ++ victal_check_formal_pack (NEXT (p), x, z); ++ victal_check_formal_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ victal_check_formal_pack (NEXT (p), x, z); ++ (*z) &= victal_check_declarer (SUB (p), x); ++ } ++ } ++} ++ ++/* Check operator declaration. */ ++ ++static void ++victal_check_operator_dec (NODE_T *p) ++{ ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ bool z = true; ++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarers"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++} ++ ++/* Check mode declaration. */ ++ ++static void ++victal_check_mode_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, MODE_DECLARATION)) ++ { ++ victal_check_mode_dec (SUB (p)); ++ victal_check_mode_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, MODE_SYMBOL, DEFINING_INDICANT, STOP) ++ || a68_is_one_of (p, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) ++ { ++ victal_check_mode_dec (NEXT (p)); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++ } ++ } ++} ++ ++/* Check variable declaration. */ ++ ++static void ++victal_check_variable_dec (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, VARIABLE_DECLARATION)) ++ { ++ victal_check_variable_dec (SUB (p)); ++ victal_check_variable_dec (NEXT (p)); ++ } ++ else ++ { ++ if (IS (p, QUALIFIER)) ++ FORWARD (p); ++ ++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, STOP) ++ || IS (p, COMMA_SYMBOL)) ++ victal_check_variable_dec (NEXT (p)); ++ else if (IS (p, UNIT)) ++ a68_victal_checker (SUB (p)); ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "actual declarer"); ++ victal_check_variable_dec (NEXT (p)); ++ } ++ } ++ } ++} ++ ++/* Check identity declaration. */ ++ ++static void ++victal_check_identity_dec (NODE_T * p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, IDENTITY_DECLARATION)) ++ { ++ victal_check_identity_dec (SUB (p)); ++ victal_check_identity_dec (NEXT (p)); ++ } ++ else if (a68_is_one_of (p, DEFINING_IDENTIFIER, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_identity_dec (NEXT (p)); ++ else if (IS (p, UNIT)) ++ a68_victal_checker (SUB (p)); ++ else if (IS (p, DECLARER)) ++ { ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ victal_check_identity_dec (NEXT (p)); ++ } ++ } ++} ++ ++/* Check routine pack. */ ++ ++static void ++victal_check_routine_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, PARAMETER_PACK)) ++ victal_check_routine_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_routine_pack (NEXT (p), x, z); ++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) ++ { ++ victal_check_routine_pack (NEXT (p), x, z); ++ victal_check_routine_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ *z &= victal_check_declarer (SUB (p), x); ++ } ++} ++ ++/* Check routine text. */ ++ ++static void ++victal_check_routine_text (NODE_T *p) ++{ ++ if (IS (p, PARAMETER_PACK)) ++ { ++ bool z = true; ++ victal_check_routine_pack (p, FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarers"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ a68_victal_checker (NEXT (p)); ++} ++ ++/* Check structure pack. */ ++ ++static void ++victal_check_structure_pack (NODE_T *p, int x, bool *z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, STRUCTURE_PACK)) ++ victal_check_structure_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) ++ victal_check_structure_pack (NEXT (p), x, z); ++ else if (a68_is_one_of (p, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP)) ++ { ++ victal_check_structure_pack (NEXT (p), x, z); ++ victal_check_structure_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ (*z) &= victal_check_declarer (SUB (p), x); ++ } ++} ++ ++/* Check union pack. */ ++ ++static void ++victal_check_union_pack (NODE_T * p, int x, bool * z) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, UNION_PACK)) ++ victal_check_union_pack (SUB (p), x, z); ++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, VOID_SYMBOL, STOP)) ++ victal_check_union_pack (NEXT (p), x, z); ++ else if (IS (p, UNION_DECLARER_LIST)) ++ { ++ victal_check_union_pack (NEXT (p), x, z); ++ victal_check_union_pack (SUB (p), x, z); ++ } ++ else if (IS (p, DECLARER)) ++ { ++ victal_check_union_pack (NEXT (p), x, z); ++ (*z) &= victal_check_declarer (SUB (p), FORMAL_DECLARER_MARK); ++ } ++ } ++} ++ ++/* Check declarer. */ ++ ++static bool ++victal_check_declarer (NODE_T *p, int x) ++{ ++ if (p == NO_NODE) ++ return false; ++ else if (IS (p, DECLARER)) ++ return victal_check_declarer (SUB (p), x); ++ else if (a68_is_one_of (p, LONGETY, SHORTETY, STOP)) ++ return true; ++ else if (a68_is_one_of (p, VOID_SYMBOL, INDICANT, STANDARD, STOP)) ++ return true; ++ else if (IS_REF (p)) ++ return victal_check_declarer (NEXT (p), VIRTUAL_DECLARER_MARK); ++ else if (IS_FLEX (p)) ++ return victal_check_declarer (NEXT (p), x); ++ else if (IS (p, BOUNDS)) ++ { ++ a68_victal_checker (SUB (p)); ++ if (x == FORMAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "formal bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else if (x == VIRTUAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "virtual bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else ++ return victal_check_declarer (NEXT (p), x); ++ } ++ else if (IS (p, FORMAL_BOUNDS)) ++ { ++ a68_victal_checker (SUB (p)); ++ if (x == ACTUAL_DECLARER_MARK) ++ { ++ a68_error (p, "Y expected", "actual bounds"); ++ (void) victal_check_declarer (NEXT (p), x); ++ return true; ++ } ++ else ++ return victal_check_declarer (NEXT (p), x); ++ } ++ else if (IS (p, STRUCT_SYMBOL)) ++ { ++ bool z = true; ++ victal_check_structure_pack (NEXT (p), x, &z); ++ return z; ++ } ++ else if (IS (p, UNION_SYMBOL)) ++ { ++ bool z = true; ++ victal_check_union_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarer pack"); ++ return true; ++ } ++ else if (IS (p, PROC_SYMBOL)) ++ { ++ if (IS (NEXT (p), FORMAL_DECLARERS)) ++ { ++ bool z = true; ++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); ++ if (!z) ++ a68_error (p, "Y expected", "formal declarer"); ++ FORWARD (p); ++ } ++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) ++ a68_error (p, "Y expected", "formal declarer"); ++ return true; ++ } ++ else ++ return false; ++} ++ ++/* Check cast. */ ++ ++static void ++victal_check_cast (NODE_T *p) ++{ ++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) ++ { ++ a68_error (p, "Y expected", "formal declarer"); ++ a68_victal_checker (NEXT (p)); ++ } ++} ++ ++/* Driver for checking VICTALITY of declarers. */ ++ ++void ++a68_victal_checker (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, MODE_DECLARATION)) ++ victal_check_mode_dec (SUB (p)); ++ else if (IS (p, VARIABLE_DECLARATION)) ++ victal_check_variable_dec (SUB (p)); ++ else if (IS (p, IDENTITY_DECLARATION)) ++ victal_check_identity_dec (SUB (p)); ++ else if (IS (p, GENERATOR)) ++ victal_check_generator (SUB (p)); ++ else if (IS (p, ROUTINE_TEXT)) ++ victal_check_routine_text (SUB (p)); ++ else if (IS (p, OPERATOR_PLAN)) ++ victal_check_operator_dec (SUB (p)); ++ else if (IS (p, CAST)) ++ victal_check_cast (SUB (p)); ++ else ++ a68_victal_checker (SUB (p)); ++ } ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-parser.cc +@@ -0,0 +1,1181 @@ ++/* ALGOL 68 parser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* ++ This is a Mailloux-type parser driver. ++ ++ The Algol 68 grammar is a two level (Van Wijngaarden, "VW") grammar ++ that incorporates, as syntactical rules, the semantical rules in ++ other languages. Examples are correct use of symbols, modes and ++ scope. ++ ++ This code constitutes an effective "VW Algol 68 parser". A ++ pragmatic approach was chosen since in the early days of Algol 68, ++ many "ab initio" implementations failed, probably because ++ techniques to parse a language like Algol 68 had yet to be ++ invented. ++ ++ This is a Mailloux-type parser, in the sense that it scans a ++ "phrase" for definitions needed for parsing. Algol 68 allows for ++ tags to be used before they are defined, which gives freedom in ++ top-down programming. ++ ++ B. J. Mailloux. On the implementation of Algol 68. ++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. ++ ++ Technically, Mailloux's approach renders the two-level grammar ++ LALR. ++ ++ First part of the parser is the scanner. The source file is read, is ++ tokenised. The result is a linear list of tokens that is input for the ++ parser, that will transform the linear list into a syntax tree. ++ ++ This front-end tokenises all symbols before the bottom-up parser is invoked. ++ This means that scanning does not use information from the parser. The ++ scanner does of course some rudimentary parsing. ++ ++ The scanner supports two stropping regimes: "bold" (or "upper") and ++ "quote". Examples of both: ++ ++ bold stropping: BEGIN INT i = 1, j = 1; print (i + j) END ++ ++ quote stropping: 'BEGIN' 'INT' I = 1, J = 1; PRINT (I + J) 'END' ++ ++ Quote stropping was used frequently in the (excusez-le-mot) ++ punch-card age. Hence, bold stropping is the default. There also ++ existed point stropping, but that has not been implemented here. ++ ++ Next part of the parser is a recursive-descent type to check ++ parenthesis. Also a first set-up is made of symbol tables, needed ++ by the bottom-up parser. Next part is the bottom-up parser, that ++ parses without knowing modes while parsing and reducing. It can ++ therefore not exchange "[]" with "()" as was blessed by the Revised ++ Report. This is solved by treating CALL and SLICE as equivalent for ++ the moment and letting the mode checker sort it out later. ++ ++ Parsing progresses in various phases to avoid spurious diagnostics ++ from a recovering parser. Every phase "tightens" the grammar more. ++ An error in any phase makes the parser quit when that phase ends. ++ The parser is forgiving in case of superfluous semicolons. ++ ++ These are the parser phases: ++ ++ (1) Parenthesis are checked to see whether they match. Then, a top-down ++ parser determines the basic-block structure of the program ++ so symbol tables can be set up that the bottom-up parser will consult ++ as you can define things before they are applied. ++ ++ (2) A bottom-up parser resolves the structure of the program. ++ ++ (3) After the symbol tables have been finalised, a small rearrangement of the ++ tree may be required where JUMPs have no GOTO. This leads to the ++ non-standard situation that JUMPs without GOTO can have the syntactic ++ position of a PRIMARY, SECONDARY or TERTIARY. The bottom-up parser also ++ does not check VICTAL correctness of declarers. This is done separately. ++ ++ The parser sets up symbol tables and populates them as far as needed to parse ++ the source. After the bottom-up parser terminates succesfully, the symbol tables ++ are completed. ++ ++ (4) Next, modes are collected and rules for well-formedness and structural ++ equivalence are applied. Then the symbol-table is completed now moids are ++ all known. ++ ++ (5) Next phases are the mode checker and coercion inserter. The syntax tree is ++ traversed to determine and check all modes, and to select operators. Then ++ the tree is traversed again to insert coercions. ++ ++ (6) A static scope checker detects where objects are transported out of scope. ++ At run time, a dynamic scope checker will check that what the static scope ++ checker cannot see. ++ ++ (7) A serial-clause dynamic stack allocation (DSA) phase annotates the ++ serial clauses that contain phrases whose elaboration may result in ++ dynamic stack adjustments. ++*/ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "diagnostic.h" ++#include "tree.h" ++ ++#include "a68.h" ++ ++/* Global state kept by the parser. */ ++ ++PARSER_T a68_parser_state; ++ ++/* A few forward declarations of functions defined below. */ ++ ++static void make_special_mode (MOID_T ** n, int m); ++static void tie_label_to_serial (NODE_T *p); ++static void tie_label_to_unit (NODE_T *p); ++ ++/* Is_ref_refety_flex. */ ++ ++bool ++a68_is_ref_refety_flex (MOID_T *m) ++{ ++ if (IS_REF_FLEX (m)) ++ return true; ++ else if (IS_REF (m)) ++ return a68_is_ref_refety_flex (SUB (m)); ++ else ++ return false; ++} ++ ++/* Count number of operands in operator parameter list. */ ++ ++int ++a68_count_operands (NODE_T *p) ++{ ++ if (p != NO_NODE) ++ { ++ if (IS (p, DECLARER)) ++ return a68_count_operands (NEXT (p)); ++ else if (IS (p, COMMA_SYMBOL)) ++ return 1 + a68_count_operands (NEXT (p)); ++ else ++ return a68_count_operands (NEXT (p)) + a68_count_operands (SUB (p)); ++ } ++ else ++ return 0; ++} ++ ++/* Count formal bounds in declarer in tree. */ ++ ++int ++a68_count_formal_bounds (NODE_T * p) ++{ ++ if (p == NO_NODE) ++ return 0; ++ else ++ { ++ if (IS (p, COMMA_SYMBOL)) ++ return 1; ++ else ++ return a68_count_formal_bounds (NEXT (p)) + a68_count_formal_bounds (SUB (p)); ++ } ++} ++ ++/* Count pictures. */ ++ ++void ++a68_count_pictures (NODE_T *p, int *k) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, PICTURE)) ++ (*k)++; ++ a68_count_pictures (SUB (p), k); ++ } ++} ++ ++/* Whether token cannot follow semicolon or EXIT. */ ++ ++bool ++a68_is_semicolon_less (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case BUS_SYMBOL: ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case SEMI_SYMBOL: ++ case EXIT_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_SYMBOL: ++ case FI_SYMBOL: ++ case IN_SYMBOL: ++ case OUT_SYMBOL: ++ case OUSE_SYMBOL: ++ case ESAC_SYMBOL: ++ case OD_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Whether formal bounds. */ ++ ++bool ++a68_is_formal_bounds (NODE_T *p) ++{ ++ if (p == NO_NODE) ++ return true; ++ ++ switch (ATTRIBUTE (p)) ++ { ++ case OPEN_SYMBOL: ++ case CLOSE_SYMBOL: ++ case SUB_SYMBOL: ++ case BUS_SYMBOL: ++ case COMMA_SYMBOL: ++ case COLON_SYMBOL: ++ case INT_DENOTATION: ++ case IDENTIFIER: ++ case OPERATOR: ++ return (a68_is_formal_bounds (SUB (p)) ++ && a68_is_formal_bounds (NEXT (p))); ++ default: ++ return false; ++ } ++} ++ ++/* Whether token terminates a unit. */ ++ ++bool ++a68_is_unit_terminator (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case BUS_SYMBOL: ++ case CLOSE_SYMBOL: ++ case END_SYMBOL: ++ case SEMI_SYMBOL: ++ case EXIT_SYMBOL: ++ case COMMA_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_SYMBOL: ++ case FI_SYMBOL: ++ case IN_SYMBOL: ++ case OUT_SYMBOL: ++ case OUSE_SYMBOL: ++ case ESAC_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Whether token is a unit-terminator in a loop clause. */ ++ ++bool ++a68_is_loop_keyword (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case BY_SYMBOL: ++ case TO_SYMBOL: ++ case WHILE_SYMBOL: ++ case DO_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Get good attribute. */ ++ ++enum a68_attribute ++a68_get_good_attribute (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case UNIT: ++ case TERTIARY: ++ case SECONDARY: ++ case PRIMARY: ++ return a68_get_good_attribute (SUB (p)); ++ default: ++ return ATTRIBUTE (p); ++ } ++} ++ ++/* Preferably don't put intelligible diagnostic here. */ ++ ++bool ++a68_dont_mark_here (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ALT_DO_SYMBOL: ++ case ALT_EQUALS_SYMBOL: ++ case ANDF_SYMBOL: ++ case ASSERT_SYMBOL: ++ case ASSIGN_SYMBOL: ++ case ASSIGN_TO_SYMBOL: ++ case AT_SYMBOL: ++ case BEGIN_SYMBOL: ++ case BITS_SYMBOL: ++ case BOLD_COMMENT_SYMBOL: ++ case BOLD_PRAGMAT_SYMBOL: ++ case BOLD_COMMENT_BEGIN_SYMBOL: ++ case BOLD_COMMENT_END_SYMBOL: ++ case BOOL_SYMBOL: ++ case BUS_SYMBOL: ++ case BY_SYMBOL: ++ case BYTES_SYMBOL: ++ case CASE_SYMBOL: ++ case CHANNEL_SYMBOL: ++ case CHAR_SYMBOL: ++ case CLOSE_SYMBOL: ++ case COLON_SYMBOL: ++ case COMMA_SYMBOL: ++ case COMPLEX_SYMBOL: ++ case COMPL_SYMBOL: ++ case DO_SYMBOL: ++ case ELIF_SYMBOL: ++ case ELSE_BAR_SYMBOL: ++ case ELSE_SYMBOL: ++ case EMPTY_SYMBOL: ++ case END_SYMBOL: ++ case EQUALS_SYMBOL: ++ case ESAC_SYMBOL: ++ case EXIT_SYMBOL: ++ case FALSE_SYMBOL: ++ case FILE_SYMBOL: ++ case FI_SYMBOL: ++ case FLEX_SYMBOL: ++ case FOR_SYMBOL: ++ case FROM_SYMBOL: ++ case GO_SYMBOL: ++ case GOTO_SYMBOL: ++ case HEAP_SYMBOL: ++ case IF_SYMBOL: ++ case IN_SYMBOL: ++ case INT_SYMBOL: ++ case ISNT_SYMBOL: ++ case IS_SYMBOL: ++ case LOC_SYMBOL: ++ case LONG_SYMBOL: ++ case MAIN_SYMBOL: ++ case MODE_SYMBOL: ++ case NIL_SYMBOL: ++ case OD_SYMBOL: ++ case OF_SYMBOL: ++ case OPEN_SYMBOL: ++ case OP_SYMBOL: ++ case ORF_SYMBOL: ++ case OUSE_SYMBOL: ++ case OUT_SYMBOL: ++ case PAR_SYMBOL: ++ case POINT_SYMBOL: ++ case PRIO_SYMBOL: ++ case PROC_SYMBOL: ++ case REAL_SYMBOL: ++ case REF_SYMBOL: ++ case ROWS_SYMBOL: ++ case ROW_SYMBOL: ++ case SEMA_SYMBOL: ++ case SEMI_SYMBOL: ++ case SHORT_SYMBOL: ++ case SKIP_SYMBOL: ++ case STRING_SYMBOL: ++ case STRUCT_SYMBOL: ++ case STYLE_I_COMMENT_SYMBOL: ++ case STYLE_II_COMMENT_SYMBOL: ++ case STYLE_I_PRAGMAT_SYMBOL: ++ case SUB_SYMBOL: ++ case THEN_BAR_SYMBOL: ++ case THEN_SYMBOL: ++ case TO_SYMBOL: ++ case TRUE_SYMBOL: ++ case UNION_SYMBOL: ++ case VOID_SYMBOL: ++ case WHILE_SYMBOL: ++ case SERIAL_CLAUSE: ++ case ENQUIRY_CLAUSE: ++ case INITIALISER_SERIES: ++ case DECLARATION_LIST: ++ case DEF_SYMBOL: ++ case FED_SYMBOL: ++ case POSTLUDE_SYMBOL: ++ case ACCESS_SYMBOL: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++/* Renumber nodes in the given subtree P, starting with number N. */ ++ ++static void ++renumber_nodes (NODE_T *p, int *n) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ NUMBER (p) = (*n)++; ++ renumber_nodes (SUB (p), n); ++ } ++} ++ ++/* Parse an ALGOL 68 source file. */ ++ ++void ++a68_parser (const char *filename) ++{ ++ int renum = 0; ++ ++ /* Initialisation. */ ++ A68 (top_keyword) = NO_KEYWORD; ++ A68 (top_token) = NO_TOKEN; ++ A68_PARSER (error_tag) = (TAG_T *) a68_new_tag (); ++ TOP_NODE (&A68_JOB) = NO_NODE; ++ TOP_MOID (&A68_JOB) = NO_MOID; ++ TOP_LINE (&A68_JOB) = NO_LINE; ++ STANDENV_MOID (&A68_JOB) = NO_MOID; ++ a68_set_up_tables (); ++ ERROR_COUNT (&A68_JOB) = WARNING_COUNT (&A68_JOB) = 0; ++ ++ /* Tokeniser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ bool ok = a68_lexical_analyser (filename); ++ ++ if (!ok) ++ return; ++ ++ /* An empty file is not a valid program. */ ++ if (TOP_NODE (&A68_JOB) == NO_NODE) ++ { ++ a68_error (NO_NODE, "file is empty, expected a program"); ++ return; ++ } ++ ++ TREE_LISTING_SAFE (&A68_JOB) = true; ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Final initialisations. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ A68_STANDENV = NO_TABLE; ++ a68_init_postulates (); ++ A68 (mode_count) = 0; ++ make_special_mode (&M_HIP, A68 (mode_count)++); ++ make_special_mode (&M_UNDEFINED, A68 (mode_count)++); ++ make_special_mode (&M_ERROR, A68 (mode_count)++); ++ make_special_mode (&M_VACUUM, A68 (mode_count)++); ++ make_special_mode (&M_C_STRING, A68 (mode_count)++); ++ make_special_mode (&M_COLLITEM, A68 (mode_count)++); ++ } ++ ++ /* Handle pragmats. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_handle_pragmats (TOP_NODE (&A68_JOB)); ++ ++ /* Top-down parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_check_parenthesis (TOP_NODE (&A68_JOB)); ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ if (OPTION_BRACKETS (&A68_JOB)) ++ a68_substitute_brackets (TOP_NODE (&A68_JOB)); ++ A68 (symbol_table_count) = 0; ++ A68_STANDENV = a68_new_symbol_table (NO_TABLE); ++ LEVEL (A68_STANDENV) = 0; ++ a68_top_down_parser (TOP_NODE (&A68_JOB)); ++ // printf ("AFTER TOP-DOWN\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB)); ++ } ++ ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Standard environment builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ TABLE (TOP_NODE (&A68_JOB)) = a68_new_symbol_table (A68_STANDENV); ++ a68_make_standard_environ (); ++ STANDENV_MOID (&A68_JOB) = TOP_MOID (&A68_JOB); ++ } ++ ++ /* Bottom-up parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_preliminary_symbol_table_setup (TOP_NODE (&A68_JOB)); ++ // printf ("AFTER PRELIMINARY SYMBOL TABLE SETUP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); ++ a68_bottom_up_parser (TOP_NODE (&A68_JOB)); ++ a68_bottom_up_coalesce_pub (TOP_NODE (&A68_JOB)); ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ // printf ("AFTER BOTTOM-UP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); ++ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_bottom_up_error_check (TOP_NODE (&A68_JOB)); ++ a68_victal_checker (TOP_NODE (&A68_JOB)); ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_finalise_symbol_table_setup (TOP_NODE (&A68_JOB), 1); ++ // printf ("AFTER FINALISE SYMBOL TABLE SETUP\n"); ++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true, true); ++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; ++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); ++ a68_fill_symbol_table_outer (TOP_NODE (&A68_JOB), TABLE (TOP_NODE (&A68_JOB))); ++ a68_set_nest (TOP_NODE (&A68_JOB), NO_NODE); ++ a68_set_proc_level (TOP_NODE (&A68_JOB), 1); ++ } ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Mode table builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_make_moid_list (&A68_JOB); ++ CROSS_REFERENCE_SAFE (&A68_JOB) = true; ++ ++ /* Symbol table builder. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_collect_taxes (TOP_NODE (&A68_JOB)); ++ ++ /* Post parser. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_rearrange_goto_less_jumps (TOP_NODE (&A68_JOB)); ++ ++ /* Mode checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ a68_mode_checker (TOP_NODE (&A68_JOB)); ++ ++ /* Coercion inserter. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_coercion_inserter (TOP_NODE (&A68_JOB)); ++ renum = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); ++ } ++ ++ /* Application checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_mark_moids (TOP_NODE (&A68_JOB)); ++ a68_mark_auxilliary (TOP_NODE (&A68_JOB)); ++ a68_jumps_from_procs (TOP_NODE (&A68_JOB)); ++ a68_warn_for_unused_tags (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Static scope checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ tie_label_to_serial (TOP_NODE (&A68_JOB)); ++ tie_label_to_unit (TOP_NODE (&A68_JOB)); ++ a68_bind_routine_tags_to_tree (TOP_NODE (&A68_JOB)); ++ a68_scope_checker (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Serial dynamic stack allocation checker. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ a68_serial_dsa (TOP_NODE (&A68_JOB)); ++ } ++ ++ /* Finalise syntax tree. */ ++ if (ERROR_COUNT (&A68_JOB) == 0) ++ { ++ int num = 0; ++ renumber_nodes (TOP_NODE (&A68_JOB), &num); ++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; ++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); ++ } ++} ++ ++/* New_node_info. */ ++ ++NODE_INFO_T * ++a68_new_node_info (void) ++{ ++ NODE_INFO_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_node_infos)++; ++ PROCEDURE_LEVEL (z) = 0; ++ CHAR_IN_LINE (z) = NO_TEXT; ++ SYMBOL (z) = NO_TEXT; ++ PRAGMAT (z) = NO_TEXT; ++ PRAGMAT_TYPE (z) = 0; ++ PRAGMAT_LINE (z) = NO_LINE; ++ PRAGMAT_CHAR_IN_LINE (z) = NO_TEXT; ++ COMMENT (z) = NO_TEXT; ++ COMMENT_TYPE (z) = 0; ++ COMMENT_LINE (z) = NO_LINE; ++ COMMENT_CHAR_IN_LINE (z) = NO_TEXT; ++ LINE (z) = NO_LINE; ++ return z; ++} ++ ++/* New_genie_info. */ ++ ++GINFO_T * ++a68_new_genie_info (void) ++{ ++ GINFO_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_genie_infos)++; ++ PARTIAL_PROC (z) = NO_MOID; ++ PARTIAL_LOCALE (z) = NO_MOID; ++ return z; ++} ++ ++/* Allocate and return a new parse tree node with proper defaults. */ ++ ++NODE_T * ++a68_new_node (void) ++{ ++ NODE_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_nodes)++; ++ TABLE (z) = NO_TABLE; ++ INFO (z) = NO_NINFO; ++ GINFO (z) = NO_GINFO; ++ ATTRIBUTE (z) = STOP; ++ ANNOTATION (z) = STOP; ++ MOID (z) = NO_MOID; ++ NEXT (z) = NO_NODE; ++ PREVIOUS (z) = NO_NODE; ++ SUB (z) = NO_NODE; ++ NEST (z) = NO_NODE; ++ NON_LOCAL (z) = NO_TABLE; ++ TAX (z) = NO_TAG; ++ SEQUENCE (z) = NO_NODE; ++ PACK (z) = NO_PACK; ++ CDECL (z) = NULL_TREE; ++ DYNAMIC_STACK_ALLOCS (z) = false; ++ PUBLICIZED (z) = false; ++ return z; ++} ++ ++/* Some_node. */ ++ ++NODE_T * ++a68_some_node (const char *t) ++{ ++ NODE_T *z = a68_new_node (); ++ INFO (z) = a68_new_node_info (); ++ GINFO (z) = a68_new_genie_info (); ++ NSYMBOL (z) = t; ++ return z; ++} ++ ++/* New_symbol_table. */ ++ ++TABLE_T * ++a68_new_symbol_table (TABLE_T *p) ++{ ++ TABLE_T *z = ggc_cleared_alloc (); ++ ++ NUM (z) = A68 (symbol_table_count); ++ LEVEL (z) = A68 (symbol_table_count)++; ++ NEST (z) = A68 (symbol_table_count); ++ ATTRIBUTE (z) = 0; ++ INITIALISE_FRAME (z) = true; ++ PROC_OPS (z) = true; ++ INITIALISE_ANON (z) = true; ++ PREVIOUS (z) = p; ++ OUTER (z) = NO_TABLE; ++ IDENTIFIERS (z) = NO_TAG; ++ OPERATORS (z) = NO_TAG; ++ MODULES (z) = NO_TAG; ++ PRIO (z) = NO_TAG; ++ INDICANTS (z) = NO_TAG; ++ LABELS (z) = NO_TAG; ++ ANONYMOUS (z) = NO_TAG; ++ JUMP_TO (z) = NO_NODE; ++ SEQUENCE (z) = NO_NODE; ++ PUBLIC_RANGE (z) = false; ++ return z; ++} ++ ++/* New_moid. */ ++ ++MOID_T * ++a68_new_moid (void) ++{ ++ MOID_T *z = ggc_cleared_alloc (); ++ ++ A68 (new_modes)++; ++ ATTRIBUTE (z) = 0; ++ NUMBER (z) = 0; ++ DIM (z) = 0; ++ USE (z) = false; ++ HAS_ROWS (z) = false; ++ PORTABLE (z) = true; ++ DERIVATE (z) = false; ++ NODE (z) = NO_NODE; ++ PACK (z) = NO_PACK; ++ SUB (z) = NO_MOID; ++ EQUIVALENT_MODE (z) = NO_MOID; ++ SLICE (z) = NO_MOID; ++ TRIM (z) = NO_MOID; ++ DEFLEXED (z) = NO_MOID; ++ NAME (z) = NO_MOID; ++ MULTIPLE_MODE (z) = NO_MOID; ++ NEXT (z) = NO_MOID; ++ CTYPE (z) = NULL_TREE; ++ ASM_LABEL (z) = NULL; ++ return z; ++} ++ ++/* New_pack. */ ++ ++PACK_T * ++a68_new_pack (void) ++{ ++ PACK_T *z = ggc_cleared_alloc (); ++ ++ MOID (z) = NO_MOID; ++ TEXT (z) = NO_TEXT; ++ NODE (z) = NO_NODE; ++ NEXT (z) = NO_PACK; ++ PREVIOUS (z) = NO_PACK; ++ return z; ++} ++ ++/* New_tag. */ ++ ++TAG_T * ++a68_new_tag (void) ++{ ++ TAG_T *z = ggc_cleared_alloc (); ++ ++ STATUS (z) = NULL_MASK; ++ TAG_TABLE (z) = NO_TABLE; ++ MOID (z) = NO_MOID; ++ NODE (z) = NO_NODE; ++ UNIT (z) = NO_NODE; ++ VALUE (z) = NO_TEXT; ++ SCOPE (z) = PRIMAL_SCOPE; ++ SCOPE_ASSIGNED (z) = false; ++ PRIO (z) = 0; ++ USE (z) = false; ++ IN_PROC (z) = false; ++ HEAP (z) = false; ++ YOUNGEST_ENVIRON (z) = PRIMAL_SCOPE; ++ LOC_ASSIGNED (z) = false; ++ NEXT (z) = NO_TAG; ++ BODY (z) = NO_TAG; ++ PORTABLE (z) = true; ++ VARIABLE (z) = false; ++ IS_RECURSIVE (z) = false; ++ PUBLICIZED (z) = true; /* XXX */ ++ EXPORTED (z) = false; ++ ASCRIBED_ROUTINE_TEXT (z) = false; ++ LOWERER (z) = NO_LOWERER; ++ TAX_TREE_DECL (z) = NULL_TREE; ++ MOIF (z) = NO_MOIF; ++ EXTERN_SYMBOL (z) = NO_TEXT; ++ NUMBER (z) = ++A68_PARSER (tag_number); ++ return z; ++} ++ ++/* Make special, internal mode. */ ++ ++static void ++make_special_mode (MOID_T ** n, int m) ++{ ++ (*n) = a68_new_moid (); ++ ATTRIBUTE (*n) = 0; ++ NUMBER (*n) = m; ++ PACK (*n) = NO_PACK; ++ SUB (*n) = NO_MOID; ++ EQUIVALENT (*n) = NO_MOID; ++ DEFLEXED (*n) = NO_MOID; ++ NAME (*n) = NO_MOID; ++ SLICE (*n) = NO_MOID; ++ TRIM (*n) = NO_MOID; ++ ROWED (*n) = NO_MOID; ++} ++ ++/* Whether attributes match in subsequent nodes. */ ++ ++bool ++a68_whether (NODE_T * p, ...) ++{ ++ va_list vl; ++ va_start (vl, p); ++ int a; ++ while ((a = va_arg (vl, int)) != STOP) ++ { ++ if (p != NO_NODE && a == WILDCARD) ++ FORWARD (p); ++ else if (p != NO_NODE && (a == KEYWORD)) ++ { ++ if (a68_find_keyword_from_attribute (A68 (top_keyword), ATTRIBUTE (p)) != NO_KEYWORD) ++ FORWARD (p); ++ else ++ { ++ va_end (vl); ++ return false; ++ } ++ } ++ else if (p != NO_NODE && (a >= 0 ? a == ATTRIBUTE (p) : (-a) != ATTRIBUTE (p))) ++ FORWARD (p); ++ else ++ { ++ va_end (vl); ++ return false; ++ } ++ } ++ va_end (vl); ++ return true; ++} ++ ++/* Whether one of a series of attributes matches a node. */ ++ ++bool ++a68_is_one_of (NODE_T *p, ...) ++{ ++ if (p != NO_NODE) ++ { ++ bool match = false; ++ int a; ++ ++ va_list vl; ++ va_start (vl, p); ++ while ((a = va_arg (vl, int)) != STOP) ++ match = (match | IS (p, a)); ++ va_end (vl); ++ return match; ++ } ++ else ++ return false; ++} ++ ++ ++/* Isolate nodes p-q making p a branch to p-q ++ ++ From x - p - a - b - c - q - y ++ To x - t - y ++ | ++ p - a - b - c - q ++*/ ++ ++void ++a68_make_sub (NODE_T *p, NODE_T *q, enum a68_attribute t) ++{ ++ NODE_T *z = a68_new_node (); ++ ++ gcc_assert (p != NO_NODE && q != NO_NODE); ++ *z = *p; ++ ++ if (GINFO (p) != NO_GINFO) ++ GINFO (z) = a68_new_genie_info (); ++ ++ PREVIOUS (z) = NO_NODE; ++ ++ if (p == q) ++ NEXT (z) = NO_NODE; ++ else ++ { ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = z; ++ NEXT (p) = NEXT (q); ++ if (NEXT (p) != NO_NODE) ++ PREVIOUS (NEXT (p)) = p; ++ NEXT (q) = NO_NODE; ++ } ++ ++ SUB (p) = z; ++ ATTRIBUTE (p) = t; ++} ++ ++/* Find symbol table at level I. */ ++ ++static TABLE_T * ++find_level (NODE_T *n, int i) ++{ ++ if (n == NO_NODE) ++ return NO_TABLE; ++ else ++ { ++ TABLE_T *s = TABLE (n); ++ ++ if (s != NO_TABLE && LEVEL (s) == i) ++ return s; ++ else if ((s = find_level (SUB (n), i)) != NO_TABLE) ++ return s; ++ else if ((s = find_level (NEXT (n), i)) != NO_TABLE) ++ return s; ++ else ++ return NO_TABLE; ++ } ++} ++ ++/* Whether P is top of lexical level. */ ++ ++bool ++a68_is_new_lexical_level (NODE_T *p) ++{ ++ switch (ATTRIBUTE (p)) ++ { ++ case ALT_DO_PART: ++ case BRIEF_ELIF_PART: ++ case BRIEF_OUSE_PART: ++ case BRIEF_CONFORMITY_OUSE_PART: ++ case CHOICE: ++ case CLOSED_CLAUSE: ++ case CONDITIONAL_CLAUSE: ++ case DO_PART: ++ case ELIF_PART: ++ case ELSE_PART: ++ case CASE_CLAUSE: ++ case CASE_CHOICE_CLAUSE: ++ case CASE_IN_PART: ++ case CASE_OUSE_PART: ++ case OUT_PART: ++ case ROUTINE_TEXT: ++ case SPECIFIED_UNIT: ++ case THEN_PART: ++ case CONFORMITY_CLAUSE: ++ case CONFORMITY_CHOICE: ++ case CONFORMITY_IN_PART: ++ case CONFORMITY_OUSE_PART: ++ case WHILE_PART: ++ case DEF_PART: ++ case POSTLUDE_PART: ++ case ACCESS_CLAUSE: ++ return true; ++ case MODULE_TEXT: ++ /* Module texts introduce an additional lexical level encompassing all ++ its parts only if it is endowed with revelations. */ ++ if (SUB (p) != NO_NODE && IS (SUB (p), REVELATION_PART)) ++ return true; ++ else ++ return false; ++ break; ++ default: ++ return false; ++ } ++} ++ ++/* ++ * Couple of utility functions. ++ */ ++ ++/* Safely append to buffer. */ ++ ++void ++a68_bufcat (char *dst, const char *src, int len) ++{ ++ if (src != NO_TEXT) { ++ char *d = dst; ++ const char *s = src; ++ int n = len; ++// Find end of dst and left-adjust; do not go past end ++ for (; n-- != 0 && d[0] != '\0'; d++) { ++ ; ++ } ++ int dlen = (int) (d - dst); ++ n = len - dlen; ++ if (n > 0) { ++ while (s[0] != '\0') { ++ if (n != 1) { ++ (d++)[0] = s[0]; ++ n--; ++ } ++ s++; ++ } ++ d[0] = '\0'; ++ } ++// Better sure than sorry ++ dst[len - 1] = '\0'; ++ } ++} ++ ++/* Safely copy to buffer. */ ++ ++void ++a68_bufcpy (char *dst, const char *src, int len) ++{ ++ if (src != NO_TEXT) { ++ char *d = dst; ++ const char *s = src; ++ int n = len; ++// Copy as many as fit ++ if (n > 0 && --n > 0) { ++ do { ++ if (((d++)[0] = (s++)[0]) == '\0') { ++ break; ++ } ++ } while (--n > 0); ++ } ++ if (n == 0 && len > 0) { ++// Not enough room in dst, so terminate ++ d[0] = '\0'; ++ } ++// Better sure than sorry ++ dst[len - 1] = '\0'; ++ } ++} ++ ++/* Make a new copy of concatenated strings. */ ++ ++char * ++a68_new_string (const char *t, ...) ++{ ++ va_list vl; ++ va_start (vl, t); ++ const char *q = t; ++ if (q == NO_TEXT) { ++ va_end (vl); ++ return NO_TEXT; ++ } ++ int len = 0; ++ while (q != NO_TEXT) { ++ len += (int) strlen (q); ++ q = va_arg (vl, char *); ++ } ++ va_end (vl); ++ len++; ++ char *z = (char *) xmalloc ((size_t) len); ++ z[0] = '\0'; ++ q = t; ++ va_start (vl, t); ++ while (q != NO_TEXT) { ++ a68_bufcat (z, q, len); ++ q = va_arg (vl, char *); ++ } ++ va_end (vl); ++ return z; ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label_to_serial (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, SERIAL_CLAUSE)) ++ { ++ bool valid_follow; ++ ++ if (NEXT (p) == NO_NODE) ++ valid_follow = true; ++ else if (IS (NEXT (p), CLOSE_SYMBOL)) ++ valid_follow = true; ++ else if (IS (NEXT (p), END_SYMBOL)) ++ valid_follow = true; ++ else if (IS (NEXT (p), OD_SYMBOL)) ++ valid_follow = true; ++ else ++ valid_follow = false; ++ ++ if (valid_follow) ++ JUMP_TO (TABLE (SUB (p))) = NO_NODE; ++ } ++ ++ tie_label_to_serial (SUB (p)); ++ } ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label (NODE_T *p, NODE_T *unit) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, DEFINING_IDENTIFIER)) ++ UNIT (TAX (p)) = unit; ++ tie_label (SUB (p), unit); ++ } ++} ++ ++/* Tie label to the clause it is defined in. */ ++ ++static void ++tie_label_to_unit (NODE_T *p) ++{ ++ for (; p != NO_NODE; FORWARD (p)) ++ { ++ if (IS (p, LABELED_UNIT)) ++ tie_label (SUB_SUB (p), NEXT_SUB (p)); ++ tie_label_to_unit (SUB (p)); ++ } ++} ++ ++/* Table with attribute names. */ ++ ++static const char *attribute_names[] = ++{ ++ "STOP", ++#define A68_ATTR(ATTR,DESCR) DESCR, ++#include "a68-parser-attrs.def" ++#undef A68_ATTR ++}; ++ ++/* Get the name of an attribute. */ ++ ++const char * ++a68_attribute_name (enum a68_attribute attr) ++{ ++ return attribute_names[attr]; ++} ++ ++/* Get the location of node P as a GCC location. */ ++ ++location_t ++a68_get_node_location (NODE_T *p) ++{ ++ LINE_T *line = LINE (INFO (p)); ++ ++ if (line == NO_LINE) ++ return UNKNOWN_LOCATION; ++ ++ unsigned line_number = NUMBER (line); ++ unsigned column_number = CHAR_IN_LINE (INFO (p)) - STRING (line) + 1; ++ const char *filename = FILENAME (line); ++ ++ location_t gcc_location; ++ ++ linemap_add (line_table, LC_ENTER, 0, filename, line_number); ++ linemap_line_start (line_table, line_number, 0); ++ gcc_location = linemap_position_for_column (line_table, column_number); ++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); ++ ++ return gcc_location; ++} ++ ++/* Get the location of POS inside LINE as a GCC location. */ ++ ++location_t ++a68_get_line_location (LINE_T *line, const char *pos) ++{ ++ location_t loc; ++ ++ linemap_add (line_table, LC_ENTER, 0, FILENAME (line), NUMBER (line)); ++ linemap_line_start (line_table, NUMBER (line), 0); ++ loc = linemap_position_for_column (line_table, pos - STRING (line) + 1); ++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); ++ return loc; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-postulates.cc +@@ -0,0 +1,103 @@ ++/* Postulates needed for improving equivalence of modes. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++/* Initialise use of postulate-lists. */ ++ ++void ++a68_init_postulates (void) ++{ ++ A68 (top_postulate) = NO_POSTULATE; ++ A68 (top_postulate_list) = NO_POSTULATE; ++} ++ ++/* Make old postulates available for new use. */ ++ ++void ++a68_free_postulate_list (POSTULATE_T *start, POSTULATE_T *stop) ++{ ++ if (start == stop) ++ return; ++ ++ POSTULATE_T *last = start; ++ for (; NEXT (last) != stop; FORWARD (last)) ++ ; ++ ++ NEXT (last) = A68 (top_postulate_list); ++ A68 (top_postulate_list) = start; ++} ++ ++/* Add postulates to postulate-list. */ ++ ++void ++a68_make_postulate (POSTULATE_T **p, MOID_T *a, MOID_T *b) ++{ ++ POSTULATE_T *new_one; ++ ++ if (A68 (top_postulate_list) != NO_POSTULATE) ++ { ++ new_one = A68 (top_postulate_list); ++ A68 (top_postulate_list) = A68 (top_postulate_list)->next; ++ } ++ else ++ { ++ new_one = (POSTULATE_T *) ggc_cleared_alloc (); ++ A68 (new_postulates)++; ++ } ++ ++ new_one->a = a; ++ new_one->b = b; ++ new_one->next = *p; ++ *p = new_one; ++} ++ ++/* Where postulates are in the list. */ ++ ++POSTULATE_T ++*a68_is_postulated_pair (POSTULATE_T *p, MOID_T *a, MOID_T *b) ++{ ++ for (; p != NO_POSTULATE; p = p->next) ++ { ++ if (p->a == a && p->b == b) ++ return p; ++ } ++ ++ return NO_POSTULATE; ++} ++ ++/* Where postulate is in the list. */ ++ ++POSTULATE_T ++*a68_is_postulated (POSTULATE_T *p, MOID_T *a) ++{ ++ for (; p != NO_POSTULATE; p = p->next) ++ { ++ if (p->a == a) ++ return p; ++ } ++ ++ return NO_POSTULATE; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68-tree.def +@@ -0,0 +1,24 @@ ++/* This file contains the definitions and documentation for the ++ additional tree codes used in the GNU Algol 68 compiler (see ++ tree.def for the standard codes). ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++/* Tree nodes used in the Algol68 frontend only. */ ++ ++/* ++Local variables: ++mode:c ++End: ++*/ +--- /dev/null ++++ b/src/gcc/algol68/a68-types.h +@@ -0,0 +1,1166 @@ ++/* Type definitions for the ALGOL 68 parser. ++ Copyright (C) 2001-2023 J. Marcel van der Veer. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ Original implementation by J. Marcel van der Veer. ++ Adapted for GCC by Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#ifndef __A68_TYPES_H__ ++#define __A68_TYPES_H__ ++ ++#include "config.h" ++#include "system.h" ++ ++#include ++#include "vec.h" ++ ++/* Enumerations. */ ++ ++enum a68_stropping ++{ ++ UPPER_STROPPING, ++ SUPPER_STROPPING ++}; ++ ++enum a68_attribute ++{ ++ STOP = 0, ++#define A68_ATTR(ATTR,DESCR) ATTR, ++#include "a68-parser-attrs.def" ++#undef A68_ATTR ++}; ++ ++enum a68_tree_index ++{ ++ /* Type trees. */ ++ ATI_VOID_TYPE, ++ ATI_BOOL_TYPE, ++ ATI_CHAR_TYPE, ++ ATI_SHORT_SHORT_BITS_TYPE, ++ ATI_SHORT_BITS_TYPE, ++ ATI_BITS_TYPE, ++ ATI_LONG_BITS_TYPE, ++ ATI_LONG_LONG_BITS_TYPE, ++ ATI_BYTES_TYPE, ++ ATI_LONG_BYTES_TYPE, ++ ATI_SHORT_SHORT_INT_TYPE, ++ ATI_SHORT_INT_TYPE, ++ ATI_INT_TYPE, ++ ATI_LONG_INT_TYPE, ++ ATI_LONG_LONG_INT_TYPE, ++ ATI_REAL_TYPE, ++ ATI_LONG_REAL_TYPE, ++ ATI_LONG_LONG_REAL_TYPE, ++ /* Sentinel. */ ++ ATI_MAX ++}; ++ ++/* ++ * Type definitions. ++ */ ++ ++typedef char BUFFER[BUFFER_SIZE + 1]; ++ ++typedef struct MODES_T MODES_T; ++typedef struct NODE_T NODE_T; ++typedef struct MODE_CACHE_T MODE_CACHE_T; ++typedef struct MOID_T MOID_T; ++typedef struct GINFO_T GINFO_T; ++typedef struct KEYWORD_T KEYWORD_T; ++typedef struct LINE_T LINE_T; ++typedef struct NODE_INFO_T NODE_INFO_T; ++typedef struct PACK_T PACK_T; ++typedef struct SOID_T SOID_T; ++typedef struct TABLE_T TABLE_T; ++typedef struct TAG_T TAG_T; ++typedef struct TOKEN_T TOKEN_T; ++typedef struct ORIGIN_T ORIGIN_T; ++typedef struct POSTULATE_T POSTULATE_T; ++typedef struct OPTIONS_T OPTIONS_T; ++typedef struct PARSER_T PARSER_T; ++typedef struct MODULE_T MODULE_T; ++typedef struct EXTRACT_T EXTRACT_T; ++typedef struct MOIF_T MOIF_T; ++typedef struct A68_T A68_T; ++ ++#define NO_A68_REF ((A68_REF *) 0) ++#define NO_ARRAY ((A68_ARRAY *) 0) ++#define NO_BOOK ((BOOK_T *) 0) ++#define NO_BOOL ((bool *) 0) ++#define NO_BYTE ((BYTE_T *) 0) ++#define NO_CONSTANT ((void *) 0) ++#define NO_DEC ((DEC_T *) 0) ++#define NO_EDLIN ((EDLIN_T *) 0) ++#define NO_FILE ((FILE *) 0) ++#define NO_FORMAT ((A68_FORMAT *) 0) ++#define NO_GINFO ((GINFO_T *) 0) ++#define NO_GPROC ((void (*) (NODE_T *)) 0) ++#define NO_HANDLE ((A68_HANDLE *) 0) ++#define NO_INT ((int *) 0) ++#define NO_JMP_BUF ((jmp_buf *) 0) ++#define NO_KEYWORD ((KEYWORD_T *) 0) ++#define NO_NINFO ((NODE_INFO_T *) 0) ++#define NO_NOTE ((void (*) (NODE_T *)) 0) ++#define NO_OPTION_LIST ((OPTION_LIST_T *) 0) ++#define NO_PACK ((PACK_T *) 0) ++#define NO_PPROC ((PROP_T (*) (NODE_T *)) 0) ++#define NO_PROCEDURE ((A68_PROCEDURE *) 0) ++#define NO_REAL ((REAL_T *) 0) ++#define NO_REFINEMENT ((REFINEMENT_T *) 0) ++#define NO_REGMATCH ((regmatch_t *) 0) ++#define NO_SCOPE ((SCOPE_T *) 0) ++#define NO_SOID ((SOID_T *) 0) ++#define NO_STREAM NO_FILE ++#define NO_TEXT ((char *) 0) ++#define NO_TICK ((bool *) 0) ++#define NO_TOKEN ((TOKEN_T *) 0) ++#define NO_TUPLE ((A68_TUPLE *) 0) ++#define NO_VAR (0) ++ ++/* A STATUS_MASK_T is a word of flags denoting states. ++ ++ Status masks are used in parse tree nodes (NODE_T) and in entries in the ++ symbol table (TAG_T). ++ ++ ++ SCOPE_ERROR_MASK is used by the static scope checker in order to avoid ++ emitting duplicated scope warnings. */ ++ ++typedef uint32_t STATUS_MASK_T; ++ ++#define STATUS_CLEAR(p, q) {STATUS (p) &= (~(q));} ++#define STATUS_SET(p, q) {STATUS (p) |= (q);} ++#define STATUS_TEST(p, q) ((STATUS (p) & (q)) != (uint32_t) 0) ++ ++#define NULL_MASK ((STATUS_MASK_T) 0x00000000) ++#define SCOPE_ERROR_MASK ((STATUS_MASK_T) 0x00000200) ++ ++/* Structure containing the lowering context which is propagated while calling ++ the lowering handlers. */ ++ ++struct LOW_CTX_T ++{ ++ /* The common declarer in a declaration list. */ ++ NODE_T **declarer; ++ /* The defining identifier of the procedure declaration being processed, or ++ NO_NODE. This is set by a68_lower_procedure_declaration and used by ++ a68_lower_routine_text. */ ++ NODE_T *proc_decl_identifier; ++ /* If proc_decl_identifier is no NO_NODE, this denotes whether the ++ declaration being processed is of an operator. */ ++ bool proc_decl_operator; ++ /* Name of current module definition, or NULL. */ ++ const char *module_definition_name; ++ /* For debugging purposes. */ ++ int level; ++}; ++ ++typedef struct LOW_CTX_T LOW_CTX_T; ++ ++/* Type of the lowerer routines defined in a68-low-prelude.cc. */ ++typedef tree (*LOWERER_T) (struct NODE_T *, struct LOW_CTX_T); ++ ++#define NO_LOWERER a68_lower_unimplemented ++ ++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) KEYWORD_T ++{ ++ enum a68_attribute attribute; ++ const char *text; ++ KEYWORD_T *less, *more; ++}; ++ ++/* A MOID_T represents a mode indicator. ++ ++ NUMBER is an unique number assigned to the moid when it gets created. A ++ renumber_moids function exists in a68-parser-modes.cc but it dosn't seem to ++ be used at all. ++ ++ ATTRIBUTE characterizes the kind of mode and is one of the values defined in ++ a68-parser-attrs.def. Valid values are: ++ ++ PROC_SYMBOL for procecure modes. ++ ROWS_SYMBOL for row modes. ++ REF_SYMBOL for reference modes. ++ FLEX_SYMBOL for flexible reference modes. ++ STRUCT_SYMBOL for struct modes. ++ UNION_SYMBOL for union modes. ++ IN_TYPE_MODE for XXX modes. ++ OUT_TYPE_MODE for XXX modes. ++ SERIES_MODE for XXX modes. ++ INDICANT for XXX modes. ++ MODULE_INDICANT for XXX modules. ++ STANDARD for standard modes. ++ ++ NODE is a parse tree node XXX. ++ ++ HAS_ROWS is true if the mode contains rows somewhere in its internal ++ structure. ++ ++ The interpretation of SUB depends on the kind of mode: ++ - For REF modes it is the referred mode. ++ - For FLEX modes it is the referred mode. ++ - For ROW modes it is the mode of the elements. ++ - For PROC modes it is the mode of the value yielded by the procedure. ++ ++ The interpretation of DIM depends on the kind of mode: ++ - In VOID_SYMBOL, STANDARD or INDICANT mode, if DIM is positive it ++ specifies the size of the longsety of the mode. If DIM is negative then ++ abs (DIM) is the size of hte shortsety of the mode. ++ - In ROW modes, DIM is the number of dimensions. ++ - In STRUCT modes, DIM is the number of fields. ++ - In UNION modes, DIM is the number of united modes. ++ - In PROC_SYMBOL modes, DIM is the number of arguments. ++ - In SERIES_MODE and STOWED_MODE modes, DIM is the number modes. ++ ++ SLICE is the mode resulting from slicing a value of this mode. For example, ++ slicing a M_ROW_INT yields a M_INT. ++ ++ EQUIVALENT_MODE (referred as EQUIVALENT), for INDICANTs it is its declarer ++ mode (in MODE FOO = BAR FOO is the indicant and BAR is its declarer) and for ++ STANDARD modes it may be a mode that reflects its structure. ++ ++ USE is used by the is_well_formed function, which detects whether a mode is ++ well formed, i.e. that the mode doesn't refer to itself nor it relates to ++ void. ++ ++ DEFLEXED_MODE is like the current mode, but without FLEX. Only defined for ++ modes that have a SUB, i.e. REF, FLEX, ROW and PROC. In other modes this is ++ NO_MODE. ++ ++ For refs to structs, rows or flex, NAME points to the corresponding name ++ mode. For example, for a mode REF STRUCT (INT i, REAL x), NAME points to a ++ mode STRUCT (REF INT i, REF REAL x). This is used for selections. ++ ++ For rows of structs, rows or flex, MULTIPLE points to the corresponding row ++ mode. For example, for a mode [] STRUCT (INT i, REAL x), MULTIPLE points to ++ a mode STRUCT ([]INT i, []REAL x). This is used for selections. ++ ++ PACK is a pack of moids. For a STOWED_MODE, it contains the modes of the ++ arguments of a procedure, or the modes of the units in a collateral clause. ++ For a SERIES_MODE, it contains the modes of the completing units in a serial ++ clause, the alternatives in a conformity clause, the alternatives in a ++ CONDITIONAL_CLAUSE, the alternatives in a CASE_CLAUSE, ++ ++ CTYPE is a GCC GENERIC tree corresponding to this mode. It is computed and ++ installed by a68_lower_moid. ++ ++ ASM_LABEL is an assembly label used by a68_asm_output_mode. */ ++ ++#define NO_MOID ((MOID_T *) 0) ++ ++struct GTY((chain_next ("%h.next"))) MOID_T ++{ ++ int number; ++ int attribute; ++ int dim; ++ bool has_rows, use, portable, derivate; ++ NODE_T *node; ++ PACK_T *pack; ++ MOID_T *sub, *equivalent_mode, *slice, *deflexed_mode, *name, *multiple_mode, *next, *rowed, *trim; ++ tree ctype; ++ const char *asm_label; ++}; ++ ++/* A MODES_T struct contains a collection of particular pre-defined modes. ++ ++ These modes are initialized by either stand_moids or make_special_mode. ++ They are commonly referred using the corresponding M_* macros. ++ ++ ROWS is a mode to which any ROW mode can be strongly coerced. It is used as ++ the mode of the second operand of the ELEMS, LWB and UPB operators. ++ ++ HIP is the mode of NIL. */ ++ ++struct MODES_T ++{ ++ MOID_T *BITS, *BOOL, *BYTES, *CHANNEL, *CHAR, *COLLITEM, *COMPL, *COMPLEX, ++ *C_STRING, *ERROR, *FILE, *FORMAT, *HEX_NUMBER, *HIP, *INT, *LONG_BITS, *LONG_BYTES, ++ *LONG_COMPL, *LONG_COMPLEX, *LONG_INT, *LONG_LONG_BITS, *LONG_LONG_COMPL, ++ *LONG_LONG_COMPLEX, *LONG_LONG_INT, *LONG_LONG_REAL, *LONG_REAL, *NUMBER, ++ *PROC_REAL_REAL, *PROC_LONG_REAL_LONG_REAL, *PROC_REF_FILE_BOOL, *PROC_REF_FILE_VOID, *PROC_ROW_CHAR, ++ *PROC_STRING, *PROC_VOID, *REAL, *REF_BITS, *REF_BOOL, *REF_BYTES, ++ *REF_CHAR, *REF_COMPL, *REF_COMPLEX, *REF_FILE, *REF_INT, ++ *REF_LONG_BITS, *REF_LONG_BYTES, *REF_LONG_COMPL, *REF_LONG_COMPLEX, ++ *REF_LONG_INT, *REF_LONG_LONG_BITS, *REF_LONG_LONG_COMPL, ++ *REF_LONG_LONG_COMPLEX, *REF_LONG_LONG_INT, *REF_LONG_LONG_REAL, *REF_LONG_REAL, ++ *REF_REAL, *REF_REF_FILE, *REF_ROW_CHAR, *REF_ROW_COMPLEX, *REF_ROW_INT, ++ *REF_ROW_REAL, *REF_ROW_ROW_COMPLEX, *REF_ROW_ROW_REAL, ++ *REF_SHORT_BITS, *REF_SHORT_SHORT_BITS, *REF_SHORT_INT, ++ *REF_SHORT_SHORT_INT, *REF_STRING, ++ *ROW_BITS, *ROW_BOOL, *ROW_CHAR, *ROW_COMPLEX, *ROW_INT, *ROW_LONG_BITS, *ROW_LONG_LONG_BITS, ++ *ROW_REAL, *ROW_ROW_CHAR, *ROW_ROW_COMPLEX, *ROW_ROW_REAL, *ROWS, *ROW_SIMPLIN, *ROW_SIMPLOUT, ++ *ROW_STRING, *SEMA, *SHORT_BITS, *SHORT_SHORT_BITS, *SHORT_INT, *SHORT_SHORT_INT, ++ *SIMPLIN, *SIMPLOUT, *STRING, *FLEX_ROW_CHAR, ++ *FLEX_ROW_BOOL, *UNDEFINED, *VACUUM, *VOID; ++}; ++ ++/* The OPTIONS_T structure record which front-end options have been activated. ++ Each option OPTION has a corresponding GCC -f[no-]a68-OPTION command-line ++ switch that can be used to activate or deactivate it. ++ ++ STROPPING indicates the stropping regime in use. It can be UPPER_STROPPING ++ or SUPPER_STROPPING. ++ ++ BRACKETS indicates whether [ .. ] and { .. } are equivalent to ( .. ). ++ ++ STRICT indicates that no ALGOL 68 extension is allowed. ++ ++ ASSERT indicates whether to generate code for assertions. ++ ++ BOUNDS_CHECKING indicates whether to perform array bound checking at ++ run-time. ++ ++ NIL_CHECKING indicates whether to check for NIL when dereferencing at ++ run-time. */ ++ ++struct GTY(()) OPTIONS_T ++{ ++ enum a68_stropping stropping; ++ bool brackets; ++ bool strict; ++ bool assert; ++ bool bounds_checking; ++ bool nil_checking; ++}; ++ ++/* The access class static property of a stored value determines how the value ++ can be reached at run-time. It is used by the lowering pass in order to ++ minimize copies at run-time. ++ ++ CONSTANT is for constant literals. At run-time these literals will either ++ reside in operand instructions or in space allocated in CONSTAB%. ++ ++ DIRIDEN (direct identifier) means that the value is stored on IDST% at some ++ static address. This is the access class used for values ascribed to ++ identifiers as long as the block in hich they are declared has not been ++ left. It is also used for values resulting from actions such as the ++ selection from a value possessed by an identifier or the dereferencing fo a ++ name corespodning to a variable. ++ ++ VARIDEN (variable identifier) is used for values which are names/variables. ++ The name is stored on IDST%. The static elaboration of the dereferencing of ++ a variable with access VARIDEN results in a value with access DIRIDEN, not ++ requiring any run-time action. Same happens with selections of variables of ++ access VARIDEN. ++ ++ INDIDEN (indirect identifier) is used for values that are stored in a memory ++ location in IDST%. The static elaboration of a dereferencing applied to a ++ value of access DIRIDEN. ++ ++ DIRWOST (direct working stack) is very much like DIRIDEN, except that the ++ value is stored in WOST% rathern than in IDST%. This access is used for the ++ result of an action when this result does not preexist in memory and hence ++ has to be constructed in WOST%. ++ ++ INDWOST (indirect working stack) is very similar to INDIDEN. Such an access ++ can be obtained for example through the static elaboration of the ++ dereferencing of a name the access of which is DIRWOST. ++ ++ NIHIL is used to characterize the absence of value. This is used in the ++ static elaboration of a jump, a voiding and a call ith a void result. ++ ++ Note that in all these classes we assume as run-time the intermediate ++ language level we are lowering to, i.e. GENERIC. A DIRIDEN value, for ++ example, can very well stored in a register depending on further compiler ++ optimizations. */ ++ ++#define ACCESS_NIHIL 0 ++#define ACCESS_CONSTANT 1 ++#define ACCESS_DIRIDEN 2 ++#define ACCESS_INDIDEN 3 ++#define ACCESS_DIRWOST 4 ++ ++/* A NODE_T is a node in the A68 Syntax tree produced by the lexer-scanner and ++ later expanded by the Mailloux parser. ++ ++ NUMBER identifies the node uniquely in the syntax tree. ++ ++ ATTRIBUTE is a code that specifies the kind of entity denoted by the node. ++ Valid attributes are defined in the enumeration a68_attribute above in ++ this file. Examples of attributes are ELIF_PART, GOTO_SYMBOL or BOLD_TAG. ++ ++ ANNOTATION provides a way to annotate a node with a reference to another ++ node attribute. This is currently used by the mode checker to annotate ++ indexer nodes as slicer or as trimmers. ++ ++ TYPE (accessed as MOID) is either NO_MOID if the entity denoted by the node ++ doesn't have a mode, or a suitable MOID_T reflecting the mode of the entity. ++ This attribute is calculated and set in all the nodes of the tree by the ++ mode collection and checker pass implemented by make_moid_list. ++ ++ INFO contains additional attributes of the node. See NODE_INFO_T below. ++ ++ NEXT, PREVIOUS and SUB are links to other tree nodes. They are used to link ++ the syntax tree structure from the top: ++ ++ TOP <-> N <-> N <-> ... ++ | < is PREVIOUS ++ N <-> N <-> ... > is NEXT ++ | | is SUB ++ N <-> ... ++ ++ SEQUENCE is a link to another tree node. It is used by the tax collector ++ (symbol table builder) in order to handle DO .. OD ranges. ++ ++ NEST is a link to another tree node, which is the NEST for the current node. ++ It is set by the tax collector (symbol table builder) and it is used for ++ diagnostics. ++ ++ PACK (accessed as NODE_PACK) is either NO_PACK or an instance of the PACK_T ++ structure defined below. It is used by the modes checker. ++ ++ STATUS is a mask of flags, used by several passes that handle nodes. Valid status flags are: ++ ++ SYMBOL_TABLE (accessed as TABLE) is either NO_TABLE or a TABLE_T containing ++ a symbol table introduced by the entity denoted by the tree node. These ++ nodes are the ones introducing ranges: BEGIN, DO, etc. ++ ++ NON_LOCAL is either NO_TABLE, if the environ established by the node is ++ local, or a pointer to a TABLE_T identifying the non-local environment ++ associated with the tree node. It is set by the static scope checker. See ++ 3.2.2 and 5.2.3.2.b in the report for its application in the handling of ++ local generators in serial clauses. ++ ++ TAG (accessed as TAX) is either NO_TAG or a TAG_T used to bind identifier ++ nodes, routine texts and other indicants to their corresponding entry in a ++ symbol table. This is set by the taxes collector. ++ ++ The following fields are static properties managed an used in the lowering ++ pass. ++ ++ ORIGIN is a static property that describes the history of the entity denoted ++ by the node. This is only used in nodes denoting values. ++ ++ DYNAMIC_STACK_ALLOCS is a flag used in serial clause nodes. It determines ++ whether the elaboration of the phrases in the serial clause may involve ++ dynamic stack allocation. This is used by the lower pass, along with ++ NON_LOCAL above, in order to properly manage the stack pointer while ++ lowering these clauses. ++ ++ PUBLICIZED is true for DEFINING_OPERATOR, DEFINING_IDENTIFIER and ++ DEFINING_INDICANT nodes that appear in declarations marked with PUB. ++ ++ CDECL is a GCC GENERIC tree corresponding to a DECL_FIELD for FIELD ++ nodes. */ ++ ++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) NODE_T ++{ ++ GINFO_T *genie; ++ int number; ++ enum a68_attribute attribute; ++ enum a68_attribute annotation; ++ MOID_T *type; ++ NODE_INFO_T *info; ++ NODE_T *next, *previous, *sub; ++ NODE_T *sequence, *nest; ++ PACK_T *pack; ++ STATUS_MASK_T status; ++ TABLE_T *symbol_table; ++ TABLE_T *non_local; ++ TAG_T *tag; ++ tree cdecl; ++ bool dynamic_stack_allocs; ++ bool publicized; ++}; ++ ++#define NO_NODE ((NODE_T *) 0) ++ ++/* A NODE_INFO_T struct contains additional attributes of a NODE_T parse tree ++ node. ++ ++ PROCEDURE_LEVEL indicates how lexically deep the tree node is in terms of ++ routine texts. This attribute is set for all the nodes in the syntax tree ++ by the taxes collector and originally used by ALGOL 68 Genie's monitor. ++ Even if at the moment this is not used by GCC, this field and the ++ correponding machinery is still here in case it is useful in the future. ++ ++ PRIORITY (accessed as PRIO) is used by operator tree nodes and specifies the ++ priority of the operator denoted by the node. This is set tree wide by the ++ bottom-up parser. ++ ++ SYMBOL (accessed indirectly as NSYMBOL) contains the symbol value, a string, ++ corresponding to the tree node. This is used by tree nodes representing ++ tokens such as bold tags, keywords and identifiers. The symbols are set by ++ the parser-scanner. ++ ++ LINE is a pointer to the source line from which the tree node originates. ++ This is set for tree nodes representing tokens and is set by the ++ parser-scanner. */ ++ ++struct GTY(()) NODE_INFO_T ++{ ++ int procedure_level; ++ int priority; ++ char * GTY((skip)) char_in_line; ++ int comment_type; ++ char * GTY((skip)) comment; ++ LINE_T *comment_line; ++ char * GTY((skip)) comment_char_in_line; ++ int pragmat_type; ++ char * GTY((skip)) pragmat; ++ LINE_T *pragmat_line; ++ char * GTY((skip)) pragmat_char_in_line; ++ const char *symbol; ++ LINE_T *line; ++}; ++ ++struct GTY(()) GINFO_T ++{ ++ MOID_T *partial_proc, *partial_locale; ++}; ++ ++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) PACK_T ++{ ++ MOID_T *type; ++ const char *text; ++ NODE_T *node; ++ PACK_T *next, *previous; ++}; ++ ++/* Postulates. */ ++ ++struct GTY((chain_next ("%h.next"))) POSTULATE_T ++{ ++ MOID_T *a, *b; ++ POSTULATE_T *next; ++}; ++ ++#define NO_POSTULATE ((POSTULATE_T *) 0) ++ ++struct GTY((chain_next ("%h.next"))) SOID_T ++{ ++ int attribute, sort, cast; ++ MOID_T *type; ++ NODE_T *node; ++ SOID_T *next; ++}; ++ ++struct GTY((chain_next ("%h.next"))) LINE_T ++{ ++ char marker[6]; ++ char * GTY((skip)) string; ++ const char *filename; ++ int number; ++ LINE_T *next, *previous; ++}; ++#define NO_LINE ((LINE_T *) 0) ++ ++/* Symbol table. ++ ++ PUBLIC_RANGE is true in ranges whose declarations may be made accessible to ++ other compilation units. decl trees lowered for declarations in public ++ ranges will be put in the top-level block. This is used for top-level ++ module declarations. */ ++ ++struct GTY(()) TABLE_T ++{ ++ int num, level, nest, attribute; ++ bool initialise_frame, initialise_anon, proc_ops, public_range; ++ TABLE_T *previous, *outer; ++ TAG_T *identifiers, *operators, *modules, *priority, *indicants, *labels, *anonymous; ++ NODE_T *jump_to, *sequence; ++}; ++#define NO_TABLE ((TABLE_T *) 0) ++ ++/* A TAG_T structure denotes an entry in the symbol table. Each entry ++ corresponds to an identity. ++ ++ TAX: TAG; TAB; TAD; TAM; ++ ++ TYPE is the mode of the entry. ++ ++ NODE is the defining identifier associated to the declaration. ++ ++ SCOPE is the lexical depth of the tag. Zero corresponds to the primal ++ scope. It is set by the static scope checker. ++ ++ SCOPE_ASSIGNED determines whether a SCOPE has been actually assigned to the ++ tag. It is set by the static scope checker. The entities which get ++ assigned scopes are identities of format texts and routine texts. ++ ++ PORTABLE determines whether the construction associated with the tag is ++ Algol 68 or some extension. ++ ++ VARIABLE is set when the defining identifier in NODE is defined in a ++ variable declaration, as opposed to an identity declaration. This is set by ++ extract_variables and is used by the lowering pass. ++ ++ HEAP is used for defining identifier in NODE is defined in a variable ++ declaration. It is HEAP_SYMBOL or LOC_SYMBOL. ++ ++ IS_RECURSIVE is set for mode indicants whose definition is recursive, ++ i.e. they appear in actual declarers within its own definition. ++ ++ PUBLICIZED is set for tags that are marked as public and therefore shall be ++ exported as part of a module interface. ++ ++ EXPORTED is set for DEFINING_MODULEs whose module interface is to be ++ exported. ++ ++ ASCRIBED_ROUTINE_TEXT is set when the defining identifier is ascribed a ++ routine-text in an identity declaration. ++ ++ IN_PROC is set when the defining identifier has been set in a ++ proc-identity-declaration or in a brief-op-declaration. These declarations ++ are optimized in a similar way than variable declarations in order to avoid ++ indirect addressing. ++ ++ YOUNGEST_ENVIRON is used when NODE is either a ROUTINE_TEXT or a ++ FORMAT_TEXT, and contains the youngest (higher) lexical level of any object ++ directly declared in the routine or format body. This is filled in and used ++ by the scope checker. ++ ++ TREE_DECL is the GENERIC declaration for the definition of this symbol. ++ This is set and used by the lower pass. For mode indicants, it contains a ++ function that generates a pointer to the given mode, and is used by ++ a68_low_generator to handle recursive modes. ++ ++ MOIF is a list of module interfaces. This is used in ACCESS_CLAUSE nodes. ++ ++ EXTERN_SYMBOL is a string with the symbol that was obtained from an imported ++ module declaration. This is only used in entries where MOIF is not NO_MOIF. ++ ++ LOWERER is a lowering routine defined in a68-low-prelude.cc. These are used ++ in taxes that denote some pre-defined operator. */ ++ ++struct GTY((chain_next ("%h.next"))) TAG_T ++{ ++ TABLE_T *symbol_table; ++ MOID_T *type; ++ NODE_T *node, *unit; ++ const char *value; ++ bool scope_assigned, use, in_proc, loc_assigned, portable, variable; ++ bool ascribed_routine_text, is_recursive, publicized, exported; ++ int priority, heap, scope, youngest_environ, number; ++ STATUS_MASK_T status; ++ tree tree_decl; ++ MOIF_T *moif; ++ LOWERER_T lowerer; ++ TAG_T *next, *body; ++ const char *extern_symbol; ++}; ++#define NO_TAG ((TAG_T *) 0) ++ ++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) TOKEN_T ++{ ++ const char *text; ++ TOKEN_T *less, *more; ++}; ++#define NO_TOKEN ((TOKEN_T *) 0) ++ ++struct GTY(()) MODULE_T ++{ ++ bool tree_listing_safe, cross_reference_safe; ++ int error_count, warning_count, source_scan; ++ LINE_T *top_line; ++ MOID_T *top_moid, *standenv_moid; ++ NODE_T *top_node; ++ OPTIONS_T options; ++ FILE * GTY ((skip)) file_source_fd; ++ const char *file_source_name; ++ struct ++ { ++ LINE_T *save_l; ++ char * GTY((skip)) save_s, GTY((skip)) save_c; ++ } scan_state; ++}; ++ ++/* Module interface extracts. ++ ++ KIND is the kind of extract. One of the GA68_EXTRACT_* codes defined in ++ a68-exports.cc. ++ ++ SYMBOL is a string with the symbol name for the entity represented by the ++ extract. It is mangled. ++ ++ MODE applies to identifier, operator and indicatione extracts. ++ ++ PRIORITY is the priority number in a priority extract. ++ ++ VARIABLE applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts, and ++ indicates whether the exported symbol was declared via a variable ++ declaration. These decls are optimized and don't require indirect ++ addressing. This is compiler-specific and part of mdextra. ++ ++ IN_PROC applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts. If ++ set, the exported symbol shall not be indirected. This is compiler-specific ++ and part of mdextra. */ ++ ++struct GTY(()) EXTRACT_T ++{ ++ unsigned int kind; ++ const char *symbol; ++ MOID_T *mode; ++ int priority; ++ bool variable, in_proc; ++}; ++ ++/* Module interfaces. ++ ++ VERSION is the version of the exports format to report in the encoded data. ++ ++ NAME is the name of the module as it is accessed at the source level, which ++ corresponds to a bold word. ++ ++ PRELUDE and POSTLUDE are mangled symbols corresponding to the entry points ++ of the module's prelude and postlude. ++ ++ MODES is a vector of modes which conform the modes table of the module ++ interface. ++ ++ MODULES is a vector of TAGs for module extracts. ++ INDICANTS is a vector of TAGs for mode extracts. ++ IDENTIFIERS is a vector of TAGs for identifier extracts. ++ PRIOS is a vector of TAGs for operator priorities. */ ++ ++#define NO_MOIF ((MOIF_T *) 0) ++ ++struct GTY(()) MOIF_T ++{ ++ unsigned int version; ++ const char *name; ++ const char *prelude; ++ const char *postlude; ++ vec *modes; ++ vec *modules; ++ vec *indicants; ++ vec *identifiers; ++ vec *prios; ++ vec *operators; ++}; ++ ++struct MODE_CACHE_T ++{ ++ MOID_T *proc_bool; ++ MOID_T *proc_char; ++ MOID_T *proc_complex_complex; ++ MOID_T *proc_int; ++ MOID_T *proc_int_int; ++ MOID_T *proc_int_int_real; ++ MOID_T *proc_int_real; ++ MOID_T *proc_int_real_real; ++ MOID_T *proc_int_real_real_real; ++ MOID_T *proc_real; ++ MOID_T *proc_real_int_real; ++ MOID_T *proc_real_real; ++ MOID_T *proc_real_real_int_real; ++ MOID_T *proc_real_real_real; ++ MOID_T *proc_real_real_real_int; ++ MOID_T *proc_real_real_real_real; ++ MOID_T *proc_real_real_real_real_real; ++ MOID_T *proc_real_real_real_real_real_real; ++ MOID_T *proc_real_ref_real_ref_int_void; ++ MOID_T *proc_void; ++}; ++ ++/* A PARSER_T struct contains all the global state that is kept by the parser. ++ This information is managed and used exclusively by a68_parser. ++ ++ ERROR_TAG is a tag that signifies an error. It is initialized in ++ a68_parser. ++ ++ STOP_SCANNER is a control flag used exclusively by the main loop in ++ tokenise_source, which is recursive. ++ ++ SCAN_BUF is a scratch buffer used by the scanner for several purposes. This ++ buffer is known to be big enough to hold any substring from the source file. ++ It is initialized in read_source_file. ++ ++ MAX_SCAN_BUF_LENGTH is the useable size of SCAN_BUF. This is used by the ++ scanner to grow SCAN_BUF as it includes other files. ++ ++ TAG_NUMBER is a global counter used by the parser to assign an unique number ++ to each tag it creates. It is used in a68_new_tag. ++ ++ BOTTOM_UP_CRASH_EXIT and TOP_DOWN_CRASH_EXIT are used to longjmp from deeply ++ nested errors in the bottom-up and top-down parsers respectively. */ ++ ++struct GTY(()) PARSER_T ++{ ++ TAG_T *error_tag; ++ bool stop_scanner; ++ size_t max_scan_buf_length; ++ char * GTY((skip)) scan_buf; ++ int tag_number; ++ jmp_buf GTY((skip)) bottom_up_crash_exit; ++ jmp_buf GTY((skip)) top_down_crash_exit; ++}; ++ ++/* A A68_T struct contains the global state used by the ALGOL 68 front-end. ++ ++ OUTPUT_LINE is used by the diagnostics machinery in order to write out ++ message lines. ++ ++ EDIT_LINE is used as a scratch buffer for composing error messages and the ++ like. ++ ++ INPUT_LINE is used by the original ALGOL 68 Genie to read lines from the ++ tty. But in this parser it is used uninitialized (!) by the ++ a68_phrase_to_text routine in the top-down parser. XXX. ++ ++ NEW_NODES is a global counter that keeps the number of parse tree nodes ++ created. It is currently not used for anything, but still updated in ++ a68_new_node. ++ ++ NEW_MODES is a global counter that keeps the number of moids created. It is ++ currently not used for anything, but still updated in a68_new_moid. ++ ++ NEW_POSTULATES is a global counter that keeps the number of postulates ++ created by the front-end. It is currently not used for anything, but still ++ updated in a68_make_postulate. ++ ++ NEW_NODE_INFOS is a global counter that keeps the number of NODE_INFO_T ++ structures created by the front-end. It is currently not used for anything, ++ but still updated in a68_new_node_info. ++ ++ NEW_GENIE_INFOS is a global counter that keeps the number of GINFO_T ++ structures created by the front-end. It is currently no tused for anything, ++ but still updated in a68_new_genie_info. ++ ++ SYMBOL_TABLE_COUNT is a global counter used by the parser. XXX move to ++ parser global state when syntax tree finalisation is moved to a68_parser? ++ ++ MODE_COUNT is the number of modes registered in the global modes table. XXX ++ which table. ++ ++ TOP_KEYWORD is the top of the list of keywords known to the font-end. ++ ++ MODE_CACHE XXX. ++ ++ A68_MODES (accessed as MODE) is a collection of particular pre-defined ++ modes. These modes are initialized by stand_moids. ++ ++ JOB (accessed as A68_JOB) is the instance of MODULE_T with the global data ++ corresponding to the source file being compiled. ++ ++ OPTIONS is the set of options currently set for the front-end. ++ ++ TOP_POSTULATE and TOP_POSTULATE_LIST are lists of postulates maintained by ++ the front-end. ++ ++ POSTULATES is a collection of postulates used by the moid pretty printer. ++ ++ TOP_SOID_LIST is used by the moid machinery. ++ ++ STANDENV XXX. ++ ++ TOP_TOKEN XXX. ++ ++ INCLUDE_PATHS is the list of paths where we search for files to include. ++ Directories are added to the list at the option handling language hook. ++ The list is searched in FIFO order. ++ ++ IMPORT_PATHS is the list of paths where we search for module exports data. ++ Directories are added to the list at the option handling language hook. The ++ list is searched in FIFO order. ++ ++ GLOBAL_TREES is an array with global types like a68_void_type and ++ a68_long_int_type. It is indexed by an enum a68_tree_index. ++ ++ MODULE_DEFINITION_DECLS is the global list of the tree decls corresponding ++ to the module definition being compiled. Note that currently we only allow ++ top-level modules, so there is no nesting. This is part of the context of ++ the lowering pass, and these declarations are collected by the lowering ++ handlers and finally compiled down to assembler in lower_module_declaration. ++ It cannot go in LOW_CTX_T because the later is on the stack and is not ++ reachable by the GGC. ++ ++ PARSER_STATE contains the parser's global state. ++ ++ GLOBAL_CONTEXT is the context to be used for global declarations. Normally ++ the translation unit. ++ ++ GLOBAL_DECLARATIONS contains a array of global declarations to pass back to ++ the middle-end at the end of the compilation. ++*/ ++ ++struct GTY(()) A68_T ++{ ++ BUFFER output_line; ++ BUFFER edit_line; ++ BUFFER input_line; ++ int new_nodes; ++ int new_modes; ++ int new_postulates; ++ int new_node_infos; ++ int new_genie_infos; ++ int symbol_table_count; ++ int mode_count; ++ KEYWORD_T *top_keyword; ++ MODE_CACHE_T mode_cache; ++ MODES_T a68_modes; ++ MODULE_T job; ++ OPTIONS_T *options; ++ POSTULATE_T *postulates, *top_postulate, *top_postulate_list; ++ SOID_T *top_soid_list; ++ TABLE_T *standenv; ++ TOKEN_T *top_token; ++ vec *include_paths; ++ vec *import_paths; ++ hash_map *module_files; ++ tree global_trees[ATI_MAX]; ++ PARSER_T parser_state; ++ vec *module_definition_decls; ++ tree global_context; ++ vec *global_declarations; ++}; ++ ++/* ++ * Access macros to fields in the struct types defined above. These are used * ++ * in order to achieve a nice ALGOL-like field OF struct style. ++ */ ++ ++#define ASM_LABEL(m) ((m)->asm_label) ++#define BACKWARD(p) (p = PREVIOUS (p)) ++#define DEFLEX(p) (DEFLEXED (p) != NO_MOID ? DEFLEXED(p) : (p)) ++#define FORWARD(p) ((p) = NEXT (p)) ++#define A(p) ((p)->a) ++#define ANNOTATION(p) ((p)->annotation) ++#define ANONYMOUS(p) ((p)->anonymous) ++#define ATTRIBUTE(p) ((p)->attribute) ++#define ASCRIBED_ROUTINE_TEXT(p) ((p)->ascribed_routine_text) ++#define B(p) ((p)->b) ++#define BODY(p) ((p)->body) ++#define CAST(p) ((p)->cast) ++#define CHAR_IN_LINE(p) ((p)->char_in_line) ++#define CROSS_REFERENCE_SAFE(p) ((p)->cross_reference_safe) ++#define CDECL(p) ((p)->cdecl) ++#define COMMENT(p) ((p)->comment) ++#define COMMENT_CHAR_IN_LINE(p) ((p)->comment_char_in_line) ++#define COMMENT_LINE(p) ((p)->comment_line) ++#define COMMENT_TYPE(p) ((p)->comment_type) ++#define CTYPE(p) ((p)->ctype) ++#define DEFLEXED(p) ((p)->deflexed_mode) ++#define DEREFO(p) ((p).derefo) ++#define DERIVATE(p) ((p)->derivate) ++#define DIM(p) ((p)->dim) ++#define DYNAMIC_STACK_ALLOCS(p) ((p)->dynamic_stack_allocs) ++#define EQUIVALENT(p) ((p)->equivalent_mode) ++#define EQUIVALENT_MODE(p) ((p)->equivalent_mode) ++#define ERROR_COUNT(p) ((p)->error_count) ++#define EXPORTED(p) ((p)->exported) ++#define EXTERN_SYMBOL(p) ((p)->extern_symbol) ++#define EXTRACT_IN_PROC(p) ((p)->in_proc) ++#define EXTRACT_KIND(p) ((p)->kind) ++#define EXTRACT_MODE(p) ((p)->mode) ++#define EXTRACT_PRIO(p) ((p)->priority) ++#define EXTRACT_SYMBOL(p) ((p)->symbol) ++#define EXTRACT_VARIABLE(p) ((p)->variable) ++#define WARNING_COUNT(p) ((p)->warning_count) ++#define F(p) ((p)->f) ++#define FILENAME(p) ((p)->filename) ++#define FILE_SOURCE_FD(p) ((p)->file_source_fd) ++#define FILE_SOURCE_NAME(p) ((p)->file_source_name) ++#define FLEXO(p) ((p).flexo) ++#define FLEXO_KNOWN(p) ((p).flexo_known) ++#define G(p) ((p)->g) ++#define GINFO(p) ((p)->genie) ++#define GENO(p) ((p).geno) ++#define GET(p) ((p)->get) ++#define GPARENT(p) (PARENT (GINFO (p))) ++#define GREEN(p) ((p)->green) ++#define H(p) ((p)->h) ++#define HANDLE(p) ((p)->handle) ++#define HAS_ROWS(p) ((p)->has_rows) ++#define HEAP(p) ((p)->heap) ++#define ID(p) ((p)->id) ++#define IDENTIFICATION(p) ((p)->identification) ++#define IDENTIFIERS(p) ((p)->identifiers) ++#define IDF(p) ((p)->idf) ++#define IM(z) (VALUE (&(z)[1])) ++#define IN(p) ((p)->in) ++#define INDEX(p) ((p)->index) ++#define INDICANTS(p) ((p)->indicants) ++#define INFO(p) ((p)->info) ++#define INITIALISE_ANON(p) ((p)->initialise_anon) ++#define INITIALISE_FRAME(p) ((p)->initialise_frame) ++#define INI_PTR(p) ((p)->ini_ptr) ++#define INS_MODE(p) ((p)->ins_mode) ++#define IN_FORBIDDEN(p) ((p)->in_forbidden) ++#define IN_PREFIX(p) ((p)->in_prefix) ++#define IN_PROC(p) ((p)->in_proc) ++#define IN_TEXT(p) ((p)->in_text) ++#define IS_OPEN(p) ((p)->is_open) ++#define IS_RECURSIVE(p) ((p)->is_recursive) ++#define IS_TMP(p) ((p)->is_tmp) ++#define JUMP_STAT(p) ((p)->jump_stat) ++#define JUMP_TO(p) ((p)->jump_to) ++#define K(q) ((q)->k) ++#define LABELS(p) ((p)->labels) ++#define LAST(p) ((p)->last) ++#define LAST_LINE(p) ((p)->last_line) ++#define LESS(p) ((p)->less) ++#define LEVEL(p) ((p)->level) ++#define LEX_LEVEL(p) (LEVEL (TABLE (p))) ++#define LINBUF(p) ((p)->linbuf) ++#define LINE(p) ((p)->line) ++#define LINE_APPLIED(p) ((p)->line_applied) ++#define LINE_DEFINED(p) ((p)->line_defined) ++#define LINE_END_MENDED(p) ((p)->line_end_mended) ++#define LINE_NUMBER(p) (NUMBER (LINE (INFO (p)))) ++#define LINSIZ(p) ((p)->linsiz) ++#define LIST(p) ((p)->list) ++#define ln(x) (log (x)) ++#define LOCALE(p) ((p)->locale) ++#define LOC_ASSIGNED(p) ((p)->loc_assigned) ++#define LOWERER(p) ((p)->lowerer) ++#define LOWER_BOUND(p) ((p)->lower_bound) ++#define LWB(p) ((p)->lower_bound) ++#define MARKER(p) ((p)->marker) ++#define MATCH(p) ((p)->match) ++#define MODIFIED(p) ((p)->modified) ++#define MODULES(p) ((p)->modules) ++#define VERSION(p) ((p)->version) ++#define MODES(p) ((p)->modes) ++#define MOID(p) ((p)->type) ++#define MOIF(p) ((p)->moif) ++#define MORE(p) ((p)->more) ++#define MSGS(p) ((p)->msgs) ++#define MULTIPLE(p) ((p)->multiple_mode) ++#define MULTIPLE_MODE(p) ((p)->multiple_mode) ++#define NAME(p) ((p)->name) ++#define NEST(p) ((p)->nest) ++#define NEXT(p) ((p)->next) ++#define NEXT_NEXT(p) (NEXT (NEXT (p))) ++#define NEXT_NEXT_NEXT(p) (NEXT (NEXT_NEXT (p))) ++#define NEXT_SUB(p) (NEXT (SUB (p))) ++#define NF(p) ((p)->nf) ++#define NILO(p) ((p).nilo) ++#define NILO_KNOWN(p) ((p).nilo_known) ++#define NODE(p) ((p)->node) ++#define NODE_DEFINED(p) ((p)->node_defined) ++#define NODE_PACK(p) ((p)->pack) ++#define NON_LOCAL(p) ((p)->non_local) ++#define NCHAR_IN_LINE(p) (CHAR_IN_LINE (INFO (p))) ++#define NCOMMENT(p) (COMMENT (INFO (p))) ++#define NCOMMENT_CHAR_IN_LINE(p) (COMMENT_CHAR_IN_LINE (INFO (p))) ++#define NCOMMENT_LINE(p) (COMMENT_LINE (INFO (p))) ++#define NCOMMENT_TYPE(p) (COMMENT_TYPE (INFO (p))) ++#define NPRAGMAT(p) (PRAGMAT (INFO (p))) ++#define NPRAGMAT_CHAR_IN_LINE(p) (PRAGMAT_CHAR_IN_LINE (INFO (p))) ++#define NPRAGMAT_LINE(p) (PRAGMAT_LINE (INFO (p))) ++#define NPRAGMAT_TYPE(p) (PRAGMAT_TYPE (INFO (p))) ++#define NSYMBOL(p) (SYMBOL (INFO (p))) ++#define NUM(p) ((p)->num) ++#define NUMBER(p) ((p)->number) ++#define OPER(p) ((p)->oper) ++#define OPERATORS(p) ((p)->operators) ++#define OPT(p) ((p)->opt) ++#define OPTIONS(p) ((p)->options) ++#define OPTION_ASSERT(p) (OPTIONS (p).assert) ++#define OPTION_BOUNDS_CHECKING(p) (OPTIONS (p).bounds_checking) ++#define OPTION_BRACKETS(p) (OPTIONS (p).brackets) ++#define OPTION_NIL_CHECKING(p) (OPTIONS (p).nil_checking) ++#define OPTION_STRICT(p) (OPTIONS (p).strict) ++#define OPTION_STROPPING(p) (OPTIONS (p).stropping) ++#define OPTION_LIST(p) (OPTIONS (p).list) ++#define OPTION_LOCAL(p) (OPTIONS (p).local) ++#define OPTION_NODEMASK(p) (OPTIONS (p).nodemask) ++#define OUT(p) ((p)->out) ++#define OUTER(p) ((p)->outer) ++#define P(q) ((q)->p) ++#define PACK(p) ((p)->pack) ++#define PARTIAL_LOCALE(p) ((p)->partial_locale) ++#define PARTIAL_PROC(p) ((p)->partial_proc) ++#define PORTABLE(p) ((p)->portable) ++#define POSTLUDE(p) ((p)->postlude) ++#define PRAGMAT(p) ((p)->pragmat) ++#define PRAGMAT_CHAR_IN_LINE(p) ((p)->pragmat_char_in_line) ++#define PRAGMAT_LINE(p) ((p)->pragmat_line) ++#define PRAGMAT_TYPE(p) ((p)->pragmat_type) ++#define PRELUDE(p) ((p)->prelude) ++#define PREVIOUS(p) ((p)->previous) ++#define PRIO(p) ((p)->priority) ++#define PRIOS(p) ((p)->prios) ++#define PROCEDURE_LEVEL(p) ((p)->procedure_level) ++#define PROC_OPS(p) ((p)->proc_ops) ++#define PUBLICIZED(p) ((p)->publicized) ++#define PUBLIC_RANGE(p) ((p)->public_range) ++#define R(p) ((p)->r) ++#define RE(z) (VALUE (&(z)[0])) ++#define ROWED(p) ((p)->rowed) ++#define SCAN_STATE_C(p) ((p)->scan_state.save_c) ++#define SCAN_STATE_L(p) ((p)->scan_state.save_l) ++#define SCAN_STATE_S(p) ((p)->scan_state.save_s) ++#define SCOPE(p) ((p)->scope) ++#define SCOPE_ASSIGNED(p) ((p)->scope_assigned) ++#define SEQUENCE(p) ((p)->sequence) ++#define SEVERITY(p) ((p)->severity) ++#define SLICE(p) ((p)->slice) ++#define SORT(p) ((p)->sort) ++#define SOURCE_SCAN(p) ((p)->source_scan) ++#define STANDENV_MOID(p) ((p)->standenv_moid) ++#define STATUS(p) ((p)->status) ++#define STRING(p) ((p)->string) ++#define SUB(p) ((p)->sub) ++#define SUB_MOID(p) (SUB (MOID (p))) ++#define SUB_NEXT(p) (SUB (NEXT (p))) ++#define SUB_SUB(p) (SUB (SUB (p))) ++#define SYMBOL(p) ((p)->symbol) ++#define TABLE(p) ((p)->symbol_table) ++#define TAG_LEX_LEVEL(p) (LEVEL (TAG_TABLE (p))) ++#define TAG_TABLE(p) ((p)->symbol_table) ++#define TAX(p) ((p)->tag) ++#define TAX_TREE_DECL(p) ((p)->tree_decl) ++#define TEXT(p) ((p)->text) ++#define TOP_LINE(p) ((p)->top_line) ++#define TOP_MOID(p) ((p)->top_moid) ++#define TOP_NODE(p) ((p)->top_node) ++#define TRANSIENT(p) ((p)->transient) ++#define TREE_LISTING_SAFE(p) ((p)->tree_listing_safe) ++#define TRIM(p) ((p)->trim) ++#define TUPLE(p) ((p)->tuple) ++#define UNIT(p) ((p)->unit) ++#define USE(p) ((p)->use) ++#define VALUE(p) ((p)->value) ++#define VARIABLE(p) ((p)->variable) ++#define WHERE(p) ((p)->where) ++#define IS_FLEXETY_ROW(m) (IS_FLEX (m) || IS_ROW (m) || m == M_STRING) ++#define IS_FLEX(m) IS ((m), FLEX_SYMBOL) ++#define IS_LITERALLY(p, s) (strcmp (NSYMBOL (p), s) == 0) ++#define ISNT(p, s) (! IS (p, s)) ++#define IS(p, s) (ATTRIBUTE (p) == (s)) ++#define IS_REF_FLEX(m) (IS (m, REF_SYMBOL) && IS (SUB (m), FLEX_SYMBOL)) ++#define IS_REF(m) IS ((m), REF_SYMBOL) ++#define IS_INTEGRAL(m) \ ++ ((m) == M_INT \ ++ || (m) == M_LONG_INT \ ++ || (m) == M_LONG_LONG_INT \ ++ || (m) == M_SHORT_INT \ ++ || (m) == M_SHORT_SHORT_INT) ++#define IS_BITS(m) \ ++ ((m) == M_BITS \ ++ || (m) == M_LONG_BITS \ ++ || (m) == M_LONG_LONG_BITS \ ++ || (m) == M_SHORT_BITS \ ++ || (m) == M_SHORT_SHORT_BITS) ++#define IS_BYTES(m) \ ++ ((m) == M_BYTES || (m) == M_LONG_BYTES) ++#define IS_COMPLEX(m) \ ++ ((m) == M_COMPLEX \ ++ || (m) == M_LONG_COMPLEX \ ++ || (m) == M_LONG_LONG_COMPLEX) ++#define IS_REAL(m) \ ++ ((m) == M_REAL \ ++ || (m) == M_LONG_REAL \ ++ || (m) == M_LONG_LONG_REAL) ++#define IS_ROW(m) IS ((m), ROW_SYMBOL) ++#define IS_STRUCT(m) IS ((m), STRUCT_SYMBOL) ++#define IS_UNION(m) IS ((m), UNION_SYMBOL) ++#define YOUNGEST_ENVIRON(p) ((p)->youngest_environ) ++ ++#endif /* ! __A68_TYPES_H */ +--- /dev/null ++++ b/src/gcc/algol68/a68-unistr.c +@@ -0,0 +1,453 @@ ++/* Character conversion functions for the Algol 68 front-end. ++ Copyright (C) 1999-2002, 2006-2007, 2009-2024 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ The code in this file has been adapted from the unistr gnulib module, ++ written by Bruno Haible. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#define INCLUDE_MEMORY ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++ ++#include "a68.h" ++ ++static int ++u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if (n >= 4) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return -1; ++} ++ ++/* Get the UCS code for the first character of a given UTF-8 string. */ ++ ++int ++a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 3) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 4) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n == 2) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ /* incomplete multibyte character */ ++ return 3; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 2; ++ } ++ } ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++ ++/* Encode a given UCS code in UTF-8. */ ++ ++int ++a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) ++{ ++ if (uc < 0x80) ++ { ++ if (n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ /* else return -2, below. */ ++ } ++ else ++ { ++ int count; ++ ++ if (uc < 0x800) ++ count = 2; ++ else if (uc < 0x10000) ++ { ++ if (uc < 0xd800 || uc >= 0xe000) ++ count = 3; ++ else ++ return -1; ++ } ++ else if (uc < 0x110000) ++ count = 4; ++ else ++ return -1; ++ ++ if (n >= count) ++ { ++ switch (count) /* note: code falls through cases! */ ++ { ++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; ++ gcc_fallthrough (); ++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; ++ gcc_fallthrough (); ++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; ++ /*case 1:*/ s[0] = uc; ++ } ++ return count; ++ } ++ } ++ return -2; ++} ++ ++/* Convert UTF-8 to UTF-32/UCS-4 */ ++ ++uint32_t * ++a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) ++{ ++ const uint8_t *s_end = s + n; ++ /* Output string accumulator. */ ++ uint32_t *result; ++ size_t allocated; ++ size_t length; ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ count = u8_mbtoucr (&uc, s, s_end - s); ++ if (count < 0) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ s += count; ++ ++ /* Store it in the output string. */ ++ if (length + 1 > allocated) ++ { ++ uint32_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 1 > allocated) ++ allocated = length + 1; ++ if (result == resultbuf || result == NULL) ++ memory = (uint32_t *) xmalloc (allocated * sizeof (uint32_t)); ++ else ++ memory = ++ (uint32_t *) xrealloc (result, allocated * sizeof (uint32_t)); ++ ++ if (memory == NULL) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = ENOMEM; ++ return NULL; ++ } ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint32_t)); ++ result = memory; ++ } ++ result[length++] = uc; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint32_t *) xmalloc (sizeof (uint32_t)); ++ if (result == NULL) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint32_t *memory; ++ ++ memory = (uint32_t *) xrealloc (result, length * sizeof (uint32_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} +--- /dev/null ++++ b/src/gcc/algol68/a68.h +@@ -0,0 +1,1117 @@ ++/* Definitions for the Algol 68 GCC front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++ License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#ifndef __A68_H__ ++#define __A68_H__ ++ ++/* Some common definitions first. */ ++ ++#define BUFFER_SIZE 1024 ++#define SMALL_BUFFER_SIZE 128 ++#define SNPRINTF_SIZE ((size_t) (BUFFER_SIZE - 1)) ++#define BUFCLR(z) {memset ((z), 0, BUFFER_SIZE + 1);} ++#define MOID_ERROR_WIDTH 80 ++ ++#define MONADS "%^&+-~!?" ++#define NOMADS ">= 4001) || GCC_VERSION == BUILDING_GCC_VERSION ++#define ATTRIBUTE_A68_DIAG(m, n) __attribute__ ((__format__ (__gcc_tdiag__, m, n))) ATTRIBUTE_NONNULL(m) ++#else ++#define ATTRIBUTE_A68_DIAG(m, n) ATTRIBUTE_NONNULL(m) ++#endif ++ ++/* Maximum number of priorities supported for operators. The Algol 68 RR ++ specifies 9. */ ++ ++#define MAX_PRIORITY 9 ++ ++/* The primal scope is the top-level scope. */ ++ ++#define PRIMAL_SCOPE 0 ++ ++/* Deflexing strategy. See the moid checking routines in ++ a68-parser-moids-check for an explanation of these values. */ ++ ++enum ++{ ++ NO_DEFLEXING = 1, SAFE_DEFLEXING, ALIAS_DEFLEXING, FORCE_DEFLEXING, ++ SKIP_DEFLEXING ++}; ++ ++/* Magic number for the exports data. */ ++ ++#define A68_EXPORT_MAGIC_LEN 2 ++ ++#define A68_EXPORT_MAGIC1 0x0a ++#define A68_EXPORT_MAGIC2 0x68 ++ ++/* The segment name we pass to simple_object_start_read to find Algol 68 export ++ data. */ ++ ++#ifndef A68_EXPORT_SEGMENT_NAME ++#define A68_EXPORT_SEGMENT_NAME "__GNU_A68" ++#endif ++ ++/* The section name we use when reading and writing export data. */ ++ ++#ifndef A68_EXPORT_SECTION_NAME ++#define A68_EXPORT_SECTION_NAME ".a68_exports" ++#endif ++ ++/* ga68 export format definitions. See ga68-exports.pk. */ ++ ++#define GA68_EXPORTS_VERSION 1 ++ ++#define GA68_MODE_UNKNOWN 0 ++#define GA68_MODE_VOID 1 ++#define GA68_MODE_INT 2 ++#define GA68_MODE_REAL 3 ++#define GA68_MODE_BITS 4 ++#define GA68_MODE_BYTES 5 ++#define GA68_MODE_CHAR 6 ++#define GA68_MODE_BOOL 7 ++#define GA68_MODE_CMPL 8 ++#define GA68_MODE_ROW 9 ++#define GA68_MODE_STRUCT 10 ++#define GA68_MODE_UNION 11 ++#define GA68_MODE_NAME 12 ++#define GA68_MODE_PROC 13 ++#define GA68_MODE_STRING 14 ++#define GA68_MODE_FLEX 15 ++ ++#define GA68_EXTRACT_MODU 0 ++#define GA68_EXTRACT_IDEN 1 ++#define GA68_EXTRACT_MODE 2 ++#define GA68_EXTRACT_PRIO 3 ++#define GA68_EXTRACT_OPER 4 ++ ++/* Then the types. */ ++ ++#include "a68-types.h" ++ ++/* Front-end global state. */ ++ ++extern GTY(()) A68_T a68_common; ++#define A68(z) (a68_common.z) ++#define A68_JOB A68 (job) ++#define A68_STANDENV A68 (standenv) ++#define A68_MCACHE(z) A68 (mode_cache.z) ++#define A68_INCLUDE_PATHS A68 (include_paths) ++#define A68_IMPORT_PATHS A68 (import_paths) ++#define A68_MODULE_FILES A68 (module_files) ++#define A68_GLOBAL_TREES A68 (global_trees) ++#define A68_PARSER(Z) (A68 (parser_state).Z) ++#define A68_MODULE_DEFINITION_DECLS A68 (module_definition_decls) ++#define A68_GLOBAL_CONTEXT A68 (global_context) ++#define A68_GLOBAL_DECLARATIONS A68 (global_declarations) ++ ++/* Particular pre-defined modes. */ ++ ++#define MODE(p) A68 (a68_modes.p) ++#define M_BITS (MODE (BITS)) ++#define M_BOOL (MODE (BOOL)) ++#define M_BYTES (MODE (BYTES)) ++#define M_CHANNEL (MODE (CHANNEL)) ++#define M_CHAR (MODE (CHAR)) ++#define M_COLLITEM (MODE (COLLITEM)) ++#define M_COMPLEX (MODE (COMPLEX)) ++#define M_C_STRING (MODE (C_STRING)) ++#define M_ERROR (MODE (ERROR)) ++#define M_FILE (MODE (FILE)) ++#define M_FLEX_ROW_BOOL (MODE (FLEX_ROW_BOOL)) ++#define M_FLEX_ROW_CHAR (MODE (FLEX_ROW_CHAR)) ++#define M_FORMAT (MODE (FORMAT)) ++#define M_HIP (MODE (HIP)) ++#define M_INT (MODE (INT)) ++#define M_LONG_BITS (MODE (LONG_BITS)) ++#define M_LONG_BYTES (MODE (LONG_BYTES)) ++#define M_LONG_COMPLEX (MODE (LONG_COMPLEX)) ++#define M_LONG_INT (MODE (LONG_INT)) ++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) ++#define M_LONG_LONG_BITS (MODE (LONG_LONG_BITS)) ++#define M_LONG_LONG_COMPLEX (MODE (LONG_LONG_COMPLEX)) ++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) ++#define M_LONG_LONG_REAL (MODE (LONG_LONG_REAL)) ++#define M_LONG_REAL (MODE (LONG_REAL)) ++#define M_NIL (MODE (NIL)) ++#define M_NUMBER (MODE (NUMBER)) ++#define M_PROC_LONG_REAL_LONG_REAL (MODE (PROC_LONG_REAL_LONG_REAL)) ++#define M_PROC_REAL_REAL (MODE (PROC_REAL_REAL)) ++#define M_PROC_REF_FILE_BOOL (MODE (PROC_REF_FILE_BOOL)) ++#define M_PROC_REF_FILE_VOID (MODE (PROC_REF_FILE_VOID)) ++#define M_PROC_ROW_CHAR (MODE (PROC_ROW_CHAR)) ++#define M_PROC_STRING (MODE (PROC_STRING)) ++#define M_PROC_VOID (MODE (PROC_VOID)) ++#define M_REAL (MODE (REAL)) ++#define M_REF_BITS (MODE (REF_BITS)) ++#define M_REF_BOOL (MODE (REF_BOOL)) ++#define M_REF_BYTES (MODE (REF_BYTES)) ++#define M_REF_CHAR (MODE (REF_CHAR)) ++#define M_REF_COMPLEX (MODE (REF_COMPLEX)) ++#define M_REF_FILE (MODE (REF_FILE)) ++#define M_REF_INT (MODE (REF_INT)) ++#define M_REF_LONG_BITS (MODE (REF_LONG_BITS)) ++#define M_REF_LONG_BYTES (MODE (REF_LONG_BYTES)) ++#define M_REF_LONG_COMPLEX (MODE (REF_LONG_COMPLEX)) ++#define M_REF_LONG_INT (MODE (REF_LONG_INT)) ++#define M_REF_LONG_LONG_BITS (MODE (REF_LONG_LONG_BITS)) ++#define M_REF_LONG_LONG_COMPLEX (MODE (REF_LONG_LONG_COMPLEX)) ++#define M_REF_LONG_LONG_INT (MODE (REF_LONG_LONG_INT)) ++#define M_REF_LONG_LONG_REAL (MODE (REF_LONG_LONG_REAL)) ++#define M_REF_LONG_REAL (MODE (REF_LONG_REAL)) ++#define M_REF_REAL (MODE (REF_REAL)) ++#define M_REF_REF_FILE (MODE (REF_REF_FILE)) ++#define M_REF_SHORT_BITS (MODE (REF_SHORT_BITS)) ++#define M_REF_SHORT_SHORT_BITS (MODE (REF_SHORT_SHORT_BITS)) ++#define M_REF_ROW_CHAR (MODE (REF_ROW_CHAR)) ++#define M_REF_ROW_COMPLEX (MODE (REF_ROW_COMPLEX)) ++#define M_REF_ROW_INT (MODE (REF_ROW_INT)) ++#define M_REF_ROW_REAL (MODE (REF_ROW_REAL)) ++#define M_REF_ROW_ROW_COMPLEX (MODE (REF_ROW_ROW_COMPLEX)) ++#define M_REF_ROW_ROW_REAL (MODE (REF_ROW_ROW_REAL)) ++#define M_REF_SHORT_INT (MODE (REF_SHORT_INT)) ++#define M_REF_SHORT_SHORT_INT (MODE (REF_SHORT_SHORT_INT)) ++#define M_REF_STRING (MODE (REF_STRING)) ++#define M_ROW_BITS (MODE (ROW_BITS)) ++#define M_ROW_BOOL (MODE (ROW_BOOL)) ++#define M_ROW_CHAR (MODE (ROW_CHAR)) ++#define M_ROW_COMPLEX (MODE (ROW_COMPLEX)) ++#define M_ROW_INT (MODE (ROW_INT)) ++#define M_ROW_REAL (MODE (ROW_REAL)) ++#define M_ROW_ROW_CHAR (MODE (ROW_ROW_CHAR)) ++#define M_ROW_ROW_COMPLEX (MODE (ROW_ROW_COMPLEX)) ++#define M_ROW_ROW_REAL (MODE (ROW_ROW_REAL)) ++#define M_ROW_SIMPLIN (MODE (ROW_SIMPLIN)) ++#define M_ROW_SIMPLOUT (MODE (ROW_SIMPLOUT)) ++#define M_ROWS (MODE (ROWS)) ++#define M_ROW_STRING (MODE (ROW_STRING)) ++#define M_SEMA (MODE (SEMA)) ++#define M_SHORT_BITS (MODE (SHORT_BITS)) ++#define M_SHORT_SHORT_BITS (MODE (SHORT_SHORT_BITS)) ++#define M_SHORT_INT (MODE (SHORT_INT)) ++#define M_SHORT_SHORT_INT (MODE (SHORT_SHORT_INT)) ++#define M_SIMPLIN (MODE (SIMPLIN)) ++#define M_SIMPLOUT (MODE (SIMPLOUT)) ++#define M_STRING (MODE (STRING)) ++#define M_UNDEFINED (MODE (UNDEFINED)) ++#define M_VACUUM (MODE (VACUUM)) ++#define M_VOID (MODE (VOID)) ++ ++/* Usage of TYPE_LANG_FLAG_* flags. */ ++ ++#define A68_ROW_TYPE_P(NODE) TYPE_LANG_FLAG_0 (NODE) ++#define A68_UNION_TYPE_P(NODE) TYPE_LANG_FLAG_1 (NODE) ++#define A68_STRUCT_TYPE_P(NODE) TYPE_LANG_FLAG_2 (NODE) ++#define A68_ROWS_TYPE_P(NODE) TYPE_LANG_FLAG_3 (NODE) ++#define A68_TYPE_HAS_ROWS_P(NODE) TYPE_LANG_FLAG_4 (NODE) ++ ++/* Language-specific tree checkers. */ ++ ++#define STRUCT_OR_UNION_TYPE_CHECK(NODE) \ ++ TREE_CHECK2 (NODE, RECORD_TYPE, UNION_TYPE) ++ ++/* Usage of TYPE_LANG_SLOT_* fields. */ ++ ++#define TYPE_FORWARD_REFERENCES(NODE) \ ++ (TYPE_LANG_SLOT_1 (STRUCT_OR_UNION_TYPE_CHECK (NODE))) ++ ++/* a68-unistr.cc */ ++ ++int a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); ++int a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); ++ ++uint32_t *a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp); ++ ++/* a68-lang.cc */ ++ ++/* Global types. These are built in a68_build_a68_type_nodes and used by the ++ lowering routines. */ ++ ++#define a68_void_type A68_GLOBAL_TREES[ATI_VOID_TYPE] ++#define a68_bool_type A68_GLOBAL_TREES[ATI_BOOL_TYPE] ++#define a68_char_type A68_GLOBAL_TREES[ATI_CHAR_TYPE] ++#define a68_short_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_BITS_TYPE] ++#define a68_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_BITS_TYPE] ++#define a68_bits_type A68_GLOBAL_TREES[ATI_BITS_TYPE] ++#define a68_long_bits_type A68_GLOBAL_TREES[ATI_LONG_BITS_TYPE] ++#define a68_long_long_bits_type A68_GLOBAL_TREES[ATI_LONG_LONG_BITS_TYPE] ++#define a68_bytes_type A68_GLOBAL_TREES[ATI_BYTES_TYPE] ++#define a68_long_bytes_type A68_GLOBAL_TREES[ATI_LONG_BYTES_TYPE] ++#define a68_short_short_int_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_INT_TYPE] ++#define a68_short_int_type A68_GLOBAL_TREES[ATI_SHORT_INT_TYPE] ++#define a68_int_type A68_GLOBAL_TREES[ATI_INT_TYPE] ++#define a68_long_int_type A68_GLOBAL_TREES[ATI_LONG_INT_TYPE] ++#define a68_long_long_int_type A68_GLOBAL_TREES[ATI_LONG_LONG_INT_TYPE] ++#define a68_real_type A68_GLOBAL_TREES[ATI_REAL_TYPE] ++#define a68_long_real_type A68_GLOBAL_TREES[ATI_LONG_REAL_TYPE] ++#define a68_long_long_real_type A68_GLOBAL_TREES[ATI_LONG_LONG_REAL_TYPE] ++ ++struct lang_type *a68_build_lang_type (MOID_T *moid); ++struct lang_decl *a68_build_lang_decl (NODE_T *node); ++MOID_T *a68_type_moid (tree type); ++ ++/* a68-diagnostics.cc */ ++ ++void a68_error (NODE_T *p, const char *loc_str, ...); ++void a68_error_in_pragmat (NODE_T *p, size_t off, ++ const char *loc_str, ...); ++bool a68_warning (NODE_T *p, int opt, const char *loc_str, ...); ++void a68_inform (NODE_T *p, const char *loc_str, ...); ++void a68_fatal (NODE_T *p, const char *loc_str, ...); ++void a68_scan_error (LINE_T *u, char *v, const char *txt, ...); ++ ++/* a68-parser-scanner.cc */ ++ ++bool a68_lexical_analyser (const char *filename); ++ ++/* a68-parser.cc */ ++ ++int a68_count_operands (NODE_T *p); ++int a68_count_formal_bounds (NODE_T *p); ++void a68_count_pictures (NODE_T *p, int *k); ++bool a68_is_ref_refety_flex (MOID_T *m); ++bool a68_is_semicolon_less (NODE_T *p); ++bool a68_is_formal_bounds (NODE_T *p); ++bool a68_is_unit_terminator (NODE_T *p); ++bool a68_is_loop_keyword (NODE_T *p); ++bool a68_is_new_lexical_level (NODE_T *p); ++bool a68_dont_mark_here (NODE_T *p); ++enum a68_attribute a68_get_good_attribute (NODE_T *p); ++void a68_parser (const char *filename); ++NODE_INFO_T *a68_new_node_info (void); ++GINFO_T *a68_new_genie_info (void); ++NODE_T *a68_new_node (void); ++NODE_T *a68_some_node (const char *t); ++TABLE_T *a68_new_symbol_table (TABLE_T *p); ++MOID_T *a68_new_moid (void); ++PACK_T *a68_new_pack (void); ++TAG_T *a68_new_tag (void); ++void a68_make_special_mode (MOID_T **, int m); ++void a68_make_sub (NODE_T *p, NODE_T *, enum a68_attribute t); ++bool a68_whether (NODE_T *, ...); ++bool a68_is_one_of (NODE_T *p, ...); ++void a68_bufcat (char *dst, const char *src, int len); ++void a68_bufcpy (char *dst, const char *src, int len); ++char *a68_new_string (const char *t, ...); ++const char *a68_attribute_name (enum a68_attribute attr); ++location_t a68_get_node_location (NODE_T *p); ++location_t a68_get_line_location (LINE_T *line, const char *pos); ++ ++/* a68-parser-top-down.cc */ ++ ++void a68_substitute_brackets (NODE_T *p); ++const char *a68_phrase_to_text (NODE_T *p, NODE_T **w); ++void a68_top_down_parser (NODE_T *p); ++ ++/* a68-parser-bottom-up.cc */ ++ ++void a68_bottom_up_parser (NODE_T *p); ++void a68_bottom_up_error_check (NODE_T *p); ++void a68_rearrange_goto_less_jumps (NODE_T *p); ++void a68_bottom_up_coalesce_pub (NODE_T *p); ++ ++/* a68-parser-extract.cc */ ++ ++void a68_extract_indicants (NODE_T *p); ++void a68_extract_priorities (NODE_T *p); ++void a68_extract_operators (NODE_T *p); ++void a68_extract_labels (NODE_T *p, int expect); ++void a68_extract_declarations (NODE_T *p); ++void a68_elaborate_bold_tags (NODE_T *p); ++ ++/* a68-parser-keywords.cc */ ++ ++const char *a68_strop_keyword (const char *keyword); ++void a68_set_up_tables (void); ++TOKEN_T *a68_add_token (TOKEN_T **p, const char *t); ++KEYWORD_T *a68_find_keyword (KEYWORD_T *p, const char *t); ++KEYWORD_T *a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a); ++ ++/* a68-postulates.cc */ ++ ++void a68_init_postulates (void); ++void a68_free_postulate_list (POSTULATE_T *, POSTULATE_T *); ++void a68_make_postulate (POSTULATE_T **, MOID_T *, MOID_T *); ++POSTULATE_T *a68_is_postulated (POSTULATE_T *, MOID_T *); ++POSTULATE_T *a68_is_postulated_pair (POSTULATE_T *, MOID_T *, MOID_T *); ++ ++/* a68-parser-moids-check.cc */ ++ ++void a68_mode_checker (NODE_T *p); ++ ++/* a68-parser-moids-coerce.cc */ ++ ++void a68_coercion_inserter (NODE_T *p); ++ ++/* a68-parser-moids-equivalence.cc */ ++ ++bool a68_prove_moid_equivalence (MOID_T *, MOID_T *); ++ ++/* a68-parser-brackets.cc */ ++ ++void a68_check_parenthesis (NODE_T *top); ++ ++/* a68-parser-prelude.cc */ ++ ++void a68_make_standard_environ (void); ++ ++/* a68-parser-taxes.cc */ ++ ++void a68_set_proc_level (NODE_T *p, int n); ++void a68_set_nest (NODE_T *p, NODE_T *s); ++int a68_first_tag_global (TABLE_T * table, const char *name); ++void a68_collect_taxes (NODE_T *p); ++TAG_T *a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p); ++TAG_T *a68_find_tag_global (TABLE_T *table, int a, const char *name); ++int a68_is_identifier_or_label_global (TABLE_T *table, const char *name); ++void a68_reset_symbol_table_nest_count (NODE_T *p); ++void a68_bind_routine_tags_to_tree (NODE_T *p); ++void a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s); ++void a68_finalise_symbol_table_setup (NODE_T *p, int l); ++void a68_preliminary_symbol_table_setup (NODE_T *p); ++void a68_mark_moids (NODE_T *p); ++void a68_mark_auxilliary (NODE_T *p); ++void a68_warn_for_unused_tags (NODE_T *p); ++void a68_jumps_from_procs (NODE_T *p); ++ ++/* a68-parser-victal.cc */ ++ ++void a68_victal_checker (NODE_T *p); ++ ++/* a68-parser-modes.cc */ ++ ++int a68_count_pack_members (PACK_T *u); ++MOID_T *a68_register_extra_mode (MOID_T **z, MOID_T *u); ++MOID_T *a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); ++MOID_T *a68_search_equivalent_mode (MOID_T *m); ++MOID_T *a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); ++void a68_contract_union (MOID_T *u); ++PACK_T *a68_absorb_union_pack (PACK_T * u); ++void a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); ++void a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); ++void a68_make_moid_list (MODULE_T *mod); ++ ++void a68_renumber_moids (MOID_T *p, int n); ++ ++/* a68-moids-to-string.cc */ ++ ++const char *a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, ++ bool indicant_value = false); ++ ++/* a68-moids-misc.cc */ ++ ++bool a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_clause_allows_balancing (int att); ++bool a68_is_balanced (NODE_T *n, SOID_T *y, int sort); ++bool a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex); ++bool a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex); ++bool a68_is_deprefable (MOID_T *p); ++bool a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_firm (MOID_T *p, MOID_T *q); ++bool a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_mode_isnt_well (MOID_T *p); ++bool a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex); ++bool a68_is_name_struct (MOID_T *p); ++bool a68_is_nonproc (MOID_T *p); ++bool a68_is_printable_mode (MOID_T *p); ++bool a68_is_proc_ref_file_void_or_format (MOID_T *p); ++bool a68_is_readable_mode (MOID_T *p); ++bool a68_is_ref_row (MOID_T *p); ++bool a68_is_rows_type (MOID_T *p); ++bool a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_strong_name (MOID_T *p, MOID_T *q); ++bool a68_is_strong_slice (MOID_T *p, MOID_T *q); ++bool a68_is_subset (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_transput_mode (MOID_T *p, char rw); ++bool a68_is_unitable (MOID_T *p, MOID_T *q, int deflex); ++bool a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex); ++bool a68_is_widenable (MOID_T *p, MOID_T *q); ++MOID_T *a68_absorb_related_subsets (MOID_T *m); ++MOID_T *a68_depref_completely (MOID_T *p); ++MOID_T *a68_depref_once (MOID_T *p); ++MOID_T *a68_depref_rows (MOID_T *p, MOID_T *q); ++MOID_T *a68_deproc_completely (MOID_T *p); ++MOID_T *a68_derow (MOID_T *p); ++MOID_T *a68_determine_unique_mode (SOID_T *z, int deflex); ++MOID_T *a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); ++MOID_T *a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); ++MOID_T *a68_make_series_from_moids (MOID_T *u, MOID_T *v); ++MOID_T *a68_make_united_mode (MOID_T *m); ++MOID_T *a68_pack_soids_in_moid (SOID_T *top_sl, int attribute); ++MOID_T *a68_unites_to (MOID_T *m, MOID_T *u); ++void a68_absorb_series_pack (MOID_T **p); ++void a68_absorb_series_union_pack (MOID_T **p); ++void a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid); ++void a68_free_soid_list (SOID_T *root); ++void a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some); ++void a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m); ++void a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute); ++void a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q); ++void a68_make_uniting_coercion (NODE_T *n, MOID_T *q); ++void a68_make_void (NODE_T *p, MOID_T *q); ++ ++#define A68_DEPREF true ++#define A68_NO_DEPREF false ++ ++#define A68_IF_MODE_IS_WELL(n) (! ((n) == M_ERROR || (n) == M_UNDEFINED)) ++ ++/* a68-parser-scope.cc */ ++ ++void a68_scope_checker (NODE_T *p); ++ ++/* a68-parser-serial-dsa.cc */ ++ ++void a68_serial_dsa (NODE_T *p); ++ ++/* a68-parser-pragmat.cc */ ++ ++void a68_handle_pragmats (NODE_T *p); ++ ++/* a68-moids-diagnostics.cc */ ++ ++const char *a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth); ++void a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att); ++void a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c); ++void a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u); ++ ++/* a68-low-misc.cc */ ++ ++tree a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_jump (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_operator (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-moids.cc */ ++ ++void a68_lower_moids (MOID_T *m); ++void a68_set_type_moid (tree type, MOID_T *m); ++tree a68_row_elements_pointer_type (tree type); ++tree a68_row_elements_type (tree type); ++tree a68_triplet_type (void); ++ ++/* a68-low-bits.cc */ ++ ++tree a68_get_bits_skip_tree (MOID_T *m); ++tree a68_bits_width (tree type); ++tree a68_bits_maxbits (tree type); ++tree a68_bits_bin (MOID_T *m, tree val); ++tree a68_bits_abs (MOID_T *m, tree bits); ++tree a68_bits_leng (tree type, tree bits); ++tree a68_bits_shorten (tree type, tree bits); ++tree a68_bits_not (tree bits); ++tree a68_bits_and (tree bits1, tree bits2); ++tree a68_bits_ior (tree bits1, tree bits2); ++tree a68_bits_xor (tree bits1, tree bits2); ++tree a68_bits_elem (NODE_T *p, tree pos, tree bits); ++tree a68_bits_subset (tree bits1, tree bits2); ++tree a68_bits_shift (tree shift, tree bits); ++tree a68_bits_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_bits_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low_bools.cc */ ++ ++tree a68_get_bool_skip_tree (void); ++tree a68_bool_abs (tree val); ++tree a68_bool_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_bool_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-ints.cc */ ++ ++tree a68_get_int_skip_tree (MOID_T *m); ++tree a68_int_maxval (tree type); ++tree a68_int_minval (tree type); ++tree a68_int_width (tree type); ++tree a68_int_sign (tree val); ++tree a68_int_abs (tree val); ++tree a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_int_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); ++ ++tree a68_int_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_pow (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_int_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-complex.cc */ ++ ++tree a68_complex_i (MOID_T *mode, tree re, tree im); ++tree a68_complex_re (tree z); ++tree a68_complex_im (tree z); ++tree a68_complex_conj (MOID_T *mode, tree z); ++tree a68_complex_widen_from_real (MOID_T *mode, tree r); ++ ++/* a68-low-posix.cc */ ++ ++tree a68_posix_setexitstatus (void); ++tree a68_posix_argc (void); ++tree a68_posix_argv (void); ++tree a68_posix_getenv (void); ++tree a68_posix_putchar (void); ++tree a68_posix_puts (void); ++tree a68_posix_fconnect (void); ++tree a68_posix_fcreate (void); ++tree a68_posix_fopen (void); ++tree a68_posix_fclose (void); ++tree a68_posix_fsize (void); ++tree a68_posix_lseek (void); ++tree a68_posix_errno (void); ++tree a68_posix_perror (void); ++tree a68_posix_strerror (void); ++tree a68_posix_getchar (void); ++tree a68_posix_fgetc (void); ++tree a68_posix_fputc (void); ++tree a68_posix_fputs (void); ++tree a68_posix_gets (void); ++tree a68_posix_fgets (void); ++ ++/* a68-low-reals.cc */ ++ ++tree a68_get_real_skip_tree (MOID_T *m); ++tree a68_real_pi (tree type); ++tree a68_real_maxval (tree type); ++tree a68_real_minval (tree type); ++tree a68_real_smallval (tree type); ++tree a68_real_width (tree type); ++tree a68_real_exp_width (tree type); ++tree a68_real_sign (tree val); ++tree a68_real_abs (tree val); ++tree a68_real_sqrt (tree val); ++tree a68_real_tan (tree type); ++tree a68_real_sin (tree type); ++tree a68_real_cos (tree type); ++tree a68_real_acos (tree type); ++tree a68_real_asin (tree type); ++tree a68_real_atan (tree type); ++tree a68_real_ln (tree type); ++tree a68_real_log (tree type); ++tree a68_real_exp (tree type); ++tree a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_real_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); ++tree a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode); ++tree a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode); ++ ++tree a68_real_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, ++ tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_real_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++ ++/* a68-low-strings.cc */ ++ ++tree a68_get_string_skip_tree (void); ++tree a68_string_concat (tree str1, tree str2); ++tree a68_string_mult (tree str1, tree str2); ++tree a68_string_from_char (tree c); ++tree a68_string_cmp (tree s1, tree s2); ++char *a68_string_process_breaks (NODE_T *p, const char *str); ++ ++/* a68-low-chars.cc */ ++ ++tree a68_get_char_skip_tree (void); ++tree a68_char_max (void); ++tree a68_char_repr (NODE_T *p, tree val); ++tree a68_char_abs (tree val); ++tree a68_char_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++tree a68_char_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); ++ ++/* a68-low-refs.cc */ ++ ++tree a68_get_ref_skip_tree (MOID_T *m); ++ ++/* a68-low-procs.cc */ ++ ++tree a68_get_proc_skip_tree (MOID_T *m); ++ ++/* a68-low-structs.cc */ ++ ++tree a68_get_struct_skip_tree (MOID_T *m); ++ ++/* a68-low-multiples.cc */ ++ ++tree a68_get_multiple_skip_tree (MOID_T *m); ++tree a68_multiple_dimensions (tree exp); ++tree a68_multiple_num_elems (tree exp); ++tree a68_multiple_lower_bound (tree exp, tree dim); ++tree a68_multiple_upper_bound (tree exp, tree dim); ++tree a68_multiple_stride (tree exp, tree dim); ++tree a68_multiple_triplets (tree exp); ++tree a68_multiple_elements (tree exp); ++tree a68_multiple_elements_size (tree exp); ++tree a68_multiple_set_elements (tree exp, tree elements); ++tree a68_multiple_set_elements_size (tree exp, tree elements_size); ++void a68_multiple_compute_strides (tree type, size_t dim, ++ tree *lower_bounds, tree *upper_bounds, ++ tree *strides); ++tree a68_multiple_set_lower_bound (tree exp, tree dim, tree bound); ++tree a68_multiple_set_upper_bound (tree exp, tree dim, tree bound); ++tree a68_multiple_set_stride (tree exp, tree dim, tree stride); ++tree a68_row_value (tree type, size_t dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound); ++tree a68_row_value_raw (tree type, tree descriptor, ++ tree elements, tree elements_size); ++tree a68_row_malloc (tree type, int dim, ++ tree elements, tree elements_size, ++ tree *lower_bound, tree *upper_bound); ++tree a68_multiple_slice (NODE_T *p, tree multiple, bool slicing_name, ++ int num_indexes, tree *indexes); ++tree a68_multiple_copy_elems (MOID_T *to_mode, tree to, tree from); ++tree a68_rows_dim (tree exp); ++tree a68_rows_value (tree multiple); ++tree a68_rows_lower_bound (tree rows, tree dim); ++tree a68_rows_upper_bound (tree rows, tree dim); ++tree a68_rows_dim_check (NODE_T *p, tree rows, tree dim); ++tree a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim); ++tree a68_multiple_single_bound_check (NODE_T *p, tree dim, tree multiple, ++ tree index, bool upper_bound); ++tree a68_multiple_bounds_check (NODE_T *p, tree dim, tree multiple, ++ tree index); ++tree a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2); ++ ++/* a68-low-ranges.cc */ ++ ++bool a68_in_global_range (void); ++void a68_init_ranges (void); ++void a68_push_range (MOID_T *mode); ++tree a68_pop_range (void); ++tree a68_pop_range_with_finalizer (tree *finalizer); ++void a68_push_stmt_list (MOID_T *mode); ++tree a68_pop_stmt_list (void); ++void a68_push_function_range (tree fndel, tree result_type, ++ bool top_level = false); ++void a68_pop_function_range (tree body); ++void a68_push_serial_clause_range (MOID_T *clause_mode, ++ bool save_restore_stack = false); ++tree a68_pop_serial_clause_range (void); ++void a68_add_stmt (tree exp); ++void a68_add_decl (tree decl); ++void a68_add_decl_expr (tree decl_expr); ++void a68_add_completer (void); ++tree a68_range_context (void); ++tree a68_range_names (void); ++tree a68_range_stmt_list (void); ++ ++/* a68-low-runtime.cc */ ++ ++enum a68_libcall_fn ++{ ++#define DEF_A68_RUNTIME(CODE, N, T, P, F) A68_LIBCALL_ ## CODE, ++#include "a68-low-runtime.def" ++#undef DEF_A68_RUNTIME ++ A68_LIBCALL_LAST ++}; ++ ++tree a68_get_libcall (a68_libcall_fn libcall); ++tree a68_build_libcall (a68_libcall_fn libcall, tree type, int nargs, ...); ++ ++/* a68-low-clauses.cc */ ++ ++void a68_begin_serial_clause (LOW_CTX_T *ctx, MOID_T *clause_mode); ++tree a68_finish_serial_clause (LOW_CTX_T ctx, MOID_T *clause_mode, tree parent_block); ++tree a68_lower_label (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_completer (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_loop_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_case_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_collateral_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_parallel_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-coercions.cc */ ++ ++tree a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_widening (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-decls.cc */ ++ ++tree a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_declarer (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_priority_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low.cc */ ++ ++tree a68_lower_top_tree (NODE_T *p); ++tree a68_lower_tree (NODE_T *p, LOW_CTX_T ctx); ++tree a68_make_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool indicant = false, bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_variable_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_proc_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, ++ bool indicant = false, bool external = false, ++ const char *extern_symbol = NULL); ++tree a68_make_anonymous_routine_decl (MOID_T *mode); ++tree a68_get_skip_tree (MOID_T *m); ++tree a68_get_empty (void); ++void a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers); ++tree a68_consolidate_ref (MOID_T *m, tree expr); ++tree a68_lower_alloca (tree type, tree size); ++tree a68_lower_malloc (tree type, tree size); ++tree a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode); ++tree a68_low_deref (tree exp, NODE_T *p); ++tree a68_low_dup (tree exp, bool use_heap = false); ++tree a68_low_ascription (MOID_T *mode, tree lhs, tree rhs); ++tree a68_low_assignation (NODE_T *p, tree lhs, MOID_T *lhs_mode, tree rhs, MOID_T *rhs_mode); ++tree a68_lower_memcpy (tree dst, tree src, tree size); ++tree a68_lower_tmpvar (const char *name, tree type, tree init); ++tree a68_get_mangled_identifier (const char *name, ++ const char *mname = NULL, bool internal = false, ++ bool numbered = false); ++tree a68_get_mangled_indicant (const char *name, ++ const char *mname = NULL, bool internal = false, ++ bool numbered = false); ++char *a68_demangle_symbol (const char *mname, const char *symbol, ++ bool is_operator = false); ++tree a68_low_toplevel_func_decl (const char *name, tree fntype); ++tree a68_low_func_param (tree fndecl, const char *name, tree type); ++ ++/* a68-low-builtins.cc */ ++ ++void a68_install_builtins (); ++ ++/* a68-low-unions.c */ ++ ++int a68_united_mode_index (MOID_T *p, MOID_T *q); ++tree a68_get_union_skip_tree (MOID_T *m); ++tree a68_union_overhead (tree exp); ++tree a68_union_set_overhead (tree exp, tree overhead); ++tree a68_union_cunion (tree exp); ++tree a68_union_alternative (tree exp, int index); ++tree a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode); ++tree a68_union_translate_overhead (MOID_T *from, tree from_overhead, MOID_T *to); ++bool a68_union_contains_mode (MOID_T *p, MOID_T *q); ++ ++/* a68-low-units.cc */ ++ ++tree a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_skip (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_empty (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_primary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_cast (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_slice (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_selection (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_formula (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_generator (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_call (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_unit (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-low-generator.c */ ++ ++tree a68_low_generator (NODE_T *declarer, MOID_T *mode, ++ bool heap, LOW_CTX_T ctx); ++tree a68_low_gen (MOID_T *m, size_t nbuonds, tree *bounds, ++ bool use_heap); ++ ++/* a68-low-prelude.c */ ++ ++tree a68_lower_unimplemented (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_assert (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx); ++ ++tree a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minint (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortshortbitswidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortshortintwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longrealwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongrealwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_expwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longexpwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongexpwidth (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_pi (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_nullcharacter (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_flip (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_flop (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_errorchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_blank (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_eofchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_replacementchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_maxabschar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_sqrt (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_tan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_sin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_cos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_acos (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_asin (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_atan (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_ln (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_log (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_long_long_exp (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_reali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_inti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_random (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longrandom (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_longlongrandom (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixargc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixargv (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixputchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixputs (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfputc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfputs (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgetenv (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfconnect (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfopen (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfcreate (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfclose (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfsize (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixlseek (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekcur (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekend (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixseekset (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstdinfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstdoutfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstderrfiledes (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileodefault (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileordwr (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileordonly (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileowronly (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfileotrunc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixerrno (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixperror (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixstrerror (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgetchar (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfgetc (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixgets (NODE_T *p, LOW_CTX_T ctx); ++tree a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx); ++ ++/* a68-exports.cc */ ++ ++MOIF_T *a68_moif_new (const char *module_name); ++void a68_moif_free (MOIF_T *moif); ++void a68_do_exports (NODE_T *p); ++ ++/* a68-imports.cc */ ++ ++MOIF_T *a68_open_packet (const char *module); ++ ++/* a68-parser-debug.cc */ ++ ++void a68_dump_parse_tree (NODE_T *p, bool tables = false, bool levels = false); ++void a68_dump_modes (MOID_T *m); ++void a68_dump_moif (MOIF_T *moif); ++ ++#endif /* ! __A68_H__ */ +--- /dev/null ++++ b/src/gcc/algol68/a68spec.cc +@@ -0,0 +1,222 @@ ++/* a68spec.c -- Specific flags and argument handling of the Algol 68 front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "opt-suggestions.h" ++#include "gcc.h" ++#include "tm.h" ++#include "opts.h" ++ ++/* satisfy intellisense */ ++#include "options.h" ++ ++/* How to link with libga68. */ ++enum libga68_link_mode ++{ ++ LIBGA68_NOLINK, ++ LIBGA68_STATIC, ++ LIBGA68_DYNAMIC ++}; ++ ++static enum libga68_link_mode libga68_link = LIBGA68_STATIC; ++ ++/* This bit is set if we saw a `-xfoo' language specification. */ ++#define LANGSPEC (1 << 1) ++/* This bit is set if they did `-lc'. */ ++#define WITHLIBC (1 << 2) ++/* Skip this option. */ ++#define SKIPOPT (1 << 3) ++ ++void ++lang_specific_driver (struct cl_decoded_option **in_decoded_options, ++ unsigned int *in_decoded_options_count, ++ int *in_added_libraries) ++{ ++ unsigned int i, j; ++ ++ /* The new argument list will be contained in this. */ ++ struct cl_decoded_option *new_decoded_options; ++ ++ /* "-lc" if it appears on the command line. */ ++ const struct cl_decoded_option *saw_libc = 0; ++ ++ /* An array used to flag each argument that needs a bit set for ++ LANGSPEC or WITHLIBC. */ ++ int *args; ++ ++ /* True if we saw -static. */ ++ int static_link = 0; ++ ++ /* True if we should add -shared-libgcc to the command-line. */ ++ int shared_libgcc = 1; ++ ++ /* The total number of arguments with the new stuff. */ ++ unsigned int argc; ++ ++ /* The argument list. */ ++ struct cl_decoded_option *decoded_options; ++ ++ /* The number of libraries added in. */ ++ int added_libraries; ++ ++ /* The total number of arguments with the new stuff. */ ++ int num_args = 1; ++ ++ /* Whether the -o option was used. */ ++ // bool saw_opt_o = false; ++ ++ argc = *in_decoded_options_count; ++ decoded_options = *in_decoded_options; ++ added_libraries = *in_added_libraries; ++ ++ args = XCNEWVEC (int, argc); ++ ++ for (i = 1; i < argc; i++) ++ { ++ const char *arg = decoded_options[i].arg; ++ ++ switch (decoded_options[i].opt_index) ++ { ++ case OPT__help: ++ case OPT__help_: ++ /* Let gcc.cc handle this. */ ++ *in_added_libraries = 0; ++ return; ++ case OPT_c: ++ case OPT_E: ++ case OPT_M: ++ case OPT_MM: ++ case OPT_fsyntax_only: ++ case OPT_S: ++ libga68_link = LIBGA68_NOLINK; ++ break; ++ ++ case OPT_l: ++ if (strcmp (arg, "c") == 0) ++ args[i] |= WITHLIBC; ++ break; ++ ++ case OPT_o: ++ //saw_opt_o = true; ++ break; ++ ++ case OPT_static: ++ static_link = 1; ++ break; ++ ++ case OPT_static_libgcc: ++ shared_libgcc = 0; ++ break; ++ ++ case OPT_static_libga68: ++ libga68_link = LIBGA68_STATIC; ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ /* Remove -static-libga68 from the command only if target supports ++ LD_STATIC_DYNAMIC. When not supported, it is left in so that a ++ back-end target can use outfile substitution. */ ++ args[i] |= SKIPOPT; ++#endif ++ break; ++ ++ case OPT_shared_libga68: ++ libga68_link = LIBGA68_DYNAMIC; ++ args[i] |= SKIPOPT; ++ break; ++ ++ case OPT_SPECIAL_input_file: ++ break; ++ } ++ } ++ ++ /* There's no point adding -shared-libgcc if we don't have a shared ++ libgcc. */ ++#ifndef ENABLE_SHARED_LIBGCC ++ shared_libgcc = 0; ++#endif ++ ++ /* Make sure to have room for the trailing NULL argument. ++ - libga68 adds `-Bstatic -lga68 -Bdynamic' */ ++ num_args = argc + shared_libgcc + 1 * 5 + 10; ++ new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args); ++ ++ i = 0; ++ j = 0; ++ ++ /* Copy the 0th argument, i.e., the name of the program itself. */ ++ new_decoded_options[j++] = decoded_options[i++]; ++ ++ /* NOTE: We start at 1 now, not 0. */ ++ while (i < argc) ++ { ++ new_decoded_options[j] = decoded_options[i]; ++ ++ if (!saw_libc && (args[i] & WITHLIBC)) ++ { ++ --j; ++ saw_libc = &decoded_options[i]; ++ } ++ ++ if ((args[i] & SKIPOPT) != 0) ++ --j; ++ ++ i++; ++ j++; ++ } ++ ++ if (saw_libc) ++ new_decoded_options[j++] = *saw_libc; ++ if (shared_libgcc && !static_link) ++ generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ ++ /* Add `-lga68 -lm' if we haven't already done so. */ ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ if (libga68_link == LIBGA68_STATIC && !static_link) ++ { ++ generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ added_libraries++; /* The driver calls add_infile while handling -Wl */ ++ } ++#endif ++ generate_option (OPT_l, ++ "ga68", 1, ++ CL_DRIVER, &new_decoded_options[j++]); ++ added_libraries++; ++#ifdef HAVE_LD_STATIC_DYNAMIC ++ if (libga68_link == LIBGA68_STATIC && !static_link) ++ { ++ generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER, ++ &new_decoded_options[j++]); ++ added_libraries++; /* The driver calls add_infile while handling -Wl */ ++ } ++#endif ++ *in_decoded_options_count = j; ++ *in_decoded_options = new_decoded_options; ++ *in_added_libraries = added_libraries; ++} ++ ++/* Called before linking. Returns 0 on success and -1 on failure. */ ++int ++lang_specific_pre_link (void) ++{ ++ if (libga68_link != LIBGA68_NOLINK) ++ do_spec ("%:include(libga68.spec)"); ++ return 0; ++} ++ ++/* Number of extra output files that lang_specific_pre_link may generate. */ ++int lang_specific_extra_outfiles = 0; /* Not used for Algol68. */ +--- /dev/null ++++ b/src/gcc/algol68/algol68-target.def +@@ -0,0 +1,52 @@ ++/* Target hook definitions for the Algol68 front end. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This program is free software; you can redistribute it and/or modify it ++ under the terms of the GNU General Public License as published by the ++ Free Software Foundation; either version 3, or (at your option) any ++ later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; see the file COPYING3. If not see ++ . */ ++ ++/* See target-hooks-macros.h for details of macros that should be ++ provided by the including file, and how to use them here. */ ++ ++#include "target-hooks-macros.h" ++ ++#undef HOOK_TYPE ++#define HOOK_TYPE "Algol68 Target Hook" ++ ++HOOK_VECTOR (TARGETALGOL68M_INITIALIZER, gcc_targetalgol68m) ++ ++#undef HOOK_PREFIX ++#define HOOK_PREFIX "TARGET_" ++ ++/* Environmental CPU info and features (e.g. endianness, pointer size) relating ++ to the target CPU. */ ++DEFHOOK ++(algol68_cpu_info, ++ "Declare all environmental CPU info and features relating to the target CPU\n\ ++using the function @code{algol68_add_target_info}, which takes a string\n\ ++representing the feature key and a string representing the feature value.\n\ ++Configuration pairs predefined by this hook apply to all files that are being\n\ ++compiled.", ++ void, (void), ++ hook_void_void) ++ ++/* Environmental OS info relating to the target OS. */ ++DEFHOOK ++(algol68_os_info, ++ "Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info\n\ ++relating to the target operating system.", ++ void, (void), ++ hook_void_void) ++ ++/* Close the 'struct gcc_targetalgol68m' definition. */ ++HOOK_VECTOR_END (C90_EMPTY_HACK) +--- /dev/null ++++ b/src/gcc/algol68/config-lang.in +@@ -0,0 +1,32 @@ ++# config-lang.in -- Top level configure fragment for gcc Algol 68 frontend. ++ ++# Copyright (C) 2025 Free Software Foundation, Inc. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Configure looks for the existence of this file to auto-config each language. ++# We define several parameters used by configure: ++# ++# language - name of language as it would appear in $(LANGUAGES) ++# compilers - value to add to $(COMPILERS) ++ ++language="algol68" ++compilers="a681\$(exeext)" ++gtfiles="\$(srcdir)/algol68/a68-types.h \$(srcdir)/algol68/a68.h \$(srcdir)/algol68/a68-lang.cc \$(srcdir)/algol68/a68-low-ranges.cc" ++ ++target_libs="target-libga68" ++ ++# Do not build by default. ++build_by_default="no" +--- /dev/null ++++ b/src/gcc/algol68/ga68-exports.pk +@@ -0,0 +1,297 @@ ++/* ga68-exports.pk - GCC Algol 68 exports format. ++ ++ Copyright (C) 2025 Jose E. Marchesi ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++/* GNU Algol 68 source files (compilation units, or "packets") may ++ contain either a single particular-program or a set of one or more ++ module definitions. ++ ++ When compiling a compilation unit containing module definitions, ++ the ga68 compiler emits an ELF section called .a68_exports along ++ with the usual compiled object code. This section contains ++ information that reflects the PUBlicized identifiers exported by ++ module definitions: modes, operators, procedures, identifiers, ++ other module definitions, etc. This interface is complete enough ++ to allow other compilation units to access these declarations. ++ ++ The information that is in a module interface is defined in the MR ++ document using a sort of grammar. It is: ++ ++ module interface : ++ unique code & external symbol & hole description option & ++ mode table & definition summary. ++ ++ definition summary : ++ set of definition groups. ++ ++ definition group : ++ module identity & set of definition extracts. ++ ++ definition extract : ++ mode extract ; ++ operation extract ; ++ priority extract ; ++ identifier extract ; ++ definition module extract ; ++ invocation extract. ++ ++ mode extract : ++ mode marker & mode indication & mode & mdextra. ++ ++ operation extract : ++ operation marker & operator & mode & mdextra. ++ ++ priority extract : ++ priority marker & operator & integer priority & mdextra. ++ ++ identifier extract : ++ identifier marker & identifier & mode & mdextra. ++ ++ definition module extract : ++ definition module marker & definition module indication & ++ definition summary & mdextra. ++ ++ invocation extract : ++ module identity. ++ ++ mdextra : ++ extra machine-dependent information. ++ ++ This pickle precisely describes how the module interfaces are ++ encoded in the .a68_exports ELF section, which are of type PROGBITS ++ and thus are concatenated by ELF linkers. This works well because ++ each compilation unit may contain several module definitions, but a ++ module definition cannot be splitted among several compilation ++ units. */ ++ ++/* The exports format is versioned. A bump in the format version ++ number indicates the presence of a backward incompatibility. This ++ is important because .ga68_exports section may contain module ++ definition interfaces having different versions, so compilers and ++ tools designed to operate on version "n" must ignore, or error on, ++ modules definition interfaces with later versions. */ ++ ++var ga68_exports_ver = 1; ++ ++/* References other sections and the .ga68_export section itself are ++ realized via link-time relocations: ++ ++ References to code addresses are relative to some text section. ++ References to data in .ga68_export are relative to the start of the ++ section. */ ++ ++load elf; ++ ++type ga68_text_reloc = Elf64_Addr; ++type ga68_data_reloc = Elf64_Addr; ++ ++/* Strings are encoded in-place and are both pre-sized and ++ NULL-terminated. This is to ease reading them quickly and ++ efficiently. Note that the size includes the final NULL ++ character. */ ++ ++type ga68_str = ++ struct ++ { ++ offset,B> len; ++ string s: s'size == len; ++ }; ++ ++/* Each module definition interface includes a table of modes, that ++ contains not only the modes for which mode extracts exist, but also ++ the indirectly referred modes: since Algol 68 used structural ++ equivalence of modes, each mode has to be defined fully. The ++ encoding therefore tries to be as compact as possible while ++ allowing being read with a reasonable level of performance and ++ convenience. */ ++ ++var GA68_MODE_UNKNOWN = 0UB, ++ GA68_MODE_VOID = 1UB, ++ GA68_MODE_INT = 2UB, ++ GA68_MODE_REAL = 3UB, ++ GA68_MODE_BITS = 4UB, ++ GA68_MODE_BYTES = 5UB, ++ GA68_MODE_CHAR = 6UB, ++ GA68_MODE_BOOL = 7UB, ++ GA68_MODE_CMPL = 8UB, ++ GA68_MODE_ROW = 9UB, ++ GA68_MODE_STRUCT = 10UB, ++ GA68_MODE_UNION = 11UB, ++ GA68_MODE_NAME = 12UB, ++ GA68_MODE_PROC = 13UB, ++ GA68_MODE_STRING = 14UB, ++ GA68_MODE_FLEX = 15UB; ++ ++type ga68_mode = ++ struct ++ { ++ uint<8> kind : kind in [GA68_MODE_VOID, GA68_MODE_INT, ++ GA68_MODE_REAL, GA68_MODE_BITS, ++ GA68_MODE_BYTES, GA68_MODE_CHAR, ++ GA68_MODE_CMPL, GA68_MODE_ROW, ++ GA68_MODE_STRUCT, GA68_MODE_UNION, ++ GA68_MODE_NAME, GA68_MODE_PROC, ++ GA68_MODE_FLEX]; ++ ++ union ++ { ++ int<8> sizety : kind in [GA68_MODE_INT, GA68_MODE_REAL, ++ GA68_MODE_CMPL, GA68_MODE_BITS, ++ GA68_MODE_BYTES]; ++ struct ++ { ++ ga68_data_reloc mode; ++ } name : kind == GA68_MODE_NAME || kind == GA68_MODE_FLEX; ++ ++ struct ++ { ++ type triplet = struct { ga68_text_reloc lb; ga68_text_reloc ub; }; ++ ++ uint<8> ndims; ++ triplet[ndims] dims; ++ ga68_data_reloc row_of; ++ } row : kind == GA68_MODE_ROW; ++ ++ struct ++ { ++ type field = struct { ga68_data_reloc mode; ga68_str name; }; ++ ++ uint<16> nfields; ++ field[nfields] fields; ++ } sct : kind == GA68_MODE_STRUCT; ++ ++ struct ++ { ++ uint<8> nmodes; ++ ga68_data_reloc[nmodes] modes; ++ } uni : kind == GA68_MODE_UNION; ++ ++ struct ++ { ++ type arg = struct { ga68_data_reloc mode; ga68_str name; }; ++ ++ ga68_data_reloc ret_mode; ++ uint<8> nargs; ++ arg[nargs] args; ++ } routine : kind == GA68_MODE_PROC; ++ ++ struct { } _ : kind in [GA68_MODE_UNKNOWN, GA68_MODE_VOID, ++ GA68_MODE_CHAR, GA68_MODE_BOOL, ++ GA68_MODE_STRING]; ++ ++ } data; ++ }; ++ ++/* Each module definition interface includes a table of "extracts", ++ one per identifier PUBlicized by the module definition. ++ ++ Mode extracts represent declarations of mode indications, like for ++ example `mode Foo = struct (int i, real r)'. ++ ++ Identifier extracts represent declarations of constans, variables, ++ procedures and operators. Examples are `real pi = 3.14', `int ++ counter', `proc double = (int a) int : a * 2' and `op // = (int a, ++ b) int: a % b'. ++ ++ Priority extracts represent declarations of priorities for dyadic ++ operators, like for example `prio // = 9'. ++ ++ Finally, module extracts represent the PUBlication of some other ++ module definition. For example, the module definition `mode Foo = ++ access A, B def ... fed' will include module extracts for both "A" ++ and "B" in its interface. ++ ++ Some of the extracts may need some additional compiler-specific or ++ machine-specific information, whose contents are not specified ++ here. */ ++ ++var GA68_EXTRACT_MODU = 0UB, ++ GA68_EXTRACT_IDEN = 1UB, ++ GA68_EXTRACT_MODE = 2UB, ++ GA68_EXTRACT_PRIO = 3UB, ++ GA68_EXTRACT_OPER = 4UB; ++ ++type ga68_extract = ++ struct ++ { ++ Elf64_Off extract_size; ++ union ++ { ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_MODU; ++ ga68_str module_indication; ++ } module; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_IDEN; ++ ga68_str name; ++ ga68_data_reloc mode; ++ } identifier; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_MODE; ++ ga68_str mode_indication; ++ ga68_data_reloc mode; ++ } mode; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_PRIO; ++ ga68_str opname; ++ uint<8> prio; ++ } prio; ++ ++ struct ++ { ++ uint<8> mark : mark == GA68_EXTRACT_OPER; ++ ga68_str opname; ++ ga68_mode mode; ++ } oper; ++ ++ } extract : extract'size == extract_size; ++ ++ Elf64_Off mdextra_size; ++ uint<8>[mdextra_size] data; ++ }; ++ ++/* The contents of the .ga68_exports section can be mapped as a ++ ga68_module[sec.sh_size] */ ++ ++type ga68_module = ++ struct ++ { ++ uint<8>[2] magic : magic == [0x0aUB, 0xadUB]; ++ uint<16> version : version == ga68_exports_ver; ++ ++ /* Module identification. ++ Add a hash or UUID? */ ++ ga68_str name; ++ ++ /* Entry points. */ ++ ga68_str prelude; ++ ga68_str poslude; ++ ++ /* Table of modes. */ ++ Elf64_Off modes_size; ++ ga68_mode[modes_size] modes; ++ ++ /* Table of extracts. */ ++ Elf64_Off extracts_size; ++ ga68_extract[extracts_size] extracts; ++ }; +--- /dev/null ++++ b/src/gcc/algol68/ga68-internals.texi +@@ -0,0 +1,383 @@ ++\input texinfo @c -*-texinfo-*- ++@c %**start of header ++@setfilename ga68-internals.info ++ ++@include gcc-common.texi ++ ++@synindex tp cp ++ ++@settitle GNU Algol 68 Compiler Internals ++ ++@c %**end of header ++ ++@c %** start of document ++ ++@copying ++Copyright @copyright{} 2025 Jose E. Marchesi. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A ++copy of the license is included in the section entitled ``GNU Free ++Documentation License''. ++@end copying ++ ++@ifinfo ++@dircategory Software development ++@direntry ++* ga68-internals: (ga68-internals). The GNU Algol 68 Compiler Internals. ++@end direntry ++This file documents the internals of the GNU Algol 68 ++compiler, (@command{ga68}). ++ ++@insertcopying ++@end ifinfo ++ ++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, ++@c in other formats it resorts to upper stropping. ++@iftex ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end iftex ++ ++@ifhtml ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end ifhtml ++ ++@ifnottex ++@ifnothtml ++@macro B{tag} ++@sc{\tag\} ++@end macro ++@end ifnothtml ++@end ifnottex ++ ++@setchapternewpage odd ++@titlepage ++@title GNU Algol 68 Internals ++@versionsubtitle ++@author Jose E. Marchesi ++@page ++@vskip 0pt plus 1filll ++@sp 1 ++@insertcopying ++@end titlepage ++ ++@summarycontents ++@contents ++ ++@page ++ ++@ifnottex ++@node Top ++@top Introduction ++@cindex Introduction ++ ++This manual documents (some of) the internals of @command{ga68}, the ++GNU Algol 68 compiler. ++ ++@menu ++* Scope Checking:: Scope checking in assignation. ++* Storage Management:: Management of run-time storage. ++* Lowering Declarations:: Mapping external objects to internal objects. ++* Lowering Assignations:: Superceding the value referred by a name. ++* GNU Free Documentation License:: ++ How you can copy and share this manual. ++* Index:: Index of this documentation. ++@end menu ++@end ifnottex ++ ++@c --------------------------------------------------------------------- ++@c Scope Checking ++@c --------------------------------------------------------------------- ++ ++@node Scope Checking ++@chapter Scope Checking ++ ++Static scope checking: pass. ++Dynamic scope checking: run-time call. ++ ++@c --------------------------------------------------------------------- ++@c Storage Management ++@c --------------------------------------------------------------------- ++ ++@node Storage Management ++@chapter Storage Management ++ ++This chapter discusses the run-time management of internal objects in ++Algol 68. ++ ++First, a conceptual model is presented that describes the restrictions ++as mandated by the Report. The storage implied by the lowered GENERIC ++entities, as described in the previous chapter, shall match the ++storage of the conceptual model. ++ ++@menu ++* Storage Structure of Objects:: ++* Copying of Objects:: ++* The Stack:: ++* The Heap:: ++@end menu ++ ++@node Storage Structure of Objects ++@section Storage Structure of Objects ++ ++The internal objects which are the values in an Algol 68 program may ++consist on a hierarchy of memory locations, which may not be ++contiguous. This hierarchy of memory locations is the storage ++structure of the object, and is not concerned by the particular ++bit-patterns stored. ++ ++Simple values. ++ ++Names. ++ ++Multiple values. ++ ++Structured values. ++ ++Values of united modes. ++ ++@node Copying of Objects ++@section Copying of Objects ++ ++@node The Stack ++@section The Stack ++ ++XXX ++ ++@node The Heap ++@section The Heap ++ ++@itemize @minus ++@item ++A value that has rows and gets returned by a procedure shall be ++allocated on the stack. ++@item ++A copy of the right hand side is made before assigning it to the left ++hand side. This copy is always allocated in the heap, because the ++scope of the left hand side may be older than the scope of the right ++hand side. This happens when assigning to a global variable. ++@item ++A trimmer of a name. This is because the trimmed multiple may be ++allocated on the heap, and the trim shall have the same scope than the ++trimmed multiple. ++@end itemize ++ ++@c --------------------------------------------------------------------- ++@c Internal Objects ++@c --------------------------------------------------------------------- ++ ++@node Lowering Declarations ++@chapter Lowering Declarations ++ ++This chapter describes the mapping between external objects declared ++in identity and variable declarations and the internal objects that ++are the result of lowering the external objects in the parse tree into ++GENERIC entities. ++ ++@menu ++* Identity Declarations:: @code{@B{amode} xxx = init value} ++* Variable Declarations:: @code{@B{amode} xxx [:= init value]} ++* Procedure Identity Declarations:: @code{@B{proc} xxx = routine text} ++* Procedure Variable Declarations:: @code{@B{proc} xxx := routine text} ++* Operator Brief Declarations:: @code{@B{op} @B{xxx} = routine text} ++* Operator Declarations:: @code{@B{op}(...)@B{amode} @B{xxx} = routine text} ++* Applied Identifiers:: ++@end menu ++ ++@node Identity Declarations ++@section Identity Declarations ++ ++An identity declaration with the form: ++ ++@example ++@B{c} part 1 @B{c} ++@B{amode} defining_identifier = unit; ++@B{c} part 2 @B{c} ++@end example ++ ++@noindent ++Introduces the identifier @code{defining_identifier} in the current ++range and ascribes a copy of the value yielded by @code{unit} to it. ++Once established, the relationship between an identifier and the value ++ascribed to it is constant and it cannot change during the reach of ++the identifier. The ascribed unit can be any unitary clause, and its ++elaboration can be arbitrarily complicated. In particular, it is not ++required to be a compile-time constant. @code{@B{amode}} determines ++the mode of the value yielded by the unit, and the unit is elaborated ++in a strong context. ++ ++An identity declaration like the above, where @code{@B{amode}} is not ++a procedure mode (@xref{Procedure Identity Declarations}) is lowered ++into: ++ ++@itemize @bullet ++@item ++A @code{VAR_DECL} with name @code{defining_identifier}, type ++@code{CTYPE (@B{amode})} and initial value @code{@B{amode}(@B{skip})} ++that gets chained into the declarations list of the current block. ++@item ++A @code{DECL_EXPR} that gets prepended in the current statement's list. ++@item ++A @code{MODIFY_EXPR} setting the @code{VAR_DECL} to a copy of the ++lowering of @code{unit}, @code{a68_low_dup (unit)}. ++@end itemize ++ ++@noindent ++Schematically: ++ ++@example ++ BIND_EXPR (BLOCK (DECLS: ... -> VAR_DECL (defining_identifier, INITIAL=SKIP))) ++ STMT_LIST ++ | ++ +-- DECL_EXPR (defining_identifier) ++ | ++ | @B{c} part 1 @B{c} ++ | ++ +-- MODIFY_EXPR (defining_identifier, unit) ++ | ++ | @B{c} part 2 @B{c} ++ | ++@end example ++ ++The reason why the @code{VAR_DECL} is initialized to @code{@B{skip}} ++and then set to the initial @code{unit} specified in the source line ++is that the Report specifies that Algol 68 identifiers can be used ++before they are defined provided we are in the right range, but in ++that case the value ascribed to the identifier is ``undefined''. ++Accessing an ``undefined'' value in traditional Algol 68 ++implementations would lead to a run-time error (these implementations ++used a special value to denote undefined, such as @code{F00L}) but in ++GNU Algol 68 the ``undefined'' value is always @code{@B{skip}} which, ++if not terribly useful in most cases, is at least well defined in this ++implementation and doesn't lead to an error. ++ ++Identity declarations are the Algol 68 way of defining constants, and ++one may wonder why we are not using @code{CONST_DECL} instead of ++@code{VAR_DECL}. The reason is that @code{CONST_DECL} is really only ++intended for integral values in C enums, and the @code{@B{amode}} in ++the identity declaration can really be any mode, from simple integers ++or characters to fairly complicated structured modes, which may ++involve also rows and united modes. Whether the @code{VAR_DECL} will ++lead to allocating storage on the stack depends on the nature of the ++mode and the way the identifier is used in the program: whether its ++address is taken, etc. ++ ++@node Variable Declarations ++@section Variable Declarations ++ ++A variable declaration with the form: ++ ++@example ++[@B{loc}|@B{heap}] @B{amode} defining identifier [:= unit]; ++@end example ++ ++@noindent ++Is in principle equivalent to the identity declaration: ++ ++@example ++@B{ref} @B{amode} defining identifier = [@B{loc}|@B{heap}] @B{amode}; ++@end example ++ ++@noindent ++In both cases the object ascribed to the defining identifier is of ++mode @code{@B{ref} @B{amode}}. The ascribed object is a name which is ++created by a generator implied in the actual declarer in the variable ++declaration case, and an explicit generator in the initialization ++expression in the identity declaration case. ++ ++However, in this compiler these two cases are handled differently in ++order to reduce the amount of both indirect addressing and of storage: ++ ++@itemize @bullet ++@item ++The variable declaration @code{[@B{loc}|@B{heap}] @B{amode} foo} ++lowers into a @code{VAR_DECL} with type @code{CTYPE (amode)} provided ++that the generator is @code{@B{loc}} and that the type contains no ++rows. Accessing the variable will then involve direct addressing, and ++when its address is required an @code{ADDR_EXPR} shall be used. ++@item ++The identity declaration @code{@B{ref} @B{amode} foo = @B{loc} ++@B{amode}} lowers into a @code{VAR_DECL} with type @code{*CTYPE ++(amode)}. Accessing the variable will then involve indirect ++addressing: it is effectively a pointer. ++@end itemize ++ ++This optimization introduces the complication that an expression (the ++@code{VAR_DECL}) whose type is TYPE can appear in a place where *TYPE ++is expected, depending on the context and the r-value and l-value ++interpretation of the @code{VAR_DECL}. The function ++@code{a68_consolidate_ref} is used in several parts of the lowering ++pass to guarantee a given name is an address regardless of how it was ++initialized. ++ ++@node Procedure Identity Declarations ++@section Procedure Identity Declarations ++ ++XXX ++ ++@node Procedure Variable Declarations ++@section Procedure Variable Declarations ++ ++XXX ++ ++@node Operator Brief Declarations ++@section Operator Brief Declarations ++ ++XXX ++ ++@node Operator Declarations ++@section Operator Declarations ++ ++XXX ++ ++@node Applied Identifiers ++@section Applied Identifiers ++ ++XXX ++ ++@c --------------------------------------------------------------------- ++@c Lowering Assignations ++@c --------------------------------------------------------------------- ++ ++@node Lowering Assignations ++@chapter Lowering Assignations ++ ++Scope checking: ++ ++@itemize @bullet ++@item ++If static scope checking is relevant and OK, then just perform assignation. ++@item ++If static scope checking is relevant and not OK, a compile-time error ++will have already being emitted. ++@item ++If static scope checking is not relevant, perform dynamic scope ++checking: each time a name, a routine or a format of the data ++structure is assigned, its dynamic scope (scope%_si) is compared with ++the one of the destination (scope%_d). A run-time error message is ++provided in case scope%_d < scope%_si. ++@end itemize ++ ++@c --------------------------------------------------------------------- ++@c GNU Free Documentation License ++@c --------------------------------------------------------------------- ++ ++@include fdl.texi ++ ++ ++@c --------------------------------------------------------------------- ++@c Index ++@c --------------------------------------------------------------------- ++ ++@node Index ++@unnumbered Index ++ ++@printindex cp ++ ++@bye +--- /dev/null ++++ b/src/gcc/algol68/ga68.texi +@@ -0,0 +1,3169 @@ ++\input texinfo @c -*-texinfo-*- ++@setfilename ga68.info ++@settitle The GNU Algol 68 Compiler ++ ++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, ++@c in other formats it resorts to upper stropping. ++@iftex ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end iftex ++ ++@ifhtml ++@macro B{tag} ++@strong{\tag\} ++@end macro ++@end ifhtml ++ ++@ifnottex ++@ifnothtml ++@macro B{tag} ++\tag\ ++@end macro ++@end ifnothtml ++@end ifnottex ++ ++@c Create a separate index for command line options ++@defcodeindex op ++@c Merge the standard indexes into a single one. ++@syncodeindex fn cp ++@syncodeindex vr cp ++@syncodeindex ky cp ++@syncodeindex pg cp ++@syncodeindex tp cp ++ ++@include gcc-common.texi ++ ++@c Copyright years for this manual. ++@set copyrights-ga68 2025 ++ ++@copying ++@c man begin COPYRIGHT ++Copyright @copyright{} @value{copyrights-ga68} Free Software Foundation, Inc. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ++A copy of the license is included in the ++@c man end ++section entitled ``GNU Free Documentation License''. ++@ignore ++@c man begin COPYRIGHT ++man page gfdl(7). ++@c man end ++@end ignore ++@end copying ++ ++@ifinfo ++@format ++@dircategory Software development ++@direntry ++* ga68: (ga68). A GCC-based compiler for Algol 68 ++@end direntry ++@end format ++ ++@insertcopying ++@end ifinfo ++ ++@titlepage ++@title The GNU Algol 68 Compiler ++@versionsubtitle ++@author Jose E. Marchesi ++ ++@page ++@vskip 0pt plus 1filll ++@sp 1 ++@insertcopying ++@end titlepage ++@summarycontents ++@contents ++@page ++ ++@node Top ++@top Introduction ++ ++This manual describes how to use @command{ga68}, the GNU compiler for ++Algol 68. This manual is specifically about how to invoke ++@command{ga68}, as well as its features. For more information about ++the Algol 68 language in general, the reader is referred to the ++bibliography. ++ ++Note that the particular way of representing Algol 68 code snippets in ++this manual will depend on the media. If you are reading this manual ++in a printed support or a PDF file rendered for publication then the ++bold words in programs will be rendered in actual bold typography and ++tags may have spaces within them. If you are reading this manual in a ++terminal or other media not supporting rich typography the code ++examples will follow the modern stropping regime with is the default ++in ga68. ++ ++Note also that we are making use of @dfn{pseudo-comments} in code ++examples, as it is traditional in Algol 68 related documentation. ++These appear surrounded by @code{@B{C}} marks and act as placeholders ++of some Algol 68 code. For example, @code{@B{C} frob the input ++variable @B{C}} is a pseudo-comment. ++ ++@menu ++* Invoking ga68:: How to run the compiler. ++* Composing programs:: Packets, modules, holes, particular programs. ++* Comments and pragmats:: Comments and pragmas. ++* Hardware representation:: Representation of programs. ++* Standard prelude:: Standard modes, operators, etc. ++* Extended prelude:: GNU extensions to the standard prelude. ++* POSIX prelude:: Simple I/O and system interaction facilities. ++* Language extensions:: GNU extensions to the Algol 68 language. ++* Copying:: The GNU General Public License. ++* GNU Free Documentation License:: ++ How you can share and copy this manual. ++* Option Index:: Index of command line options. ++* General Index:: General index. ++@end menu ++ ++@node Invoking ga68 ++@chapter Invoking ga68 ++ ++@c man title ga68 A GCC-based compiler for Algol 68 ++ ++@ignore ++@c man begin SYNOPSIS ga68 ++ga68 [@option{-c}|@option{-S}] [@option{-g}] [@option{-pg}] ++ [@option{-O}@var{level}] [@option{-W}@var{warn}@dots{}] ++ [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}] ++ [@option{-f}@var{option}@dots{}] [@option{-m}@var{machine-option}@dots{}] ++ [@option{-o} @var{outfile}] [@@@var{file}] @var{infile}@dots{} ++ ++Only the most useful options are listed here; see below for the ++remainder. ++@c man end ++@c man begin SEEALSO ++gpl(7), gfdl(7), fsf-funding(7), gcc(1) ++and the Info entries for @file{ga68} and @file{gcc}. ++@c man end ++@end ignore ++ ++@c man begin DESCRIPTION ga68 ++ ++The @command{ga68} command is the GNU compiler for the Algol 68 language and ++supports many of the same options as @command{gcc}. @xref{Option Summary, , ++Option Summary, gcc, Using the GNU Compiler Collection (GCC)}. ++This manual only documents the options specific to @command{ga68}. ++ ++@c man end ++ ++@menu ++* Dialect options:: Options controlling the accepted language. ++* Directory options:: Options influencing where to find source files. ++* Warnings options:: Options controlling warnings specific to ga68 ++* Runtime options:: Options controlling runtime behavior ++* Linking options:: Options influencing the linking step ++* Developer options:: Options useful for developers of ga68 ++@end menu ++ ++@node Dialect options ++@section Dialect options ++@cindex options, dialect ++ ++The following options control how the compiler handles certain dialect ++variations of the language. ++ ++@table @gcctabopt ++@opindex std=@var{std} ++@item -std=@var{std} ++Specify the standard to which the program is expected to conform, ++which may be one of @samp{algol68} or @samp{gnu68}. The default value ++for @var{std} is @samp{gnu68}, which specifies a strict super language ++of Algol 68 allowing GNU extensions. The @samp{algol68} value ++specifies that the program strictly conform to the Revised Report. ++@opindex fstropping=@var{stropping_regime} ++@item -fstropping=@var{stropping_regime} ++Specify the stropping regime to expect in the input programs. The ++default value for @var{stropping_regime} is @samp{supper}, which ++specifies the modern SUPPER stropping which is a GNU extension. The ++@samp{upper} value specifies the classic UPPER stropping of Algol 68 ++programs. @xref{Stropping regimes}. ++@opindex fbrackets ++@opindex fno-brackets ++@item -fbrackets ++This option controls whether @code{[ .. ]} and @code{@{ .. @}} are ++considered equivalent to @code{( .. )}. This syntactic variation is ++blessed by the Revised Report and is still strict Algol 68. ++ ++This option is disabled by default. ++@end table ++ ++@node Directory options ++@section Options for Directory Search ++@cindex directory options ++@cindex options, directory search ++@cindex search path ++ ++These options specify directories to search for files, libraries, and ++other parts of the compiler: ++ ++@table @gcctabopt ++ ++@opindex I ++@item -I@var{dir} ++Add the directory @var{dir} to the list of directories to be searched ++for files when processing the @ref{pragmat include}. Multiple ++@option{-I} options can be used, and the directories specified are ++scanned in left-to-right order, as with @command{gcc}. ++ ++@end table ++ ++@node Warnings options ++@section Warnings options ++@cindex options, warnings ++@cindex options, errors ++@cindex warnings, suppressing ++@cindex messages, error ++@cindex messages, warning ++@cindex suppressing warnings ++ ++Warnings are diagnostic messages that report constructions that ++are not inherently erroneous but that are risky or suggest there ++is likely to be a bug in the program. Unless @option{-Werror} is ++specified, they do not prevent compilation of the program. ++ ++@table @gcctabopt ++@opindex Wvoiding ++@opindex Wno-voiding ++@item -Wvoiding ++Warn on non-void units being voided due to a strong context. ++@opindex Wscope ++@opindex Wno-scope ++@item -Wscope ++Warn when a potential name scope violation is found. ++@opindex Whidden-declarations ++@opindex Wno-hidden-declarations ++@item -Whidden-declarations=@var{level} ++Warn when a declaration hides another declaration in a larger reach. ++This includes operators that hide firmly related operators defined in ++larger reach. ++ ++@table @gcctabopt ++@item -Whidden-declarations=none ++At this level no warning is issued for any hidden declaration on an ++outer scope. ++ ++@item -Whidden-declarations=prelude ++At this level, warnings are issued for hidden declarations defined in ++the standard prelude. This is the default warning level of ++@option{-Whidden-declarations}. ++ ++@item -Whidden-declarations=all ++At this level, warnings are issued for any and all hidden ++declarations. ++@end table ++ ++@opindex Wextensions ++@opindex Wno-extensions ++@item -Wextensions ++Warn when a non-portable Algol 68 construct is used, like GNU ++extensions to Algol 68. ++@end table ++ ++@node Runtime options ++@section Runtime options ++@cindex options, runtime ++ ++These options affect the runtime behavior of programs compiled with ++@command{ga68}. ++ ++@table @gcctabopt ++@opindex fassert ++@opindex fno-assert ++@item -fno-assert ++Turn off code generation for @code{ASSERT} contracts. ++ ++@opindex fcheck ++@item -fcheck=@var{} ++Enable the generation of run-time checks; the argument shall be a ++comma-delimited list of the following keywords. Prefixing a check ++with @option{no-} disables it if it was activated by a previous ++specification. ++ ++@table @asis ++@item @samp{all} ++Enable all run-time test of @option{-fcheck}. ++ ++@item @samp{none} ++Disable all run-time test of @option{-fcheck}. ++ ++@item @samp{nil} ++Check for nil while dereferencing. ++ ++@item @samp{bounds} ++Enable generation of run-time checks when indexing and trimming ++multiple values. ++@end table ++@end table ++ ++@node Linking options ++@section Linking options ++@cindex options, linking ++@cindex linking, static ++ ++These options come into play when the compiler links object files into ++an executable output file. They are meaningless if the compiler is ++not doing a link step. ++ ++@table @gcctabopt ++ ++@opindex shared-libga68 ++@item -shared-libga68 ++On systems that provide @file{libga68} as a shared and a static ++library, this option forces the use of the shared version. If no ++shared version was built when the compiler was configured, this option ++has no effect. ++ ++@opindex static-libga68 ++@item -static-libga68 ++On systems that provide @file{libga68} as a shared and a static ++library, this option forces the use of the static version. If no ++static version was built when the compiler was configured, this option ++has no effect. This is the default. ++@end table ++ ++@node Developer options ++@section Developer options ++@cindex developer options ++@cindex debug dump options ++@cindex dump options ++ ++This section describes command-line options that are primarily of ++interest to developers. ++ ++@table @gcctabopt ++@opindex fa68-dump-modes ++@item -fa68-dump-modes ++Output a list of all the modes parsed by the front-end. ++ ++@opindex fa68-dump-ast ++@item -fa68-dump-ast ++Dump a textual representation of the parse tree. ++ ++@opindex fa68-dump-module-interfaces ++@item -fa68-dump-module-interfaces ++Dump the interfaces of module definitions in the compiled packet. ++@end table ++ ++@node Composing programs ++@chapter Composing programs ++@cindex program ++@cindex separated compilation ++ ++This chapter documents how to compose full Algol 68 programs using the ++modules and separated compilation support provided by this compiler. ++ ++@menu ++* Packets:: Compilation units. ++* Modules:: Facilities for bottom-up programming. ++* Holes:: Facilities for top-down programming. ++* Particular programs:: The main program. ++* The standard environment:: Environment conforming a full program. ++@end menu ++ ++@node Packets ++@section Packets ++@cindex packet ++@cindex compilation unit ++ ++Each Algol 68 source file contains a @dfn{packet}. Packets therefore ++play the role of @dfn{compilation units}, and each packet can be ++compiled separately to an object file. A set of compiled object files ++can then be linked in the usual fashion into an executable, archive or ++shared object by the system linker, without the need of any ++language-specific link editor or build system. ++ ++@noindent ++This compiler supports three different kind of packets: ++ ++@itemize @minus ++@item ++@dfn{Particular programs} constitute the entry point of a program. ++They correspond to the @code{main} function of other languages like C. ++ ++@xref{Particular programs}. ++ ++@item ++@dfn{Prelude packets} contain the definition of one or more modules, ++which @dfn{publicize} definitions of modes, procedures, variables, ++operators and even the publicized definitions of other modules. The ++modules defined at the top-level of a prelude packet can be accessed ++by other packets via an @code{@B{access}} construct. Prelude packets ++are so-called because their contents get stuffed in the ++@dfn{user-prelude} in the case of user-defined modules, or the ++@dfn{library-prelude} in the case of module packets provided by the ++compiler. They are usually used to compose libraries that can be used ++in a bottom-up fashion. ++ ++@xref{Modules}. ++ ++@item ++@dfn{Stuffing packets} contain the definition of an @dfn{actual hole}, ++an @code{@B{egg}} construct, that can be stuffed in a matching ++@dfn{formal hole} in another package via a @code{@B{nest}} construct. ++Formal holes are used in order to achieve separated compilation in a ++top-bottom fashion, and also to invoke procedures written in other ++languages, such as C functions or Fortran subroutines. ++ ++@xref{Holes}. ++@end itemize ++ ++A @dfn{collection of packets}, all of which must be compatible with ++each other, constitutes either a @dfn{program} or a @dfn{library}. ++Exactly one of the packets constituting a program shall be a ++particular program. In libraries at least one packet must be a ++prelude packet. ++ ++@node Modules ++@section Modules ++@cindex module ++ ++@dfn{Definition modules}, often referred as just @dfn{modules} in the ++sequel, fulfill two different but related purposes. On one side, they ++provide some degree of @dfn{protection} by preventing accessing ++indicators defined within the module but not explicitly publicized. ++On the other, they allow to define @dfn{interfaces}, allow separated ++compilation based on these interfaces, and conform libraries. ++ ++Modules are usually associated with bottom-up development strategies, ++where several already written components are grouped and combined to ++conform bigger components. ++ ++@menu ++* Writing modules:: Writing modules. ++* Accessing modules:: Using the definitions of a module. ++* Module activation:: How and when modules execute. ++* Modules and libraries:: Using modules to conform libraries. ++* Modules and protection:: When block structure is not enough. ++@end menu ++ ++@node Writing modules ++@subsection Writing modules ++ ++A @dfn{definition module} is a construct that provides access to a set ++of publicized definitions. They can appear anywhere, but are ++typically found in the outer reach and compiled separately, in which ++case they conform a prelude packet (@pxref{Packets}). They are ++composed of a prelude and a postlude. The publicized definitions ++appear in the module's prelude. ++ ++Consider for example the following definition module, which implements ++a very simple logging facility: ++ ++@example ++@B{module} @B{Logger} = ++ @B{def} @B{int} fd = stderr; ++ @B{pub} @B{string} originator; ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, (originator /= "" | ": ") + msg + "\n"); ++ ++ log ("beginning of log\n"); ++ @B{postlude} ++ log ("end of log\n"); ++ @B{fed} ++@end example ++ ++@noindent ++The @dfn{module text} delimited by @code{@B{def}} and @code{@B{fed}} ++gets ascribed to the module indicator @code{@B{Logger}}. Module ++indicators are bold tags. Once defined, the module @code{@B{Logger}} ++is accessible anywhere within its reach. ++ ++The @dfn{prelude} of the module spans from @code{@B{def}} to either ++@code{@B{postlude}}, or to @code{@B{fed}} in case of modules not ++featuring a postlude. It consists on a restricted serial clause in a ++void strong context, which can contain units and declarations, but no ++labels or completers. The declarations in the prelude may be either ++publicized or no publicized. As we shall see, publicized indicators ++are accessible within the reach of the defining module publicizing ++them. Publicized declarations are marked by preceding them with ++@code{@B{pub}}. ++ ++In our example the module prelude consists on three declarations and ++one unit. The indicator @code{fd} is not publicized and is to be used ++internally by the module. The indicators @code{originator} and ++@code{log}, on the other hand, are publicized and conform the ++interface of the module. Note how the range of the prelude also ++covers the postlude: the @code{log} procedure is reachable there, as ++it would be @code{fd} as well. ++ ++The @dfn{postlude} of the module is optional and spans from ++@code{@B{postlude}} to @code{@B{fed}}. It consists on a serial clause ++in a @code{@B{void}} strong context, where definitions, labels and ++module accesses are not allowed, just units. ++ ++@node Accessing modules ++@subsection Accessing modules ++ ++Once a module is defined (@pxref{Writing modules}) it can be accessed, ++provided it is within reach, using an @dfn{access clause}. The access ++clause identifies the modules to access and then makes the publicized ++definitions of these modules visible within a @dfn{control clause}. ++ ++For example, this is how we could use the logger definition module ++defined in a previous section to log the progress of some program that ++reads an input file and writes some output file: ++ ++@example ++@B{access} @B{Logger} ++@B{begin} # Identify ourselves with the program name # ++ originator := argv (1); ++ ++ # Read input file. # ++ @B{if} @B{NOT} parse_input (argv (2)) ++ @B{then} log ("error parsing input file"); stop @B{fi}; ++ ++ # Write output file. # ++ @B{if} @B{NOT} write_output (argv (3)) ++ @B{then} log ("error writing output file"); stop @B{fi}; ++ ++ log ("success") ++@B{end} ++@end example ++ ++@noindent ++In this case the controlled clause is the closed clause conforming the ++particular program, and the definitions publicized by the logger ++module, in this case @code{originator} and @code{log}, can be used ++within it. ++ ++@subsubsection Accessing several modules ++ ++An access clause is not restricted to just provide access to a single ++module: any number of module indicators can be specified in an access ++clause. Suppose that our example processing program has to read and ++write the data in JSON format, and that a suitable JSON library is ++available in the form of a reachable module. We could then make both ++logger and json modules accessible like this: ++ ++@example ++@B{access} @B{Logger}, @B{JSON} ++@B{begin} # Identify ourselves with the program name # ++ originator := argv (1); ++ ++ @B{JSONVal} data; ++ ++ # Read input file. # ++ @B{if} data := json_from_file (argv (2)); ++ data = json no val ++ @B{then} log ("error parsing input file"); stop @B{fi}; ++ ++ # Write output file. # ++ @B{if} @B{not} json_to_file (argv (3), data) ++ @B{then} log ("error writing output file"); stop @B{fi}; ++ ++ log ("success") ++@B{end} ++@end example ++ ++@noindent ++In this version of the program the access clause includes the module ++indicator @code{@B{json}}, and that makes the mode indicator ++@code{@B{jsonval}} and the tags @code{@B{json no val}}, @code{json ++from file} and @code{json to file} visible within the program's ++closed clause. ++ ++Note that the following two access clauses are not equivalent: ++ ++@example ++@B{access} @B{Logger}, @B{JSON} @B{C} ... @B{C}; ++@B{access} @B{Logger} @B{access} @B{JSON} @B{C} ... @B{C}; ++@end example ++ ++@noindent ++In the first case, a compilation time error is emitted if there is a ++conflict among the publicized definitions of both modules; for ++example, if both modules were to publicize a procedure called ++@code{log}. In the second case, the declaration of @code{log} ++publicized by @code{@B{Logger}} would hide the declaration of ++@code{log} publicized by @code{@B{JSON}}. This also has implications ++related to activation, that we will be discussing in a later section. ++ ++@subsubsection The controlled clause ++ ++The controlled clause in an access clause doesn't have to be a serial ++clause, like in the examples above. It can be any enclosed clause, ++like for example a loop clause: ++ ++@example ++@B{proc} frobnicate frobs = ([]@B{Frob} frobs) @B{void}: ++ @B{access} @B{Logger} @B{to} @B{UPB} frobs ++ @B{do} log ("frobnicating " + name @B{of} frob); ++ frobnicate (frob) ++ @B{od} ++@end example ++ ++@subsubsection The value yielded by an access clause ++ ++The elaboration of an access clause yields a value, which is the value ++yielded by the elaboration of the controlled clause. Since the later ++is an enclosed clause, coercions get passed into them whenever ++required, the usual fashion. ++ ++We can see an example of this in the following procedure, whose body ++is a controlled closed clause that yields a @code{@B{real}} value: ++ ++@example ++@B{proc} incr factor = (@B{ref}[]@B{real} factors, @B{int} idx) @B{real}: ++ @B{access} @B{logger} (log ("factor increased"); factors[idx] +:= 1.0) ++@end example ++ ++@noindent ++Note how the access clause above is in a strong context requiring a ++value of mode @code{@B{real}}. The value yielded by the access clause ++is the value yielded by the controlled enclosed clause, which in this ++case is a closed clause. The strong context and required mode gets ++passed to the last unit of the closed clause (the assignation) which ++in this case yields a value of mode @code{@B{ref} @B{real}}. The unit ++is coerced to @code{@B{real}} by dereferencing, and the resulting ++value becomes the value yielded by the access clause. ++ ++@subsubsection Modules accessing other modules ++ ++A definition module may itself access other modules. This is done by ++placing the module text as a controlled clause of an access clause. ++Suppose we rewrite our logger module so it uses JSON internally to log ++JSON objects rather than raw strings. We could do it this way: ++ ++@example ++@B{module} @B{logger} = ++ @B{access} @B{json} ++ @B{def} @B{int} fd = stderr; ++ @B{pub} @B{string} originator; ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, json array (json string (originator), ++ json string (msg))); ++ ++ log (json string ("beginning of log\n")); ++ @B{postlude} ++ log (json string ("end of log\n")); ++ @B{fed} ++@end example ++ ++@noindent ++Note how this version of @code{@B{logger}} uses a few definitions ++publicized by the @code{@B{json}} module. ++ ++A program accessing @code{@B{logger}} will not see the definitions ++publicized by the @code{@B{json}} module. If that is what we ++intended, for example to allow the users of the logger to tweak their ++own JSON, we would need to specify it this way: ++ ++@example ++@B{module} @B{logger} = ++ @B{access} @B{pub} @B{json} ++ @B{def} @B{c} ...as before... @B{c} @B{fed} ++@end example ++ ++@noindent ++In this version the definitions publicized by @code{@B{json}} become ++visible to programs accessing @code{@B{logger}}. ++ ++@node Module activation ++@subsection Module activation ++ ++In all the examples seen so far the modules were accessed just once. ++In these cases, accessing the module via an access-clause caused the ++@dfn{activation} of the module. ++ ++Activating a module involves elaborating all the declarations and ++units that conform its prelude. Depending on the particular module ++definition that gets activated, this may involve all sort of side ++effects, such as allocating space for values and initializing them, ++opening files, @i{etc}. Once the modules specified in the access ++clause are successfully activated, the controlled clause gets ++elaborated itself, within the reach of all the publicized definitions ++by the activated modules as we saw in the last section. Finally, once ++the controlled clause has been elaborated, the module gets ++@dfn{revoked} by elaborating the serial clause in its postlude. ++ ++However, nothing prevents some given definition module to be accessed ++more than once in the same program. The following program, that makes ++use of the @code{@B{logger}} module, exemplifies this: ++ ++@example ++@B{access} @B{logger} ++@B{begin} originator := argv (1); ++ log ("executing program"); ++ @B{c} ... @B{c} ++ @B{access} @B{logger} (originator := argv (1) + ":subtask"; ++ log ("doing subtask") ++ @B{c} ... @B{c}) ++@B{end} ++@end example ++ ++@noindent ++In this program the module @code{@B{logger}} is accessed twice. The ++code is obviously written assuming that the inner access clause ++triggers a new activation of the @code{@B{logger}} module, allocating ++new storage and executing its prelude. This would result in the ++following log contents: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: beginning of log ++a.out:subtask: doing subtask ++a.out:subtask: end of log ++a.out: end of log ++@end example ++ ++@noindent ++However, this is not what happens. The module gets only activated ++once, as the result of the outer access clause. The inner access ++clause just makes the publicized indicators visible in its controlled ++clause. The actual resulting log output is: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: doing subtask ++a.out:subtask: end of log ++@end example ++ ++@noindent ++Which is not what we intended. Modules are not classes. If we wanted ++the logger to support several originators that can be nested, we would ++need to add support for it in the definition module. Something like: ++ ++@example ++@B{module} @B{logger} = ++ @B{def} @B{int} fd = stderr, max originators = 10; ++ @B{int} orig := 0; ++ [max originators]@B{string} originators; ++ ++ @B{pub} @B{proc} push originator = (@B{string} str) @B{void}: ++ (@B{assert} (orig < max originators); ++ orig +:= 1; ++ originators[orig] := str); ++ @B{pub} @B{proc} pop originator = @B{void}: ++ (@B{assert} (max originators > 0); ++ orig -:= 1); ++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: ++ fputs (fd, (originator[orig] /= "" | ": ") + msg + "\n"); ++ ++ log ("beginning of log\n"); ++ @B{postlude} ++ log ("end of log\n"); ++ @B{fed} ++@end example ++ ++@noindent ++Note how in this version of @code{@B{logger}} @code{originators} acts ++as a stack of originator strings, and it is not publicized. The ++management of the stack is done via a pair of publicized procedures ++@code{push originator} and @code{pop originator}. Our program will ++now look like: ++ ++@example ++@B{access} @B{logger} ++@B{begin} push originator (argv (1)); ++ log ("executing program"); ++ @B{c} ... @B{c} ++ @B{access} @B{logger} (push originator ("subtask"); ++ log ("doing subtask") ++ @B{c} ... @B{c}; ++ pop originator) ++@B{end} ++@end example ++ ++@noindent ++And the log output is: ++ ++@example ++a.out: beginning of log ++a.out: executing program ++a.out:subtask: doing subtask ++a.out: end of log ++@end example ++ ++ ++-------------------------------------------------------------- ++ ++module-indications are used to find interface-definitions of modules: ++ ++ ACCESS FOO SKIP ++ ++Looks for (in order): ++ ++ foo.m68 ++ foo.o ++ libfoo.so ++ ++Should we use instead: ++ ++ ACCESS "foo" SKIP ++ ++That would use for module indicators the same syntax than hole ++indicators. ++ ++Modules get accessed, invoked and revoked. ++ ++Access clauses: ++ ++: ACCESS A, B ++ ++Where A and B are ``revelations''. ++ ++In ++ ++: MODULE A = ACCESS B DEF ... FED ++ ++Doesn't reveals any contents of B. Whereas in: ++ ++: MODULE A = ACCESS PUB B DEF .. FED ++ ++The module A is also revealing B's public declarations. So accessing ++A provides access to B. ++ ++User-defined preludes go to the user-prelude. ++ ++Invocation and revocation:: How modules are executed. ++ ++It is possible for a definition module to not publicize any ++definition. Such modules would be used only for the side effects ++produced from executing the prelude and postlude when the module gets ++invoked and revoked. XXX: provide an example? ++ ++XXX ++ ++@node Modules and libraries ++@subsection Modules and libraries ++@cindex library ++@cindex prelude packet ++ ++XXX ++ ++@node Modules and protection ++@subsection Modules and protection ++@cindex protection ++@cindex publicized definition ++ ++XXX ++ ++@node Holes ++@section Holes ++@cindex hole ++ ++XXX ++ ++@node Particular programs ++@section Particular programs ++@cindex particular program ++ ++An Algol 68 @dfn{particular program} consists on an enclosed clause in ++a strong context with target mode @code{@B{void}}, possibly preceded ++by a set of zero or more labels. For example: ++ ++@example ++hello: ++@B{begin} puts ("Hello, world!\n") ++@B{end} ++@end example ++ ++@noindent ++Note that the enclosed clause conforming the particular program ++doesn't have to be a closed clause. Consider for example the ++following program, that prints out its command line arguments: ++ ++@example ++@B{for} i @B{to} argc ++@B{do} puts (argv (i) + "\n") @B{od} ++@end example ++ ++@menu ++* Exit status:: How do programs communicate success or failure. ++* The @code{stop} label:: How to terminate a program at any time. ++@end menu ++ ++@node Exit status ++@subsection Exit status ++@cindex exit status ++ ++Some operating systems have the notion of @dfn{exit status} of a ++process. In such systems, by default the execution of the particular ++program results in an exit status of success. It is possible for the ++program to specify an explicit exit status by using the standard ++procedure @code{set exit status}, like: ++ ++@example ++@b{begin} # ... program code ... # ++ @B{if} error found; ++ @B{then} set exit status (1) @B{fi} ++@b{end} ++@end example ++ ++In POSIX systems the status is an integer, and the system interprets a ++value other than zero as a run-time error. In other systems the ++status may be of some other type. To support this, the @code{set ++error status} procedure accepts as an argument an united value that ++accommodates all the supported systems. ++ ++The following example shows a very simple program that prints ``Hello ++world'' on the standard output and then returns to the operating ++system with a success status: ++ ++@example ++@B{begin} puts ("Hello world\n") ++@B{end} ++@end example ++ ++@node The @code{stop} label ++@subsection The @code{stop} label ++@cindex @code{stop} ++ ++A predefined label named @code{stop} is defined in the standard ++postlude. This label can be jumped to at any time by a program and it ++will cause it to terminate and exit. For example: ++ ++@example ++@B{begin} @B{if} argc /= 2 ++ @B{then} puts ("Program requires exactly two arguments."); ++ goto stop ++ @B{fi} ++ @B{C} ... @B{C} ++@B{end} ++@end example ++ ++@node The standard environment ++@section The standard environment ++@cindex standard environment ++ ++The environment in which particular programs run is expressed here in ++the form of pseudo code: ++ ++@example ++(@B{c} standard-prelude @B{c}; ++ @B{c} library-prelude @B{c}; ++ @B{c} system-prelude @B{c}; ++ @B{par} @B{begin} @B{c} system-task-1 @B{c}, ++ @B{c} system-task-2 @B{c}, ++ @B{c} system-task-n @B{c}, ++ @B{c} user-task-1 @B{c}, ++ @B{c} user-task-2 @B{c}, ++ @B{c} user-task-m @B{c} ++ @B{end}) ++@end example ++ ++@noindent ++Where each user task consists on: ++ ++@example ++(@B{c} particular-prelude @B{c}; ++ @B{c} user-prelude @B{c}; ++ @B{c} particular-program @B{c}; ++ @B{c} particular-postlude @B{c}) ++@end example ++ ++The only standard system task described in the report is expressed in ++pseudo-code as: ++ ++@example ++@B{do} @B{down} gremlins; undefined; @B{up} bfileprotect @B{od} ++@end example ++ ++@noindent ++Which denotes that, once a book (file) is closed, anything may happen. ++Other system tasks may exist, depending on the operating system. In ++general these tasks in the parallel clause denote the fact that the ++operating system is running in parallel (intercalated) with the user's ++particular programs. ++ ++@itemize @bullet ++@item ++The library-prelude contains, among other things, the prelude parts of ++the defining modules provided by library. ++ ++@item ++The particular-prelude and particular-postlude are common to all the ++particular programs. ++ ++@item ++The user-prelude is where the prelude parts of the defining modules ++involved in the compilation get stuffed. If no defining module is ++involved then the user-prelude is empty. ++@end itemize ++ ++Subsequent sections in this manual include a detailed description of ++the contents of these preludes. ++ ++@node Comments and pragmats ++@chapter Comments and pragmats ++ ++Comments and pragmats, also known collectively as @dfn{pragments}, can ++appear almost anywhere in an Algol 68 program. Comments are usually ++used for documentation purposes, and pragmats contain annotations for ++the compiler. Both are handled at the lexical level. ++ ++@menu ++* Comments:: Your typical friendly comments. ++* Pragmats:: In-source directives for the compiler. ++@end menu ++ ++@node Comments ++@section Comments ++ ++In the default modern stropping regime supported by GCC comments are ++written between @code{@{} and @code{@}} delimiters, and can be nested ++to arbitrary depth. For example: ++ ++@example ++foo +:= 1; @{ Increment foo. @} ++@end example ++ ++If UPPER stropping is selected, this compiler additionally supports ++three classical Algol 68 comment styles, in which the symbols marking ++the beginning of comments are the same than the symbols marking the ++end of comments and therefore can't be nested: @code{@B{comment} ++... @B{comment}}, @code{@B{co} ... @B{co}} and @code{# .. #}. For ++example: ++ ++@example ++@B{comment} ++ This is a comment. ++@B{comment} ++ ++foo := 10; @B{co} this is also a comment @B{co} ++foo +:= 1; # and so is this. # ++@end example ++ ++Unless @option{-std=algol68} is specified in the command line, two ++styles of nestable comments can be also used with UPPER stropping: the ++already explained @code{@{ ... @}} and a ``bold'' style that uses ++@code{@B{code} ... @B{edoc}}. For example: ++ ++@example ++foo := 10; @{ this is a nestable comment in brief style. @} ++foo +:= 1; @B{note} this is a nestable comment in bold style. @B{eton}. ++@end example ++ ++@example ++@B{note} ++ "Bold" nestable comments. ++@B{eton} ++ ++@{ "Brief" nestable comments. @} ++@end example ++ ++In UPPER stropping all comment styles are available, both classic and ++nestable. In modern SUPPER stropping, which is based on reserved ++words, only @code{@{ ... @}} is available. ++ ++@node Pragmats ++@section Pragmats ++ ++@cindex pragmat ++@dfn{Pragmats} (also known as @dfn{pragmas} in other programming ++languages) are directives and annotations for the compiler, and their ++usage impacts the compilation process in several ways. A pragmat ++starts with either @code{@B{pragmat}} or @code{@B{pr}} and finished ++with either @code{@B{pragmat}} or @code{@B{pr}} respectively. ++Pragmats cannot be nested. For example: ++ ++@example ++@B{pr} include "foo.a68" @B{pr} ++@end example ++ ++The interpretation of pragmats is compiler-specific. This chapter ++documents the pragmats supported by GCC. ++ ++@menu ++* pragmat include:: Include another source file. ++@end menu ++ ++@node pragmat include ++@subsection pragmat include ++@cindex include ++ ++An @dfn{include pragmat} has the form: ++ ++@example ++@B{pr} include "PATH" @B{pr} ++@end example ++ ++@noindent ++Where @code{PATH} is the path of the file whose contents are to be ++included at the location of the pragmat. If the provided path is ++relative then it is interpreted as relative to the directory ++containing the source file that contains the pragmat. ++ ++The @option{-I} command line option can be used in order to add ++additional search paths for @code{include}. ++ ++@node Hardware representation ++@chapter Hardware representation ++ ++The @dfn{reference language} specified by the Revised Report describes ++Algol 68 particular programs as composed by @dfn{symbols}. However, ++the Report leaves the matter of the concrete representation of these ++symbols, the @dfn{representation language}, open to the several ++implementations. This was motivated by the very heterogeneous ++computer systems in existence at the time the Report was written, ++which made flexibility in terms of representation a crucial matter. ++ ++This flexibility was indeed exploited by the early implementations, ++and there was a price to pay for it. A few years after the ++publication of the Revised Report the different implementations had ++already given rise to a plethora of many related languages that, ++albeit being strict Algol 68, differed considerably in appearance. ++This, and the fact that people were already engrossed in writing ++programs other than compilers that needed to process Algol 68 ++programs, such as code formatters and macro processors, prompted the ++WG 2.1 to develop and publish a @dfn{Report on the Standard Hardware ++Representation for ALGOL 68}, which came out in 1975. ++ ++This compiler generally follows the Standard Hardware Representation, ++but deviates from it in a few aspects. This chapter provides an ++overview of the hardware representation and documents any deviation. ++ ++@menu ++* Representation languages:: From symbols to syntactic marks. ++* Worthy characters:: Marks that can appear in a program. ++* Base characters:: Mapping of worthy characters to code points. ++* Stropping regimes:: Representation of bold words. ++* Monads and Nomads:: Characters that can appear in operator names. ++* String breaks:: String literals and escape sequences. ++@end menu ++ ++@node Representation languages ++@section Representation languages ++ ++A program in the strict Algol 68 language is composed by a series of ++symbols. These symbols have names such as @code{letter-a-symbol} and ++@code{assigns-to-symbol} which are, well, purely symbolic. In fact, ++these are notions in the two-level grammar that defines the strict ++language. ++ ++A @dfn{representation language} provides a mapping between symbols in ++the strict language and the representation of these symbols. Each ++representation is a sequence of syntactic marks. For example, the ++@code{completion symbol} may be represented by @strong{exit}, where ++the marks are the bold letters. The @code{tilde symbol} may be ++represented by @code{~}, which is a single mark. The representation of ++@code{assigns to symbol} is @code{:=}, which is composed by the two ++marks @code{:} and @code{=}. The representation of @code{letter-a} ++is, not surprising, the single mark @code{a}. ++ ++The section 9.4 of the Report describes the recommended representation ++for all the symbols of the language. The set of all recommendations ++constitutes the so-called @dfn{reference language}. Algol 68 ++implementations are strongly encouraged to use representation ++languages which are similar enough to the reference language, ++recognizable ``without further elucidation'', but this is not ++strictly required. ++ ++A representation language may specify more than one representation for ++a given symbol. For example, in the reference language the @code{is ++not symbol} is represented by @strong{isnt}, @code{:/=:} and a variant ++of the later where the slash sign is superimposed on the equal sign. ++In this case, an implementation can choose to implement any number of ++the representations. ++ ++Spaces, tabs and newlines are @dfn{typographical display features} ++that, when they appear between symbols, are of no significance and do ++not alter the meaning of the program. However, when a space or a tab ++appear in string or character denotations, they represent the ++@code{space symbol} and the @code{tab symbol} ++respectively@footnote{The @code{tab symbol} is a GNU extension}. ++ ++@node Worthy characters ++@section Worthy characters ++@cindex worthy characters ++ ++The syntactic marks of a representation language, both symbols and ++typographical display features, are realized as a set of @dfn{worthy ++characters} and the newline. Effectively, an Algol 68 program is a ++sequence of @dfn{worthy characters} and newlines. The worthy ++characters are: ++ ++@example ++a b c d e f g h i j k l m n o p q r s t u v w x y z ++A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ++0 1 2 3 4 5 6 7 8 9 ++space tab " # $ % & ' ( ) * + , - . / : ; < = > @ [ \ ] ++^ _ | @ ! ? ~ @{ @} ++@end example ++ ++Some of the characters above were considered unworthy by the original ++Standard Hardware Representation: ++ ++@table @code ++@item ! ++It was considered unworthy because many installations didn't have a ++vertical bar base character, and @code{!} was used as a base character ++for @code{|}. Today every computer system features a vertical bar ++character, so @code{!} can qualify as a worthy character. ++@item & ++The Revised Report specifies that @code{&} is a monad, used as a ++symbol for the dyadic @code{@B{and}} operator. The Standard Hardware ++representation decided to turn it into an unworthy character, ++motivated by the fact that no nomads existed for the other logical ++operators @code{@B{not}} and @code{@B{or}}, and also with the goal of ++maintaining the set of worthy characters as small as possible to ++improve portability. Recognizing that the first motivation still ++holds, but not the second, this compiler re-instates @code{&} as a ++monad but doesn't use it as an alternative representation of the ++@code{@B{and}} operator. ++@item ~ ++The Standard Hardware Representation vaguely cites some ``severe ++difficulties'' with the hardware representation of the tilde ++character. Whatever these difficulties were at the time, they surely ++don't exist anymore. This compiler therefore recognizes @code{~} as a ++worthy character, and is used as a monad. ++@item ? ++The question mark character was omitted as a worthy character to limit ++the size of the worthy set. This compiler recognizes @code{?} as a ++worthy character, and is used as a monad. ++@item \ ++Back-slash wasn't included as a worthy character because back in 1975 ++it wasn't supported in EBCDIC (it is now). This compiler recognizes ++@code{\} as a worthy character. ++@item tab ++This compiler recognizes the tabulator character as a worthy ++character, and it is used as a typographical display feature. ++@end table ++ ++@node Base characters ++@section Base characters ++@cindex base characters ++ ++The worthy characters described in the previous section are to be ++interpreted symbolically rather than visually. The worthy character ++@code{|}, for example, is the vertical line character and generally ++looks the same in every system. The worthy character @code{space} is ++obviously referred by a symbolic name. ++ ++The actual visually distinguishable characters available in an ++installation are known as @dfn{base characters}. The Standard ++Hardware Representation allows implementations the possibility of ++using two or more base characters to represent a single worthy ++character. This was the case of the @code{|} character, which was ++represented in many implementations by either @code{|} or @code{!}. ++ ++This compiler uses the set of base characters corresponding to the ++subset of the Unicode character set that maps one to one to the set of ++worthy characters described in the previous section: ++ ++@example ++A-Z 65-90 ++a-z 97-122 ++space 32 ++tab 9 ++! 33 ++" 34 ++# 35 ++$ 36 ++% 37 ++& 38 ++' 39 ++( 40 ++) 41 ++* 42 +++ 43 ++, 44 ++- 45 ++. 46 ++/ 47 ++: 58 ++; 59 ++< 60 ++= 61 ++> 62 ++? 63 ++@@ 64 ++[ 91 ++\ 92 ++] 93 ++^ 94 ++_ 95 ++| 124 ++~ 126 ++@end example ++ ++@node Stropping regimes ++@section Stropping regimes ++ ++The Algol 68 reference language establishes that certain source ++constructs, namely mode indications and operator indications, consist ++in a sequence of @dfn{bold letters} and @dfn{bold digits}, known as a ++@dfn{bold word}. In contrast, other constructs like identifiers, ++field selectors and labels, collectively known as @dfn{tags}, are ++composed of regular, non-bold letters and digits. ++ ++What is precisely a bold letter or digit, and how they differ from ++non-bold letters and digits, is not specified by the Report. This is ++no negligence, but a conscious effort at abstracting the definition of ++the so-called @dfn{strict language} from its representation. This ++allows different representations of the same language. ++ ++Some representations of Algol 68 are intended to be published in ++books, be it paper or electronic devices, and be consumed by persons. ++These are called @dfn{publication languages}. In publication ++languages bold letters and digits are typically represented by actual ++bold alphanumeric typographic marks. An Algol 68 program hand written ++on a napkin or a sheet of paper would typically represent bold letters ++and digits underlined, or stroked using a different color ink. ++ ++Other representations of Algol 68 are intended to be automatically ++processed by a computer. These representations are called ++@dfn{hardware languages}. Sometimes the hardware languages are also ++intended to be written and read by programmers; these are called ++@dfn{programming languages}. ++ ++Unfortunately, computer systems today usually do not yet provide ++readily usable and ergonomic bold or underline alphanumeric marks, ++despite the existence of Unicode and modern and sophisticated editing ++environments. The lack of appropriate input methods surely plays a ++role to explain this. Thus, the programming representation languages ++of Algol 68 should resort to a technique known as @dfn{stropping} in ++order to differentiate bold letters and digits from non-bold letters ++and digits. The set of rules specifying the representation of these ++characters is called a @dfn{stropping regime}. ++ ++There are three classical stropping regimes for Algol 68, which are ++standardized and specified in the Standard Hardware Representation ++normative document. These are @dfn{POINT stropping}, @dfn{RES ++stropping} and @dfn{UPPER stropping}. The following sections do a ++cursory tour over them; for more details the reader is referred to the ++Standard Hardware Representation. ++ ++This compiler implements UPPER stropping and SUPPER stropping. ++ ++@menu ++* POINT stropping:: ++* RES stropping:: ++* UPPER stropping:: ++* SUPPER stropping:: ++@end menu ++ ++@node POINT stropping ++@subsection POINT stropping ++ ++POINT stropping is in a way the most fundamental of the three standard ++regimes. It was designed to work in installations with limited ++character sets that provide only one alphabet, one set of digits, and ++a very restricted set of other symbols. ++ ++In POINT stropping a bold word is represented by its constituent ++letters and digits preceded by a point character. For example, the ++symbol @code{bold begin symbol} in the strict language, which is ++represented as @strong{begin} in bold face in the reference language, ++would be represented as @code{.BEGIN} in POINT stropping. ++ ++More examples are summarized in the following table. ++ ++@multitable @columnfractions .33 .33 .33 ++@headitem Strict language @tab Reference language @tab POINT stropping ++@item @code{true symbol} @tab @strong{true} @tab @code{.TRUE} ++@item @code{false symbol} @tab @strong{false} @tab @code{.FALSE} ++@item @code{integral symbol} @tab @strong{int} @tab @code{.INT} ++@item @code{completion symbol} @tab @strong{exit} @tab @code{.EXIT} ++@item @code{bold-letter-c-...} @tab @strong{crc32} @tab @code{.CRC32} ++@end multitable ++ ++In POINT stropping a tag is represented by writing its constituent ++non-bold letters and digits in order. But they are organized in ++several @dfn{taggles}. ++ ++Each taggle is a sequence of one or more letters and digits, ++optionally followed by an underscore character. For example, the tag ++@code{PRINT} is composed of a single taggle, but the tag ++@code{PRINT_TABLE} is composed of a first taggle @code{PRINT_} ++followed by a second taggle @code{TABLE}. ++ ++To improve readability it is possible to insert zero or more white ++space characters between the taggles in a tag. Therefore, the tag ++@code{PRINT_TABLE} could have been written @code{PRINT TABLE}, or even ++@code{PRINT_ TABLE}. This is the reason why Algol 68 identifiers, ++labels and field selectors can and do usually feature white spaces in ++them. ++ ++It is important to note that both the trailing underscore characters ++in taggles and the white spaces in a tag do not contribute anything to ++the denoted tag: these are just stropping artifacts aimed to improve ++readability. Therefore @code{FOOBAR} @code{FOO BAR}, @code{FOO_BAR} ++and @code{FOO_BAR_} are all representations of the same tag, that ++represents the ++@code{letter-f-letter-o-letter-o-letter-b-letter-a-letter-r} language ++construct. ++ ++Below is the text of an example Algol 68 procedure encoded in POINT ++stropping. ++ ++@example ++.PROC RECSEL OUTPUT RECORDS = .VOID: ++.BEGIN .BITS FLAGS ++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); ++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, ++ RECUTL QUICK, FLAGS); ++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); ++ ++ SKIP COMMENTS .OF WRITER := .TRUE; ++ .IF RECUTL PRINT SEXPS ++ .THEN MODE .OF WRITER := REC WRITER SEXP .FI; ++ REC WRITE (WRITER, RES) ++.END ++@end example ++ ++@node RES stropping ++@subsection RES stropping ++ ++The early installations where Algol 68 ran not only featured a very ++restricted character set, but also suffered from limited storage and ++complex to use and time consuming input methods such as card punchers ++and readers. It was important for the representation of programs to ++be as compact as possible. ++ ++It is likely that is what motivated the introduction of the RES ++stropping regime. As its name implies, it removes the need of ++stropping many bold words by introducing @dfn{reserved words}. ++ ++A @dfn{reserved word} is one of the bold words specified in the ++section 9.4.1 of the Report as a representation of some symbol. ++Examples are @strong{at}, @strong{begin}, @strong{if}, @strong{int} ++and @strong{real}. ++ ++RES stropping encodes bold words and tags like POINT stropping, but if ++a bold word is a reserved word then it can then be written without a ++preceding point, achieving this way a more compact, and easier to ++read, representation for programs. ++ ++Introducing reserved words has the obvious disadvantage that some tags ++cannot be written the obvious way due to the possibility of conflicts. ++For example, to represent a tag @code{if} it is not possible to just ++write @code{IF}, because it conflicts with a reserved word, but this ++can be overcome easily (if not elegantly) by writing @code{IF_} ++instead. ++ ++Below is the @code{recsel output records} procedure again, this time ++encoded in RES stropping. ++ ++@example ++PROC RECSEL OUTPUT RECORDS = VOID: ++BEGIN BITS FLAGS ++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); ++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, ++ RECUTL QUICK, FLAGS); ++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); ++ ++ SKIP COMMENTS OF WRITER := TRUE; ++ IF RECUTL PRINT SEXPS ++ THEN MODE .OF WRITER := REC WRITER SEXP FI; ++ REC WRITE (WRITER, RES) ++END ++@end example ++ ++Note how user-defined mode an operator indications still require ++explicit stropping. ++ ++@node UPPER stropping ++@subsection UPPER stropping ++ ++In time computers added support for more than one alphabet by ++introducing character sets with both upper and lower case letters, ++along with convenient ways to both input and display these. ++ ++In UPPER stropping the bold letters in bold word are represented by ++upper-case letters, whereas the letters in tags are represented by ++lower-case letters. ++ ++The notions of upper- and lower-case are not applicable to digits, but ++since the language syntax assures that it is not possible to have a ++bold word that starts with a digit, digits are considered to be bold ++if they follow a bold letter or another bold digit. ++ ++Below is the @code{recsel output records} procedure again, this time ++encoded in UPPER stropping. ++ ++@example ++PROC recsel output records = VOID: ++BEGIN BITS flags ++ := (include descriptors | rec f descriptor | rec f none); ++ RECRSET res = rec db query (db, recutl type, ++ recutl quick, flags); ++ RECWRITER writer := rec writer file new (stdout); ++ ++ skip comments of writer := TRUE; ++ IF recutl print sexps ++ THEN mode OF writer := rec writer sexp FI; ++ rec write (writer, res) ++END ++@end example ++ ++Note how in this regime it is almost never necessary to introduce bold ++tags with points. All in all, it looks much more natural to ++contemporary readers. UPPER stropping is in fact the stropping regime ++of choice today. It is difficult to think of any reason why anyone ++would resort to use POINT or RES stropping. ++ ++@node SUPPER stropping ++@subsection SUPPER stropping ++ ++In the SUPPER stropping regime bold words are written by writing a ++sequence of one or more @dfn{taggles}. Each taggle is written by ++writing a letter followed by zero or more other letters and digits and ++is optionally followed by a trailing underscore character. The first ++letter in a bold word shall be an upper-case letter. The rest of the ++letters in the bold word may be either upper- or lower-case. ++ ++For example, @code{RecRset}, @code{Rec_Rset} and @code{RECRset} are ++all different ways to represent the same mode indication. This allows ++to recreate popular naming conventions such as @code{CamelCase}. ++ ++As in the other stropping regimes, the casing of the letters and the ++underscore characters are not really part of the mode or operator ++indication. ++ ++Operator indications are also bold words and are written in exactly ++the same way than mode indications, but it is usually better to always ++use upper-case letters in operator indications. On one side, it looks ++better, especially in the case of dyadic operators where the asymmetry ++of, for example @code{Equal} would look odd, consider @code{m1 Equal ++m2} as opposed to @code{m1 EQUAL m2}. On the other side, tools like ++editors can make use of this convention in order to highlight operator ++indications differently than mode indications. ++ ++In the SUPPER stropping regime tags are written by writing a sequence ++of one or more @dfn{taggles}. Each taggle is written by writing a ++letter followed by zero or more other letters and digits and is ++optionally followed by a trailing underscore character. All letters ++in a tag shall be lower-case letters. ++ ++For example, the identifier @code{list} is represented by a single ++taggle, and it is composed by the letters @code{l}, @code{i}, @code{s} ++and @code{t}, in order. In the jargon of the strict language we would ++spell the tag as @code{letter-l-letter-i-letter-s-letter-t}. ++ ++The label @code{found_zero} is represented by two taggles, ++@code{found_} and @code{zero}, and it is composed by the letters ++@code{f}, @code{o}, @code{u}, @code{n}, @code{d}, @code{z}, @code{e}, ++@code{r} and @code{o}, in order. In the jargon of the strict language ++we would spell the tag as @code{letter-f-letter-o-letter-u-letter-n ++-letter-d-letter-z-letter-e-letter-r-letter-o}. ++ ++The identifier @code{crc_32} is likewise represented by two taggles, ++@code{crc_} and @code{32}. Note how the second taggle contains only ++digits. In the jargon of the strict language we would spell the tag ++as @code{letter-c-letter-r-letter-c-digit-three-digit-two}. ++ ++The underscore characters are not really part of the tag, but part of ++the stropping. For example, both @code{goto found_zero} and ++@code{goto foundzero} jump to the same label. ++ ++The @code{recsel output records} procedure, encoded in SUPPER ++stropping, looks like below. ++ ++@example ++proc recsel_output_records = void: ++begin bits flags ++ := (include_descriptors | rec_f_descriptor | rec_f_none); ++ RecRset res = rec_db_query (db, recutl_type, ++ recutl_uick, flags); ++ RecWriter writer := rec_writer_file_new (stdout); ++ ++ skip_comments of writer := true; ++ if recutl_print_sexps ++ then mode_ of writer := rec_writer_sexp fi; ++ rec_write (writer, res) ++end ++@end example ++ ++@node Monads and Nomads ++@section Monads and Nomads ++@cindex monads ++@cindex nomads ++ ++Algol68 operators, be them predefined or defined by the programmer, ++can be referred via either bold tags or sequences of certain ++non-alphabetic symbols. For example, the dyadic operator @code{+} is ++defined for many modes to perform addition, the monadic operator ++@code{@B{entier}} gets a real value and rounds it to an integral ++value, and the operator @code{:=:} is the identity relation. Many ++operators provide both bold tag names and symbols names, like in the ++case of @code{:/=:} that can also be written as @code{@B{isnt}}. ++ ++Bold tags are lexically well delimited, and if the same tag is used to ++refer to a monadic operator and to a dyadic operator, no ambiguity can ++arise. For example, in the following program it is clear that the ++second instance of @code{@B{plus}} refers to the monadic operator, and ++the first instance refers to the dyadic operator@footnote{If one would ++write @code{@B{plusplus}}, it would be a third different bold tag.}. ++ ++@example ++@B{op} @B{PLUS} = (@B{int} a, b) @B{int}: a + b, ++ @B{PLUS} = (@B{int} a): a; ++@B{int} val = 2 @B{PLUS} @B{PLUS} 3; ++@end example ++ ++On the other hand, symbols are not lexically delimited as words, and ++one symbol can appear immediately following another symbol. This can ++lead to ambiguities. For example, if we were to define a C-like ++monadic operator @code{++} like: ++ ++@example ++@B{op} ++ = (@B{ref} @B{int} a) @B{int}: (@B{int} t = a; a +:=1; t); ++@end example ++ ++@noindent ++Then the expression @code{++a} would be ambiguous: is it @code{++a} or ++@code{+(+a)}?. In a similar way, if we would use @code{++} as the ++name of a dyadic operator, an expression like @code{a++b} could be ++also interpreted as both @code{a++b} and @code{a+(+b)}. ++ ++To avoid these problems Algol 68 divides the symbols which are ++suitable to appear in the name of an operator into two classes: monads ++and nomads. @dfn{Monads} are symbols that can be used as monadic ++operators. @dfn{Nomads} are symbols which can be used as both monadic ++or dyadic operators. Given these two sets, the rules to conform a ++valid operator are: ++ ++@itemize @minus ++@item A bold tag. ++@item Any monad. ++@item A monad followed by a nomad. ++@item A monad optionally followed by a nomad followed by either @code{:=} or @code{=:}, but not by both. ++@end itemize ++ ++@noindent ++In the GNU Algol 68 compiler: ++ ++@itemize @minus ++@item The set of monads is @code{%^&+-~!?}. ++@item The set of nomads is @code{> 1} and ++@code{1 - small real < 1}. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits lengths} ++1 plus the number of extra widths of bits which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits shorths} ++1 plus the number of extra shorths of bits which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bits width} ++@deftypevrx Constant @B{int} {long bits width} ++@deftypevrx Constant @B{int} {long long bits width} ++The number of bits in a @code{@B{bits}} value. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes lengths} ++1 plus the number of extra widths of bytes which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes shorths} ++1 plus the number of extra shorths of bytes which are meaningful. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {bytes width} ++@deftypevrx Constant @B{int} {long bytes width} ++@deftypevrx Constant @B{int} {long long bytes width} ++The number of chars in a @code{@B{bytes}} value. ++@end deftypevr ++ ++@deftypevr Constant @B{int} {max abs char} ++The largest value which @code{@B{abs}} of a @code{@B{char}} can yield. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {null character} ++Some character. ++@end deftypevr ++ ++@deftypevr Constant @B{char} flip ++@deftypevrx Constant @B{char} flop ++Characters used to represent @code{@B{true}} and @code{@B{false}} ++boolean values in textual transput. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {error char} ++Character used to represent the digit of a value resulting from a ++conversion error in textual transput. ++@end deftypevr ++ ++@deftypevr Constant @B{char} blank ++The space character. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L pi} ++The number pi. ++@end deftypevr ++ ++@node Standard modes ++@section Standard modes ++ ++@deftp Mode @B{void} ++The only value of this mode is @code{@B{empty}}. ++@end deftp ++ ++@deftp Mode @B{bool} ++Mode for the boolean truth values @code{@B{true}} and @code{@B{false}}. ++@end deftp ++ ++@deftp Mode {@B{l} @B{int}} ++Modes for signed integral values. Each @code{@B{long}} or ++@code{@B{short}} may increase or decrease the range of the domain, ++depending on the characteristics of the current target. Further ++@code{@B{long}}s and @code{@B{short}}s may be specified with no ++effect. ++@end deftp ++ ++@deftp Mode {@B{l} @B{real}} ++Modes for signed real values. Each @code{@B{long}} may increase the ++upper range of the domain, depending on the characteristics of the ++current target. Further @code{@B{long}}s may be specified but with no ++effect. ++@end deftp ++ ++@deftp Mode @B{char} ++Mode for character values. The character values are mapped one-to-one ++to code points in the 21-bit space of Unicode. ++@end deftp ++ ++@deftp Mode @B{string} {= @B{flex}[1:0]@B{char}} ++Mode for sequences of characters. This is implemented as a flexible ++row of @code{@B{char}} values. ++@end deftp ++ ++@deftp Mode {@B{l} @B{compl}} {= @B{struct} (@B{real} re,im)} ++Modes for complex values. Each @code{@B{long}} may increase the ++precision of both the real and imaginary parts of the numbers, ++depending on the characteristics of the current target. Further ++@code{@B{long}}s may be specified with no effect. ++@end deftp ++ ++@deftp Mode {@B{l} @B{bits}} ++Compact and efficient representation of a row of boolean values. Each ++@code{@B{long}} may increase the number of booleans that can be packed ++in a bits, depending on the characteristics of the current target. ++@end deftp ++ ++@deftp Mode {@B{l} @B{bytes}} ++Compact and efficient representation of a row of character values. ++Each @code{@B{long}} may increase the number of characters that can be ++packed in a bytes, depending on the characteristics of the current ++target. ++@end deftp ++ ++@node Standard priorities ++@section Standard priorities ++ ++@table @code ++@item 1 ++@itemize @bullet ++@item @code{plusab}, @code{+:=} ++@item @code{minusab}, @code{-:=} ++@item @code{timesab}, @code{*:=} ++@item @code{divab}, @code{/:=} ++@item @code{overab}, @code{%:=} ++@item @code{modab}, @code{%*:=} ++@item @code{plusto}, @code{+=:} ++@end itemize ++ ++@item 2 ++@itemize @bullet ++@item @code{or} ++@end itemize ++ ++@item 3 ++@itemize @bullet ++@item @code{and} ++@item @code{xor} ++@end itemize ++ ++@item 4 ++@itemize @bullet ++@item @code{@B{eq}}, @code{=} ++@item @code{@B{ne}}, @code{/=} ++@end itemize ++ ++@item 5 ++@itemize @bullet ++@item @code{@B{lt}}, @code{<}, ++@item @code{@B{le}}, @code{<=} ++@item @code{@B{gt}}, @code{>} ++@item @code{@B{ge}}, @code{>=} ++@end itemize ++ ++@item 6 ++@itemize @bullet ++@item @code{+} ++@item @code{-} ++@end itemize ++ ++@item 7 ++@itemize @bullet ++@item @code{*} ++@item @code{/} ++@item @code{@B{over}}, @code{%} ++@item @code{@B{mod}}, @code{%*} ++@item @code{@B{elem}} ++@end itemize ++ ++@item 8 ++@itemize @bullet ++@item @code{**} ++@item @code{@B{shl}}, @code{@B{up}} ++@item @code{@B{shr}}, @code{@B{down}} ++@item @code{@B{up}}, @code{@B{down}} ++@item @code{^} ++@item @code{@B{lwb}} ++@item @code{@B{upb}} ++@end itemize ++ ++@item 9 ++@itemize @bullet ++@item @code{@B{i}} ++@item @code{+*} ++@end itemize ++@end table ++ ++@node Rows operators ++@section Rows operators ++ ++The following operators work on any row mode, denoted below using the ++pseudo-mode @code{@B{rows}}. ++ ++@deftypefn Operator {} {@B{lwb}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the lower bound of the first bound pair ++of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{upb}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the upper bound of the first bound pair ++of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lwb}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the lower bound in the n-th bound pair of ++the descriptor of the value of @code{a}, if that bound pair exists. ++Attempting to access a non-existing bound pair results in a run-time ++error. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{upb}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the upper bound in the n-th bound pair of ++the descriptor of the value of @code{a}, if that bound pair exists. ++Attempting to access a non-existing bound pair results in a run-time ++error. ++@end deftypefn ++ ++@node Boolean operators ++@section Boolean operators ++ ++@deftypefn Operator {} {@B{not}} {= (@B{bool} a) @B{bool}} ++@deftypefnx Operator {} {~} {= (@B{bool} a) @B{bool}} ++Monadic operator that yields the logical negation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{or}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the logical ``or'' of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{and}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {@B{&}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the logical ``and'' of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields @code{@B{true}} if its operands are the ++same truth value, @code{@B{false}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{bool} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields @code{@B{false}} if its operands are the ++same truth value, @code{@B{true}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{bool} a) @B{int}} ++Monadic operator that yields 1 if its operand is @code{@B{true}}, and ++0 if its operand is @code{@B{false}}. ++@end deftypefn ++ ++@node Integral operators ++@section Integral operators ++ ++@subsection Arithmetic ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the affirmation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the negative of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{int} a) @B{l} @B{int}} ++Monadic operator that yields the absolute value of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{int} a) @B{int}} ++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} ++is zero and 1 if @code{a} is positive. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{odd}} {= (@B{l} @B{int} a) @B{bool}} ++Monadic operator that yields @code{@B{true}} if its operand is odd, ++@code{@B{false}} otherwise. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the addition of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields @code{b} subtracted from @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the multiplication of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{over}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {%} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the integer division of @code{a} by ++@code{b}, rounding the quotient toward zero. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{mod}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {%*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields the remainder of the division of @code{a} ++by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {/} {= (@B{l} @B{int} a, b) @B{l} @B{real}} ++Dyadic operator that yields the integer division with real result of ++@code{a} by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{int} a, b) @B{l} @B{int}} ++Dyadic operator that yields @code{a} raised to the exponent @code{b}. ++@end deftypefn ++ ++@subsection Arithmetic combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a - b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a * b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{overab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {%:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a % b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{modab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++@deftypefnx Operator {} {%*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} ++Dyadic operator that calculates @code{a %* b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{int} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{int} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversion ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{short} @B{int} a) @B{short} @B{short} @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{int} a) @B{short} @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{int} a) @B{int}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{int} a) @B{long} @B{int}} ++Monadic operator that yields, if it exists, the integral value that ++can be lengthened to the value of @code{a}. If the value doesn't ++exist then the operator yields either the most positive integral value ++in the destination mode, if @code{a} is bigger than that value, or the ++most negative integral value in the destination mode, if @code{a} is ++smaller than that value. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{short} @B{short} @B{int} a) @B{short} @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{short} @B{int} a) @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{int} a) @B{long} @B{int}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{int} a) @B{long} @B{long} @B{int}} ++Monadic operator that yields the integral value lengthened from the ++value of @code{a}. ++@end deftypefn ++ ++@node Real operators ++@section Real operators ++ ++@subsection Arithmetic ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the affirmation of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the negative of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Monadic operator that yields the absolute value of its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} ++is zero and 1 if @code{a} is positive. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the addition of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {-} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields @code{b} subtracted from @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the multiplication of its operands. ++@end deftypefn ++ ++@deftypefn Operator {} {/} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields the realeger division with real result of ++@code{a} by @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Dyadic operator that yields @code{a} raised to the real exponent @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} ++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} ++Dyadic operator that yields @code{a} raised to the integral exponent ++@code{b}. ++@end deftypefn ++ ++@subsection Arithmetic combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a - b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a * b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{divab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++@deftypefnx Operator {} {/:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} ++Dyadic operator that calculates @code{a / b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{real} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{real} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{round}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields the nearest integer to its operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{entier}} {= (@B{l} @B{real} a) @B{int}} ++Monadic operator that yields the integer equal to @code{a}, or the ++next integer below (more negative than) @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{real} a) @B{real}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{real} a) @B{long} @B{real}} ++Monadic operator that yields, if it exists, the real value that ++can be lengthened to the value of @code{a}. If the value doesn't ++exist then the operator yields either the most positive real value ++in the destination mode, if @code{a} is bigger than that value, or the ++most negative real value in the destination mode, if @code{a} is ++smaller than that value. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{real} a) @B{long} @B{real}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{real} a) @B{long} @B{long} @B{real}} ++Monadic operator that yields the real value lengthened from the ++value of @code{a}. ++@end deftypefn ++ ++@node Character operators ++@section Character operators ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is less than, or equal to ++@code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{char} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{char} a, b) @B{bool}} ++Dyadic operator that yields whether @code{a} is greater than, or equal ++to @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{ABS}} {= (@B{char} a) @B{int}} ++Monadic operator that yields an unique integer for each permissable ++value of @code{@B{char}}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{REPR}} {= (@B{int} a) @B{char}} ++The opposite of @code{@B{abs}} of a character. ++@end deftypefn ++ ++@node String operators ++@section String operators ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. Two ++strings are equal if they contain the same sequence of characters. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is less than ++the string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is less than, ++or equal to string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is greater ++than the string @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{string} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{string} a, b) @B{bool}} ++Dyadic operator that yields whether the string @code{a} is greater ++than, or equal to the string @code{b}. ++@end deftypefn ++ ++@subsection Composition ++ ++@deftypefn Operator {} {+} {= (@B{string} a, b) @B{string}} ++Dyadic operator that yields the concatenation of the two given ++strings as a new string. ++@end deftypefn ++ ++@deftypefn Operator {} {+} {= (@B{string} a, @B{char} b) @B{string}} ++Dyadic operator that yields the concatenation of the given string ++@code{a} and a string whose contents are the character @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {*} (= (@B{int} a, @B{string} b) @B{string}) ++@deftypefnx Operator {} {*} (= (@B{string} b, @B{int} a) @B{string}) ++Dyadic operator that yields the string @code{a} concatenated @code{a} ++times to itself. If @code{a} is less than zero then it is interpreted ++to be zero. ++@end deftypefn ++ ++@subsection Composition combined with assignation ++ ++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{plusto}} {= (@B{string} b, @B{ref} @B{string} a) @B{ref} @B{string}} ++@deftypefnx Operator {} {+=:} {= (@B{string} b, @B{ref} @B{string} b) @B{ref} @B{string}} ++Dyadic operator that calculates @code{a + b}, assigns the result of ++the operation to the name @code{a} and then yields @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} ++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{stringl}} ++@dfn{Plus and become}. Dyadic operator that calculates @code{a * b}, ++assigns the result of the operation to the name @code{a} and then ++yields @code{a}. ++@end deftypefn ++ ++@node Complex operators ++@section Complex operators ++ ++@node Bits operators ++@section Bits operators ++ ++@subsection Logical ++ ++@deftypefn Operator {} {@B{NOT}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++@deftypefnx Operator {} {~} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Monadic operator that yields the element-wise not logical operation in ++the elements of the given bits operand. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{AND}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++@deftypefnx Operator {} {&} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the element-wise and logical operation in ++the elements of the given bits operands. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{OR}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the element-wise ``or'' logical operation ++in the elements of the given bits operands. ++@end deftypefn ++ ++@subsection Shifting ++ ++@deftypefn Operator {} {@B{SHL}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++@deftypefnx Operator {} {@B{UP}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++Dyadic operator that yields the given bits operand shifted @code{n} ++positions to the left. Extra elements introduced on the right are ++initialized to @code{@B{false}}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{SHR}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++@deftypefnx Operator {} {@B{DOWN}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} ++Dyadic operator that yields the given bits operand shifted @code{n} ++positions to the right. Extra elements introduced on the left are ++initialized to @code{@B{false}}. ++@end deftypefn ++ ++@subsection Relational ++ ++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are equal. Two ++bits are equal if they contain the same sequence of booleans. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {/=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether its operands are not equal. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {<} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is less than ++the bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {<=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is less than, ++or equal to bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {>} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is greater than ++the bits @code{b}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{bits} a, b) @B{bool}} ++@deftypefnx Operator {} {>=} {= (@B{l} @B{bits} a, b) @B{bool}} ++Dyadic operator that yields whether the bits @code{a} is greater ++than, or equal to the bits @code{b}. ++@end deftypefn ++ ++@subsection Conversions ++ ++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{bits} a) @B{l} @B{int}} ++Monadic operator that yields the integral value whose constituent bits ++correspond to the booleans stored in @code{a}. @xref{@code{@B{bin}} ++and @code{@B{abs}} of negative integral values}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{bin}} {= (@B{l} @B{int} a) @B{l} @B{bits}} ++Monadic operator that yields the bits value whose boolean elements map ++the bits in the given integral operand. @xref{@code{@B{bin}} and ++@code{@B{abs}} of negative integral values}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{bits} a) @B{bits}} ++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{bits} a) @B{long} @B{bits}} ++Monadic operator that yields the bits value that can be lengthened to ++the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{leng}} {= (@B{bits} a) @B{long} @B{bits}} ++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{bits} a) @B{long} @B{long} @B{bits}} ++Monadic operator that yields the bits value lengthened from the value ++of @code{a}. The lengthened value features @code{@B{false}} in the ++extra left positions added to match the lengthened size. ++@end deftypefn ++ ++@node Bytes operators ++@section Bytes operators ++ ++@node Semaphore operators ++@section Semaphore operators ++ ++@node Math procedures ++@section Math procedures ++ ++@subsection Arithmetic ++ ++@deftypefn Procedure {} {@B{sqrt}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the square root of the given real argument. ++@end deftypefn ++ ++@subsection Logarithms ++ ++@deftypefn Procedure {} {@B{ln}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the base @code{e} logarithm of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{exp}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the exponential function of the given real ++argument. This is the inverse of @code{@B{ln}}. ++@end deftypefn ++ ++@subsection Trigonometric ++ ++@deftypefn Procedure {} {@B{sin}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the sin trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arcsin}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-sin trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{cos}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the cos trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arccos}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-cos trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{tan}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the tan trigonometric function of the given real ++argument. ++@end deftypefn ++ ++@deftypefn Procedure {} {@B{arctan}} {= (@B{l} @B{real} a) @B{l} @B{real}} ++Procedure that yields the arc-tan trigonometric function of the given ++real argument. ++@end deftypefn ++ ++@node Extended prelude ++@chapter Extended prelude ++@cindex prelude, extended ++ ++This chapter documents the GNU extensions to the standard prelude. ++The facilities documented below are available to Algol 68 programs ++only if the @option{gnu68} language dialect is selected, which is the ++default. ++ ++The extended prelude is available to Algol 68 programs without needing ++to import any module, provided they are compiled as @code{gnu68} code, ++which is the default. ++ ++@menu ++* Extended priorities:: Priorities of extended operators. ++* Extended environment enquiries:: Information about the implementation. ++* Extended rows operators:: Rows and associated operations. ++* Extended boolean operators:: Operations on boolean operands. ++* Extended bits operators:: Bits and associated operations. ++* Extended math procedures:: Mathematical constants and functions. ++@end menu ++ ++@node Extended priorities ++@section Extended priorities ++ ++@table @code ++@item 3 ++@itemize @bullet ++@item @code{@B{xor}} ++@end itemize ++ ++@item 8 ++@itemize @bullet ++@item @code{@B{elems}} ++@end itemize ++@end table ++ ++@node Extended environment enquiries ++@section Extended environment enquiries ++ ++An @dfn{environment enquiry} is a constant, whose value may be useful ++to the programmer, that reflects some characteristic of the particular ++implementation. The values of these enquiries are also determined by ++the architecture and operating system targeted by the compiler. ++ ++@deftypevr Constant {@B{l} @B{int}} {L min int} ++The most negative integral value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L min real} ++The most negative real value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L infinity} ++Positive infinity expressed in a real value. ++@end deftypevr ++ ++@deftypevr Constant {@B{l} @B{real}} {L minus infinity} ++Negative infinity expressed in a real value. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {replacement char} ++A character that is unknown, unrecognizable or unrepresentable in ++Unicode. ++@end deftypevr ++ ++@deftypevr Constant @B{char} {eof char} ++@B{char} value that doesn't denote an actual char, but an end-of-file ++situation. ++@end deftypevr ++ ++@node Extended rows operators ++@section Extended rows operators ++ ++The following operators work on any row mode, denoted below using the ++pseudo-mode @code{@B{rows}}. ++ ++@deftypefn Operator {} {@B{elems}} {= (@B{rows} a) @B{int}} ++Monadic operator that yields the number of elements implied by the ++first bound pair of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@deftypefn Operator {} {@B{elems}} {= (@B{int} n, @B{rows} a) @B{int}} ++Dyadic operator that yields the number of elements implied by the n-th ++bound pair of the descriptor of the value of @code{a}. ++@end deftypefn ++ ++@node Extended boolean operators ++@section Extended boolean operators ++ ++@deftypefn Operator {} {@B{xor}} {= (@B{bool} a, b) @B{bool}} ++Dyadic operator that yields the exclusive-or operation of the given ++boolean arguments. ++@end deftypefn ++ ++@node Extended bits operators ++@section Extended bits operators ++ ++@deftypefn Operator {} {@B{xor}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} ++Dyadic operator that yields the bit exclusive-or operation of the ++given bits arguments. ++@end deftypefn ++ ++@node Extended math procedures ++@section Extended math procedures ++ ++@subsection Logarithms ++ ++@deftypefn Procedure {} {@B{log}} {= (@B{l} @B{real} a, b) @B{l} @B{real}} ++Procedure that calculates the base ten logarithm of the given arguments. ++@end deftypefn ++ ++@node POSIX prelude ++@chapter POSIX prelude ++ ++The POSIX prelude provides facilities to perform simple transput (I/O) ++based on POSIX file descriptors, accessing the file system, ++command-line arguments, environment variables, etc. ++ ++This prelude is available to Algol 68 programs without needing to ++import any module, provided they are compiled as @code{gnu68} code, ++which is the default. ++ ++@menu ++* POSIX process:: Process exit status. ++* POSIX command line:: Parsing command-line arguments. ++* POSIX environment:: Environment variables. ++* POSIX errors:: Error handling and error descriptions. ++* POSIX files:: Creating, opening and closing files. ++* POSIX sockets:: Communication endpoints. ++* POSIX string transput:: Reading and writing characters and strings. ++@end menu ++ ++@node POSIX process ++@section POSIX process ++ ++The Algol 68 program can report an exit status to the operating system ++once they stop running. The exit status reported by default is zero, ++which corresponds to success. ++ ++@deftypefn Procedure {} {set exit status} {= (@B{int} status)} ++Procedure that sets the exit status to report to the operating system ++once the program stop executing. The default exit status is 0 which, ++by convention, is interpreted by POSIX systems as success. A value ++different to zero is interpreted as an error status. This procedure ++can be invoked more than one, the previous exit status being ++overwritten. ++@end deftypefn ++ ++@node POSIX command line ++@section POSIX command line ++ ++Algol 68 programs can access the command-line arguments passed to them ++by using the following procedures. ++ ++@deftypefn Procedure {} {argc} {= @B{int}} ++Procedure that yields the number of arguments passed in the command ++line, including the name of the program. ++@end deftypefn ++ ++@deftypefn Procedure {} {argv} {= (@B{int} n) @B{string}} ++Procedure that yields the @code{n}th argument passed in the command ++line. The first argument is always the name used to invoke the ++program. If @code{n} is out of range then this procedure returns the ++empty string. ++@end deftypefn ++ ++@node POSIX environment ++@section POSIX environment ++ ++@deftypefn Procedure {} {getenv} {= (@B{string} varname) @B{string}} ++Procedure that yields the value of the environment variable ++@code{varname} as a string. If the specified environmental variable ++is not defined the this procedure returns an empty string. ++@end deftypefn ++ ++@node POSIX errors ++@section POSIX errors ++ ++When a call to a procedure in this prelude results in an error, the ++called procedure signals the error in some particular way and also ++sets a global @code{errno} to a code describing the error. For ++example, trying to opening a file that doesn't exist will result in ++@code{fopen} returning -1, which signals an error. The caller can ++then inspect the global @code{errno} to see what particular error ++prevented the operation to be completed: in this case, @code{errno} ++will contain the error code corresponding to ``file doesn't exist''. ++ ++@deftypefn Procedure {} {errno} {= @B{int}} ++This procedure yields the current value of the global @code{errno}. ++The yielded value reflects the error status of the last executed POSIX ++prelude operation. ++@end deftypefn ++ ++@deftypefn Procedure {} {strerror} {= (@B{int} ecode) @B{string}} ++This procedure gets an error code and yields a string containing an ++explanatory short description of the error. It is typical to pass the ++output of @code{errno} to this procedure. ++@end deftypefn ++ ++@deftypefn Procedure {} {perror} {= (@B{string} msg) @B{void}} ++This procedure prints the given string @code{msg} in the standard ++error output, followed by a colon character, a space character and ++finally the string error of the current value of @code{errno}. ++@end deftypefn ++ ++@node POSIX files ++@section POSIX files ++ ++File descriptors are @code{@B{int}} values that identify open files ++that can be accessed by the program. The @code{fopen} procedure ++allocates file descriptors as it opens files, and the descriptor is ++used in subsequent transput calls to perform operations on the files. ++ ++@subsection Standard file descriptors ++ ++There are three descriptors, however, which are automatically opened ++when the program starts executing and automatically closed when the ++program finishes. These are: ++ ++@deftypevr Constant {@B{int}} {stdin} ++File descriptor associated with the standard input. Its value is @code{0}. ++@end deftypevr ++ ++@deftypevr Constant {@B{int}} {stdout} ++File descriptor associated with the standard output. Its value is @code{1}. ++@end deftypevr ++ ++@deftypevr Constant {@B{int}} {stderr} ++File descriptor associated with the standard error. Its value is @code{2}. ++@end deftypevr ++ ++@subsection Opening and closing files ++ ++@deftypefn Procedure {} {fopen} {= (@B{string} pathname, @B{bits} flags) @B{int}} ++Open the file specified by @code{pathname}. The argument @code{flags} ++is a combination of @code{file o} flags as defined below. If the ++specified file is successfully opened while satisfying the constraints ++implied by @code{flags} then this procedure yields a file descriptor ++that is used in subsequent I/O calls to refer to the open ++file. Otherwise, this procedure yields -1. The particular error can ++be inspected by calling the @code{errno} procedure. ++@end deftypefn ++ ++@deftypefn Procedure {} {fclose} {= (@B{int} fd) @B{int}} ++Close the given file descriptor, which no longer refers to any file. ++This procedure yields zero on success, and -1 on error. In the later ++case, the program can look at the particular error by calling the ++@code{errno} procedure. ++@end deftypefn ++ ++@subsection Creating files ++ ++@deftypefn Procedure {} {fcreate} {= (@B{string} pathname, @B{bits} mode) @B{int}} ++Create a file with name @code{pathname}. The argument @code{mode} is ++a @code{@B{bits}} value containing a bit pattern that determines the ++permissions on the created file. The bit pattern has the form ++@code{8rUGO}, where @code{U} reflects the permissions of the user who ++owns the file, @code{U} reflects the permissions of the users ++pertaining to the file's group, and @code{O} reflects the permissions ++of all other users. The permission bits are 1 for execute, 2 for ++write and 4 for read. If the file is successfully created then this ++procedure yields a file descriptor that is used in subsequent I/O ++calls to refer to the newly created file. Otherwise, this procedure ++yields -1. The particular error can be inspected by calling the ++@code{errno} procedure. ++@end deftypefn ++ ++@subsection Flags for @code{fopen} ++ ++The following flags can be combined using bit-wise operators. Note ++that in POSIX systems the effective mode of the created file is the ++mode specified by the programmer masked with the process's ++@dfn{umask}. ++ ++@deftypevr Constant {@B{bits}} {file o default} ++Flag for @code{fopen} indicating that the file shall be opened with ++whatever capabilities allowed by its permissions. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o rdwr} ++Flag for @code{fopen} indicating that the file shall be opened for ++both reading and writing. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o rdonly} ++Flag for @code{fopen} indicating that the file shall be opened for ++reading only. This flag is not compatible with @code{file o rdwr} nor ++with @code{file o wronly}. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o wronly} ++Flag for @code{fopen} indicating that the file shall be opened for ++write only. This flag is not compatible with @code{file o rdwr} nor ++with @code{file o rdonly}. ++@end deftypevr ++ ++@deftypevr Constant {@B{bits}} {file o trunc} ++Flag for @code{fopen} indicating that the opened file shall be ++truncated upon opening it. The file must allow writing for this flag ++to take effect. The effect of combining @code{file o trunc} and ++@code{file o rdonly} is undefined and varies among implementations. ++@end deftypevr ++ ++@subsection Getting file properties ++ ++@deftypefn Procedure {} {fsize} {= (@B{int} fd) @B{long} @B{long} @B{int}} ++Return the size in bytes of the file characterized by the file ++descriptor @code{fd}. If the system entity characterized by the given ++file descriptor doesn't have a size, if the size of the file cannot be ++stored in a @code{@B{long} @B{long} @B{int}}, or if there is any other ++error condition, this procedure yields -1 and @code{errno} is set ++appropriately. ++@end deftypefn ++ ++@deftypefn Procedure {} {lseek} {= (@B{int} fd, @B{long int} offset, @B{int} whence) @B{long long int}} ++Set the file offset of the file characterized by the file descriptor @code{fd} ++depending on the values of @code{offset} and @code{whence}. On success, the ++resulting offset, as measured in bytes from the beginning of the file, is ++returned. Otherwise, -1 is returned, @code{errno} is set to indicate the error, ++and the file offset remains unchanged. The effects of @code{offset} and ++@code{whence} are: ++@itemize ++@item ++If @code{whence} is @code{seek set}, the file offset is set to @code{offset} ++bytes. ++@item ++If @code{whence} is @code{seek cur}, the file offset is set to its current ++location plus @code{offset}. ++@item ++If @code{whence} is @code{seek end}, the file offset is set to the size of the ++file plus @code{offset}. ++@end itemize ++@end deftypefn ++ ++@node POSIX sockets ++@section POSIX sockets ++ ++A program can communicate with other computers, or with other ++processes running in the same computer, via sockets. The sockets are ++identified by file descriptors. ++ ++@deftypefn Procedure {} {fconnect} {= (@B{string} host, @B{int} port) @B{int}} ++This procedure creates a stream socket and connects it to the given ++@code{host} using port @code{port}. The established communication is ++full-duplex, and allows sending and receiving data using transput ++until it gets closed. On success this procedure yields a file ++descriptor. On error this procedure yields -1 and @code{errno} is set ++appropriately. ++@end deftypefn ++ ++@node POSIX string transput ++@section POSIX string transput ++ ++The following procedures read or write characters and strings from and ++to open files. The external encoding of the files is assumed to be ++UTF-8. Since Algol 68 @code{@B{char}}s are UCS-4, this means that ++reading or writing a character may involve reading or writing more ++than one byte, depending on the particular Unicode code points ++involved. ++ ++@subsection Output of strings and chars ++ ++@deftypefn Procedure {} {putchar} {= (@B{char} c) @B{char}} ++Write the given character to the standard output. This procedure ++yields @code{c} in case the character got successfully written, or ++@code{eof char} otherwise. ++@end deftypefn ++ ++@deftypefn Procedure {} {puts} {= (@B{string} str) @B{void}} ++Write the given string to the standard output. ++@end deftypefn ++ ++@deftypefn Procedure {} {fputc} {= (@B{int} fd, @B{char} c) @B{int}} ++Write given character @code{c} to the file with descriptor @code{fd}. ++This procedure yields @code{c} on success, or @code{eof char} on ++error. ++@end deftypefn ++ ++@deftypefn Procedure {} {fputs} {= (@B{int} fd, @B{string} str) @B{int}} ++Write the given string @code{str} to the file with descriptor ++@code{fd}. This procedure yields the number of bytes written on ++success, or 0 on error. ++@end deftypefn ++ ++@subsection Input of strings and chars ++ ++@deftypefn Procedure {} {getchar} {= @B{char}} ++Read a character from the standard input. This procedure yields the ++read character in case the character got successfully read, or ++@code{eof char} otherwise. ++@end deftypefn ++ ++@deftypefn Procedure {} {gets} {= (@B{int} n) @B{ref} @B{string}} ++Read a string composed of @code{n} characters from the standard input ++and yield a reference to it. If @code{n} is bigger than zero then ++characters get read until either @code{n} characters have been read or ++the end of line is reached. If @code{n} is zero or negative then ++characters get read until either a new line character is read or the ++end of line is reached. ++@end deftypefn ++ ++@deftypefn Procedure {} {fgetc} {= (@B{int} fd) @B{int}} ++Read a character from the file with descriptor @code{fd}. This ++procedure yields the read character in case a valid Unicode character ++got successfully read. If an unrecognizable or unknown character is ++found then this procedure yields @code{replacement char}. In case of ++end of file this procedure yields @code{eof char}. ++@end deftypefn ++ ++@deftypefn Procedure {} {fgets} {= (@B{int} fd, @B{int} n) @B{ref} @B{string}} ++Read a string from the file with descriptor @code{fd} and yield a ++reference to it. If @code{n} is bigger than zero then characters get ++read until either @code{n} characters have been read or the end of ++line is reached. If @code{n} is zero or negative then characters get ++read until either a new line character is read or the end of line is ++reached. ++@end deftypefn ++ ++@node Language extensions ++@chapter Language extensions ++ ++This chapter documents the GNU extensions implemented by this compiler ++on top of the Algol 68 programming language. These extensions ++collectively conform a strict @dfn{superlanguage} of Algol 68, and are ++enabled by default. To disable them the user can select the strict ++Algol 68 standard by passing the option @option{-std=algol68} when ++invoking the compiler. ++ ++@menu ++* @code{@B{bin}} and @code{@B{abs}} of negative integral values:: ++* Bold taggles:: Using underscores in mode and operator indications. ++@end menu ++ ++@node @code{@B{bin}} and @code{@B{abs}} of negative integral values ++@section @code{@B{bin}} and @code{@B{abs}} of negative integral values ++ ++The @code{@B{bin}} operator gets an integral value and yields a ++@code{@B{bits}} value that reflects the internal bits of the integral ++value. The semantics of this operator, as defined in the Algol 68 ++standard prelude, are: ++ ++@example ++@B{op} @B{bin} = (L @B{int} a) L @B{bits}: ++ @B{if} a >= L 0 ++ @B{then} L @B{int} b := a; L @B{bits}; ++ @B{for} i @B{from} L bits width @B{by} -1 @B{to} 1 ++ @B{do} (L F @B{of} c)[i] := @B{odd} b; b := b % L 2 @B{od}; ++ c ++ @B{fi}; ++@end example ++ ++The @code{@B{abs}} operator performs the inverse operation of ++@code{@B{bits}}. Given a @code{L @B{bits}} value, it yields the ++@code{L @B{int}} value whose bits representation is the bits value. ++The semantics of this operator, as defined in the Algol 68 prelude, ++are: ++ ++@example ++@B{op} @B{abs} = (L @B{bits} a) L @B{int}: ++@B{begin} L @B{int} c := L 0; ++ @B{for} i @B{to} L bits width ++ @B{do} c := L 2 * c + K @B{abs} (L F @B{of} a)[i] @B{od}; ++ c ++@B{end} ++@end example ++ ++@noindent ++Note how the @code{@B{bin}} of a negative integral value is not ++defined: the implicit else-part of the conditional yields ++@code{@B{skip}}, which is defined as any bits value in that context. ++Note also how @code{@B{abs}} doesn't make any provision to check ++whether the resulting value is positive: it assumes it is so. ++ ++The GNU Algol 68 compiler, when working in strict Algol 68 mode ++(@option{-std=algol68}), makes @code{@B{bin}} to always yield @code{L ++@B{bits} (@B{skip})} when given a negative value, as mandated by the ++report. But the skip value is always the bits representation of zero, ++@i{i.e.} 2r0. Strict Algol 68 programs, however, must not rely on ++this. ++ ++When GNU extensions are enabled (@option{-std=gnu68}) the ++@code{@B{bin}} of a negative value yields the two's complement bit ++pattern of the value rather than zero. Therefore, @code{@B{bin} - ++@B{short} @B{short} 2} yields @code{2r11111110}. And @code{@B{abs} ++@B{short} @B{short} 2r11111110} yields -2. ++ ++@node Bold taggles ++@section Bold taggles ++ ++This compiler supports the stropping regimes known as UPPER and ++SUPPER. In both regimes bold words are written by writing their ++constituent bold letters and digits, in order. In UPPER regime all ++the letters of a bold word are to be written using upper-case. In ++SUPPER regime, only the first bold letter is required to be written ++using upper-case, and this only when the bold word is not a reserved ++word. ++ ++When a bold word comprises several natural words, it may be a little ++difficult to distinguish them at first sight. Consider for example ++the following code, written fist in UPPER stropping: ++ ++@example ++MODE TREENODE = STRUCT (TREENODEPAYLOAD data, REF TREENODE next), ++ TREENODEPAYLOAD = STRUCT (INT code, REAL average, mean); ++@end example ++ ++@noindent ++Then written in SUPPER stropping: ++ ++@example ++mode TreeNode = struct (TreeNodePayload data, REF TreeNode next), ++ TreeNodePayload = struct (int code, real average, mean); ++@end example ++ ++Particularly in UPPER stropping, it may be difficult to distinguish ++the constituent natural words at first sight. ++ ++In order to improve this, this compiler implements a GNU extension ++called @dfn{bold taggles} that allows to use underscore characters ++(@code{_}) within mode and operator indications as a visual aid to ++improve readability. When this extension is enabled, mode indications ++and operator indications consist in a sequence of the so-called ++@dfn{bold taggles}, which are themselves sequences of one or more bold ++letters or digits optionally terminated by an underscore character. ++ ++With bold taggles enabled the program above could have been written ++using UPPER stropping as: ++ ++@example ++MODE TREE_NODE = STRUCT (TREE_NODE_PAYLOAD data, REF TREE_NODE next), ++ TREE_NODE_PAYLOAD = STRUCT (INT code, REAL average, mean); ++@end example ++ ++@noindent ++And using SUPPER stropping as: ++ ++@example ++mode Tree_Node = struct (Tree_Node_Payload data, ref Tree_Node next), ++ Tree_Node_Payload = struct (int code, real average, mean); ++@end example ++ ++@noindent ++Which is perhaps more readable for most people. Note that the ++underscore characters are not really part of the mode or operator ++indication. Both @code{TREE_NODE} and @code{TREENODE} denote the same ++mode indication. Note also that, following the definition, constructs ++like @code{Foo__bar} and @code{_Baz} are not valid indications. ++ ++Bold taggles are available when the gnu68 dialect of the language is ++selected. @xref{Dialect options}. ++ ++@include gpl_v3.texi ++@include fdl.texi ++ ++@node Option Index ++@unnumbered Option Index ++ ++@command{ga68}'s command line options are indexed here without any initial ++@samp{-} or @samp{--}. Where an option has both positive and negative forms ++(such as @option{-f@var{option}} and @option{-fno-@var{option}}), relevant ++entries in the manual are indexed under the most appropriate form; it may ++sometimes be useful to look up both forms. ++ ++@printindex op ++ ++@node General Index ++@unnumbered Index ++ ++@printindex cp ++ ++@bye +--- /dev/null ++++ b/src/gcc/algol68/ga68.vw +@@ -0,0 +1,1845 @@ ++{ ga68.vw - The GNU Algol 68 strict language -*- vw -*- ++ ++ Copyright (C) 2025 Jose E. Marchesi ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ This program is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. } ++ ++{ This file contains an annotated description of the syntax of the GNU ++ Algol 68 strict language. GNU Algol 68 aims to be a super-language ++ of Algol 68. ++ ++ Extension to the strict Revised Report incorporated into GNU Algol ++ 68 are: ++ ++ [US] This is the GNU68-2025-001-unsafe GNU extension. It adds an ++ unsafe clause that marks a controlled clause as containing ++ unsafe constructs which are known by the programmer, and makes ++ the compiler to avoid certain diagnostics. See the GNU Algol ++ 68 Compiler manual for more information. ++ ++ [SC] This is the GNU68-2025-003-andth-orel GNU extension. It adds ++ two units that act as pseudo-operators providing logical AND ++ and OR functions with short-circuited elaboration. See the GNU ++ Algol 68 Compiler manual for more information. ++ ++ [MR] A modules and separated compilation system based on the modules ++ system recomended by IFIP Working Group 2.1 Standing ++ Subcommittee on Algol 68 Support, described in: ++ ++ A Modules and Separate Compilation Facility for Algol 68 by ++ Lindsey and Boom. ++ ++ [NC] This is the GNU68-2025-005-nestable-comments GNU extension. It ++ adds support for nestable block comments. ++ ++ The metaproduction rules, hyper-rules and hyper-alternatives ++ introduced by each extension are clearly marked in the sections ++ below. You can easily search for them using the extensions tags in ++ the list above. For example, to look for the extensions introduced ++ by the modules and separated compilation system, search for [MR]. ++ ++ The few deviations to the RR Algol 68 are clearly marked as well in ++ this specification. ++ ++ A complete description of the semantics of the Algol 68 subset of ++ the described language and the extensions is not included in this ++ file. The reader is referred to the Revised Report and other ++ documentation corresponding to the extensions, like the GNU Algol 68 ++ compiler manual. ++ ++ The sectioning and the enumeration of metaproduction rules and of ++ hyper-rules, including cross-references, are the same than in the ++ Report. The annotations and pragmatics added between curly brackets ++ explain the meaning of the rules and how they describe the syntax of ++ the language. Note that thanks to the expressive power of VW ++ grammars the syntax expressed by this description covers much more ++ than what is usually expressed by context-free grammars in the ++ descriptions of other languages that typically use some variant of ++ the BNF notation. ++ ++ Sample code in examples and pragmatics is expressed using the UPPER ++ stropping regime. ++ ++ This file is better browsed using the Emacs vw-mode, which provides ++ automatic indentation, font-lock, and other facilities like the ++ hiding of annotations an the following of cross-references. See the ++ vw-mode manual for more information, including a primer on VW ++ grammars and the formal description used in both the original Report ++ and this file. } ++ ++1 Language and metalanguage ++ ++1.2 General metaproduction rules ++ ++1.2.1 Metaproduction rules of modes ++ ++A) MODE :: PLAIN ; STOWED ; REF to MODE ; PROCEDURE ; ++ UNITED ; MU definition of MODE ; MU application. ++B) PLAIN :: INTREAL ; boolean ; character. ++C) INTREAL :: SIZETY integral ; SIZETY real. ++D) SIZETY :: long LONGSETY ; short SHORTSETY ; EMPTY. ++E) LONGSETY :: long LONGSETY ; EMPTY. ++F) SHORTSETY :: short SHORTSETY ; EMPTY. ++G) EMPTY :: . ++H) STOWED :: structured with FIELDS mode ; ++ FLEXETY ROWS of MODE. ++I) FIELDS :: FIELD ; FIELDS FIELD. ++J) FIELD :: MODE field TAG{942A}. ++K) FLEXETY :: flexible ; EMPTY. ++L) ROWS :: row ; ROWS row. ++M) REF :: reference ; transient reference. ++N) PROCEDURE :: procedure PARAMETY yielding MOID. ++O) PARAMETY :: with PARAMETERS ; EMPTY. ++P) PARAMETERS :: PARAMETER ; PARAMETERS PARAMETER. ++Q) PARAMETER :: MODE parameter. ++R) MOID :: MODE ; void. ++S) UNITED :: union of MOODS mode. ++T) MOODS :: MOOD ; MOODS MOOD. ++U) MOOD :: PLAIN ; STOWED ; reference to MODE ; PROCEDURE ; void. ++V) MU :: muTALLY. ++W) TALLY :: i ; TALLY i. ++ ++1.2.2 Metaproduction rules associated with phrases and coercion ++ ++{ Extensions: ++ [MR] access ++ [US] unsafe } ++ ++A) ENCLOSED :: closed ; collateral ; parallel ; CHOICE{34A} ; ++ loop ; access ; unsafe. ++B) SOME :: SORT MOID NEST. ++C) SORT :: strong ; firm ; meek ; weak ; soft. ++ ++{ Modules are activated by means of access-clauses. } ++ ++1.2.3 Metaproduction rules associated with nests ++ ++{ Extensions: ++ [MR] MODSETY, MOD, MODS, REVSETY, REVS, REV, ++ TAU, INKSETY, INKS, INK } ++ ++A) NEST :: LAYER ; NEST LAYER. ++B) LAYER :: new DECSETY LABSETY INKSETY. ++C) DECSETY :: DECS ; EMPTY. ++D) DECS :: DEC ; DECS DEC. ++E) DEC :: MODE TAG{942A} ; priority PRIO TAD{942F} ; ++ MOID TALLY TAB{942D} ; DUO TAD{942F} MONO TAM{492K} ; ++ MOD. ++F) PRIO :: i ; ii ; iii ; ++ iii i ; iii ii ; iii iii ; ++ iii iii i ; iii iii ii ; iii iii iii. ++G) MONO :: procedure with PARAMETER yielding MOID. ++H) DUO :: procedure with PARAMETER1 PARAMETER2 yielding MOID. ++I) LABSETY :: LABS ; EMPTY. ++J) LABS :: LAB ; LABS LAB. ++K) LAB :: label TAG{942A}. ++L) MODSETY :: MODS ; EMPTY. ++M) MODS :: MOD ; MODS MOD. ++N) MOD :: module REVS TAB. ++O) REVSETY :: REVS ; EMPTY. ++P) REVS :: REV ; REVS REV. ++Q) REV :: TAU reveals DECSETY INKS. ++R) TAU :: MU. ++S) INKSETY :: INKS ; EMPTY. ++T) INKS :: INK ; INKS INK. ++U) INK :: invoked TAU. ++ ++{ The primal environment is just 'new'. } ++ ++1.3 General hyper-rules ++ ++1.3.1 Syntax of general predicates ++ ++A) NOTION :: ALPHA ; NOTION ALPHA. ++B) ALPHA :: a ; b ; c ; d ; e ; f ; g ; h ; i ; j; ++ k ; l ; m ; n ; o ; p ; q ; r ; s ; t; ++ u ; v ; w ; x ; y ; z. ++C) NOTETY :: NOTION ; EMPTY. ++D) THING :: NOTION ; ++ (NOTETY1) NOTETY2 ; ++ THING (NOTETY1) NOTETY2. ++E) WHETHER :: where ; unless. ++ ++a) where true : EMPTY. ++b) unless false : EMPTY. ++c) where THING1 and THING2 : where THING1, where THING2. ++d) where THING1 or THING2 : where THING1 ; where THING2. ++e) unless THING1 and THING2 : unless THING1; unless THING2. ++f) unless THING1 or THING2 : unless THING1, unless THING2. ++g) WHETHER (NOTETY1) is (NOTETY2) : ++ WHETHER (NOTETY1) begins with (NOTETY2){h,i,j} ++ and (NOTETY2) begins with (NOTETY1){h,i,j}. ++h) WHETHER (EMPTY) begins with (NOTION){g,j} : ++ WHETHER false{b,-}. ++i) WHETHER (NOTETY1) begins with (EMPTY){g,j} : ++ WHETHER true{a,-}. ++j) WHETHER (ALPHA1 NOTETY1) begins with ++ (ALPHA2 NOTETY2){g,j,m} : ++ WHETHER (ALPHA1) coincides with (ALPHA2) in ++ (abcdefghijklmnopqrstuvwxyz){k,l,-} ++ and (NOTETY1) begins with (NOTETY2){h,i,j}. ++k) where (ALPHA) coincides with (ALPHA) in (NOTION){j} : ++ where true{a}. ++l) unless (ALPHA1) coincides with (ALPHA2) in (NOTION){j} : ++ where (NOTION) contains (ALPHA1 NOTETY ALPHA2){m} ++ or (NOTION) contains (ALPHA2 NOTETY ALPHA1){m}. ++m) WHETHER (ALPHA NOTETY) contains (NOTION){l,m} : ++ WHETHER (ALPHA NOTETY) begins with (NOTION){j} ++ or (NOTETY) contains (NOTION){m,n}. ++n) WHETHER (EMPTY) contains (NOTION){m} : WHETHER false{b,-}. ++ ++1.3.3 Syntax of general constructions ++ ++A) STYLE :: brief ; bold ; style TALLY. ++ ++a) NOTION option : NOTION ; EMPTY. ++b) NOTION sequence{b} : NOTION ; NOTION, NOTION sequence{b}. ++c) NOTION list{c} : ++ NOTION ; NOTION, and also{94f} token, NOTION list{c}. ++d) NOTETY STYLE pack : ++ STYLE begin{94f,-} token, NOTETY, STYLE end{94f,-} token. ++e) NOTION STYLE bracket : ++ STYLE sub{94f,-} token, NOTION, STYLE bus{94f,-} token. ++f) THING1 or alternatively THING2 : THING1 ; THING2. ++ ++2 The computer and the program ++ ++2.2 The program ++ ++2.2.1 Syntax ++ ++a) program : program token, strong integral new closed clause{31a}. ++ ++{ The value yielded by the elaboration of the program is the exit ++ status returned by the process to the operating system upon ++ termination. This is a slight deviation from the Report, which ++ instead specifies: ++ ++ a) program : strong void new closed clause. ++ ++ and mandates that the production tree of a particular program should ++ be akin to the production of the program in the strict language. } ++ ++3 Clauses ++ ++3.0.1 Syntax ++ ++{ Extensions: ++ [MR] "NEST module text publishing REVS defining LAYER", ++ "NEST LAYER1 LAYER2 module series with DECSETY ++ without DECSETY", ++ "SOID NEST access clause" } ++ ++a) *phrase : SOME unit{32d} ; NEST declaration of DECS{41a}. ++b) *SORT MODE expression : SORT MODE NEST UNIT{5A}. ++c) *statement : strong void NEST UNIT{5A}. ++d) *MOID constant : MOID NEST DEFIED identifier with TAG{48a,b} ; ++ MOID NEST denoter{80a}. ++e) *MODE variable : ++ reference to MODE NEST DEFIED identifier with TAG{48a,b}. ++f) *NEST range : ++ SOID NEST serial clause defining LAYER{32a} ; ++ SOID NEST chooser CHOICE STYLE clause{34b} ; ++ SOID NEST case part of choice using UNITED{34i} ; ++ NEST STYLE repeating part with DEC{35e} ; ++ NEST STYLE while do part{35f} ; ++ PROCEDURE NEST routine text{541a,b} ; ++ NEST module text publishing REVS defining LAYER{49c,-} ; ++ NEST LAYER1 LAYER2 module series ++ with DECSETY without DECSETY1{49d} ; ++ SOID NEST access clause{36a}. ++ ++{ The rules b and c establish a precise definition of "expressions" ++ and "statements". The former are units yielding values of a mode ++ other than VOID in any context. The later are units in a strong ++ context with a-posteriori mode of VOID, that get voided. } ++ ++{ The rules d and e establish a precise definition of "constants" and ++ "variables". The former are either a denotation or an identifier of ++ some mode. The second are identifiers of a "reference to" mode. } ++ ++{ The rule f introduces a paranotion for all the constructs that ++ introduce new ranges. } ++ ++3.1 Closed clauses ++ ++3.1.1 Syntax ++ ++A) SOID :: SORT MOID. ++B) PACK :: STYLE pack. ++ ++a) SOID NEST closed clause{22a,5D,551a,A341h,A349a} : ++ SOID NEST serial clause defining LAYER{32a} PACK. ++ ++{ Examples: ++ a) BEGIN x := 1; y := 2 END } ++ ++3.2 Serial clauses ++ ++3.2.1 Syntax ++ ++{ Extensions: ++ [MR] "establishing clause" } ++ ++a) SOID NEST serial clause defining new PROPSETY{31a,34f,1,35h} : ++ SOID NEST new PROPSETY series with PROPSETY{b}. ++b) SOID NEST series with PROPSETY{a,b,35c} : ++ strong void NEST unit{d}, go on{94f} token, ++ SOID NEST series with PROPSETY{b} ; ++ where (PROPSETY) is (DECS DECSETY LABSETY), ++ NEST declaration of DECS{41a}, go on{94f} token, ++ SOID NEST series with DECSETY LABSETY{b} ; ++ where (PROPSETY) is (LAB LABSETY), ++ NEST label definition of LAB{c}, ++ SOID NEST series with LABSETY{b} ; ++ where (PROPSETY) is (LAB LABSETY) ++ and SOID balances SOID1 and SOID2{3}, SOID1 NEST unit{d}, ++ completion{94f} token, NEST label definition of LAB{c}, ++ SOID2 NEST series with LABSETY{b} ; ++ where (PROPSETY) is (EMPTY), ++ SOID NEST unit{d}. ++c) NEST label definition of label TAG{b} : ++ label NEST defining identifier with TAG{48a}, label{94f} token. ++d) SOME unit{b,33b,g,34i,35d,46m,n,521c,532e,541a,b,543c,A34Ab,c,d} : ++ SOME UNIT{5A,-}. ++e) WHETHER SORT MOID balances ++ SORT1 MOID1 an SORT2 MOID2{b,33b,34d,h} : ++ WHETHER SORT balances SORT1 and SORT2{f} ++ and MOID balances MOID1 and MOID2{g}. ++f) WHETHER SORT balances SORT1 and SORT2{e,522a} : ++ where (SORT1) is (strong), WHETHER (SORT2) is (SORT) ; ++ where (SORT2) is (strong), WHETHER (SORT1) is (SORT). ++g) WHETHER MOID balances MOID1 and MOID2{3} : ++ where (MOID1) is (MOID2), WHETHER (MOID) is (MOID1) ; ++ where (MOID1) is (transient MOID2), ++ WHETHER (MOID) is (MOID1) ; ++ where (MOID2) is (transient MOID1), ++ WHETHER (MOID) is (MOID2). ++ ++h) *SOID unitary clause : SOID NEST unit{d}. ++i) *establishing clause : ++ SOID NEST serial clause defining LAYER{32a} ; ++ MODE NEST enquiry clause defining LAYER{34c}. ++ ++{ The paranotion establishing-clause encompasses both module-texts and ++ revelations. } ++ ++{ Examples: ++ b) read (x1); REAL s:= 0; ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ REAL s := 0; ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ ++ FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT ++ nonpos: print (s) ++ c) sum: ++ d) print (s) } ++ ++3.3 Collateral and parallel clauses ++ ++3.3.1 Syntax ++ ++a) strong void NEST collateral clause{5D,551a} : ++ strong void NEST joined portrait{b} PACK. ++b) SOID NEST joined portrait{a,b,c,d,34g} : ++ were SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST unit{32d}, and also{94f} token, ++ SOID2 NEST unit{32d} ++ or alternatively SOID2 NEST joined portrait{b}. ++c) strong void NEST parallel clause{5D,551a} : ++ parallel{94f} token, strong void NEST joined portrait{b} PACK. ++d) strong ROWS of MODE NEST collateral clause{5D,551a} : ++ where (ROWS) is (row), ++ strong MODE NEST joined portrait{b} PACK ; ++ where (ROWS) is (row ROWS1), ++ strong ROWS1 of MODE NEST joined portrait{b} PACK ; ++ EMPTY PACK. ++e) strong structured with ++ FIELDS FIELD mode NEST collateral clause{5D,551a} : ++ NEST FIELDS FIELD portrait{f} PACK. ++f) NEST FIELDS FIELD portrait{3,f} : ++ NEST FIELDS portrait{f,g}, an also{94f} token, ++ NEST FIELD portrait{g}. ++g) NEST MODE field TAG portrait{f} : strong MODE NEST unit{32d}. ++ ++h) *structure display : ++ strong structured with FIELDS FIELD mode NEST collateral clause{e}. ++i) *row display : ++ strong ROWS of MODE NEST collateral clause{d}. ++j) *display : strong STOWED NEST collateral clause{d,e}. ++k) *vacuum : EMPTY PACK. ++ ++3.4 Choice clauses ++ ++3.4.1 Syntax ++ ++A) CHOICE :: choice using boolean ; CASE. ++B) CASE :: choice using intgral ; choice using UNITED. ++ ++a) SOID NEST1 CHOICE clause{5D,551a,A341h,A349a} : ++ CHOICE STYLE start{91a,-}, ++ SOID NEST1 chooser CHOICE STYLE clause{b}, ++ CHOICE STYLE finish{91e,-}. ++b) SOID NEST1 chooser choice using MODE STYLE clause{a,l} : ++ MODE NEST1 enquiry clause defining LAYER2{c,-}, ++ SOID NEST1 LAYER2 alternate choice using MODE STYLE clause{d}. ++c) MODE NEST1 enquiry clause defining new DECSETY2{b,35g} : ++ meek MODE NEST1 new DESETY2 series with DECSETY2{32b}. ++d) SOID NEST2 alternate CHOICE STYLE clause{b} : ++ SOID NEST2 in CHOICE STYLE clause{e} ; ++ where SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST2 in CHOICE STYLE clause{3}, ++ SOID2 NEST2 out CHOICE STYLE clause{l}. ++e) SOID NEST2 in CHOICE STYLE clause{d} : ++ CHOICE STYLE in{91b,-}, SOID NEST2 in part of CHOICE{f,g,h}. ++f) SOID NEST2 in part of choice using boolean{e} : ++ SOID NEST2 serial clause defining LAYER3{32a}. ++g) SOID NEST2 in part of choice using integral{e} : ++ SOID NEST2 joined portrait{33b}. ++h) SOID NEST2 in part of choice using UNITED{e,h} : ++ SOID NEST2 case part of choice using UNITED{i} ; ++ where SOID balances SOID1 and SOID2{32e}, ++ SOID1 NEST2 case part of choice using UNITED{i}, ++ and also{94f} token, ++ SOID2 NEST2 in part of choice using UNITED{h}. ++i) SOID NEST2 case part of choice using UNITED{h} : ++ MOID NEST2 LAYER3 specification defining LAYER3{jk,-}, ++ where MOID unites to UNITED{64b}, ++ SOID NEST2 LAYER3 unit{32d}. ++j) MODE NEST3 specification defining new MODE TAG3{i} : ++ NEST3 declarative defining new MODE TAG3{541e} brief pack, ++ colon{94f} token. ++k) MOID NEST3 specification defining new EMPTY{i} : ++ formal MOID NEST3 declarer{46b} brief pack, colon{94f} token. ++l) SOID NEST2 out CHOICE STYLE clause{d} : ++ CHOICE STYLE out{91d,-}, ++ SOID NEST2 serial lause defining LAYER3{32a} ; ++ CHOICE STYLE again{91c,-}, ++ SOID NEST2 chooser CHOICE2 STYLE clause{b}, ++ where CHOICE2 may follow CHOICE{m}. ++m) WHETHER choice using MODE2 may follow choice using MODE1{l} : ++ where (MODE1) is (MOOD), WHETHER (MODE2) is (MODE1) ; ++ where (MODE1) begins with (union of), ++ WHETHER (MODE2) begins with (union of). ++ ++n) *SOME choice clause : SOME CHOICE clause{a}. ++o) *SOME conditional clause : SOME choice using boolean clause{a}. ++p) *SOME case clause : SOME choice using integral clause{a}. ++q) *SOME conformity clause : SOME choice using UNITED clause{a}. ++ ++3.5 Loop clauses ++ ++3.5.1 Syntax ++ ++A) FROBYT :: from ; by ; to. ++ ++a) strong void NEST1 loop clause{5D,551a} : ++ NEST1 STYLE for part defining new integral TAG2{b}, ++ NEST1 STYLE intervals{c}, ++ NEST1 STYLE repeating part with integral TAG2{e}. ++b) NEST1 STYLE for part defining new integral TAG2{a} : ++ STYLE for{94g,-} token, ++ integral NEST1 new integral TAG2 defining identifier ++ with TAG2{48a} ; ++ where (TAG2) is (letter aleph), EMPTY. ++c) NEST1 STYLE intervals{a} : ++ NEST1 STYLE from part{d} option, ++ NEST1 STYLE by part{d} option, ++ NEST1 STYLE to part{d} option. ++d) NEST1 STYLE FROBYT part{c} : ++ STYLE FROBYT{94g,-} token, meek integral NEST1 unit{32d}. ++e) NEST1 STYLE repeating part with DEC2{a} : ++ NEST1 new DEC2 STYLE while do part{f} ; ++ NEST1 new DEC2 STYLE do part{h}. ++f) NEST2 STYLE while do part{e} : ++ NEST2 STYLE while part defining LAYER3{g}, ++ NEST2 LAYER3 STYLE do part{h}. ++g) NEST2 STYLE while part defining LAYER3{f} : ++ STYLE while{94g,-} token, ++ boolean NEST2 enquiry clause defining LAYER3{34c,-}. ++h) NEST3 STYLE do part{3,f} : ++ STYLE do{94g,-} token, ++ strong void NEST3 serial clause defining LAYER4{32a}, ++ STYLE od{94g,-} token. ++ ++3.6 Access clauses ++ ++{ Extensions: ++ [MR] GMR } ++ ++{ Access clauses contain a controlled-clause, which is an ++ enclosed-clause. } ++ ++3.6.1 Syntax ++ ++a) SOID NEST access clause{5D,551a,A341h,A349a} : ++ NEST revelation publishing EMPTY defining LAYER{b}, ++ SOID NEST LAYER ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. ++b) NEST revelation publishing REVSETY ++ defining new DECSETY INKSETY{a,49c} : ++ access{94d} token, ++ NEST joined module call publishing REVSETY revealing REVS{c}, ++ where DECSETY INKS revealed by REVS{e,f} ++ and NEST filters INKSETY out of INKS{h}. ++c) NEST joined module call publishing REVSETY revealing RES{b,c} : ++ NEST moule call publishing REVSETY revealing REVS{d,-} ; ++ where (REVSETY) is (REVSETY1 REVSETY2) ++ an (REVS) is (REVS1 REVS2), ++ NEST module call publishing REVSETY1 revealing REVS1{d,-}, ++ and also{94f} token, ++ NEST joined module call publishing REVSETY2 revealing REVS2{c}. ++d) NEST module call publishing REVSETY revealing REVS{c} : ++ where (REVSETY) is (EMPTY), ++ module REVS NEST applied module indication with TAB{48b} ; ++ where (REVSETY) is (REVS), ++ public{94d} token, ++ module REVS NEST applied module indication with TAB{48b}. ++e) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY3 ++ TAU reveals DECSETY1 INKS1 REVSETY4{b,e,f} : ++ WHETHER DECSETY DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY3 REVSETY4{e,f}. ++f) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by ++ TAU reveals DECSETY1 INKS1 REVSETY2{b,e,f} : ++ WHETHER DECSETY2 INKSETY2 revealed by REVSETY2 ++ and DECSETY1 independent DECSETY2{71a,b,c}. ++g) WHETHER EMPTY revealed by EmPTY{e,f} : WHETHER true. ++h) WHETHER NEST filters INKSETY1 out of INKSETY INK{b} : ++ unless INK ientified in NEST{72a}, ++ WHETHER (INKSETY) is (INKSETY2 INK) ++ and NEST INK filers INKSETY2 out of INKSETY{h,i} ; ++ where INK identified in NEST{72a}, ++ WHETHER NEST filters INKSETY1 out of INKSETY{h,i}. ++i) WHETHER NEST filters EMPTY out of EMPTY{h} : WHETHER true. ++ ++{ Examples: ++ a) ACCESS A, B (gets (f, a); puts (a)) ++ b) ACCESS A, B ++ c) A, B ++ d) A ++ PUB B } ++ ++{ In rule b, the 'invoke TAU's enveloped by 'INKS' represent those ++ modules which might need to be invoked at any module-call whose ++ applied-module-indication identified a particular ++ defining-module-indication, whereas those enveloped by 'INKSETY' ++ represent only those which need invocation in the particular ++ context, the remainder having already being elaborated, as can be ++ determined statically from the 'NEST'. The presence of 'INKSETY' in ++ the nest of all descendent constructs of the access-clause ensures ++ that all modules now invoked will never be invoked again within ++ those descendents. } ++ ++{ Rule f ensures the independence of declarations revealed by one ++ revelation; thus ++ ++ MODULE A = DEF PUB REAL x FED, B = DEF PUB REAL x FED; ++ ACCESS A, B (x) ++ ++ is not produced. However, rule e allows a given declaration to be ++ revealed by two public accesses of the same module, as in ++ ++ MODULE A = DEF PUB REAL x FED; ++ MODULE B = ACCESS PUB A DEF REAL y FED, ++ C = ACCESS PUB A DEF REAL z FED; ++ ACCESS B C (x + y + z) ++ ++ in which the module-definitions for both B and C reveal x, by virtue ++ of the PUB A in their constituent revelations. } ++ ++{ Note that a particular-program may now consist of a ++ joined-label-definition followed by an access-clause. The ++ defining-module- indications identified thereby would be in the ++ library-prelude or the user-prelude. } ++ ++3.7 Unsafe clauses ++ ++{ Extensions: [US] } ++ ++{ Unsafe clauses contain a controlled-clause, which is an enclosed-clause. } ++ ++3.7.1 Syntax ++ ++a) SOID NEST unsafe clause : ++ unsafe{94f} token, SOID NEST ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. ++ ++{ Examples: ++ a) UNSAFE (ptr := dst) } ++ ++4 Declarations, declarers and indicators ++ ++4.1 Declarations ++ ++4.1.1 Syntax ++ ++{ Extensions: ++ [MR] module ++ "declaration with DECSETY without DECSETY1" } ++ ++A) COMMON :: mode ; priority ; MODINE identity ; ++ reference to MODINE variable ; MODINE operation ; ++ PARAMETER ; MODE FIELDS ; module. ++ { MODINE :: MODE ; routine. } ++ ++a) NEST declaration of DECS{a,32b} : ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,-} ; ++ where (DECS) is (DECS1 DECS2), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,-}, ++ and also{94f} token, NEST declaration of DECS2{a}. ++b) NEST COMMON joined definition of PROPS PROP{b,42a,43a,44a,e,45a,46e,541e} : ++ NEST COMON joined definition of PROPS{b,c}, ++ and also{94f} token, ++ NEST COMMON joined definition of PROP{c}. ++c) NEST COMMON joined definition of PROP{b,42a,43a,44a,e,45a,46e,541e} : ++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f,-}. ++ ++d) *definition of PROP : ++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f} ; ++ NEST label definition of PROP{32}. ++e) NEST declaration with DECSETY without DECSETY1{49e} : ++ where (DECSETY without DECSETY1) is (EMPTY without DECS1), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-} ; ++ where (DECSETY without DECSETY1) is (DECS without EMPTY), ++ public{94d} token, ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-} ; ++ where (DECSETY without DECSETY1) is ++ (DECSETY without DECS1 DECSETY2), ++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-}, ++ and also{94f} token, ++ NEST declaration with DECSETY without DECSETY2{e} ; ++ where (DECSETY without DECSETY1) is ++ (DECS DECSETY3 without DECSETY1), ++ public{94d} token, ++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-}, ++ and also{94f} token, ++ NEST declaration with DECSETY3 without DECSETY1{e}. ++ ++{ Rule e determines how a "NEST declaration with DECSETY without ++ DECSETY1" results into two groups of declarations. The declarations ++ in 'DECSETY' are public and syntactically preceded by PUB. The ++ declarations in 'DECSETY1 are non-public and are not marked by ++ PUB. } ++ ++4.2 Mode declarations ++ ++4.2.1 Syntax ++ ++a) NEST mode declaration of DECS{41a} : ++ mode{94d} token, NEST mode joined definition of DECS{41b,c}. ++b) NEST mode definition of MOID TALLY TAB{41c} : ++ where (TAB) is (bold TAG) or (NEST) is (new LAYER), ++ MOID TALLY NEST defining mode indication with TAB{48a}, ++ is defined as{94d} token, ++ actual MOI TALLY NEST declarer{c}. ++c) actual MOID TALLY1 NEST declarer{b} : ++ where (TALLY1) is (i), ++ actual MOID NEST declarator{46c,d,g,h,o,s,-} ; ++ where (TALLY1) is (TALLY2 i), ++ MOID TALLY2 NEST applied mode indication with TAB2{48b}. ++ ++{ The use of TALLY excludes circular chains of mode-definitions such ++ as `mode a = b, b = a'. } ++ ++4.3 Priority declarations ++ ++4.3.1 Syntax ++ ++a) NEST priority declaration of DECS{41a} : ++ priority{94d} token, NEST priority joined definition of DECS{41b,c}. ++b) NEST priority definition of priority PRIO TAD{41c} : ++ priority PRIO NEST definining operator with TAD{48a}, ++ is defined as{94d} token, DIGIT{94b} token, ++ where DIGIT counts DIGIT{94b} token, ++ where DIGIT counts PRIO{c,d}. ++ {DIGIT :: digit zero ; digit one ; digit two ; digit three ; ++ digit four ; digit five ; digit six ; digit seven ; ++ digit eight ; digit nine.} ++c) WHETHER DIGIT1 counts PRIO i{b,c} : ++ WHETHER DIGIT2 counts PRIO{c,d}, ++ where (digit one igit two digit three digit four ++ digit five digit six digit seven digit eight digit nine) ++ contains (DIGIT2 DIGIT1). ++d) WHETHER digit one counts i{b,c} : WHETHER true. ++ ++4.4 Identifier declarations ++ ++4.4.1 Syntax ++ ++A) MODINE :: MODE ; routine. ++B) LEAP :: local ; heap ; primal. ++ ++a) NEST MODINE identity declaration of DECS{41a} : ++ formal MODINE NEST declarer{b,46b}, ++ NEST MODINE identity joined definition of DECS{41b,c}. ++b) VICTAL routine NEST declarer{a,523b} : procedure{94d} token. ++c) NEST MODINE identity definition of MODE TAG{41c} : ++ MODE NEST defining identifier with TAG{48a}, ++ is defined as{94d} token, MODE NEST source for MODINE{d}. ++d) MODE NEST source for MODINE{c,f,45c} : ++ where (MODINE) is (MODE), MODE NEST source{521c} ; ++ where (MODINE) is (routine), MODE NEST routine text{541a,b,-}. ++e) NEST reference to MODINE variable declaration of DECS{41a} : ++ reference to MODINE NEST LEAP sample generator{523b}, ++ NEST reference to MODINE variable joined definition of DECS{41b,c}. ++f) NEST reference to MODINE variable definition ++ of reference to MODE TAG{41c} : ++ reference to MODE NEST defining identifier with TAG{48a}, ++ becomes{94c} token, MODE NEST soure for MODINE{d} ; ++ where (MODINE) is (MODE), ++ reference to MODE NEST defining identifier with TAG{48a}. ++ ++g) *identifier declaration : ++ NEST MODINE identity declaration of DECS{a} ; ++ NEST reference to MODINE variable declaration of DECS{e}. ++ ++4.5 Operation declarations ++ ++4.5.1 Syntax ++ ++A) PRAM :: DUO ; MONO. ++B) TAO :: TAD ; TAM. ++ ++a) NEST MODINE operation delarations of DECS{41a} : ++ operator{94d} token, formal MODINE NEST plan{b,46p,-}, ++ NEST MODINE operation joined definition of DECS{41b,c}. ++b) formal routine NEST plan{a} : EMPTY. ++c) NEST MODINE operation definition of PRAM TAO{41c} : ++ PRAM NEST defining operator with TAO{48a}, ++ is defined as{94d} token, PRAM NEST source for MODINE{44d}. ++ ++4.6 Declarers ++ ++4.6.1 Syntax ++ ++A) VICTAL :: VIRACT ; formal. ++B) VIRACT :: virtual ; actual. ++C) MOIDS :: MOID ; MOIDS MOID. ++ ++a) VIRACT MOID NEST declarer{c,e,g,h,523a,b} : ++ VIRACT MOID NEST declarator{c,d,g,h,o,s,-} ; ++ MOID TALLY NEST applied mode indication with TAB{48b,-}. ++b) formal MOID NEST declarer{e,h,p,r,u,34k,44a,541a,b,e,551a} : ++ where MOID deflexes to MOID{47a,b,c,-}, ++ formal MOID NEST declarator{c,d,h,o,s,-} ; ++ MOID1 TALLY NEST applied mode indication with TAB{48b,-}, ++ where MOID1 deflexes to MOID{47a,b,c,-}. ++c) VICTAL reference to MODE NEST declarator{a,b,42c} : ++ reference to{94d} token, virtual MODE NEST declarer{a}. ++d) VICTAL structured with FIELDS mode NEST declarator{a,b,42c} : ++ structure{94d} token, ++ VICTAL FIELDS NEST portrayer of FIELDS{e} brief pack. ++e) VICTAL FIELDS NEST portrayer of FIELDS1{d,e} : ++ VICTAL MODE NEST declarer{a,b}, ++ NEST MODE FIELDS joined definition of FIELDS1{41b,c} ; ++ where (FIELDS1) is (FIELDS2 FIELDS3), ++ VICTAL MODE NEST declarer{a,b}, ++ NEST MODE FIELDS joined definition of FIELDS2{41b,c}, ++ and also{94f} token, ++ VICTAL FIELDS NEST portrayer of FIELDS3{e}. ++f) NEST MODE FIELDS definition of MODE field TAG{41c} : ++ MODE field FIELDS defining field selector with TAG{48c}. ++g) VIRACT flexible ROWS of MODE NEST declarator{a,42c} : ++ flexible{94d} token, VIRACT ROWS of MODE NEST declarer{a}. ++h) VICTAL ROWS of MODE NEST declarator{a,b,42c} : ++ VICTAL ROWS NEST rower{i,j,k,l} STYLE bracket, ++ VICTAL MODE NEST declarer{a,b,}. ++i) VICTAL row ROWS NEST rower{h,i} : ++ VICTAL row NEST rower{j,k,l}, and also{94f} token, ++ VICTAL ROWS NEST rower{i,j,k,l}. ++j) actual row NEST rower{h,i} : ++ NEST lower bound{m}, up to{94f} token, NEST upper bound{n} ; ++ NEST upper bound{n}. ++k) virtual row NEST rower{h,i} : up to{94f} token option. ++l) formal row NEST rower{h,i} : up to{94f} token option. ++m) NEST lower bound{j,532f,g} : meek integral NEST unit{32d}. ++n) NEST upper bound{j,532f} : meek integral NEST unit{32d}. ++o) VICTAL PROCEDURE NEST declarator{a,b,42c} : ++ procedure{94d} token, formal PROCEDURE NEST plan{p}. ++p) formal procedure PARAMETY yieling MOID NEST plan{o,45a} : ++ where (PARAMETY) is (EMPTY), formal MOID NEST declarer{b} ; ++ PARAMETERS NEST joined declarer{q,r} brief pack, ++ formal MOID NEST declarer{b}. ++q) PARAMETERS PARAMETER NEST joined declarer{p,q} : ++ PARAMETERS NEST joined declarer{q,r}, and also{94f} token, ++ PARAMETER NEST joined declarer{r}. ++r) MODE parameter NEST joined declarer{p,q} : ++ formal MODE NEST declarer{b}. ++s) VICTAL union of MOODS1 MOOD1 mode NEST declarator{a,b,42c} : ++ unless EMPTY with MOODS1 MOOD1 incestuous{47f}, ++ union of{94d} token, ++ MOIDS NEST joined declarer{t,u} brief pack, ++ where MOIDS ravels to MOODS2{47g} ++ and safe MOODS1 MOOD1 subset of safe MOODS2{73l} ++ and safe MOODS2 subset of safe MOODS1 MOOD1{731,m}. ++t) MOIDS MOID NEST joined declarer{s,t} : ++ MOIDS NEST joined declarer{t,u}, an also{94f} token, ++ MOID NEST joined declarer{u}. ++u) MOID NEST joined declarer{s,t} : formal MOID NEST declarer{b}. ++ ++4.7 Relationships between modes ++ ++4.7.1 Syntax ++ ++A) NONSTOWED :: PLAIN ; REF to MODE ; PROCEDURE ; UNITED ; void. ++B) MOODSETY :: MOODS ; EMPTY. ++C) MOIDSETY :: MOIDS ; EMPTY. ++ ++a) WHETHER NONSTOWED deflexes to NONSTOWED{b,e,46b,521c,62a,71n} : ++ WHETHER true. ++b) WHETHER FLEXETY ROWS of MODE1 deflexes to ROWS of MODE2{b,e,46b,521c,62a,71n} : ++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. ++c) WHETHER structured with FIELDS1 mode deflexes to ++ structured with FIELDS2 mode{b,e,46b,521c,62a,71n} : ++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-}. ++d) WHETHER FIELDS1 FIELD1 deflexes to FIELDS2 FIELD2{c,d} : ++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-} ++ and FIELD1 deflexes to FIELD2{e,-}. ++e) WHETHER MODE1 field TAG deflexes to MODE2 field TAG{c,d} : ++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. ++ ++f) WHETHER MOODSETY1 with MOODSETY2 inestuous{f,46s} : ++ where (MOODSETY2) is (MOOD MOODSETY3), ++ WHETHER MOODSETY1 MOOD with MOODSETY3 incestuous{f} ++ or MOOD is firm union of MOODSETY1 MOODSETY3 mode{71m} ; ++ where (MOODSETY2) is (EMPTY), WHETHER false. ++ ++g) WHETHER MOIDS ravels to MOODS{g,46s} : ++ where (MOIDS) is (MOODS), WHETHER true ; ++ where (MOIDS) is ++ (MOODSETY union of MOODS1 mode MOIDSETY), ++ WHETHER MOODSETY MOODS1 MOIDSETY ravels to MOODS{g}. ++ ++{ The hyperrules from a) to e) implement a predicate deflexes-to that ++ determines whether a given mode deflexes to another mode. Any ++ non-stowed mode deflexes to any other non-stowed mode. A row mode ++ deflexes to another row mode if the ranks of the modes are the same ++ and the mode of the former's elements deflexes to the mode of the ++ later's elements. A structured mode deflexes to another structured ++ mode if they have the same number of fields with the same tags and ++ their modes deflex. } ++ ++{ The hyperrule f) implements a predicate that determines whether two ++ provided sets of moods are incestuous, i.e. whether they contain ++ modes which are firmly related. } ++ ++{ The hyperrule g) determines whether a set of moods and ++ united modes may be ravelled. } ++ ++4.8 Indicators and field selectors ++ ++4.8.1 Syntax ++ ++{ Extensions: ++ [MR] INK, "module indication", "module REVS", "invoked", TAU } ++ ++A) INDICATOR :: identifier ; mode indication ; operator ; ++ module indication. ++B) DEFIED :: defining ; applied. ++C) PROPSETY :: PROPS ; EMPTY. ++D) PROPS :: PROP ; PROPS PROP. ++E) PROP :: DEC ; LAB ; FIELD ; INK. ++F) QUALITY :: MODE ; MOID TALLY ; DYADIC ; label ; MODE field ; ++ module REVS ; invoked. ++G) TAX :: TAG ; TAB ; TAD ; TAM ; TAU. ++ ++a) QUALITY NEST new PROPSETY1 QUALITY TAX PROPSETY2 ++ defining INDICATOR with TAX{32c,35b,42b,43b,44c,f,45c,541f} : ++ where QUALITY TAX independent PROPSETY1 PROPSETY2{71a,b,c}, ++ TAX{942A,D,F,K} token. ++b) QUALITY NEST applied INDICATOR with TAX{42c,46a,b,5D,542a,b,544a} : ++ where QUALITY TAX identified in NEST{72a}, ++ TAX{942A,D,F,K} token. ++c) MODE field PROPSETY1 MODE field TAG PROPSETY2 defining ++ field selector with TAG{46f} : ++ where MODE field TAG independent PROPSETY1 PrOPSETY2{71a,b,c}, ++ TAX{942A} token. ++d) MODE field FIELDS applied field selector with TAG{531a} : ++ where MODE field TAG resides in FIELDS{72b,c,-}, ++ TAG{942A} token. ++ ++e) *QUALITY NEST DEFIED indicator with TAX : ++ QUALITY NEST DEFIED INDICATOR with TAX{a,b}. ++f) *MODE DEFIED field seletor with TAG : ++ MODE field FIELDS DEFIED field selector with TAG{c,d}. ++ ++{ MODs are introduced into a nest by module-declarations. ++ INKs are introduced into a nest by module-calls. } ++ ++{ Modules are ascribed to module-indications by means of ++ module-declarations. } ++ ++4.9 Module declarations ++ ++4.9.1 Syntax ++ ++a) NEST1 module declaration of MODS{41a,e} : ++ module{94d} token, ++ NEST1 module joined definition of MODS{41b,c}. ++b) NEST1 module definition of module RESETY REV TAB{41c} : ++ where (REV) is (TAU reveals DECSETY invoked TAU) ++ and (TAB) is (bold TAG), ++ where (NEST1) is (NOTION1 invoked TAU NOTETY2), ++ unless (NOTION1 NOTETY2) contains (invoked TAU), ++ module REVSETY REV NEST1 defining module indication with TAB{48a}, ++ is defined as{94d} token, ++ NEST1 module text publishing REVSETY REV defining LAYER{c,-}. ++c) NEST1 module text ++ publishing REVSETY TAU reveals DECSETY INKSETY INK ++ defining new DECSETY1 DECSETY INK{b} : ++ where (INKSETY) is (EMPTY) and (REVSETY) is (EMPTY), ++ def{94d} token, ++ NEST1 new new DECSETY1 DECSETY INK module series ++ with DECSETY without DECSETY1{d}, ++ fed{94d} token ; ++ NEST1 revelation publishing REVSETY defining LAYER{36b}, ++ def{94d} token, ++ NEST1 LAYER new DECSETY1 DECSETY INK module series ++ with DECSETY without DECSETY1{d}, ++ fed{94d} token, ++ where (LAYER) is (new DECSETY2 INKSETY). ++d) NEST3 module series with DECSETY without DECSETY1{c} : ++ NEST3 module prelude with DECSETY without DECSETY1{e}, ++ NEST3 module postlude{f} option. ++e) NEST3 module prelude with DECSETY1 without DECSETY2{d,e} : ++ strong void NEST3 unit{32d}, go on{94f} token, ++ NEST3 module prelude with DECSETY1 without DECSETY2{e} ; ++ where (DECSETY1 without DECSETY2) is ++ (DECSETY3 DECSETY4 without DECSETY5 DECSETY6>, ++ NEST3 declaration with DECSETY3 without DECSETY5{41e}, ++ go on{94f} token, ++ NEST3 module prelude with DECSETY4 without DECSETY6{e} ; ++ where (DECSETY1 without DECSETY2) is (EMPTY without EMPTY), ++ strong void NEST3 unit{32d} ; ++ NEST3 declaration with DECSETY1 without DECSETY2{41e}. ++f) NEST3 module postlude{d} : ++ postlude{94d} token, strong void NEST3 series with EMPTY{32b}. ++ ++g) *module text : ++ NEST module text publishing REVS defining LAYER{c}. ++ ++{ Examples: ++ a) MODULE A = DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED, ++ B = ACCESS A DEF PUB INT fd; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ b) A = DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED ++ ++ B = ACCESS A DEF PUB FILE f; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ c) DEF STRING s; gets (s); ++ PUB STRING t = "file"+s, PUB REAL a FED ++ ++ ACCESS A DEF PUB FILE f; ++ fopen (fd, file o rdonly) ++ POSTLUDE close (f) FED ++ ++ d) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a ++ ++ PUB FILE f; fopen (fd, file o rdonly) POSTLUDE close (f) ++ ++ e) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a ++ ++ PUB FILE f; fopen (fd, file o rdonly) ++ ++ f) POSTLUDE close (f) } ++ ++{ Note that the EMPTY (for PROPSETY) in rule f enforces that a module ++ postlude cannot contain declarations, labels or module accesses. ++ Only units are allowed. } ++ ++{ Rule b ensures that a unique 'TAU' is associated with each ++ module-text accessible from any given point in the program. This is ++ used to ensure that an invoke ATU' can be identified in the nest of ++ all descendent constructs of any access-clause or module-text which ++ invokes that module-text. ++ ++ In general, a module-text-publishing-REVS-defining-LAYER T makes ++ 'LAYER' visible within itself, and makes the properties revealed by ++ 'REVS' visible wherever T is accessed. 'LAYER' includes both a ++ 'DECSETY' corresponding to its public declarations and an INK' which ++ links T to its unique associated 'TAU' and signifies in the nest ++ that T is now known to be invoked. REVS' always reveals 'DECSETY ++ INKSETY INK' (but not 'DECSETY1'), where INKSETY' signifies the ++ invocation of any other modules accessed by T. 'REVS' may also ++ reveal the publications of the other modules accessed by T if their ++ module-calls within T contained a public-token. } ++ ++5 Units ++ ++5.1 Syntax ++ ++{ Extensions: ++ [MR] formal hole, virtual hole } ++ ++A) UNIT{32d} :: ++ assignation{521a} coercee ; identity relation{522a} coercee ; ++ routine text{541a,b} coercee ; jump{544a} ; skip{552a} ; ++ and function{57a} ; or function{57b} ; ++ formal hole{561b} ; virtual hole{561a} ; ++ TERTIARY{B}. ++B) TERTIARY{A,521b,522a} :: ++ ADIC formula{542a,b} coercee ; nihil ; ++ SECONDARY{C}. ++C) SECONDARY{B,531a,542c} :: ++ LEAP generator{523a} coercee ; selection{531a} coercee ; ++ PRIMARY{D}. ++D) PRIMARY{C,532a,543a} :: ++ slice{532a} coercee ; call{543a} coercee ; ++ format text{A341a} coercee ; ++ applied identifier with TAG{48b} coercee ; ++ ENCLOSED clause{31a,33a,c,d,e,34a,35a}. ++ ++a) *SOME hip : ++ SOME jump{544a} : SOME skip{552a} ; SOME nihil{524a}. ++ ++5.2 Units associated with names ++ ++5.2.1 Assignations ++ ++5.2.1.1 Syntax ++ ++a) REF to MODE NEST assignation{5A} : ++ REF to MODE NEST destination{b}, becomes{94c} token, ++ MODE NEST source{c}. ++b) REF to MODE NEST destination{a} : ++ soft REF to MODE NEST TERTIARY{5B}. ++c) MODE1 NEST source{a,44d} : ++ strong MODE2 NEST unit{32d}, ++ where MODE1 deflexes to MODE2{47a,b,c,-}. ++ ++5.2.2 Identity relations ++ ++5.2.2.1 Syntax ++ ++a) boolean NEST identity relation{5A} : ++ where soft balances SORT1 and SORT2{32f}, ++ SORT1 reference to MODE NEST TERTIARY1{5B}, ++ identity relator{b}, ++ SORT2 reference to MODE NEST TERTIARY2{5B}. ++b) identity relator{a} : is{94f} token ; is not{94f} token. ++ ++5.2.3 Generators ++ ++5.2.3.1 Syntax ++ ++a) reference to MODE NEST LEAP generator{5C} : ++ LEAP{94d,-} token, actual MODE NEST declarer{46a}. ++b) reference to MODINE NEST LEAP sample generator{44e} : ++ LEAP{94d,-} token, actual MODINE NEST declarer{44b,46a} ; ++ where (LEAP) is (local), actual MODINE NEST declarer{44b,46a}. ++ ++5.2.4 Nihils ++ ++5.2.4.1 Syntax ++ ++a) strong reference to MODE NEST nihil{5B} : ++ nil{94f} token. ++ ++5.3 Units associated with stowed values ++ ++5.3.1 Selections ++ ++5.3.1.1 Syntax ++ ++A) REFETY :: REF to ; EMPTY. ++B) REFLEXETY :: REF to ; REF to flexible ; EMPTY. ++ ++a) REFETY MODE1 NEST selection{5C} : ++ MODE1 field FIELDS applied field selector with TAG{48d}, ++ of{94f} token, weak REFLEXETY ROWS of structured with ++ FIELDS mode NEST SECONDARY{5C}, ++ where (REFETY) is derived from (REFLEXETY){b,c,-}. ++b) WHETHER (transient reference to) is derived from ++ (REF to flexible){a,532,66a} : ++ WHETHER true. ++c) WHETHER (REFETY) is derived from (REFETY){a,532a,66a} : ++ WHETHER true. ++ ++5.3.2 Slices ++ ++5.3.2.1 Syntax ++ ++A) ROWSETY :: ROWS ; EMPTY. ++ ++a) REFETY MODE1 NEST slice{5D} : ++ weak REFLEXETY ROWS1 of MODE1 NEST PRIMARY{5D}, ++ ROWS1 leaving EMPTY NEST indexer{b,c,-} STYLE bracket, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; ++ where (MODE1) is (ROWS2 of MODE2), ++ weak REFLEXETY ROWS1 of MODE2 NEST PRIMARY{5D}, ++ ROWS1 leaving ROWS2 NEST indexer{b,d,-} STYLE bracket, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. ++b) row ROWS leaving ROWSETY1 ROWSETY2 NEST indexer{a,b} : ++ row leaing ROWSETY1 NEST indexer{c,d,-}, and also{94f} token, ++ ROWS leaving ROWSETY2 NEST indexer{b,c,d,-}. ++c) row leaving EMPTY NEST indexer{a,b} : NEST subscript{3}. ++d) row leaving row NEST indexer{a,b} : ++ NEST trimmer{f} ; NEST revised lower bound{g} option. ++e) NEST subscript{c} : meek integral NEST unit{32d}. ++f) NEST trimmer{d} : ++ NEST lower bound{46m} option, up to{94f} token, ++ NEST upper bound{46n} option, ++ NEST revised lower bound{g} option. ++g) NEST revised lower bound{d,f} : ++ at{94f} token, NEST lower bound{46m}. ++ ++h) *trimscript : ++ NEST subscript{e} ; NEST trimmer{f}; ++ NEST revised lower bound{g} option. ++i) *indexer : ++ ROWS leaving ROWSETY NEST indexer{b,c,d}. ++j) *boundscript : ++ NEST subscript{e} ; NEST lower bound{46m} ; ++ NEST upper bound{46n} ; NEST revised lowe bound{g}. ++ ++5.4 Units associated with routines ++ ++5.4.1 Routine texts ++ ++5.4.1.1 Syntax ++ ++a) procedure yielding MOID NEST1 routine text{44d,5A} : ++ formal MOID NEST1 declarer{46b}, routine{94f} token, ++ strong MOID NEST1 unit{32d}. ++b) procedure with PARAMETERS yielding ++ MOID NEST1 routine text{44d,5A} : ++ NEST1 new DECS2 declarative defining ++ new DECS2{e} brief pack, ++ where DECS2 like PARAMETERS{c,d,-}, ++ formal MOID NEST1 declarer{46b}, routine{94f} token, ++ strong MOID NEST1 new DECS2 unit{32d}. ++c) WHETHER DECS DEC like PARAMETERS PARAMETER{b,c} : ++ WHETHER DECS like PARAMETERS{c,d-} ++ and DEC like PARAMETER{d,-}. ++d) WHETHER MODE TAG like MODE parameters{b,c} : ++ WHETHER true. ++e) NEST2 declarative defining new DECS2{b,e,34j} : ++ formal MODE NEST2 declarer{46b}, ++ NEST2 MODE parameter joined definition of DECS2{41b,c} ; ++ where (DECS2) is (DECS3 DECS4), ++ formal MODE NEST2 declarer{46b}, ++ NEST2 MODE parameter joind definition of DECS3{41b,c}, ++ and also{94f} token, NEST2 declarative defining new DECS4{3}. ++f) NEST2 MODE parameter efinition of MODE TAG2{41c} : ++ MDOE NEST2 defining identifier with TAG2{48a}. ++ ++g) *formal MODE parameter : ++ NEST MODE parameter definition of MODE TAG{f}. ++ ++5.4.2 Formulas ++ ++5.4.2.1 Syntax ++ ++A) DYADIC :: priority PRIO. ++B) MONADIC :: priority iii iii iii i. ++C) ADIC :: DYADIC ; MONADIC. ++D) TALLETY :: TALLY ; EMPTY. ++ ++a) MOID NEST DYADIC formula{c,5B} : ++ MODE1 NEST DYADIC TALLETY operand{c,-}, ++ procedure with MODE1 parameter MODE2 parameter ++ yielding MOID NEST applied operator with TAD{48b}, ++ where DYADIC TAD identified in NEST{72a}, ++ MODE2 NEST DYADIC TALLY operand{c,-}. ++b) MOID NEST MONADIC formula{c,5B} : ++ procedure with MODE parameter yielding MOID ++ NEST applied operator ith TAM{48b}, ++ MODE NEST MONADIC operand{c}. ++c) MODE NEST ADIC operand{a,b} : ++ firm MODE NEST ADIC formula{a,b} coercee{61b} ; ++ where (ADIC) is (MONADIC), firm MODE NEST SECONDARY{5C}. ++ ++d) *MOID formula : MOID NEST ADIC formula{a,b}. ++e) *DUO dyadic operator with TAD : ++ DUO NEST DEFIED operator with TAD{48a,b}. ++f) *MONO monadic operator with TAM : ++ MONO NEST DEFIED operator with TAM{48a,b}. ++g) *MODE operand : MODE NEST ADIC operand{c}. ++ ++5.4.3 Calls ++ ++5.4.3.1 Syntax ++ ++a) MOID NEST call{5D} : ++ meek procedure with PARAMETERS yielding MOID NEST PRIMARY{5D}, ++ actual NEST PARAMETERS{b,c} brief pack. ++b) actual NEST PARAMETERS PARAMETER{a,b} : ++ actual NEST PARAMETERS{b,c}, and also{94f} token, ++ actual NEST PARAMETER{c}. ++c) actual NEST MODE parameter{a,b} : strong MODE NEST unit{32d}. ++ ++5.4.4 Jumps ++ ++5.4.4.1 Syntax ++ ++a) strong MOID NEST jump{5A} : ++ go to{b} option, ++ label NEST applied identifier with TAG{48b}. ++b) go to{a} : STYLE go to{94f,-} token ; ++ STYLE go{94f,-} token, STYLE to symbol{94g,-}. ++ ++5.5 Units associated with values of any mode ++ ++5.5.1 Casts ++ ++5.5.1.1 Syntax ++ ++a) MOID NEST cast{5D} : ++ formal MOID NEST declarer{46b}, ++ strong MOID NEST ENCLOSED clause{31a,33c,d,e,34a,35a,-}. ++ ++5.5.2 Skips ++ ++5.5.2.1 Syntax ++ ++a) strong MOID NEST skip{5A} : skip{94f} token. ++ ++5.6 Holes ++ ++5.6.1 Syntax ++ ++A) LANGUAGE :: algol sixty eight ; fortran ; c language ; cpp language. ++B) ALGOL68 :: algol sixty eight. ++C) FORTRAM :: fortran. ++D) CLANG :: c language. ++E) CPPLANG :: cpp language. ++F) DLANG :: d language. ++ ++a) strong MOID NEST virtual hole{5A} : ++ virtual nest symbol, strong MOID NEST closed clause{31a}. ++b) strong MOID NEST formal hole{5A} : ++ formal nest{94d} token, MOID LANGUAGE indication{e,f,-}, ++ hole indication{d}. ++c) MOID NEST actual hole{A6a} : ++ strong MOID NEST ENCLOSED clause{31a,33a,c,34a,35a,36a,-}. ++d) hole indication{b} : ++ character denotation{814a} ; row of character denotation{83a}. ++e) MOID ALGOL68 indication{b} : EMPTY. ++f) MOID FORTRAN indication{b} : bold letter f letter o letter r letter t ++ letter r letter a letter n token. ++g) MOID CLANG indication{b} : bold letter c letter l letter a letter n ++ letter g. ++e) MOID CPPLANG indication{b} : bold letter c letter p letter p letter l ++ letter a letter n letter g. ++f) MOID DLANG indication{b} : bold letter d letter l letter a letter n ++ letter g. ++ ++{ Since no representation is provided for the virtual-nest-symbol, the ++ user is unable to construct virtual-holes for himself, but a ++ mechanism is provided (10.6.2.a) for constructing them out of ++ formal- and actual-holes. } ++ ++5.7 Short-circuit logical functions ++ ++{ Extensions: [SC] } ++ ++{ The short-circuit logical functions are pseudo-operators providing ++ logical AND and OR functions with short-circuited elaboration. } ++ ++5.7.1 Syntax ++ ++a) boolean NEST and function{5A} : ++ meek boolean NEST TERTIARY1, andth{94c} token, meek boolean NEST TERTIARY2. ++ ++b) boolean NEST or function{5A} : ++ meek boolean NEST TERTIARY1, orel{94c} token, meek boolean NEST TERTIARY2. ++ ++c) *boolean NEST short circuit function : ++ boolean NEST and function{a} ; boolean NEST or function{b}. ++ ++{ Examples: ++ a) UPB str > 2 ANDTH str[3] /= "x" ++ b) error = 0 OREL (print ("error"); stop; SKIP) } ++ ++6 Coercion ++ ++6.1 Coercees ++ ++6.1.1 Syntax ++ ++A) STRONG{a,66a} :: ++ FIRM{B} ; widened to{65a,b,c,d} ; rowed to{66a} ; ++ voided for{67a,b}. ++B) FIRM{A,b} :: MEEK{C} ; united to{64a}. ++C) MEEK{B,c,d,64a,63a,64a,65a,b,c,d} :: ++ unchanged from{f} ; dereferenced to{62a} ; deprocedured to{63a}. ++D) SOFT{e,63b} :: ++ unchanged from{f} ; softly deprocedured to{63b}. ++E) FORM :: MORF ; COMORF. ++F) MORF :: ++ NEST selection ; NEST slice ; NEST routine text ; ++ NEST ADIC formula ; NEST call ; ++ NEST applied identifier with TAG. ++G) COMORF :: ++ NEST assignation ; NEST identity relation ; ++ NEST LEAP generator ; NEST cast ; NEST denoter ; ++ NEST format text. ++ ++a) strong MOID FORM coercee{5A,B,C,D,A341i} : ++ where (FORM) is (MORF), STRONG{A} MOID MORF ; ++ where (FORM) is (COMORF), STRONG{A} MOID COMORF, ++ unless (STRONG MOID) is (deprocedured to void). ++b) firm MODE FORM coercee{5A,B,C,D,542c} : FIRM{B} MODE FORM. ++c) meek MODE FORM coercee{5A,B,C,D} : MEEK{C} MOID FORM. ++d) weak REFETY STOWED FORM coercee{5A,B,C,D} : ++ MEEK{C} REFETY STOWED FORM, ++ unless (MEEK) is (dereferenced to) ++ and (REFETY) is (EMPTY). ++e) soft MODE FORM coercee{5A,B,C,D} : SOFT{D} MODE FORM. ++f) unchanged from MOID FORM{C,D,67a,b} : MOID FORM. ++ ++g) *SORT MOID coercee : SORT MOID FORM coercee{a,b,c,d,e}. ++h) *MOID coercend : MOID FORM. ++ ++{ Examples: ++ a) 3.14 (in x := 3.14) ++ b) 3.14 (in x + 3.14) ++ c) sin (in sin (x)) ++ d) x1 (in x1[2] := 3.14) ++ e) x (in x := 3.14) } ++ ++6.2 Dereferencing ++ ++6.2.1 Syntax ++ ++a) dereferenced to{61C} MODE1 FORM : ++ MEEK{61C} REF to MODE2 FORM, ++ where MODE2 deflexes to MODE1{47a,b,c,-}. ++ ++{ Examples: ++ a) x in (real (x)) } ++ ++6.3 Deproceduring ++ ++6.3.1 Syntax ++ ++a) deprocedured to{61C,67a} MOID FORM : ++ MEEK{61C} procedure yielding MOID FORM. ++b) softly deprocedured to{61D} MODE FORM : ++ SOFT{61D} procedure yielding MODE FORM. ++ ++{ Examples: ++ a) random (in real (random)) ++ b) x or y (in x or y := 3.14, given ++ PROC x or y = REF REAL: (random < .5 | x | y)) } ++ ++6.4 Uniting ++ ++6.4.1 Syntax ++ ++a) united to{64B} UNITED FORM : ++ MEEK{61C} MOID FORM, ++ where MOID unites to UNITED{b}. ++b) WHETHER MOID1 unites to MOID2{a,34i,71m} : ++ where MOID1 equivalent MOID2{73a}, WHETHER false ; ++ unless MOID1 equivalent MOID2{73a}, ++ WHETHER safe MOODS1 subset of safe MOODS2{73l,m,n}, ++ where (MOODS1) is (MOID1) ++ or (union of MOODS1 mode) is (MOID1), ++ where (MOODS2) is (MOIDS2) ++ or (union of MOODS2 mode) is (MOIDS2). ++ ++{ Examples: ++ a) x (in uir := x) ++ u (in UNION(CHAR,INT,VOID)(u), in a reach containing ++ UNION(INt,VOID) u := EMPTY) } ++ ++6.5 Widening ++ ++6.5.1 Syntax ++ ++A) BITS :: structured with ++ row of boolean field SITHETY letter aleph mode. ++B) BYTES :: structured with ++ row of character field SITHETY letter aleph mode. ++C) SITHETY :: LENGTH LENGTHETY ; SHORT SHORTHETY ; EMPTY. ++D) LENGTH :: letter l letter o letter n letter g. ++E) SHORT :: letter s letter h letter o letter r letter t. ++F) LENGTHETY :: LENGTH LENGTHETY ; EMPTY. ++G) SHORTHETY :: SHORT SHORTHETY ; EMPTY. ++ ++a) widened to{b,61A} SIZETY real FORM : ++ MEEK{61C} SIZETY integral FORM. ++b) widened to{61A} structured with SIZETY real field letter r letter e ++ SIZETY real field letter i letter m mode FORM : ++ MEEK{61C} SIZETY real FORM ; ++ widened to{a} SIZETY real FORM. ++c) widened to{61A} row of boolean FORM : MEEK{61C} BIT FORM. ++d) widened to{61A} row of character FORM : MEEK{61C} BYTES FORM. ++ ++{ Examples: ++ a) 1 (in x := 1) ++ b) 1.0 (in z := 1.0) ++ 1 (in z := 1) ++ c) 2r101 (in []BOOL(2r101)) ++ d) r (in []CHAR(r)) } ++ ++6.6 Rowing ++ ++6.6.1 Syntax ++ ++a) rowed to{61A} REFETY ROWS1 of MODE FORM : ++ where (ROWS1) is (row), ++ STRONG{61A} REFLEXETY MODE FORM, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; ++ where (ROWS1) is (row ROWS2), ++ STRONG{61A} REFLEXETY ROWS2 of MODE FORM, ++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. ++ ++{ Examples: ++ a) 4.13 (in [1:1]REAL b1 := 4.13) ++ x1 (in [1:1,1:n]REAL b2 := x1) } ++ ++6.7 Voiding ++ ++6.7.1 Syntax ++ ++A) NONPROC :: PLAIN ; STOWED ; REF to NONPROC ; ++ procedure with PARAMETERS yielding MOID ; UNITED. ++ ++a) voided to{61A} void MORF : ++ deprocedured to{63a} NONPROC MORF ; ++ unchanged from{61f} NONPROC MORF. ++b) voided to{61A} void COMORF : ++ unchanged from{61f} MODE COMORF. ++ ++{ Examples: ++ a) random (in SKIP; random;) ++ next random (last random) ++ (in SKIP; next random (lat random);) ++ b) PROC VOID (pp) (in PROC PROC VOID pp = PROC VOID : (print (1); ++ VOID : print (2)); PROC VOID (pp);) } ++ ++8 Denotations ++ ++8.1 Plain denotations ++ ++8.1.0.1 Syntax ++ ++A) SIZE:: long ; short. ++B) *NUMERAL :: fixed point numeral ; variable point numeral ; ++ floating point numeral. ++ ++a) SIZE INTREAL denotation{a,80a} : ++ SIZE symbol{94d}, INTREAL, denotation{a,811a,812a}. ++ ++b) *plain denotation : ++ PLAIN denotation{a,811a,812a,813a,814a} ; void denotation{815a}. ++ ++{ Example: ++ a) LONG 0 } ++ ++8.1.1 Integral denotations ++ ++8.1.1.1 Syntax ++ ++a) integral denotation{80a,810a} : fixed point numeral{b}. ++b) fixed point numeral{a,812c,d,f,i,A341h} : digit cypher{c} sequence. ++c) digit cypher{b} : DIGIT symbol{94b}. ++ ++{ Examples: ++ a) 4096 ++ b) 4096 ++ c) 4 } ++ ++8.1.2 Real denotations ++ ++8.1.2.1 Syntax ++ ++a) real denotation{80a,810a} : ++ variable point numeral{b} ; floating point numeral{e}. ++b) variable point numeral{a,f} : ++ integral part{c} option, fractional part{d}. ++c) integral part{b} : fixed point numeral{811b}. ++d) fractional part{b} : point symbol{94b}, fixed point numeral{811b}. ++e) floating point numeral{a} : stagnant part{f}, exponent part{g}. ++f) stagnant part{e} : ++ fixed point numeral{811b} : variable point numeral{b}. ++g) exponent part{e} : ++ times ten to the power choice{h}, power of then{i}. ++h) times ten to the power choice{g} : ++ times ten to the power symbol{94b} ; letter e symbol{94a}. ++i) power of ten{g}: plusminus{j} option, fixed point numeral{811b}. ++j) plusminus{i} : plus symbol{94c} ; mius symbol{94c}. ++ ++{ Examples: ++ a) 0.00123 ++ 1.23e-3 ++ b) 0.00123 ++ c) 0 ++ d) .00123 ++ e) 1.23e-3 ++ f) 123 ++ 1.23 ++ g) E-3 ++ h) E ++ i) -3 ++ j) + ++ - } ++ ++8.1.3 Boolean denotations ++ ++8.1.3.1 Syntax ++ ++a) boolean denotation{80a} : true{94b} symbol ; false{94b} smbol. ++ ++{ Examples: ++ a) TRUE ++ FALSE } ++ ++8.1.4 Character denotations ++ ++8.1.4.1 Syntax ++ ++a) character denotation{80a} : ++ quote{94b} symbol, string item{b}, quote sybol{94b}. ++b) string item{a,83b} : ++ character glyph{c} ; quote image symbol{94f} ; other string item{d}. ++c) character glyph{b,92c} : ++ LETTER symbol{94a} ; DIGIT symbol{94b} ; ++ point sybol{94b} ; open symbol{94f} ; close symbol{94f} ; ++ comma symbol{94b} ; space symbol{94b} ; ++ plus symbol{94c} ; minus symbol{94c}. ++ ++{ A production rule may be added for the notion 'other string item' ++ each of whose alternatives is a symbol 1.1.3.1.f which is different ++ from any terminal production of 'character glyph' and which is not ++ 'quote symbol' } ++ ++{ Examples: ++ a) "a" ++ b) a ++ "" ++ ? ++ c) a 1 . ( ) , . space + - } ++ ++8.1.5 Void denotation ++ ++5.1.5.1 Syntax ++ ++a) void denotation{80a} : empty{94b} symbol. ++ ++{ Example: ++ a) EMPTY } ++ ++8.2 Bits denotations ++ ++8.2.1 Syntax ++ ++A) RADIX :: radix two ; radix four ; radix eight ; radix sixteen. ++ ++a) structured with row of boolean field ++ LENGTH LENGTHETY letter aleph mode denotation{a,80a} : ++ long{94d} symbol, structured with row of boolean field ++ LENGTHETY letter aleph mode denotation{a,c}. ++b) structured with row of boolean field ++ SHORT SHORTHTETY letter aleph mode denotation{b,80a} : ++ short{94d} symbol, ++ structured with row of boolean field SHORTHETY letter aleph mode denotation{b,c}. ++c) structured wih row of boolean field ++ letter aleph mode denotation{a,b,80a} : ++ RADIX{d,e,f,g}, letter r symbol{94a}, RADIX digit{h,i,j,k} sequence. ++d) radix two{c,A347b} : digit two{94b} symbol. ++e) radix four{c,A347b} : digit four{94b} symbol. ++f) radix eight{c,A347b} : digit eight{94b} symbol. ++g) radix sixteen{c,A347b} : digit one symbol{94b}, digit six symbol{94b}. ++h) radix two digit{c,i} : digit zero symbol{94b} ; digit one symbol{94b}. ++i) radix four digit{c,j} : ++ radix two digit{h} ; digit two symbol{94b} ; ++ digit three symbol{94b}. ++j) raidx eight digit{c,k} : ++ radix four digit{i} ; digit four symbol{94b} ; ++ digit five symbol{94b} ; digit six symbol{94b} ; ++ digit seven symbol{94b}. ++k) radix sixteen digit{c} : ++ radix eight digit{j} ; digit eight symbol{94b} ; ++ digit nine symbol{94b} ; letter a symbol{94a} ; ++ letter b symbol{94a} ; letter e symbol{94a} ; letter d symbol{94a} ; ++ letter e symbol{94a} ; letter f symbol{94a}. ++ ++l) *bits denotation : BITS denotation{a,b,c}. ++m) *radix digit : RADIX digit{h,i,j,k}. ++ ++{ Examples: ++ a) LONG 2r101 ++ b) SHORT 16rffff ++ c) 8r231 } ++ ++8.3 String denotations ++ ++8.3.1 Syntax ++ ++a) row of character denotation{80a} : ++ quote{94b} symbol, string{b} option, quote symbol{94b}. ++b) string{a} : string item{814b}, string item{814b} sequence. ++ ++c) *string denotation : row of charater denotation{a}. ++ ++{ Examples: ++ a) "abc" ++ b) abc } ++ ++9 Tokens and symbols ++ ++9.1 Tokens ++ ++{ Tokens are symbols possibly preceded by pragments. } ++ ++9.1.1 Syntax ++ ++a) CHOICE STYLE start{34a} : ++ where (CHOICE) is (choice using boolean), ++ STYLE if{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE case{94f,-} token. ++b) CHOICE STYLE in{34e} : ++ where (CHOICE) is (choice using boolean), ++ STYLE then{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE in{94f,-} token. ++c) CHOICE STYLE again{34l} : ++ where (CHOICE) is (choice using boolean), ++ STYLE else if{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE ouse{94f,-} token. ++d) CHOICE STYLE out{34l} : ++ where (CHOICE) is (choice using boolean), ++ STYLE else{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE out{94f,-} token. ++e) CHOICE STYLE finish{34a} : ++ whre (CHOICE) is (choice using boolean), ++ STYLE fi{94f,-} token ; ++ where (CHOICE) is (CASE), STYLE esac{94f,-} token. ++f) NOTION token : ++ pragment{92a} sequence option, ++ NOTION symbol{94a,b,c,d,e,f,g,h}. ++ ++g) *token : NOTION token{f}. ++h) *symbol : NOTION symbol{94a,b,c,d,e,f,g,h}. ++ ++9.2 Comments and pragmats ++ ++9.2.1 Syntax ++ ++{ Extensions: ++ [NC] nestable comments. } ++ ++A) PRAGMENT :: pragmat ; comment. ++ ++a) pragment{80a,91f,A341b,h,A348a,b,c,A349a,A34Ab} : PRAGMENT{b}. ++b) PRAGMENT{a} : ++ STYLE PRAGMENT symbol{94h,-}, ++ STYLE PRAGMENT item{c} sequence option, ++ STYLE PRAGMENT symbol{94h,-} ; ++ STYLE nestable comment{d}. ++c) STYLE PRAGMENT item{b} : ++ character glyph{814c} ; STYLE other PRAGMENT item{d}. ++d) STYLE nestable comment{b} : ++ STYLE comment begin symbol{94h,-}, ++ STYLE nestable comment contents{e} sequence, ++ STYLE comment end symbol{94h,-}. ++e) STYLE nestable comment contents{d} : ++ STYLE nestable comment item{c} sequence option, ++ STYLE nestable comment{d} option. ++f) STYLE nestable comment item{e} : ++ character glyph{814c} ; STYLE other nestable comment item{d}. ++ ++{ A production rule may be added for each notion designated by 'STYLE ++ other PRAGMENT item' each of whose alternatives is a symbol ++ different from any terminal production of 'character glyph', and ++ such that no terminal production of any 'STYLE other PRAGMENT item' ++ is the corresponding 'STYLE PRAGMENT symbol'. This allows to nest ++ different comment or pragmat for example. } ++ ++9.4 The reference language ++ ++9.4.1 Representations of symbols ++ ++{ Extensions: ++ [CS] andth symbol, orel symbol ++ [MR] access symbol, module symbol, def symbol, public symbol, ++ postlude symbol, formal nest symbol, egg symbol ++ [US] unsafe symbol } ++ ++{ This section of the Report doesn't describe syntax, but lists all ++ the different symbols along with their representation in the ++ reference language. We only include here symbols corresponding to ++ the GNU extensions implemented by this compiler. } ++ ++ symbol representation ++ ++c) andth symbol{57a} ANDTH ++ orel symbol{57b} OREL ++d) module symbol{49a} MODULE ++ access symbol{36b} ACCESS ++ def symbol{49c} DEF ++ fed symbol{49c} FED ++ public symbol{36d,41e} PUB ++ postlude symbol{49f} POSTLUDE ++ formal nest symbol{56b} NEST ++ egg symbol{A6a,c} EGG ++f) unsafe symbol{37a} UNSAFE ++h) bold comment begin symbol{92a} NOTE ++ bold comment end symbol{92a} ETON ++ brief comment begin symbol{92a} { ++ brief comment end symbol{92a} } ++ ++10.1.1 Syntax ++ ++{ Extensions: ++ [MR] user, user task } ++ ++A) EXTERNAL :: user. ++ ++f) NEST1 user task{d} : ++ NEST2 particular prelude with DECS{c}, ++ NEST2 user prelude with MODSETY{c}, ++ NEST2 particular program{g} PACK, go on{94f} token, ++ NEST2 particualr poslude{i}, ++ where (NEST2) is (NEST1 new DECS MODSETY STOP). ++ ++10.6 Packets ++ ++10.6.1 Syntax ++ ++a) MOID NEST new MODSETY ALGOL68 stuffing packet{A7a} : ++ egg{94d} token, hole indication{56d}, is defined as{94d} token, ++ MOID NEST new MODSETY actual hole{56c}. ++ ++{ b) Note that the rules for "MOID NEST new MODSETY LANGUAGE stuffing ++ packets" for other languages are not explicitly included in the ++ syntax. These rules conceptually transform all such ++ LANGUAGE-stuffing-packets into ALGOL68-stuffing-packets with the ++ same meaning. } ++ ++c) NEST new MODSETY1 MODS definition module packet of MODS{A7a} : ++ egg{94d} token, hole indication{56d}, is defined as{94d} token, ++ NEST new MODSETY1 MODS module declaration of MODS{49a}, ++ where MODS absent from NEST{e}. ++d) new LAYER1 new DECS MODSETY1 MODS STOP ++ prelude packet of MODS{A7a} : ++ new LAYER1 new DECS MODSETY1 MODS STOP ++ module declaration of MODS{4a}, ++ where MODS absent from new LAYER1{e}. ++e) WHETHER MODSETY MOD absent from NEST{c,d} : ++ WHETEHR MODSETY absent from NEST{e,f} ++ and MOD independent PROPSETY{71a,b,c}, ++ where PROPSETY collected properties from NEST{g,h}. ++f) WHETHER EMPTY absent from NEST{e} : ++ WHETHER true. ++g) WHETHER PROPSETY1 PROPSETY2 collected properties from ++ NEST new PROPSETY2{e,g} : ++ WHETHER PROPSETY1 collected properties from NEST {g,h}. ++h) WHETHER EMPTY collected properties from new EMPTY{e,g} : ++ WHETHER true. ++ ++i) *NEST new PROPSETY packet : ++ MOID NEST new PROPSETY LANGUAGE stuffing packet{a,b} ; ++ NEST new PROPSETY definition module packet of MODS{c} ; ++ NEST new PROPSETY particular program{A1g} ; ++ NEST new PROPSETY prelude packet of MODS{d}. ++j) *letter symbol : LETTER symbol{94a}. ++k) *digit symbol : DIGIT symbol{94b}. ++ ++{ Examples: ++ ++ a) EGG "abc" = ACCESS A,B (x := 1; y := 2; print (x+y)) ++ c) EGG "abc" = MODULE A = DEF PUB REAL x FED ++ d) MODULE B = DEF PUB REAL y FED ++ ++ The thre examples above would form a compatible collection of ++ packets when taken in conjunction with the particular-program BEGIN ++ NEST "abc" END } ++ ++{ In rule a above, 'MODSETY' envelops the 'MOD's defined by al the ++ definition-module-packets that are being stuffed along with the ++ stuffing-packet. ++ ++ In rules c and d, 'MODSETY1' need only envelop the 'MOD's for those ++ modules actually accessed from within that packet. ++ ++ The semantics related to packets are only defined if, for a ++ collection of packets being stuffed together, all the 'MOD's ++ enveloped by the various 'MODSETY1's are enveloped by 'MODSETY'. } ++ ++{ A stuffing packet contains the definition of an actual-hole. For ++ Algol 68 this consists on an enclosed-clause. For other values of ++ the metanotion 'LANGUAGE' it is different, and it is expected to be ++ translated somehow to an equivalent Algol 68 definition, ++ conceptually naturally. ++ ++ A definition module packet contains the definition of an actual-hole ++ which consists in one or more joined module declarations, with the ++ restriction that none of the declared modules shall exist in the ++ static environment at the formal-hole. ++ ++ A prelude packet contains one or more joined module declarations. } ++ ++10.7 Compilation systems ++ ++{ An implementtion of Algol 68 in which packets of a collection are ++ compiled into a collection of object-modules should conform to the ++ provisions of this section. } ++ ++10.7.1 Syntax ++ ++{ Note that we use the notion "compilation unit" rather than the ++ original "compilation input" used in the IFIP modules definition. } ++ ++A) *LAYERS :: LAYER ; LAYERS LAYER. ++ ++a) compilation unit : ++ MOID NEST new MODSETY LANGUAGE stuffing packet{A6a,b}, ++ MOID NEST hole interface{d}, ++ joined module interface with MODSETY{b,c} ; ++ NEST new MODSETY1 MODS definition module packet of MODS{A6c}, ++ MOID NEST hole interface{d}, ++ joined module interface with MODSETY1{b,c}, ++ module interface with MODS{d} option ; ++ new LAYER1 new DECS MODSETY STOP particular program{A1g}, ++ { void new LAYER1 new DECS STOP hole interface,} ++ unless (DECS) contains (MODULE), ++ joined module interface with MODSETY{b,c} ; ++ new LAYER1 new DECS MODSETY1 MODS STOP ++ prelude packet of MODS{A6d}, ++ { void new LAYER1 new DECS STOP hole interface,} ++ unless (DECS) contains (module), ++ joined module interface with MODSETY1{b,c}, ++ module interface with MODS{d} option. ++b) joined module interface with MODS MODSETY{a,b} : ++ module interface with MODS{d}, ++ joined module interface with MODSETY{b,c}. ++c) joined module inteface with EMPTY{a,b} : EMPTY. ++ ++{ A compilation-unit is either a stuffing packet, a definition module ++ packet, a particular program, or a prelude packet. The packets ++ shall be accompanied by the required hole and module interface ++ information. } ++ ++{ d) Hyper-rules for "MOID NEST hole interface", "module interface ++ with MODS" and "MOID NEST object module". The terminal ++ productions will most likely be in some cryptic notation ++ understood only by the compiler, i.e. the interface data. } ++ ++{ The inclusion of the hypernotions "void new LAYER1 new DECS STOP ++ hole interface" within pragmatic remarks in rule a is intended to ++ signify that this information (which describes the standard ++ environment) must clearly be available to the compiler, but that it ++ may well not be provided in the form of an explicit ++ hole-interface. } +--- /dev/null ++++ b/src/gcc/algol68/lang-specs.h +@@ -0,0 +1,24 @@ ++/* lang-specs.h -- gcc driver specs for Algol 68 frontend. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under ++ the terms of the GNU General Public License as published by the Free ++ Software Foundation; either version 3, or (at your option) any later ++ version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or ++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++ for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++/* This is the contribution to the `default_compilers' array in gcc.cc for the ++ Algol 68 language. */ ++ ++{".a68", "@algol68", 0, 1, 0}, ++ {"@algol68", ++ "a681 %i %(cc1_options) %{I*} %{L*} %D %{!fsyntax-only:%(invoke_as)}", 0, 1, ++ 0}, +--- /dev/null ++++ b/src/gcc/algol68/lang.opt +@@ -0,0 +1,122 @@ ++; Options for the Algol 68 front end. ++; Copyright (C) 2025 Free Software Foundation, Inc. ++; ++; GCC is free software; you can redistribute it and/or modify it under ++; the terms of the GNU General Public License as published by the Free ++; Software Foundation; either version 3, or (at your option) any later ++; version. ++; ++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++; WARRANTY; without even the implied warranty of MERCHANTABILITY or ++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++; for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GCC; see the file COPYING3. If not see ++; . ++ ++; See the GCC internals manual for a description of this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++; Describes command-line options used by this frontend ++ ++Language ++Algol68 ++ ++I ++Algol68 Joined Separate ++; Documented in c-family/c.opt ++ ++Wextensions ++Algol68 Warning Var(warn_algol68_extensions) LangEnabledBy(Algol68, Wextra) ++Warn for usage of non-portable extensions of Algol 68. ++ ++Wvoiding ++Algol68 Warning Var(warn_algol68_voiding) LangEnabledBy(Algol68, Wextra) ++Warn when voiding occurs. ++ ++Wextra ++Algol68 Warning ++; Documented in common.opt ++ ++Wscope ++Algol68 Warning Var(warn_algol68_scope) ++Warn for potential name scope violations. ++ ++Enum ++Name(warn_hidden_declarations_level) Type(int) UnknownError(argument %qs to %<-Whidden-declaration%> not recognized) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(none) Value(0) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(prelude) Value(1) ++ ++EnumValue ++Enum(warn_hidden_declarations_level) String(all) Value(2) ++ ++Whidden-declarations ++Algol68 Alias(Whidden-declarations=,prelude,none) ++Warn about hidden declarations in inner scopes. ++ ++Whidden-declarations= ++Algol68 Warning Var(warn_algol68_hidden_declarations) Enum(warn_hidden_declarations_level) Joined RejectNegative LangEnabledBy(Algol68,Wall) ++-Whidden-declarations=[none|prelude|all] Warn about declarations hidden in inner scopes. ++ ++fbrackets ++Algol68 Var(flag_brackets) ++-fbrackets Consider [ .. ] and { .. } as being equivalent to ( .. ). ++ ++fassert ++Algol68 Var(flag_assert) ++Generate code for assert contracts. ++ ++fcheck= ++Algol68 RejectNegative JoinedOrMissing ++-fcheck=[...] Specify which runtime checks are to be performed. ++ ++fa68-dump-modes ++Algol68 Var(flag_a68_dump_modes) ++Dump Algol 68 modes after parsing. ++ ++fa68-dump-ast ++Algol68 Var(flag_a68_dump_ast) ++Dump Algol 68 parse tree after parsing. ++ ++fa68-dump-module-interfaces ++Algol68 Var(flag_a68_dump_moif) ++Dump the interfaces of module definitions in the compiled packet. ++ ++static-libga68 ++Driver ++Link the GNU Algol run-time library statically in the compilation. ++ ++shared-libga68 ++Driver ++Link the GNU Algol 68 run-time library dynamically in the compilation. ++ ++std=algol68 ++Algol68 ++Compile strict Algol 68 as defined by the Revised Report ++ ++std=gnu68 ++Algol68 ++Accept GNU extensions to Algol 68 ++ ++; Stropping regimes. ++ ++fstropping= ++Algol68 Joined RejectNegative Enum(stropping_regime) Var(flag_stropping_regime) ++-fstropping=[upper|supper] Stropping regime to expect in Algol 68 programs. ++ ++Enum ++Name(stropping_regime) Type(int) UnknownError(unknown stropping_regime setting %qs) ++ ++EnumValue ++Enum(stropping_regime) String(upper) Value(0) ++ ++EnumValue ++Enum(stropping_regime) String(supper) Value(1) ++ ++; This comment is to ensure we retain the blank line above. +--- /dev/null ++++ b/src/gcc/algol68/lang.opt.urls +@@ -0,0 +1,41 @@ ++; Autogenerated by regenerate-opt-urls.py from gcc/algol68/lang.opt and generated HTML ++ ++I ++UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) LangUrlSuffix_Algol68(ga68/Directory-options.html#index-I) ++ ++Wextensions ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wextensions) ++ ++Wvoiding ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-voiding) ++ ++Wextra ++UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wextra) ++ ++Wscope ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-scope) ++ ++Whidden-declarations ++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Whidden-declarations) ++ ++fbrackets ++LangUrlSuffix_Algol68(ga68/Dialect-options.html#index-fbrackets) ++ ++fassert ++LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fassert) ++ ++fcheck= ++LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-fcheck) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fcheck) ++ ++fa68-dump-modes ++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-modes) ++ ++fa68-dump-ast ++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-ast) ++ ++static-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) ++ ++shared-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-shared-libga68) ++ +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -3914,6 +3914,9 @@ Driver Joined + static + Driver + ++static-libga68 ++Driver ++ + static-libgcc + Driver + +--- a/src/gcc/common.opt.urls ++++ b/src/gcc/common.opt.urls +@@ -1895,6 +1895,9 @@ UrlSuffix(gcc/Overall-Options.html#index-specs) + ; duplicate: 'gcc/Darwin-Options.html#index-static-1' + ; duplicate: 'gcc/Link-Options.html#index-static' + ++static-libga68 ++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) ++ + static-libgcc + UrlSuffix(gcc/Link-Options.html#index-static-libgcc) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -93,6 +93,9 @@ + # tm_rust_file list of headers with definitions of target hook + # macros for the Rust compiler. + # ++# tm_algol68_file list of headers with definitions of target hook ++# macros for the Algol68 compiler. ++# + # out_file The name of the machine description C support + # file, if different from "$cpu_type/$cpu_type.c". + # +@@ -155,6 +158,9 @@ + # rust_target_objs List of extra target-dependent objects that be + # linked into the Rust compiler only. + # ++# algol68_target_objs List of extra target-dependent objects that be ++# linked into the Algol68 compiler only. ++# + # target_gtfiles List of extra source files with type information. + # + # xm_defines List of macros to define when compiling for the +@@ -210,6 +216,9 @@ + # + # target_has_targetrustm Set to yes or no depending on whether the target + # has its own definition of targetrustm. ++# target_has_targetalgol68m ++# Set to yes or no depending on whether the target ++# has its own definition of targetalgol68m. + + out_file= + common_out_file= +@@ -228,10 +237,12 @@ cxx_target_objs= + d_target_objs= + fortran_target_objs= + rust_target_objs= ++algol68_target_objs= + target_has_targetcm=no + target_has_targetm_common=yes + target_has_targetdm=no + target_has_targetrustm=no ++target_has_targetalgol68m=no + tm_defines= + xm_defines= + # Set this to force installation and use of collect2. +@@ -621,6 +632,16 @@ then + rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o" + fi + ++tm_algol68_file= ++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.h ++then ++ tm_algol68_file="${cpu_type}/${cpu_type}-algol68.h" ++fi ++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.cc ++then ++ algol68_target_objs="${algol68_target_objs} ${cpu_type}-algol68.o" ++fi ++ + extra_modes= + if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def + then +@@ -790,9 +811,11 @@ case ${target} in + d_target_objs="${d_target_objs} darwin-d.o" + fortran_target_objs="darwin-f.o" + rust_target_objs="${rust_target_objs} darwin-rust.o" ++ algol68_target_objs="${algol68_target_objs} darwin-algol68.o" + target_has_targetcm=yes + target_has_targetdm=yes + target_has_targetrustm=yes ++ target_has_targetalgol68m=no + extra_objs="${extra_objs} darwin.o" + extra_gcc_objs="darwin-driver.o" + default_use_cxa_atexit=yes +@@ -825,6 +848,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} dragonfly-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} dragonfly-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-freebsd*) + # This is the generic ELF configuration of FreeBSD. Later +@@ -878,12 +903,16 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} freebsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} freebsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-fuchsia*) + native_system_header_dir=/include + tmake_file="t-fuchsia" + rust_target_objs="${rust_target_objs} fuchsia-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} fuchsia-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi) + extra_options="$extra_options gnu-user.opt" +@@ -992,6 +1021,8 @@ case ${target} in + esac + rust_target_objs="${rust_target_objs} netbsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} netbsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-openbsd*) + tmake_file="t-openbsd" +@@ -1009,6 +1040,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} openbsd-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} openbsd-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-phoenix*) + gas=yes +@@ -1071,6 +1104,8 @@ case ${target} in + target_has_targetdm=yes + rust_target_objs="${rust_target_objs} sol2-rust.o" + target_has_targetrustm=yes ++ algol68_target_objs="${algol68_target_objs} sol2-algol68.o" ++ target_has_targetalgol68m=yes + ;; + *-*-*vms*) + extra_options="${extra_options} vms/vms.opt" +@@ -1106,6 +1141,9 @@ case ${target} in + rust_target_objs="${rust_target_objs} vxworks-rust.o" + target_has_targetrustm=yes + ++ algol68_target_objs="${algol68_target_objs} vxworks-algol68.o" ++ target_has_targetalgol68m=yes ++ + extra_gcc_objs="vxworks-driver.o" + + # This private header exposes a consistent interface for checks on +@@ -2232,6 +2270,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) + target_has_targetdm="yes" + rust_target_objs="${rust_target_objs} winnt-rust.o" + target_has_targetrustm="yes" ++ algol68_target_objs="${algol68_target_objs} winnt-algol68.o" ++ target_has_targetalgol68m=yes + case ${target} in + x86_64-*-* | *-w64-*) + need_64bit_isa=yes +@@ -3702,6 +3742,10 @@ if [ "$target_has_targetrustm" = "no" ]; then + rust_target_objs="$rust_target_objs default-rust.o" + fi + ++if [ "$target_has_targetalgol68" = "no" ]; then ++ algol68_target_objs="$algol68_target_objs default-algol68.o" ++fi ++ + # Support for --with-cpu and related options (and a few unrelated options, + # too). + case ${with_cpu} in +--- a/src/gcc/config/darwin.h ++++ b/src/gcc/config/darwin.h +@@ -507,6 +507,7 @@ extern GTY(()) int darwin_ms_struct; + %{static|static-libgcc|static-libgcobol:%:replace-outfile(-lgcobol libgcobol.a%s)}\ + %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ + %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ ++ %{static|static-libga68:%:replace-outfile(-lga68 libga68.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2pim libm2pim.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2iso libm2iso.a%s)}\ + %{static|static-libgm2:%:replace-outfile(-lm2min libm2min.a%s)}\ +@@ -1285,4 +1286,8 @@ extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **); + #undef BTF_INFO_SECTION_NAME + #define BTF_INFO_SECTION_NAME "__CTF_BTF,__btf,regular,debug" + ++/* Algol68 */ ++#undef A68_EXPORT_SECTION_NAME ++#define A68_EXPORT_SECTION_NAME "__a68_exports" ++ + #endif /* CONFIG_DARWIN_H */ +--- a/src/gcc/config/rs6000/rs6000-logue.cc ++++ b/src/gcc/config/rs6000/rs6000-logue.cc +@@ -5332,18 +5332,18 @@ rs6000_output_function_epilogue (FILE *file) + /* Tbtab format type. Use format type 0. */ + fputs ("\t.byte 0,", file); + +- /* Language type. Unfortunately, there does not seem to be any +- official way to discover the language being compiled, so we +- use language_string. +- C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. C++ is 9. +- Java is 13. Objective-C is 14. Objective-C++ isn't assigned +- a number, so for now use 9. LTO, Go, D, and JIT aren't assigned +- numbers either, so for now use 0. */ ++ /* Language type. Unfortunately, there does not seem to be any official ++ way to discover the language being compiled, so we use ++ language_string. C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. ++ C++ is 9. Java is 13. Objective-C is 14. Objective-C++ isn't ++ assigned a number, so for now use 9. LTO, Go, D, Algol 68 and JIT ++ aren't assigned numbers either, so for now use 0. */ + if (lang_GNU_C () + || ! strcmp (language_string, "GNU GIMPLE") + || ! strcmp (language_string, "GNU Go") + || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "GNU Rust") ++ || ! strcmp (language_string, "GNU Algol 68") + || ! strcmp (language_string, "libgccjit")) + i = 0; + else if (! strcmp (language_string, "GNU F77") +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -649,6 +649,7 @@ ISLLIBS + GMPINC + GMPLIBS + target_cpu_default ++algol68_target_objs + rust_target_objs + d_target_objs + fortran_target_objs +@@ -658,6 +659,8 @@ use_gcc_stdint + xm_defines + xm_include_list + xm_file_list ++tm_algol68_include_list ++tm_algol68_file_list + tm_rust_include_list + tm_rust_file_list + tm_d_include_list +@@ -15149,6 +15152,17 @@ for f in $tm_rust_file; do + esac + done + ++tm_algol68_file_list= ++tm_algol68_include_list= ++for f in $tm_algol68_file; do ++ case $f in ++ * ) ++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" ++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +@@ -21520,7 +21534,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 21523 "configure" ++#line 21537 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -21626,7 +21640,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 21629 "configure" ++#line 21643 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -34096,6 +34110,9 @@ fi + + + ++ ++ ++ + + + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2472,6 +2472,17 @@ for f in $tm_rust_file; do + esac + done + ++tm_algol68_file_list= ++tm_algol68_include_list= ++for f in $tm_algol68_file; do ++ case $f in ++ * ) ++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" ++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +@@ -7562,6 +7573,8 @@ AC_SUBST(tm_d_file_list) + AC_SUBST(tm_d_include_list) + AC_SUBST(tm_rust_file_list) + AC_SUBST(tm_rust_include_list) ++AC_SUBST(tm_algol68_file_list) ++AC_SUBST(tm_algol68_include_list) + AC_SUBST(xm_file_list) + AC_SUBST(xm_include_list) + AC_SUBST(xm_defines) +@@ -7571,6 +7584,7 @@ AC_SUBST(cxx_target_objs) + AC_SUBST(fortran_target_objs) + AC_SUBST(d_target_objs) + AC_SUBST(rust_target_objs) ++AC_SUBST(algol68_target_objs) + AC_SUBST(target_cpu_default) + + AC_SUBST_FILE(language_hooks) +--- a/src/gcc/dwarf2out.cc ++++ b/src/gcc/dwarf2out.cc +@@ -25480,6 +25480,14 @@ gen_compile_unit_die (const char *filename) + else if (strcmp (language_string, "GNU Rust") == 0) + language = DW_LANG_Rust; + } ++ else if (!dwarf_strict) ++ { ++ if (strcmp (language_string, "GNU Algol 68") == 0) ++ { ++ language = DW_LANG_Algol68; ++ lname = DW_LNAME_Algol68; ++ } ++ } + } + /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ + else if (startswith (language_string, "GNU Fortran")) +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -4666,11 +4666,13 @@ driver_handle_option (struct gcc_options *opts, + case OPT_static_libgfortran: + case OPT_static_libquadmath: + case OPT_static_libphobos: ++ case OPT_static_libga68: + case OPT_static_libgm2: + case OPT_static_libstdc__: + /* These are always valid; gcc.cc itself understands the first two + gfortranspec.cc understands -static-libgfortran, + libgfortran.spec handles -static-libquadmath, ++ a68spec.cc understands -static-libga68, + d-spec.cc understands -static-libphobos, + gm2spec.cc understands -static-libgm2, + and g++spec.cc understands -static-libstdc++. */ +--- a/src/gcc/genhooks.cc ++++ b/src/gcc/genhooks.cc +@@ -36,6 +36,7 @@ static struct hook_desc hook_array[] = { + #include "common/common-target.def" + #include "d/d-target.def" + #include "rust/rust-target.def" ++#include "algol68/algol68-target.def" + #undef DEFHOOK + }; + +--- a/src/gcc/regenerate-opt-urls.py ++++ b/src/gcc/regenerate-opt-urls.py +@@ -361,7 +361,8 @@ def write_url_file(index, optfile, dstfile): + PER_LANGUAGE_OPTION_INDEXES = [ + ('gcc/Option-Index.html', None), + ('gdc/Option-Index.html', 'D'), +- ('gfortran/Option-Index.html', 'Fortran') ++ ('gfortran/Option-Index.html', 'Fortran'), ++ ('ga68/Option-Index.html', 'Algol68'), + ] + + def main(args): +--- /dev/null ++++ b/src/gcc/testsuite/algol68/README.mcts +@@ -0,0 +1,37 @@ ++The tests in compile/mcts and execute/mcts have been adapted from: ++ ++ The Revised MC Algol 68 Test Set, version 3 ++ ++edited by Dick Grüne in 1973 and originally published by the ++Mathematisch Centrum in Amsterdam, a non-profit institution founded in ++1946 aiming at the promotion of pure mathematics and its applications. ++ ++The WG 2.1 blessed the test set with this authorized statement: ++ ++ "This ALGOL68 Test Set has been reviewed by the IFIP Working Group ++ 2.1, which considers it as a valuable means of testing ++ implementations of ALGOL68." ++ ++The test set explores all odd corners of Algol 68. ++ ++The tests have been modified in order to accommodate the GNU Algol 68 ++implementation. Some general adaptations are: ++ ++- Many tests in the original MC test set print out expected results so ++ they can be verified visually. We check for them programmatically ++ instead making use of the ASSERT construct. ++ ++Additional particular modifications are explained and justified in the ++source files of the corresponding tests. ++ ++The tests fall in the following categories: ++ ++Null programs (nullNN.a68) ++ Various forms of empty enclosed-clauses. ++ ++Simple tests (simpNN.a68) ++ Contains almost all language features of the language used in ++ simple ways. ++ ++Declarers tests (declNN.a68) ++ Declarers and their well-formedness. +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye-supper.a68 +@@ -0,0 +1,4 @@ ++proc goodbye = (string name) string: ++begin string msg := "Goodbye " + name; ++ msg ++end; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# PR UPPER PR # ++ ++PROC goodbye = (STRING name) STRING: ++BEGIN ++ STRING msg := "Goodbye " + name; ++ msg ++END; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello-supper.a68 +@@ -0,0 +1,5 @@ ++proc hello = (string name) string: ++begin string msg := "Hello " + name; ++ msg ++end; ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# PR UPPER PR # ++ ++PROC hello = (STRING name) STRING: ++BEGIN ++ STRING msg := "Hello " + name; ++ msg ++END; +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a := (1,2,3); # { dg-error "actual bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LOC[]INT a := (1,2,3); # { dg-error "actual bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN LOC[]INT a := (1,2,3), # { dg-error "actual bounds expected" } # ++ b := (4); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/balancing-1.a68 +@@ -0,0 +1,7 @@ ++mode Word = union (void,real), ++ Rules = union (void,string); ++ ++op LEN = (Word w) int: skip, ++LEN = (Rules r) int: skip; ++ ++skip +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/bold-nestable-comment-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options {-fstropping=upper} } # ++# pr UPPER pr # ++BEGIN NOTE This is a ++ NOTE nestable ETON comment in bold style. ++ ETON ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/bold-taggle-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-std=gnu68 -fstropping=upper} } # ++ ++BEGIN MODE FOO_BAR = INT; ++ FOO_BAR foo_bar = 10; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-1.a68 +@@ -0,0 +1,4 @@ ++begin { This is a ++ { nestable } comment in brief style. } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN NOTE This is a ++ { nestable } comment in brief style. ++ ETON ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/char-break-1.a68 +@@ -0,0 +1,11 @@ ++{ Make sure char denotations with string breaks work. } ++begin prio % = 9; ++ op % = (char a) char: a; ++ assert (ABS %"'n" = 10); ++ assert (ABS %"'f" = 12); ++ assert (ABS %"'t" = 9); ++ assert (ABS %"'r" = 13); ++ assert (%"'( u0061)" = "a"); ++ assert (%"'(U00000061 )" = "a"); ++ assert (%"'(u1234)" = replacement_char) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/compile.exp +@@ -0,0 +1,34 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/conditional-clause-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT i := 26; ++ IF INT ii = i * 2; ii > 50 THEN ++ ii ++ ELIF i = 10 THEN ++ 100 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-bold-taggle-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-std=algol68 -fstropping=upper} } # ++ ++BEGIN MODE FOO_BAR = INT; # { dg-error "unworthy" } # ++ FOO_BAR foo_bar = 10; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a; ++ a := "foo" # { dg-error "cannot be coerced" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is Example 4.2.6c in McGETTRICK[78]. # ++BEGIN []STRUCT([]INT a) r = (1,2,3); # { dg-error "cannot be coerced" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-coercion-flex-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Coercing from REF FLEX[]REAL to REF[]REAL is not allowed, since ++ flexibility shall match # ++BEGIN FLEX[1:0] REAL rowvar := SKIP; ++ REF [] REAL xlm = rowvar; # { dg-error "FLEX.*cannot be coerced" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-compile-unknown-tag-1.a68 +@@ -0,0 +1,8 @@ ++module Foo = def pub int idpublic = 10; ++ int idprivate = 20; ++ skip ++ fed, ++ Bar = def pub int idpublic = 30; ++ int idprivate = 40; ++ xxx { dg-error "" } ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-conformance-clause-1.a68 +@@ -0,0 +1,8 @@ ++{ This is an invalid program. } ++begin case ++ if true then "foo" else 10 fi { dg-error "not a united mode" } ++ in (string): skip, ++ (int): skip ++ esac ++end ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-contraction-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Contracting mixed collateral variable and constant declarations is ++ not allowed. ++# ++(INT foo = 100, bar := 200) # { dg-error "mixed" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-contraction-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Contracting mixed collateral variable and constant declarations is ++ not allowed. # ++BEGIN PROC x = VOID: SKIP, ++ y := VOID: SKIP; # { dg-error "mixed" } # ++ x ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-def-1.a68 +@@ -0,0 +1,3 @@ ++module Foo = ++def skip; { dg-error "fed" } ++ skip +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-incestuous-union-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Union modes shall not contain modes which are firmly related, i.e. ++ it shall not be possible to coerce from one mode to another in a ++ firm context. # ++BEGIN UNION(INT, REF INT) incestuous; # { dg-error "has firmly related components" } # ++ incestuous ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-label-after-decl-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN GOTO end; ++ ASSERT(FALSE); ++end: 0; ++ INT i = 10; # { dg-error "declaration cannot follow" } # ++ i ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-1.a68 +@@ -0,0 +1,3 @@ ++begin struct (int i, real r) j; ++ j := "joo" { dg-error "char.*struct \\(int i, real r\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-10.a68 +@@ -0,0 +1,3 @@ ++begin long long int j; ++ j := "joo" { dg-error "char.*long long int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-11.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG LONG INT j; ++ j := "joo" { dg-error "CHAR.*LONG LONG INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-12.a68 +@@ -0,0 +1,3 @@ ++begin short int j; ++ j := "joo" { dg-error "char.*short int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-13.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN SHORT INT j; ++ j := "joo" { dg-error "CHAR.*SHORT INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-14.a68 +@@ -0,0 +1,3 @@ ++begin short short int j; ++ j := "joo" { dg-error "char.*short short int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-15.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN SHORT SHORT INT j; ++ j := "joo" { dg-error "CHAR.*SHORT SHORT INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-16.a68 +@@ -0,0 +1,3 @@ ++begin flex[1:0]int j; ++ j := "joo" { dg-error "char.*flex.*int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-17.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[1:0]INT j; ++ j := "joo" { dg-error "CHAR.*FLEX.*INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT (INT i, REAL r) j; ++ j := "joo" # { dg-error "CHAR.*STRUCT \\(INT i, REAL r\\)" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-3.a68 +@@ -0,0 +1,3 @@ ++begin union (int,real) j; ++ j := "joo" { dg-error "char.*union \\( *real *, *int *\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (INT,REAL) j; ++ j := "joo" { dg-error "CHAR.*UNION \\( *REAL *, *INT *\\)" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-5.a68 +@@ -0,0 +1,3 @@ ++begin proc union (int,real) j; ++ j := "joo" { dg-error "char.*proc union \\( *real *, *int *\\)" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-6.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC UNION (INT,REAL) j; ++ j := "joo" { dg-error "CHAR.*PROC UNION \\( *REAL *, *INT *\\)" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-8.a68 +@@ -0,0 +1,3 @@ ++begin long int j; ++ j := "joo" { dg-error "char.*long int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-9.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG INT j; ++ j := "joo" { dg-error "CHAR.*LONG INT" } ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-coercions-1.a68 +@@ -0,0 +1,15 @@ ++{ This test makes sure mode checks are carried ++ over the inside of module texts. } ++module Foo = def ++ skip ++ postlude ++ int i = "foo"; { dg-error "coerced" } ++ skip ++ fed, ++ Bar = def ++ int i = 3.14; { dg-error "coerced" } ++ skip ++ postlude ++ skip ++ fed, ++ Baz = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-not-found-1.a68 +@@ -0,0 +1,4 @@ ++access ++ Foo { dg-error "cannot find module" } ++begin skip end ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-module-ranges-1.a68 +@@ -0,0 +1,13 @@ ++{ Definitions in the def-part of a module text are visible in the ++ postlude-part, but not the other way around. } ++ ++module Foo = def int i; ++ x := 20 { dg-error "" } ++ postlude ++ i := 10 { this is ok } ++ fed, ++ Bar = def int x; ++ skip ++ postlude ++ x := 20 { this is ok } ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-nestable-comments-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN NOTE This is a ++ NOTE nestable ETON comment in brief style. ++ ETON ++ { Another { comment }. } ++ NOTE invalid { nesting ETON of comments } # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-nested-comment-1.a68 +@@ -0,0 +1,6 @@ ++{ The string in nested comment is in one logical line. } ++begin ++ { puts ("{'n { dg-error {} } ++"); { this prints foo }} ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-no-bounds-allowed-1.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN [1:10]INT i, ++ [1:10]STRUCT(REF[]INT i, BOOL j) k, ++ [1:10]STRUCT([1:10]INT i, BOOL j) l, ++ [1:10]REF[]INT p; ++ # formal, so no bounds allowed: # ++ [1:10]PROC[1:10]INT q, # { dg-error "formal bounds expected" } # ++ STRUCT(REF[1:10]INT i, BOOLj) m, # { dg-error "virtual bounds expected" } # ++ [1:10]REF[1:10]INT mn, # { dg-error "virtual bounds expected" } # ++ PROC([1:10]INT)VOID pp, # { dg-error "formal bounds expected" } # ++ UNION([1:10] INT, BOOL) nm, # { dg-error "formal bounds expected" } # ++ [1:10]INT u = (1); # { dg-error "formal bounds expected" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-error "unrecognized pragmat" } pr invalid Foo in "module" pr ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-1.a68 +@@ -0,0 +1,8 @@ ++pr access Foo in pr { dg-error "expected string" } ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-2.a68 +@@ -0,0 +1,9 @@ ++pr access Foo in "lala" pr ++pr access Foo in "lele" pr { dg-error "multiple" } ++ ++begin prio // = 8; ++ op (int,int)int // = lala; ++ proc lala = (int a, b) int: a + b; ++ proc void jeje = skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-loc-1.a68 +@@ -0,0 +1,10 @@ ++{ Publicized varifables cannot go on the stack, for obvious reasons. } ++ ++module Foo = ++def ++ pub string xx; ++ pub heap string yy; ++ pub loc string zz; { dg-error "" } ++ loc string vv; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-1.a68 +@@ -0,0 +1,13 @@ ++module Foo = ++def pub mode JORL = int; ++ pub proc plus = (int a, b) int: a + b; ++ pub proc vplus := (int a, b) int: a + b; ++ pub loc proc lvplus := (int a, b) int: a + b; ++ pub heap proc hvplus := (int a, b) int: a + b; ++ pub prio // = 8; ++ pub op // = (int a, b) int: a % b; ++ proc invalid = void: ++ (pub mode JI = void; { dg-error "" } ++ skip); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-2.a68 +@@ -0,0 +1,9 @@ ++begin pub mode Jorl = void; { dg-error "" } ++ pub proc lala = void: skip; { dg-error "" } ++ pub proc lele := void: skip; { dg-error "" } ++ begin pub prio + = 4; { dg-error "" } ++ skip ++ end; ++ pub op // = (int a, b) int: a % b; { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN puts ("hello '_ world") # { dg-error "invalid string break sequence" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-2.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(U0000) world") # { dg-error "eight" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-3.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u00) world") # { dg-error "four" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-4.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u) world") # { dg-error "four" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-5.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u0010u0020) world") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-6.a68 +@@ -0,0 +1,2 @@ ++begin puts ("hello '(u0010'/) world") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-7.a68 +@@ -0,0 +1,2 @@ ++begin puts ("'") # { dg-error "" } # ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-string-break-8.a68 +@@ -0,0 +1,4 @@ ++begin string s = ++ "'(Uf09f94a5)"; { dg-error "Unicode" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-5.a68 +@@ -0,0 +1,3 @@ ++begin int j; ++ j := "joo" { dg-error "char.*int" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-6.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j; ++ j := "joo" # { dg-error "CHAR.*INT" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-1.a68 +@@ -0,0 +1,2 @@ ++begin for i to 10 skip od { dg-error "do" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-2.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FOR i TO 10 SKIP OD # { dg-error "DO" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-3.a68 +@@ -0,0 +1,2 @@ ++begin if then 10 else 20 fi { dg-error "if" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF THEN 10 ELSE 20 FI # { dg-error "IF" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-fstropping=upper} } # ++ ++begin ~ end # { dg-error "" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int foo__bar = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int _bar = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-4.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo bar = 10; { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin int foo__ = 10; # { dg-error "unworthy" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-supper-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-fstropping=supper} } # ++ ++begin mode foo_Invalid = int; # { dg-error "Invalid" } # ++ foo_Invalid some_int = 10; # { dg-error "Invalid" } # ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-mode-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Underscores are unworthy characters if they are not trailing ++ either a taggle or, in UPPER stropping, a bold word. # ++BEGIN INT invalid_tag__; # { dg-error "unworthy character" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-tag-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Underscores are unworthy characters if they are not trailing a ++ taggle or, in UPPER stropping, a bold word.. # ++BEGIN MODE INVALID_BOLD_WORD__; # { dg-error "unworthy character" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-upper-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-fstropping=supper} } # ++ ++BEGIN ~ END # { dg-error "" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-1.a68 +@@ -0,0 +1,2 @@ ++begin { dg-error "" } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-2.a68 +@@ -0,0 +1,2 @@ ++( { dg-error "" } ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-3.a68 +@@ -0,0 +1,3 @@ ++begin struct(int i, real r) foo = (); { dg-error "" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a := 10; ++ LONG REAL l := a; # { dg-error "coerced" } # ++ l ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT a := 10; ++ LONG INT l := a; # { dg-error "coerced" } # ++ l ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-3.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT d := 0; ++ INT y := 10; ++ LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ y ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-4.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ INT d := 0; ++ LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ 10 ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG INT d := 0; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG LONG INT d := LONG 0; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-7.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG REAL d := 3.14; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-8.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ LONG LONG REAL d := LONG 3.14; # { dg-error "coerced" } # ++ d ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/error-widening-9.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN ++ INT d := 0; ++ LONG LONG REAL x; ++ 2 ++ + (d > 0 | x | # { dg-error "" } # ++ 10 ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/hidden-operators-1.a68 +@@ -0,0 +1,11 @@ ++{ dg-options {-Whidden-declarations} } ++ ++begin mode Trilean = union (void,bool); ++ ++ Trilean unknown = empty; ++ op NOT = (Trilean a) Trilean: { dg-warning "hides" } ++ skip; ++ op AND = (Trilean a,b) Trilean: { dg-warning "hides" } ++ skip; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/implicit-widening-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-Wextensions -fstropping=upper" } # ++ ++# This program shall compile without warning, because ++ widening from INT to REAL is legal in the strict language, ++ since they have the same size. # ++ ++BEGIN BOOL cond; ++ REAL x, y; ++ y + (cond | x | 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/include-supper.a68 +@@ -0,0 +1,16 @@ ++{ dg-options "-I$srcdir/algol68/compile/a68includes" } ++{ dg-additional-files "$srcdir/algol68/compile/a68includes/hello-supper.a68 $srcdir/algol68/compile/a68includes/goodbye-supper.a68" } ++ ++begin string name := "Algol68 with supper!"; ++ { Both files are in `./a68includes'. ++ The first one will be included because we uwed `-I. ++ The second one will be included because of the relative path. } ++ pr include "hello-supper.a68" pr ++ pr include "a68includes/goodbye-supper.a68" pr ++ ++ string bye := goodbye(name); ++ string hi := hello(name); ++ ++ puts(hi + "\n"); ++ puts(bye + "\n") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/include.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-I$srcdir/algol68/compile/a68includes -fstropping=upper" } # ++# { dg-additional-files "$srcdir/algol68/compile/a68includes/hello.a68 $srcdir/algol68/compile/a68includes/goodbye.a68" } # ++ ++# PR UPPER PR # ++ ++BEGIN STRING name := "Algol68!"; ++ # Both files are in `./a68includes'. ++ The first one will be included because we used `-I'. ++ The second one will be included because of the relative path. ++ # ++ PR include "hello.a68" PR ++ PR include "a68includes/goodbye.a68" PR ++ ++ STRING bye := goodbye(name); ++ STRING hi := hello(name); ++ ++ puts(hi + "\n"); ++ puts(bye + "\n") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/labeled-unit-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This tests that the mode of the value yielded by a labeled unit is ++ the mode of the unit. # ++BEGIN 10; ++jorl: 20 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-1.3b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN REAL r := 10.0, circum, area; ++ circum := 2 * pi * r; area := pi * r * r ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a-bis.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ # Illegal, cannot remember transient name. # ++ REF[]INT q2 = p[3,]; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ # Illegal. p cannot be deflexed since it is a REF FLEX. # ++ REF[,]INT q3 = p; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/compile.exp +@@ -0,0 +1,34 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/decl06.a68 +@@ -0,0 +1,258 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN # 1. Actual declaration. # ++ # 1.a Without bounds. # ++ ++ # primitive # ++ BEGIN INT x1, ++ INT x2, x3, ++ INT x4, x5, x6, ++ REAL x7, x8, x9, x10, x11, x12, ++ LONG INT x13, ++ LONG REAL x14, ++ BOOL x15, ++ CHAR x16; ++ SKIP ++ END; ++ ++ # ref + primitive # ++ BEGIN REF INT x1, ++ REF REF REF REAL x2, ++ REF REF REF REF LONG REAL x3, ++ REF REF REF REF REF BOOL x4, ++ REF REF REF REF REF REF CHAR x5, ++ REF REF PROC VOID x6; ++ SKIP ++ END; ++ ++ # proc # ++ BEGIN PROC VOID x1, ++ PROC PROC REAL x2, ++ PROC PROC PROC PROC LONG REAL x3, ++ PROC PROC PROC PROC PROC BOOL x4, ++ PROC PROC PROC PROC PROC PROC CHAR x5, ++ PROC PROC PROC VOID x6; ++ SKIP ++ END; ++ ++ # ref + proc # ++ BEGIN REF REF REF REF REF REF PROC VOID x1, ++ PROC REF REAL x2, ++ PROC REF PROC REF LONG REAL x3, ++ PROC REF PROC REF PROC BOOL x4, ++ REF PROC REF PROC REF PROC CHAR x5, ++ PROC REF PROC VOID x6; ++ SKIP ++ END; ++ ++ # proc with one parameter which is primitive or ref + primitive # ++ BEGIN PROC(INT)VOID x1, ++ PROC(REF REF REF LONG INT)VOID x2, ++ PROC(BOOL)VOID x3, ++ PROC(REF CHAR)VOID x4, ++ PROC(LONG REAL)VOID x5, ++ PROC(REF REF REF BOOL)VOID x6, ++ PROC(PROC VOID)VOID x7, ++ PROC(REF REF PROC VOID)VOID x8; ++ SKIP ++ END; ++ ++ # ref + proc with one parameter which is primitive or ref + primitive # ++ BEGIN REF PROC(INT)VOID x1, ++ REF REF PROC(LONG REAL)VOID x2, x3, ++ REF REF REF REF PROC(REF CHAR)VOID x4, ++ REF PROC(PROC VOID)VOID x5, ++ REF REF PROC(REF PROC VOID)VOID x6; ++ SKIP ++ END; ++ ++ # ref * proc with more than one parameter which are ref * primitive # ++ BEGIN PROC(INT,LONG INT)VOID x1, ++ PROC(REAL,REF LONG REAL,REF REF BOOL)VOID x2, ++ PROC(REF REF REF CHAR,INT,LONG INT,REAL,REAL,INT)VOID x3, ++ REF PROC(INT,INT,INT,REF CHAR)VOID x4, ++ REF REF REF PROC(PROC VOID,REF REF PROC VOID,INT)VOID x5; ++ SKIP ++ END; ++ ++ # ref + row of * ref * primitive # ++ BEGIN REF[]INT x1, ++ REF[,]REAL x2, ++ REF REF[,,,]LONG REAL x3, ++ REF REF REF[,,,,,]REF BOOL x4, ++ REF[]REF REF REF LONG INT x5, ++ REF REF[,,,,]REF REF CHAR x6, ++ REF[]PROC VOID x7, ++ REF[,]REF REF PROC VOID x8; ++ SKIP ++ END; ++ ++ # ref + row of * ref * proc # ++ BEGIN REF[] PROC VOID x1, ++ REF REF[,] PROC(REF INT)VOID x2, ++ REF REF REF[]PROC(INT, REF REF INT)VOID x3, ++ REF[]REF PROC(REF LONG REAL, REF REF REF CHAR, REF LONG LONG REAL)VOID x4, ++ REF REF[,,,]REF REF REF PROC(REF INT, LONG LONG LONG INT)VOID x5; ++ REF[]PROC(PROC VOID,REF PROC VOID)VOID x6; ++ SKIP ++ END; ++ ++ # ref * proc with row of parameters # ++ BEGIN PROC([]REAL)VOID x1, ++ REF PROC(INT, []LONG REAL)VOID x2, ++ REF REF PROC([,]INT, []REF REF BOOL)VOID x3, ++ REF REF REF REF PROC(REF[]INT, REF REF[]REF REF LONG REAL)VOID x4, ++ PROC(REF REF[,,,]REF REF REF REAL)VOID x5, ++ PROC([]REF REAL, [,,,]REF CHAR, REF[,]BOOL)VOID x6, ++ PROC([]REF PROC VOID, REF[,,]PROC VOID, REF REF[,]REF REF PROC VOID)VOID x7; ++ SKIP ++ END; ++ ++ # nested rows # ++ BEGIN REF[,,,]REF[,]INT x1, ++ REF[]REF[]PROC VOID x2, ++ REF[]REF REF[]REF BOOL x3, ++ REF[,,,]REF[,,,]REF REF REF PROC VOID x4, ++ REF REF[]REF[]INT x5, ++ REF[]REF[]REF[]REF[]REF[]LONG REAL x6; ++ SKIP ++ END; ++ ++ # nested procs # ++ BEGIN PROC(PROC(PROC (PROC VOID)VOID)VOID)VOID x1, ++ PROC(INT, ++ PROC(REF REF PROC VOID, ++ REAL, ++ REF PROC(REF LONG INT, PROC VOID)VOID, ++ INT) VOID)VOID x2, ++ PROC(INT, ++ PROC VOID, ++ PROC (INT, ++ PROC VOID, ++ REF REAL, ++ REF PROC VOID)VOID)VOID x3, ++ PROC(INT, ++ PROC (INT,INT) VOID, ++ PROC (INT) VOID, ++ REAL)VOID x4; ++ SKIP ++ END; ++ ++ # mixed rows and procs # ++ BEGIN REF[]PROC([,]INT,PROC([]PROC VOID) VOID, ++ [,] PROC(PROC VOID, INT) VOID, ++ REF[]PROC VOID)VOID x1; ++ SKIP ++ END; ++ ++ # 1.b. With bounds. # ++ BEGIN [1:1]INT x1, ++ [1:1,1:1]REF LONG REAL x2, ++ [1:1,1:1,1:1]REF REF PROC VOID x3, ++ [1:1]PROC VOID x4, ++ [1:1]PROC(INT)VOID x5, ++ [1:1]PROC(INT,REAL,REF PROC VOID)VOID x6, ++ [1:1,1:1,1:1,1:1]REF REF PROC(INT)VOID x7, ++ [1:1]REF[]INT x8, ++ [1:1]REF[,,,]REF PROC VOID x9, ++ [1:1]REF PROC([]INT)VOID x10, ++ [1:1]PROC([]REF PROC VOID, REF[,,]PROC VOID, ++ REF REF REF REF[,]REF REF REF PROC VOID)VOID x11, ++ [1:1]REF[]REF[,,]REF REF[]LONG REAL x12, ++ [1:1]PROC(REF[]PROC VOID, []PROC VOID, []REF INT)VOID x13; ++ SKIP ++ END; ++ ++ # 2. Variable and constant declarations. # ++ ++ BEGIN PROC VOID a; PROC(INT)VOID b; ++ PROC VOID c, d; REAL e; REAL f, g; ++ SKIP; SKIP; SKIP; SKIP ++ END; ++ ++ # 3. Declarations of routines. # ++ ++ BEGIN INT i; ++ PROC a = VOID: SKIP; ++ PROC(INT)VOID b = (INT c) VOID: SKIP; ++ PROC(INT,REAL)VOID c = (INT e, REAL f) VOID: SKIP; ++ BEGIN PROC c = VOID: a; # no error # SKIP END ++ END; ++ ++ # 4. Call without parameters. # ++ ++ BEGIN PROC VOID a = VOID: SKIP; ++ PROC VOID b := a; ++ REF PROC VOID c := b; ++ REF REF PROC VOID d = c; ++ ++ a; # without deref # ++ b; # with deref # ++ c; # with deref # ++ d; # with deref # ++ ++ SKIP ++ END; ++ ++ # 5. Call with parameters. # ++ BEGIN INT int; REAL real; ++ PROC(INT)VOID dcs1, ++ PROC(INT,REAL)VOID dcs2; ++ PROC(INT)VOID a = (INT a) VOID: SKIP; ++ PROC(INT)VOID b; ++ REF PROC(INT)VOID c = b; ++ REF PROC(INT)VOID d; ++ PROC(INT,REAL)VOID e = (INT a, REAL b) VOID: SKIP; ++ ++ a (int); ++ dcs1 (int); ++ dcs2 (int, real); ++ e (int, real); ++ b (int); ++ c (int); ++ d (int); ++ BEGIN REF REF REF REF REF REF REF REF REF REF ++ REF REF REF REF REF REF REF REF REF REF ++ PROC(INT)VOID a; a (int); SKIP ++ END; ++ BEGIN # No error # ++ PROC(REF INT, REF REAL)VOID a; ++ a (int, real) ++ END; ++ ++ BEGIN PROC(INT)VOID a; a (int) END; ++ BEGIN PROC(INT)VOID a; a (int); SKIP END ++ END; ++ ++ # 6. Assignation with an identifier as destination. # ++ ++ BEGIN INT a; REF INT b = a; PROC(REAL)REAL c; ++ a := 1; ++ b := a; ++ CO c := sin; XXX CO ++ SKIP ++ END; ++ ++ # 7. Assignation with a slice as destination. # ++ ++ BEGIN INT i, j, k, l; ++ [i:i]REAL a1; ++ [i:i,j:j]REAL a2; ++ REF[]REAL a3 = a1; ++ REF[,]REAL a4; ++ REF[,,]REAL a5 = a4; ++ [,,,]REF REAL a6 = a3[i]; ++ ++ a1[i] := 3; ++ a2[i,j] := 3; ++ a3[i] := 3; ++ a4[i,j] := 3; ++ a5[i,j,k] := 3; ++ a6[i,j,k,l] := 3; ++ BEGIN REF REF REF REF REF REF REF REF REF REF ++ REF REF REF REF REF REF REF REF REF REF ++ []REAL x; ++ x[i] := 3.0 ++ END ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/idef10.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN INT count := 0; ++ FOR i FROM 1 BY i DO count +:= 1 OD; # { dg-error "" } # ++ ASSERT (count = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq01.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE N = UNION(STRUCT(REAL re, im), COMPL); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq03.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE M = PROC(M)M, ++ N = PROC(N)N, ++ O = UNION(N,M); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Mode equivalencing. # ++BEGIN MODE N = UNION (BYTES, BITS, REF BITS); # { dg-error "" } # ++ MODE SZEREDI = UNION (INT,REAL,REF UNION (INT, REAL)); # { dg-error "" } # ++ # Szeredi - ambiguity. # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq06.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Some equivalencing. # ++BEGIN MODE A = STRUCT (REF A l, REF A r), ++ B = STRUCT (REF B l, REF B r), ++ C = STRUCT (REF D l, REF E r), ++ D = STRUCT (REF E l, REF C r), ++ E = STRUCT (REF C l, REF D r), ++ F = STRUCT (REF STRUCT (REF A l, REF B r) l, ++ REF STRUCT (REF STRUCT (REF C l, REF D r) l, ++ REF STRUCT (REF E l, REF F r) r ++ ) r ++ ); ++ ++ # error - all modes are the same # ++ MODE M = UNION (A,B,C,D,E,F); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Operator test, mutual recursion. # ++BEGIN PRIO +>=1, +<=1; ++ OP +> = (INT a, b) INT: a+b; ++ 1+>2 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper06.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN OP + = (REAL a, b) REAL: a - b; # { dg-error "" } # ++ OP + = (REF REAL a, b) REAL: a - b; # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper12.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Operator test, illegal operator. # ++BEGIN OP += = (INT a) INT: -a; ++ OP +:= = (INT a) INT: -a; ++ OP -/:= = (INT a) INT: -a; ++ OP +==: = (INT a) INT: -a; ++ ++ # Correct version. # ++ +=+:=-/:=+==:+==:+=+:=+==:1; ++ # Bad version. # ++ +=+:=-/:=+==:+==+=+:=+==:=1 # { dg-error "" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/mcts/oper15.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Incorrect, since not all declarers are of the mode row-of # ++BEGIN UPB UNION ([]INT,BOOL) ([]INT (1)); # { dg-error "" } # ++ LWB UNION (REF[,]STRING,STRING) ("ab"); # { dg-error "" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-1.a68 +@@ -0,0 +1,69 @@ ++module Argp = ++def mode ArgOpt = struct (char name, string long_name, ++ bool arg_required, proc(string)bool handler); ++ ++ proc argp = (int p, [][]ArgOpt opts, ++ proc(int,string)bool no_opt_handler, ++ proc(string)void error_handler) void: ++ begin ++ proc getopt = (string prefix, string arg) ArgOpt: ++ begin ArgOpt res, bool found := false; ++ for i to UPB opts while NOT found ++ do for j to UPB opts[i] while NOT found ++ do if arg = long_name of opts[i][j] ++ OR (arg /= " " AND arg = name of opts[i][j]) ++ then res := opts[i][j]; found := true ++ fi ++ od ++ od; ++ (NOT found | error_handler ("unknown option " + prefix + arg)); ++ res ++ end; ++ ++ bool found_dash_dash := false, ++ skip_next_opt := false, ++ continue := true; ++ ++ for i from p to argc while continue ++ do string arg = argv (i); ++ if skip_next_opt ++ then skip_next_opt := false ++ elif arg = "--" AND NOT found_dash_dash ++ then found_dash_dash := true ++ elif found_dash_dash OR (UPB arg >= 1 andth arg[1] /= "-") ++ then continue := no_opt_handler (i + 1, arg) ++ elif UPB arg > 1 andth arg[2] = "-" ++ then { Long option. It may have an argument. } ++ int eqidx = char_in_string (arg, "="); ++ string optname = (eqidx > 0 | arg[3:eqidx - 1] | arg[3:]), ++ optarg = (eqidx > 0 AND UPB arg >= (eqidx + 1) | arg[eqidx + 1:]); ++ ArgOpt opt = getopt ("--", optname); ++ ++ if (arg_required of opt) AND optarg = "" ++ then error_handler ("option --" + arg + " requires an argument") fi; ++ continue := (handler of opt) (optarg) ++ else { This is one or more short options. } ++ for j to UPB arg[2:] ++ do ArgOpt opt = getopt ("-", arg[j + 1]); ++ if arg_required of opt ++ then if i = argc orel (ELEMS argv (i + 1) > 1 andth argv (i + 1)[1] = "-") ++ then error_handler ("option -" + arg[2+j] + " requires an argument") ++ fi; ++ (handler of opt) (argv (i + 1)); ++ skip_next_opt := true ++ else continue := (handler of opt) ("") ++ fi ++ od ++ fi ++ od ++ end; ++ ++ proc char_in_string = (string s, char c) int: ++ begin int res := 0, bool found := false; ++ for i to UPB s while NOT found ++ do (s[i] = c | res := i; found := true) od; ++ res ++ end; ++ ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-2.a68 +@@ -0,0 +1,16 @@ ++module Foo = def pub int idpublic = 10; ++ int idprivate = 20; ++ pub int varpublic := 100; ++ real varprivate := 3.14; ++ pub proc lala = (int a, b) int: a + b; ++ pub proc lele := (int a, b) int: a - b; ++ skip ++ fed, ++ Bar = def pub int idpublic = 30; ++ int idprivate = 40; ++ pub int varpublic := 100; ++ real varprivate := 3.14; ++ pub proc lala = (int a, b) int: a + b; ++ pub proc lele := (int a, b) int: a - b; ++ skip ++ fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-extracts-1.a68 +@@ -0,0 +1,29 @@ ++{ dg-options "-O0 -dA" } ++ ++module Foo = ++def pub mode JURL = union (void,int,real); ++ { dg-final { scan-assembler "mode extract FOO_JURL" } } ++ pub proc plus = (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_plus" } } ++ pub proc vplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_vplus" } } ++ pub proc lvplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_lvplus" } } ++ pub heap proc hvplus := (int a, b) int: a + b; ++ { dg-final { scan-assembler "identifier extract FOO_hvplus" } } ++ pub proc(int,int)int vplus2 = vplus; ++ { dg-final { scan-assembler "identifier extract FOO_vplus2" } } ++ pub proc(int,int)int lvplus2 := lvplus; ++ { dg-final { scan-assembler "identifier extract FOO_lvplus2" } } ++ pub heap proc(int,int)int hvplus2 := hvplus; ++ { dg-final { scan-assembler "identifier extract FOO_hvplus2" } } ++ pub int i; ++ { dg-final { scan-assembler "identifier extract FOO_i" } } ++ int k = 10; ++ { dg-final { scan-assembler-not "identifier extract FOO_k" } } ++ pub prio // = 8; ++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } ++ pub op // = (int a, b) int: a % b; ++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-1.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyInt = int; ++ pub mode MyLongInt = long int; ++ pub mode MyLongLongInt = long long int; ++ pub mode MyShortInt = short int; ++ pub mode MyShortShortInt = short short int; ++ skip ++fed ++ ++{ GA68_MODE_INT = 2UB } ++ ++{ dg-final { scan-assembler-times "2\[\t ]+\[^0-9\]+int" 5 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-2.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyReal = real; ++ pub mode MyLongReal = long real; ++ pub mode MyLongLongReal = long long real; ++ skip ++fed ++ ++{ GA68_MODE_REAL = 3UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0x3\[\t \]+\[^\n\]*real" 3 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-3.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyString = string; ++ skip ++fed ++ ++{ GA68_MODE_STRING = 14UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0xe\[\t \]+\[^\n\]*string" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-4.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyChar = char; ++ skip ++fed ++ ++{ GA68_MODE_CHAR = 6UB } ++ ++{ dg-final { scan-assembler-times "\[\t \]+0x6\[\t \]+\[^\n\]*char" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-5.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyBits = bits; ++ pub mode MyLongBits = long bits; ++ pub mode MyLongLongBits = long long bits; ++ pub mode MyShortBits = short bits; ++ pub mode MyShortShortBits = short short bits; ++ skip ++fed ++ ++{ GA68_MODE_BITS = 4UB } ++ ++{ dg-final { scan-assembler-times "4\[\t ]+\[^0-9\]+bits" 5 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-6.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyBool = bool; ++ pub mode MyVoid = void; ++ skip ++fed ++ ++{ GA68_MODE_BOOL = 7UB ++ GA68_MODE_VOID = 1UB } ++ ++{ dg-final { scan-assembler-times "7\[\t ]+\[^0-9\]+bool" 1 } } ++{ dg-final { scan-assembler-times "1\[\t ]+\[^0-9\]+void" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-7.a68 +@@ -0,0 +1,13 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyName = ref int; ++ skip ++fed ++ ++{ GA68_MODE_NAME = 12UB } ++ ++{ dg-final { scan-assembler-times "0xc\[\t ]+\[^0-9\]+ref" 1 } } ++{ dg-final { scan-assembler-times "0x2\[\t ]+\[^0-9\]+int" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-8.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyCompl = compl; ++ pub mode MyLongCompl = long compl; ++ pub mode MyLongLongCompl = long long compl; ++ skip ++fed ++ ++{ GA68_MODE_CMPL = 8UB } ++ ++{ dg-final { scan-assembler-times "0x8\[\t ]+\[^0-9\]+compl" 3 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } ++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-9.a68 +@@ -0,0 +1,12 @@ ++{ dg-options "-dA" } ++ ++{ Test for mode table in module definition exports. } ++ ++module Foo = ++def pub mode MyProc = proc void; ++ skip ++fed ++ ++{ GA68_MODE_CMPL = 8UB } ++ ++{ dg-final { scan-assembler-times "0xd\[\t ]+\[^0-9\]+proc" 1 } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-1.a68 +@@ -0,0 +1,16 @@ ++module Foo = ++def pub mode JORL = int, JURL = union (void,int,real); ++ pub proc plus = (int a, b) int: a + b; ++ pub proc vplus := (int a, b) int: a + b; ++ pub proc lvplus := (int a, b) int: a + b; ++ pub heap proc hvplus := (int a, b) int: a + b; ++ pub proc(int,int)int vplus2 = vplus; ++ pub proc(int,int)int lvplus2 := lvplus; ++ pub heap proc(int,int)int hvplus2 := hvplus; ++ pub int i, x, y; ++ pub int k = 10; ++ pub int j := 20; ++ pub prio // = 8; ++ pub op // = (int a, b) int: a % b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-1.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub int foo; { dg-final { scan-assembler "FOO_foo" } } ++ int bar; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub int foo; { dg-final { scan-assembler "BAR_foo" } } ++ int bar; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-10.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio + = 9; ++ op + = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-11.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio - = 9; ++ op - = (int a, b) int: skip; { dg-final { scan-assembler "FOO_m_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-12.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio % = 9; ++ op % = (int a, b) int: skip; { dg-final { scan-assembler "FOO_p_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-13.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ^ = 9; ++ op ^ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_c_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-14.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio & = 9; ++ op & = (int a, b) int: skip; { dg-final { scan-assembler "FOO_a_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-15.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ~ = 9; ++ op ~ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_t_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-16.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ! = 9; ++ op ! = (int a, b) int: skip; { dg-final { scan-assembler "FOO_b_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-17.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio ? = 9; ++ op ? = (int a, b) int: skip; { dg-final { scan-assembler "FOO_q_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-18.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio > = 9; ++ op > = (int a, b) int: skip; { dg-final { scan-assembler "FOO_g_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-19.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio < = 9; ++ op < = (int a, b) int: skip; { dg-final { scan-assembler "FOO_l_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-2.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "FOO_foo" } } ++ struct (int i, real r) bar; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "BAR_foo" } } ++ struct (int i, real r) bar; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-20.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio / = 9; ++ op / = (int a, b) int: skip; { dg-final { scan-assembler "FOO_s_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-21.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio = = 9; ++ op = = (int a, b) int: skip; { dg-final { scan-assembler "FOO_e_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-22.a68 +@@ -0,0 +1,10 @@ ++{ dg-options "-O0" } ++ ++{ Mangling of monads, nomads and : ++ Unfortunately we cannot do all of them in a single test. } ++ ++module Foo = ++def prio +:= = 9; ++ op +:= = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_o_e_\[0-9\]+" } } ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-3.a68 +@@ -0,0 +1,15 @@ ++{ dg-options "-O0" } ++ ++module Foo = def pub int foo = 10; { dg-final { scan-assembler "FOO_foo" } } ++ int bar = 20; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub int foo = 30; { dg-final { scan-assembler "BAR_foo" } } ++ int bar = 40; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-4.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-O0" } ++ ++{ Procedure variable declarations. } ++ ++module Foo = def pub proc int foo; { dg-final { scan-assembler "FOO_foo" } } ++ proc int bar := int: skip; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub proc int foo; { dg-final { scan-assembler "BAR_foo" } } ++ proc int bar := foo; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-5.a68 +@@ -0,0 +1,17 @@ ++{ dg-options "-O0" } ++ ++{ Procedure identity declarations. } ++ ++module Foo = def pub proc foo = int: skip; { dg-final { scan-assembler "FOO_foo" } } ++ proc bar = int: skip; { dg-final { scan-assembler "FOO_bar" } } ++ skip ++ fed, ++ Bar = def pub proc foo = int: skip; { dg-final { scan-assembler "BAR_foo" } } ++ proc bar = int: skip; { dg-final { scan-assembler "BAR_bar" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-6.a68 +@@ -0,0 +1,21 @@ ++{ dg-options "-O0" } ++ ++{ Operator brief identity declarations. } ++ ++module Foo = def pub op + = (int a, b) int: a + b; ++ { dg-final { scan-assembler "FOO_u_" } } ++ op - = (int a, b) int: a - b; ++ { dg-final { scan-assembler "FOO_m_" } } ++ skip ++ fed, ++ Bar = def pub op + = (int a, b) int: a + b; ++ { dg-final { scan-assembler "BAR_u_" } } ++ op - = (int a, b) int: a - b; ++ { dg-final { scan-assembler "BAR_m_" } } ++ skip ++ fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } ++{ dg-final { scan-assembler "BAR__prelude" } } ++{ dg-final { scan-assembler "BAR__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-7.a68 +@@ -0,0 +1,19 @@ ++{ dg-options "-O0" } ++ ++{ Operator identity declarations. } ++ ++module Foo = ++def prio // = 8; ++ pub op(int,int)int // = lala; ++ { dg-final { scan-assembler "FOO_s_s_" } } ++ proc lala = (int a, b) int: a + b; ++ prio JORL = 8, JURL = 9; ++ pub op(int,int)int JORL = lala; ++ { dg-final { scan-assembler "FOO_JORL" } } ++ op(int,int)int JURL = (int a, b) int: a - b; ++ { dg-final { scan-assembler "FOO_JORL" } } ++ skip ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-8.a68 +@@ -0,0 +1,18 @@ ++{ dg-options "-O0" } ++ ++{ Symbols that should _not_ include the module name. } ++ ++module Foo = ++def begin string foo = "foo'n"; { dg-final { scan-assembler-not "FOO_foo" } } ++ proc printfoo = void: puts (foo); { dg-final { scan-assembler-not "FOO_printfoo" } } ++ printfoo ++ end; ++ skip ++postlude ++ int lala; ++ proc incrlala = void: lala +:= 1; { dg-final { scan-assembler-not "FOO_incrlala" } } ++ incrlala ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-9.a68 +@@ -0,0 +1,14 @@ ++{ dg-options "-O0" } ++ ++{ Operator symbols are numbered so having overloaded symbols in the ++ module's public range works. } ++ ++module Foo = ++def prio // =9; ++ op // = (int a, b) int: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } ++ op // = (real a, b) real: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } ++ skip ++fed ++ ++{ dg-final { scan-assembler "FOO__prelude" } } ++{ dg-final { scan-assembler "FOO__postlude" } } +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/module-top-down-1.a68 +@@ -0,0 +1,14 @@ ++{ This test is to check that serial clauses and ++ enquiry clauses are properly skipped in module texts. } ++module Foo = ++def int i; ++ int j = 20; ++ string ss; ++ prio // = 8; ++ op // = (int a, b) int: a + b; ++ proc ticks = void: to i do puts ("tick'n") od; ++ i := 5 ++postlude ++ if j > 5 then ticks fi; ++ (j < 0 | puts ("error'n") | puts ("success'n")) ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/compile.exp +@@ -0,0 +1,40 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Compile tests, no torture testing. ++# ++# These tests raise errors in the front end; torture testing doesn't apply. ++ ++load_lib algol68-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# The programs need to be able to find the built modules, which are ++# left in objdir. ++ ++global MODULES_OPTIONS ++set MODULES_OPTIONS "-I $objdir" ++ ++# Main loop. ++set saved-dg-do-what-default ${dg-do-what-default} ++ ++set dg-do-what-default "compile" ++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/program*.a68]] "" "" ++set dg-do-what-default ${saved-dg-do-what-default} ++ ++# All done. ++dg-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module1.a68 +@@ -0,0 +1,9 @@ ++module Module1 = ++def ++ pub mode MyInt = int; ++ pub int beast_number := 666; ++ pub string who = "jemarch"; ++ puts ("Hello from module'n") ++postlude ++ puts ("Bye from module'n") ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module2.a68 +@@ -0,0 +1,5 @@ ++module Module2 = ++def prio // = 9; { Note priority is not publicized. } ++ pub op // = (int a, b) int: a + b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module3.a68 +@@ -0,0 +1,6 @@ ++module Module_3 = ++def pub proc foo = (int i, string s) void: skip; ++ pub mode Jorl = struct (int i, string s); ++ pub mode Jurl = union (int, string, real); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module4.a68 +@@ -0,0 +1,4 @@ ++module Module_4 = ++def access Module_3 (foo (10, "foo")); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module5.a68 +@@ -0,0 +1,6 @@ ++module Module_5 = ++def ++ pub mode JSON_Val = union (ref JSON_Elm,int), ++ JSON_Elm = struct (int lala); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module6.a68 +@@ -0,0 +1,5 @@ ++module Module6 = ++ access Module5 ++def pub proc getval = JSON_VAl: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module7.a68 +@@ -0,0 +1,5 @@ ++module Module7 = ++access Module5, Module6 ++def pub JSON_Val val = getval; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module8.a68 +@@ -0,0 +1,5 @@ ++module Module_8 = ++def ++ pub proc lala = ([]struct (string n, v) arg) void: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/module9.a68 +@@ -0,0 +1,6 @@ ++module Module_9 = ++def ++ pub mode Foo = struct (flex[1:0]Event events); ++ pub mode Event = int; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-7.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module5 module6 module7" } ++ ++access Module7 (skip) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-8.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module8" } ++ ++access Module_8 ( lala ((("foo", "bar"), ("baz", "quux"))) ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-9.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module9" } ++ ++access Module_9 (skip) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-no-prio-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module2" } ++ ++access Module_2 ++begin assert (2 // 3 = 5); { dg-error "no priority" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-outside-access-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module1" } ++ ++begin int x = access Module1 ( beast_number ), ++ y = beast_number; { dg-error "declared" } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-module-accesses-module-1.a68 +@@ -0,0 +1,5 @@ ++{ dg-modules "module3 module4" } ++{ This test accesses a Module4 that itself accesses a Module3. } ++ ++access Module_4 (skip) ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/modules/program-proc-arg-order-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-modules "module3" } ++ ++access Module_3 ++begin foo (10, "foo"); ++ Jorl x = (10, "foo"); ++ Jurl y = 3.14; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/nested-comment-1.a68 +@@ -0,0 +1,4 @@ ++{ Comment delimiters within strings get ignored. } ++begin { puts { ("{""'n"); } } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/nested-comment-2.a68 +@@ -0,0 +1,6 @@ ++{ The string in nested comment is in one logical line. } ++begin ++ { puts ("{'n\ ++"); { this prints foo }} ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/operators-firmly-related.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN PRIO MIN = 6; ++ OP MIN = (REF REAL a, b) REF REAL: (a < b | a | b), # { dg-error "firmly related" } # ++ MIN = (REAL a, b) REAL: (a < b | a | b); # { dg-error "firmly related" } # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-1.a68 +@@ -0,0 +1,33 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This program triggered a bug related to incomplete modes. # ++BEGIN MODE REC_MSET = STRUCT (REF REC_MSET_ELM head, tail, ++ INT num elems, ++ PROC(REC_MSET_DATA)BOOL gate), ++ REC_MSET_ELM = STRUCT (REC_MSET_DATA data, BOOL mark, REF REC_MSET_ELM next), ++ REC_MSET_DATA = UNION (REC_RSET,REC_RECORD,REC_FIELD,REC_CMNT), ++ REC_RSET = STRUCT (REC_MSET mset, ++ INT min size, max size, ++ REF REC_RECORD descriptor), ++ REC_RECORD = STRUCT (REC_LOC loc, REC_MSET mset, INT foo), ++ REC_CMNT = STRUCT (REC_LOC loc, STRING content), ++ REC_FIELD = STRUCT (REC_LOC loc, STRING name, value), ++ REC_LOC = STRUCT (STRING source, INT line, char); ++ ++ PROC rec loc unknown = REC_LOC: ++ ("unknown", 0, 0); ++ PROC rec record gate = (REC_MSET_DATA d) BOOL: ++ (d | (REC_FIELD): TRUE, (REC_CMNT): TRUE | FALSE); ++ REF REC_MSET_ELM rec no mset elm = NIL; ++ ++ PROC rec mset new = (PROC(REC_MSET_DATA)BOOL gate) REC_MSET: ++ (HEAP REC_MSET := (rec no mset elm, rec no mset elm, ++ 0, gate)); ++ ++ REF REC_RECORD rec no record = NIL; ++ ++ PROC rec record new = REF REC_RECORD: ++ HEAP REC_RECORD := (rec loc unknown, rec mset new (rec record gate), 0); ++ ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-2.a68 +@@ -0,0 +1,7 @@ ++begin mode Word = union (int, struct (ref Word w)), ++ Value = union (void,Word), ++ Stack = struct (ref Stack prev, Value val); ++ ++ struct (Word a) qs; { type_2 has no size! } ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/serial-clause-jump-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is an infinite loop, but it should compile just fine an yield ++ an integer after infinite time. # ++ ++BEGIN foo: foo ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/snobol.a68 +@@ -0,0 +1,1100 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# This is Frank Pagan's SNOBOL4 Interpreter in ALGOL 68 (1976), ++ fetched from Dick Grune's page https://dickgrune.com/CS/Algol68/ ++ ++ The interpreter described in "Algol 68 as an Implementation Language\ ++ for Portable Interpreters", ACM SIGPLAN Notices - Proceedings of the ++ Strathclyde ALGOL 68 conference, Volume 12 Issue 6, June 1977, ++ pp. 54 - 62, and "A Highly-Structured Interpreter for a SNOBOL4 ++ Subset", Software: Practice and Experience, Vol. 9, 4, ++ pp. 281-312, April 1979. ++ ++ Modifications by Jose E. Marchesi: ++ - Use the simple POSIX-like transput provided by GCC. ++ - Read programs from lines rather than from cards. ++ - Add command-line option -l (listing). ++# ++ ++BEGIN PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := ABS i; ++ STRING res; ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res := REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0") + res; ++ n %:= 10 ++ OD; ++ (i < 0 | "-" + res | res) ++ FI ++ END; ++ ++ CHAR sharp = REPR 35; # Sharp character, ++ to avoid confusing Emacs. # ++ ++ # Input file. # ++ INT filein; ++ ++ # IMPLEMENTATION RESTRICTIONS # ++ INT spoolsize = 400, ++ stlim = 50, ++ arglim = 5, ++ rslim = 80, ++ pslim = 20, ++ ftlim = 10; ++ ++ # ABSTRACT MACHINE # ++ MODE ITEM = UNION (INT, REF STRINGITEM, PATTERN), ++ STRINGITEM = STRUCT (STRING val, REF ITEM ref), ++ PATTERN = REF[]COMPONENT, ++ COMPONENT = STRUCT (INT routine, subsequent, alternate, extra, ++ REF ITEM arg), ++ PSENTRY = STRUCT (INT cursor, alternate), ++ RSENTRY = REF ITEM, ++ FTENTRY = STRUCT (REF ITEM fnname, entry name, ++ REF[]REF ITEM params, locals); ++ ++ [1:spoolsize] REF ITEM spool; ++ [1:pslim] PSENTRY pattern stack; ++ [1:rslim] RSENTRY run stack; ++ [1:ftlim] FTENTRY function table; ++ ++ BOOL failed := FALSE; ++ INT nin, psp, rsp := 0, ftp := 0; ++ INT mstr = 1, mlen = 2, mbrk = 3, mspn = 4, many = 5, mnul = 6, ++ miv1 = 7, miv2 = 8, m1 = 9, mat = 10, mpos = 11, mtab = 12, ++ mrpos = 13, mrtab = 14, mnty = 15; ++ ++ # INTERNAL FORM OF PROGRAMS # ++ ++ MODE STMT = STRUCT (REF IDR label, ++ UNION (REF ASMT, REF MATCH, ++ REF REPL, REF EXPR) stmt core, ++ REF GOTOFIELD goto), ++ IDR = STRUCT (REF ITEM idr addr), ++ NUM = STRUCT (REF ITEM num addr), ++ LSTR = STRUCT (REF ITEM lstr addr), ++ ASMT = STRUCT (REF EXPR subject, object), ++ MATCH = STRUCT (REF EXPR subject, pattern), ++ REPL = STRUCT (REF EXPR subject, pattern, object), ++ EXPR = UNION (REF UNARYEXPR, REF BINARYEXPR, IDR, NUM, ++ LSTR, REF CALL), ++ GOTOFIELD = STRUCT (REF DEST upart, spart, fpart), ++ DEST = UNION (REF EXPR, CHAR), ++ UNARYEXPR = STRUCT (REF EXPR operand, CHAR operator), ++ BINARYEXPR = STRUCT (REF EXPR operand1, operand2, ++ CHAR operator), ++ CALL = STRUCT (IDR fnname, REF[]REF EXPR args); ++ ++ REF[]STMT t; ++ REF ITEM prog entry := NIL; ++ ++ PROC error = (STRING mess) VOID: ++ (puts ("error: " + mess + "'n"); stop); ++ ++ # TRANSLATION PHASE # ++ ++ BEGIN # DECLARATIONS FOR SCANNER # ++ STRING card, INT cp, # SOURCE LINE AND POINTER # ++ CHAR ch, # SOURCE CHARACTER # ++ [1:80]CHAR str, INT sp, # STRING BUFFER AND POINTER # ++ CHAR tok, # TOKEN CODE # ++ REF ITEM psn, # POSITION OF A CREATED VALUE # ++ INT nv, # NUMERIC VALUE OF CONSTANT # ++ INT stn, # SOURCE STATEMENT NUMBER # ++ BOOL listing, # FLAG FOR SOURCE LISTING # ++ CHAR c; # TEMPORARY # ++ ++ # TOKEN MNEMONICS # ++ CHAR doll = "$", bdoll = "D", ++ plus = "+", bplus = "P", ++ minus = "-", bminus = "M", ++ at = "@", bbar = "!", ++ bstar = "*", bslash = "/", ++ lpar = "(", rpar = ")", ++ comma = ",", colon = ":", ++ equal = "=", blank = " ", ++ eos = ";", name = "A", ++ lstring = "L", number = "U", ++ endt = "E", ret = "R", ++ fret = "F", stok = "Y", ++ ftok = "Z"; ++ ++ PROC get card = VOID: ++ BEGIN cp := 0; ++ WHILE card := fgets (filein, 80); ++ IF UPB card = 0 THEN exit FI; ++ c := card[1]; ++ IF c /= "." AND c /= "+" AND c /= "-" AND c /= "*" ++ THEN stn := stn + 1 FI; ++ IF listing THEN puts (itoa (stn) + " " + card + "'n") FI; ++ IF c = "-" ++ THEN IF card[2:5] = "LIST" ++ THEN listing := TRUE ++ ELIF card[2:7] = "UNLIST" ++ THEN listing := FALSE ++ FI ++ FI; ++ c = "-" OR c = "*" ++ DO SKIP OD; ++ exit: SKIP ++ END; ++ ++ PROC next ch = VOID: ++ IF cp = UPB card ++ THEN get card; ++ IF c = "." OR c = "+" ++ THEN ch := " "; cp := 1 ++ ELSE ch := sharp # END OF LINE AND STATEMENT # ++ FI ++ ELSE ch := card[cp +:= 1] ++ FI; ++ ++ PROC lookup = (STRING sv) REF ITEM : ( ++ INT i := 0, BOOL nf := TRUE; ++ WHILE IF (i +:= 1) <= nin ++ THEN nf := sv /= val OF (spool[i] | (REF STRINGITEM s) : s) ++ ELSE FALSE ++ FI ++ DO SKIP OD; ++ IF nf ++ THEN IF nin = spoolsize THEN error ("too many strings") FI; ++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := ++ (sv, NIL) ++ FI; ++ spool[i]); ++ ++ PROC scan = VOID: ++ IF ch = " " # BLANKS AND BINARY OPERATORS # ++ THEN WHILE next ch; ch = " " DO SKIP OD; ++ # IGNORE TRAILING BLANKS IN A STATEMENT # ++ IF ch = ";" THEN next ch; stn := stn + 1; tok := eos ++ ELIF ch = sharp THEN next ch; tok := eos ++ ELIF ch = "!" OR ch = "$" OR ch = "+" OR ch = "-" ++ OR ch = "*" OR ch = "/" ++ THEN IF card[cp+1] = " " ++ THEN c := ch; ++ WHILE next ch; ch = " " DO SKIP OD ; ++ tok := (c = "!" | bbar ++ |: c = "$" | bdoll ++ |: c = "-" | bminus ++ |: c = "+" | bplus ++ |: c = "*" | bstar ++ | bslash) ++ ELSE tok := blank ++ FI ++ ELSE tok := blank ++ FI ++ ELIF ch = "''" OR ch = """" # LITERAL STRINGS # ++ THEN c := ch; sp := 0; ++ WHILE next ch; ++ IF ch = sharp THEN error ("UNTERMINATED LITERAL") FI; ++ (str[sp +:= 1] := ch) /= c ++ DO SKIP OD ; ++ next ch; ++ tok := lstring; ++ IF sp = 1 ++ THEN psn := NIL ++ ELSE STRING s = str[1:sp-1] ; ++ psn := lookup (s) ++ FI ++ ELIF ch >= "0" AND ch <= "9" # NUMBERS # ++ THEN nv := 0 ; ++ WHILE nv := nv * 10 + ABS ch - ABS "0"; ++ next ch; ++ ch >= "0" AND ch <= "9" ++ DO SKIP OD ; ++ tok := number; ++ psn := HEAP ITEM := nv ++ ELIF ch >= "A" AND ch <= "Z" # NAMES # ++ THEN sp := 0; ++ WHILE str[sp +:= 1] := ch; ++ next ch; ++ ch = "." OR ch >= "A" AND ch <= "Z" ++ OR ch >= "0" AND ch <= "9" ++ DO SKIP OD ; ++ STRING s = str[1:sp]; ++ tok := (s = "S" | stok ++ |: s = "F" | ftok ++ |: s = "END" | endt ++ |: s = "RETURN" | ret ++ |: s = "FRETURN" | fret ++ | psn := lookup (s); name) ++ ELIF ch = ";" ++ THEN next ch; stn := stn + 1; tok := eos ++ ELIF ch = sharp ++ THEN next ch; tok := eos ++ ELSE # ( ) , : = @ $ + - # ++ tok := ch; next ch ++ FI; ++ ++ PROC init = VOID: ++ BEGIN stn := 0; ++ spool[nin := 1] := HEAP ITEM := HEAP STRINGITEM := ++ ("ARB", HEAP ITEM := HEAP[1:3]COMPONENT := ++ ((mnul, 2, 0, SKIP, NIL), ++ (mnul, 0, 3, SKIP, NIL), ++ (m1, 2, 0, SKIP, NIL))); ++ get card; ++ next ch; ++ scan ++ END; ++ ++ PROC verify = (CHAR token) VOID: ++ IF tok = token THEN scan ++ ELSE STRING s := "TOKEN "" "" DOES NOT OCCUR WHERE EXPECTED"; ++ s[8] := token; ++ error (s) ++ FI; ++ ++ PROC translate = VOID: ++ BEGIN HEAP[1:stlim]STMT ss, INT ssc := 0; ++ WHILE IF ssc = stlim THEN error ("TOO MANY STATEMENTS") FI; ++ tok /= endt ++ DO ss[ssc +:= 1] := trans stmt OD; ++ scan; ++ IF tok = blank ++ THEN scan; ++ IF tok = name THEN prog entry := psn FI ++ FI; ++ t := ss[1:ssc] ++ END; ++ ++ PROC trans stmt = STMT: ++ BEGIN ++ REF IDR lab := NIL; ++ REF EXPR subj, pat, obj := NIL; ++ REF GOTOFIELD go := NIL; ++ BOOL asgn; ++ ++ PROC move to obj = STMT: ++ BEGIN ++ IF tok = blank ++ THEN scan; ++ IF tok = colon ++ THEN go := trans gofield ++ ELSE obj := trans expr; ++ IF tok = colon ++ THEN go := trans gofield ++ ELSE verify (eos) ++ FI ++ FI ++ ELSE verify (eos) ++ FI ; ++ IF asgn ++ THEN STMT (lab, HEAP ASMT := (subj, obj), go) ++ ELSE STMT (lab, HEAP REPL := (subj, pat, obj), go) ++ FI ++ END; ++ ++ PROC move to subj = STMT: ++ BEGIN scan; ++ IF tok = colon ++ THEN STMT (lab, REF EXPR (NIL), trans gofield) ++ ELSE subj := trans elem; ++ IF tok = blank ++ THEN scan; ++ IF tok = colon ++ THEN STMT (lab, REF EXPR (subj), trans gofield) ++ ELIF tok = equal ++ THEN asgn := TRUE; scan; move to obj ++ ELSE pat := trans expr; ++ IF tok = colon ++ THEN STMT (lab, HEAP MATCH := (subj, pat), trans gofield) ++ ELIF tok = equal ++ THEN asgn := FALSE; scan; move to obj ++ ELSE verify (eos); ++ STMT (lab, HEAP MATCH := (subj, pat), NIL) ++ FI ++ FI ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (subj), NIL) ++ FI ++ FI ++ END; ++ ++ # Body of trans stmt. # ++ IF tok = name ++ THEN lab := HEAP IDR; idr addr OF lab := psn; scan; ++ IF tok = blank ++ THEN move to subj ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (NIL), NIL) ++ FI ++ ELIF tok = blank ++ THEN move to subj ++ ELSE verify (eos); ++ STMT (lab, REF EXPR (NIL), NIL) ++ FI ++ END; ++ ++ PROC trans gofield = REF GOTOFIELD: ++ BEGIN PROC where = REF DEST: ++ BEGIN HEAP DEST d; ++ verify (lpar); ++ IF tok = blank THEN scan FI; ++ d := (tok = endt | scan; "E" ++ |: tok = ret | scan; "R" ++ |: tok = fret | scan; "F" ++ | trans expr); ++ verify (rpar); ++ d ++ END; ++ ++ REF DEST uncond := NIL, succ := NIL, fail := NIL; ++ scan; IF tok = blank THEN scan FI; ++ IF tok = stok ++ THEN scan; succ := where; ++ IF tok = blank THEN scan FI; ++ IF tok = ftok THEN scan; fail := where FI; ++ verify (eos) ++ ELIF tok = ftok ++ THEN scan; fail := where; ++ IF tok = blank THEN scan FI; ++ IF tok = stok THEN scan; succ := where FI; ++ verify (eos) ++ ELSE uncond := where; verify (eos) ++ FI; ++ HEAP GOTOFIELD := (uncond, succ, fail) ++ END; ++ ++ PROC trans expr = REF EXPR: ++ BEGIN REF EXPR e := trans expr1; ++ WHILE tok = bbar ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr1, "!") ++ OD; ++ e ++ END; ++ ++ PROC trans expr1 = REF EXPR: ++ BEGIN REF EXPR e := trans expr2; ++ WHILE tok = blank ++ DO scan; ++ IF tok /= colon AND tok /= rpar AND tok /= comma AND tok /= equal ++ THEN e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr2, "C") ++ FI ++ OD; ++ e ++ END; ++ ++ PROC trans expr2 = REF EXPR: ++ BEGIN REF EXPR e := trans term; ++ CHAR opr; ++ WHILE tok = bplus OR tok = bminus ++ DO opr := (tok = bplus | "+" | "-"); ++ scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term, opr) ++ OD; ++ e ++ END; ++ ++ PROC trans term = REF EXPR: ++ BEGIN REF EXPR e := trans term1; ++ WHILE tok = bslash ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term1, "/") ++ OD; ++ e ++ END; ++ ++ PROC trans term1 = REF EXPR: ++ BEGIN REF EXPR e := trans term2; ++ WHILE tok = bstar ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term2, "*") ++ OD; ++ e ++ END; ++ ++ PROC trans term2 = REF EXPR: ++ BEGIN REF EXPR e := trans elem; ++ WHILE tok = bdoll ++ DO scan; ++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans elem, "$") ++ OD; ++ e ++ END; ++ ++ PROC trans elem = REF EXPR: ++ IF tok = doll OR tok = plus OR tok = minus OR tok = at ++ THEN CHAR opr = tok; ++ scan; ++ HEAP EXPR := HEAP UNARYEXPR := (trans element, opr) ++ ELSE trans element ++ FI; ++ ++ PROC trans element = REF EXPR: ++ IF tok = name ++ THEN IDR n; ++ idr addr OF n := psn; ++ scan; ++ IF tok /= lpar ++ THEN HEAP EXPR := n ++ ELSE HEAP[1:arglim]REF EXPR a, INT ac := 0; ++ WHILE scan; ++ IF tok = blank THEN scan FI; ++ IF ac = arglim ++ THEN error ("TOO MANY ARGUMENTS IN FUNCTION CALL") ++ FI; ++ IF NOT (ac = 0 AND tok = rpar) ++ THEN a[ac +:= 1] := (tok = comma OR tok = rpar | NIL | trans expr) ++ FI; ++ IF tok /= comma AND tok /= rpar ++ THEN error ("ERROR IN ARGUMENT LIST") ++ FI; ++ tok = comma ++ DO SKIP OD; ++ scan; ++ HEAP EXPR := HEAP CALL := (n, a[1:ac]) ++ FI ++ ELIF tok = lstring ++ THEN LSTR ls; ++ lstr addr OF ls := psn; ++ scan; ++ HEAP EXPR := ls ++ ELIF tok = number ++ THEN NUM nu; num addr OF nu := psn; ++ scan; ++ HEAP EXPR := nu ++ ELSE verify (lpar); ++ IF tok = blank THEN scan FI; ++ REF EXPR e = trans expr; ++ verify (rpar); ++ e ++ FI; ++ ++ PROC usage = VOID: ++ BEGIN puts ("Usage: snobol [-l] FILE'n"); ++ stop ++ END; ++ ++ listing := FALSE; ++ IF argc < 2 THEN usage FI; ++ FOR i FROM 2 TO argc ++ DO IF argv (i) = "-l" THEN listing := TRUE ++ ELIF filein = 0 ++ THEN filein := fopen (argv (i), file o rdonly); ++ IF (filein = -1) ++ THEN error ("opening " + argv (i) + ": " + strerror (errno)) FI ++ ELSE usage ++ FI ++ OD; ++ init; ++ translate ++ END; # TRANSLATION PHASE # ++ ++ BEGIN # INTERPRETATION PHASE # ++ ++ OP INTG = (REF ITEM a) INT: (a | (INT i) : i), ++ STR = (REF ITEM a) REF STRINGITEM: (a | (REF STRINGITEM s): s), ++ PAT = (REF ITEM a) PATTERN: (a | (PATTERN p) : p); ++ BOOL fn success; ++ ++ PROC interpret = (INT stmt no) VOID: ++ BEGIN INT sn := stmt no; BOOL cycling := TRUE; ++ ++ PROC jump = (REF DEST dest) VOID: ++ BEGIN failed := FALSE; ++ CASE dest ++ IN (REF EXPR e): sn := find label (eval softly (e)), ++ (CHAR c): IF c = "E" THEN sn := UPB t + 1 ++ ELIF c = "R" THEN fn success := TRUE; ++ cycling := FALSE ++ ELSE # c = "F" # fn success := cycling := FALSE ++ FI ++ ESAC ++ END; ++ ++ WHILE cycling ++ DO IF sn > UPB t THEN stop FI; ++ failed := FALSE; ++ ++ # EXECUTE STATEMENT CORE # ++ CASE stmt core OF t[sn] ++ IN (REF ASMT a): ++ (REF ITEM sp = eval softly (subject OF a); ++ assign (sp, eval strongly (object OF a))), ++ (REF MATCH m): ++ (REF ITEM svp = eval strongly (subject OF m); ++ match (convert to str (svp), ++ convert to pat (eval strongly (pattern OF m)))), ++ (REF REPL r): ++ (REF ITEM sp = eval softly (subject OF r); ++ REF ITEM pp = convert to pat (eval strongly (pattern OF r)); ++ REF ITEM svp = convert to str (ref OF (STR sp)); ++ INT c = match (svp, pp); ++ REF ITEM b = (svp IS NIL | NIL | make str ((val OF (STR svp))[c+1:])); ++ REF ITEM obp = eval strongly (object OF r); ++ assign (sp, concatenate (obp, b))), ++ (REF EXPR e): ++ eval strongly (e) ++ ESAC; ++ ++ # PROCESS GOTO FIELD # ++ REF GOTOFIELD go = goto OF t[sn]; ++ IF go IS NIL THEN sn := sn + 1 ++ ELIF REF DEST (upart OF go) ISNT NIL ++ THEN jump (upart OF go) ++ ELIF NOT failed AND (REF DEST (spart OF go) ISNT NIL) ++ THEN jump (spart OF go) ++ ELIF failed AND (REF DEST (fpart OF go) ISNT NIL) ++ THEN jump (fpart OF go) ++ ELSE sn := sn + 1 ++ FI ++ OD ++ END; # END OF INTERPRET # ++ ++ PROC find label = (REF ITEM label ptr) INT: ++ BEGIN INT stmt no := 0; ++ IF failed THEN error ("FAILURE IN GOTO FIELD") FI; ++ FOR i TO UPB t WHILE stmt no = 0 ++ DO IF (REF IDR (label OF t[i]) IS NIL ++ | FALSE ++ | label ptr IS idr addr OF label OF t[i]) ++ THEN stmt no := i ++ FI ++ OD; ++ IF stmt no = 0 THEN error ("UNDEFINED LABEL") FI; ++ stmt no ++ END; ++ ++ PROC match = (REF ITEM subject ptr, pattern ptr) INT: ++ IF failed ++ THEN 0 ++ ELSE PATTERN p = PAT pattern ptr; ++ STRING subj = (subject ptr IS NIL | "" | val OF (STR subject ptr)); ++ INT u = UPB subj; ++ INT iarg, # INTEGER COMPONENT ARGUMENT # ++ STRING sarg, # STRING COMPONENT ARGUMENT # ++ INT l; # LENGTH OF SARG # ++ INT cn := 1, # COMPONENT NUMBER # ++ c := 0, # CURSOR # ++ code; # NEW CURSOR OR -1 IF COMPONENT NO-MATCH # ++ BOOL matching := TRUE; ++ ++ psp := 0; # CLEAR PATTERN STACK # ++ WHILE matching ++ DO IF alternate OF p[cn] /= 0 ++ THEN # PUSH PATTERN STACK # ++ pattern stack[psp +:= 1] := (c, alternate OF p[cn]) ++ FI; ++ IF REF ITEM (arg OF p[cn]) ISNT NIL ++ THEN CASE arg OF p[cn] ++ IN (INT i) : iarg := i, ++ (REF STRINGITEM s): ++ (sarg := val OF s; l := UPB sarg) ++ ESAC ++ FI; ++ ++ # EXECUTE INDICATED MATCHING ROUTINE # ++ CASE routine OF p[cn] ++ IN # MSTR # ++ IF REF ITEM (arg OF p[cn]) IS NIL ++ THEN code := c ++ ELIF c + l > u THEN code := -1 ++ ELSE code := (sarg = subj[c+1:c+l] | c + l | -1) ++ FI, ++ # MLEN # ++ code := (iarg <= u - c | c + iarg | -1), ++ # MBRK # ++ IF c >= u THEN code := -1 ++ ELSE INT n = break scan (subj[c+1:], sarg); ++ code := (n < u - c | c + n | -1) ++ FI, ++ # MSPN # ++ IF c >= u THEN code := -1 ++ ELIF any (sarg, subj[c+1]) ++ THEN INT j := c + 1; ++ FOR i FROM c + 2 TO u WHILE any (sarg, subj[i]) ++ DO j := i OD; ++ code := j ++ ELSE code := -1 ++ FI, ++ # MANY # ++ IF c >= u ++ THEN code := -1 ++ ELSE code := (any (sarg, subj[c+1]) | c + 1 | -1) ++ FI, ++ # MNUL # ++ code := c, ++ # MIV1 # ++ code := extra OF p[cn] := c, ++ # MIV2 # ++ (INT m = extra OF p[cn - extra OF p[cn]] + 1; ++ assign (arg OF p[cn], make str (subj[m:c])); ++ code := c), ++ # M1 # ++ code := (1 <= u - c | c + 1 | -1), ++ # MAT # ++ (assign (arg OF p[cn], make int (c)); ++ code := c), ++ # MPOS # ++ code := (c = iarg | c | -1), ++ # MTAB # ++ code := (c <= iarg AND iarg <= u | iarg | -1), ++ # MRPOS # ++ code := (u - c = iarg | c | -1), ++ # MRTAB # ++ code := (u - c >= iarg | u - iarg | -1), ++ # MNTY # ++ IF c >= u ++ THEN code := -1 ++ ELSE code := (any (sarg, subj[c+1]) | -1 | c + 1) ++ FI ++ ESAC; ++ ++ # DECIDE WHAT TO DO NEXT # ++ IF code >= 0 ++ THEN IF subsequent OF p[cn] = 0 ++ THEN matching := FALSE #SUCCESSFUL TERMINATION # ++ ELSE cn := subsequent OF p[cn]; ++ c := code # CONTINUE # ++ FI ++ ELIF psp = 0 ++ THEN failed := TRUE; ++ matching := FALSE # STMT FAILURE # ++ ELSE # POP PATTERN STACK TO BACKTRACK # ++ cn := alternate OF pattern stack[psp]; ++ c := cursor OF pattern stack[psp]; ++ psp := psp - 1 ++ FI ++ OD; ++ (failed | 0 | code) ++ FI; # END OF MATCH PROCEDURE # ++ ++ PROC assign = (REF ITEM subject ptr, object ptr) VOID: ++ IF failed THEN SKIP ++ ELSE REF STRINGITEM s = STR subject ptr; ++ ref OF s := object ptr; ++ IF val OF s = "OUTPUT" ++ THEN IF object ptr IS NIL ++ THEN puts ("'n") ++ ELSE CASE object ptr ++ IN (REF STRINGITEM r): puts ((val OF r) + "'n"), ++ (INT i): puts (itoa (i) + "'n"), ++ (PATTERN): (error ("ATTEMPT TO OUTPUT PATTERN"); SKIP) ++ ESAC ++ FI ++ FI ++ FI; ++ ++ PROC eval softly = (REF EXPR expression) REF ITEM: ++ IF failed THEN SKIP ++ ELSE CASE expression # CAN NEVER BE NIL # ++ IN (IDR id): idr addr OF id, ++ (REF UNARYEXPR ue): ++ IF operator OF ue = "$" ++ THEN REF ITEM r = convert to str (eval strongly (operand OF ue)); ++ IF r IS NIL ++ THEN error ("NULL RESULT WHERE VAR REQUIRED"); ++ SKIP ++ ELSE r ++ FI ++ ELSE error ("INAPPROPRIATE UNARY EXPR WHERE VAR REQUIRED"); ++ SKIP ++ FI ++ OUT error ("INAPPROPRIATE EXPR WHERE VAR REQUIRED"); ++ SKIP ++ ESAC ++ FI; ++ ++ PROC eval strongly = (REF EXPR expression) REF ITEM: ++ IF failed THEN SKIP ++ ELIF expression IS NIL THEN NIL ++ ELSE CASE expression ++ IN (IDR id): ++ (REF STRINGITEM s = STR (idr addr OF id); ++ IF val OF s = "INPUT" ++ THEN STRING line; ++ # SNOBOL programs read data from stdin. # ++ line := gets (80); ++ IF (line = "") THEN failed := TRUE; eof FI; ++ assign (idr addr OF id, make str (line)); ++ eof: SKIP ++ FI; ++ ref OF s), ++ (NUM nbr): ++ num addr OF nbr, ++ (LSTR ls): ++ lstr addr OF ls, ++ (REF UNARYEXPR ue): ++ (REF ITEM arg ptr = (operator OF ue = "@" ++ | eval softly (operand OF ue) ++ | eval strongly (operand OF ue)); ++ eval unary (arg ptr, operator OF ue)), ++ (REF BINARYEXPR be): ++ (REF ITEM arg1 ptr = eval strongly (operand1 OF be); ++ REF ITEM arg2 ptr = (operator OF be = "$" ++ | eval softly (operand2 OF be) ++ | eval strongly (operand2 OF be)); ++ eval binary (arg1 ptr, arg2 ptr, operator OF be)), ++ (REF CALL cl): ++ (INT n = UPB args OF cl; ++ [1:n]REF ITEM arglist; ++ FOR i TO n ++ DO arglist[i] := eval strongly ((args OF cl)[i]) OD; ++ eval call (idr addr OF fnname OF cl, arglist)) ++ ESAC ++ FI; ++ ++ PROC eval unary = (REF ITEM arg ptr, CHAR opr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF opr = "$" ++ THEN IF arg ptr IS NIL ++ THEN error ("INDIRECTION APPLIED TO NULL STRING"); ++ SKIP ++ ELSE ref OF (STR convert to str (arg ptr)) ++ FI ++ ELIF opr = "+" ++ THEN convert to int (arg ptr) ++ ELIF opr = "-" ++ THEN INT k = INTG convert to int (arg ptr); ++ make int (-k) ++ ELSE # OPR = "@" # ++ make pat comp (mat, arg ptr) ++ FI ++ FI; ++ ++ PROC eval binary = (REF ITEM arg1 ptr, arg2 ptr, CHAR opr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF opr = "$" ++ THEN REF ITEM c = concatenate (make pat comp (miv1, NIL), ++ arg1 ptr); ++ concatenate (c, make pat comp (miv2, arg2 ptr)) ++ ELIF opr = "*" OR opr = "/" OR opr = "+" OR opr = "-" ++ THEN INT m = INTG convert to int (arg1 ptr), ++ n = INTG convert to int (arg2 ptr); ++ make int ((opr = "*" | m * n ++ |: opr = "/" | m OVER n ++ |: opr = "+" | m + n | m - n)) ++ ELIF opr = "C" ++ THEN concatenate (arg1 ptr, arg2 ptr) ++ ELSE # OPR = "!" # ++ PATTERN p1 = PAT convert to pat (arg1 ptr), ++ p2 = PAT convert to pat (arg2 ptr); ++ INT u1 = UPB p1, u2 = UPB p2; ++ PATTERN p = HEAP[u1 + u2]COMPONENT, ++ INT offset = u1 + 1, INT j := 1; ++ p[1:u1] := p1[1:u1]; ++ WHILE alternate OF p[j] /= 0 ++ DO j := alternate OF p[j] OD; ++ alternate OF p[j] := offset; ++ FOR i FROM offset TO u1 + u2 ++ DO p[i] := p2 [i - u1]; ++ IF subsequent OF p[i] /= 0 ++ THEN subsequent OF p[i] +:= u1 ++ FI; ++ IF alternate OF p[i] /= 0 ++ THEN alternate OF p[i] +:= u1 ++ FI ++ OD; ++ HEAP ITEM := p ++ FI ++ FI; ++ ++ PROC eval call = (REF ITEM name ptr, REF[]REF ITEM arglist) REF ITEM: ++ IF failed THEN SKIP ++ ELSE # SEARCH FUNCTION TABLE FOR NAME # ++ BOOL not found := TRUE, INT j; ++ FOR i TO ftp WHILE not found ++ DO IF name ptr IS fnname OF function table[i] ++ THEN j := i; not found := FALSE ++ FI ++ OD; ++ IF not found ++ THEN exec prim fn (name ptr, arglist) ++ ELSE #PROGRAMMER-DEFINED FUNCTION # ++ ++ PROC stack = (REF ITEM a) VOID: ++ (IF rsp = rslim THEN error ("RUN STACK OVERFLOW") FI; ++ run stack [rsp +:= 1] := a); ++ ++ PROC unstack = REF ITEM: ++ (IF rsp = 0 THEN error ("RETURN FROM LEVEL 0") FI; ++ run stack [(rsp -:= 1) + 1]); ++ ++ REF STRINGITEM name = STR name ptr; ++ ++ # ENTRY PROTOCOL # ++ stack (ref OF name); ++ assign (name ptr, NIL); ++ REF[]REF ITEM params = params OF function table[j], ++ INT n = UPB arglist; ++ IF UPB params /= n ++ THEN error ("WRONG NUMBER OF ARGUMENTS IN CALL") ++ FI; ++ FOR i TO n ++ DO stack (ref OF (STR params[i])); ++ assign (params[i], arglist[i]) ++ OD; ++ REF[]REF ITEM locals = locals OF function table[j]; ++ FOR i TO UPB locals ++ DO stack (ref OF (STR locals[i])); ++ assign (locals[i], NIL) ++ OD; ++ ++ interpret (find label (entry name OF function table[j])); ++ ++ # RETURN PROTOCOL # ++ FOR i FROM UPB locals BY -1 TO 1 ++ DO assign (locals[i], unstack) OD; ++ FOR i FROM n BY -1 TO 1 ++ DO assign (params[i], unstack) OD; ++ REF ITEM result = ref OF name; ++ assign (name ptr, unstack); ++ (fn success | result | failed := TRUE ; SKIP) ++ FI ++ FI; ++ ++ PROC exec prim fn = (REF ITEM name ptr, ++ REF[]REF ITEM arglist) REF ITEM: ++ BEGIN ++ PROC gen1 = (INT routine) REF ITEM: ++ BEGIN # CREATE PATTERN COMPONENT WITH STRING ARGUMENT # ++ REF ITEM arg = convert to str (arglist[1]); ++ IF arg IS NIL ++ THEN error ("NULL ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION" ) ++ FI; ++ make pat comp (routine, arg) ++ END; ++ ++ PROC gen2 = (INT routine) REF ITEM: ++ BEGIN # CREATE PATTERN COMPONENT WITH INTEGER ARGUMENT # ++ REF ITEM arg = convert to int (arglist[1]); ++ IF INTG arg < 0 ++ THEN error ("NEGATIVE ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION") ++ FI; ++ make pat comp (routine, arg) ++ END; ++ ++ STRING fn = val OF (STR name ptr), INT n = UPB arglist; ++ IF fn = "LE" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ <= INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "EQ" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ = INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "NE" AND n = 2 ++ THEN IF INTG convert to int (arglist[1]) ++ /= INTG convert to int (arglist[2]) ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "IDENT" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) IS arglist[2] ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "DIFFER" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) ISNT arglist[2] ++ THEN NIL ++ ELSE failed := TRUE; ++ SKIP ++ FI ++ ELIF fn = "ANY" AND n = 1 THEN gen1 (many) ++ ELIF fn = "LEN" AND n = 1 THEN gen2 (mlen) ++ ELIF fn = "POS" AND n = 1 THEN gen2 (mpos) ++ ELIF fn = "TAB" AND n = 1 THEN gen2 (mtab) ++ ELIF fn = "SPAN" AND n = 1 THEN gen1 (mspn) ++ ELIF fn = "RPOS" AND n = 1 THEN gen2 (mrpos) ++ ELIF fn = "RTAB" AND n = 1 THEN gen2 (mrtab) ++ ELIF fn = "BREAK" AND n = 1 THEN gen1 (mbrk) ++ ELIF fn = "NOTANY" AND n = 1 THEN gen1 (mnty) ++ ELIF fn = "SIZE" AND n = 1 ++ THEN make int (UPB val OF (STR convert to str (arglist[1]))) ++ ELIF fn = "DEFINE" AND n = 2 ++ THEN IF REF ITEM (arglist[1]) IS NIL ++ THEN error ("NULL PROTOTYPE") FI; ++ STRING prototype = val OF (STR convert to str (arglist[1])); ++ REF ITEM entry = convert to str (arglist[2]); ++ IF entry IS NIL THEN error ("NULL ENTRY LABEL") FI; ++ ++ PROC check and find = (STRING str) REF ITEM: ++ BEGIN IF UPB str = 0 THEN error ("ILLEGAL PROTOTYPE") FI; ++ STRING an = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."; ++ IF NOT any (an[:26], str[1]) ++ THEN error ("ILLEGAL PROTOTYPE") FI; ++ FOR i FROM 2 TO UPB str ++ DO IF NOT any (an, str[i]) ++ THEN error ("ILLEGAL PROTOTYPE") ++ FI ++ OD; ++ make str (str) ++ END; ++ ++ PROC breakup = (STRING str) REF[]REF ITEM: ++ BEGIN #ANALYZE A LIST OF IDENTIFIERS # ++ [1:arglim]REF ITEM r, INT p := 0, a := 1, b; ++ WHILE a <= UPB str ++ DO b := break scan (str[a:], ","); ++ IF p >= arglim ++ THEN error ("TOO MANY PARAMETERS OR LOCALS IN PROTOTYPE") FI; ++ r[p +:= 1] := check and find (str[a:a+b-1]); ++ a := a + b + 1 ++ OD; ++ HEAP[1:p]REF ITEM := r[:p] ++ END; ++ ++ INT lp = UPB prototype; ++ INT a = break scan (prototype, "("); ++ IF a >= lp THEN error ("ILLEGAL PROTOTYPE") FI; ++ REF ITEM name ptr = check and find (prototype[:a]); ++ INT b = break scan (prototype[a+2:], ")"); ++ IF b >= lp - a - 1 THEN error ("ILLEGAL PROTOTYPE") FI; ++ REF[]REF ITEM params = breakup (prototype[a+2:a+1+b]); ++ REF[]REF ITEM locals = breakup (prototype[a+b+3:]); ++ ++ BOOL not found := TRUE; ++ FOR i TO ftp WHILE not found ++ DO IF name ptr IS fnname OF function table[i] ++ THEN not found := FALSE; ++ function table[i] := (name ptr, entry, params, locals) ++ FI ++ OD; ++ IF not found ++ THEN IF ftp = ftlim ++ THEN error ("FUNCTION TABLE OVERFLOW") FI; ++ function table [ftp +:= 1] := (name ptr, entry, params, locals) ++ FI; ++ NIL # RESULT OF DEFINE(...) # ++ ELSE error ("ILLEGAL FUNCTION CALL"); ++ SKIP ++ FI ++ END; ++ ++ PROC concatenate = (REF ITEM ptr1, ptr2) REF ITEM: ++ BEGIN ++ ++ PROC concat patterns = (PATTERN p1, p2) REF ITEM: ++ BEGIN INT u1 = UPB p1, u2 = UPB p2; ++ PATTERN p = HEAP[u1 + u2]COMPONENT; ++ INT offset = u1 + 1; ++ FOR i TO u1 ++ DO p[i] := p1[i]; ++ IF subsequent OF p[i] = 0 ++ THEN subsequent OF p[i] := offset FI ++ OD; ++ FOR i FROM offset TO u1 + u2 ++ DO p[i] := p2[i - u1]; ++ IF subsequent OF p[i] /= 0 ++ THEN subsequent OF p[i] +:= u1 FI; ++ IF alternate OF p[i] /= 0 ++ THEN alternate OF p[i] +:= u1 FI ++ OD; ++ IF u2 = 1 AND routine OF p[offset] = miv2 ++ THEN extra OF p[offset] := u1 FI; ++ HEAP ITEM := p ++ END; ++ ++ IF failed THEN SKIP ++ ELSE IF ptr1 IS NIL THEN ptr2 ++ ELIF ptr2 IS NIL THEN ptr1 ++ ELSE CASE ptr1 ++ IN (PATTERN p1): ++ concat patterns (p1, PAT convert to pat (ptr2)) ++ OUSE ptr2 ++ IN (PATTERN p2): ++ concat patterns (PAT convert to pat (ptr1), p2) ++ OUT STRING s1 = val OF (STR convert to str (ptr1)); ++ make str (s1 + val OF (STR convert to str (ptr2))) ++ ESAC ++ FI ++ FI ++ END; ++ ++ PROC convert to int = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL THEN make int (0) ++ ELSE CASE ptr ++ IN (INT): ptr, ++ (PATTERN): (error ("PATTERN VALUE WHERE INTEGER REQUIRED"); SKIP), ++ (REF STRINGITEM s): ++ (INT n := 0, d, z := ABS "0"; ++ FOR i TO UPB val OF s ++ DO d := ABS (val OF s)[i] - z; ++ IF d < 0 OR d > 9 ++ THEN error ("STRING NOT CONVERTIBLE TO INTEGER") FI; ++ n := n * 10 + d ++ OD; ++ make int (n)) ++ ESAC ++ FI ++ FI; ++ ++ PROC convert to pat = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL ++ THEN make pat comp (mstr, NIL) ++ ELSE CASE ptr ++ IN (PATTERN): ptr ++ OUT make pat comp (mstr, convert to str (ptr)) ++ ESAC ++ FI ++ FI; ++ ++ PROC convert to str = (REF ITEM ptr) REF ITEM: ++ IF failed THEN SKIP ++ ELSE IF ptr IS NIL THEN ptr ++ ELSE CASE ptr ++ IN (REF STRINGITEM): ptr, ++ (PATTERN): (error ("PATTERN VALUE WHERE STRING REQUIRED"); SKIP), ++ (INT i): make str (itoa (i)) ++ ESAC ++ FI ++ FI; ++ ++ PROC make int = (INT val) REF ITEM: ++ IF failed THEN SKIP ++ ELSE HEAP ITEM := val ++ FI; ++ ++ PROC make pat comp = (INT routine, REF ITEM arg) REF ITEM: ++ IF failed THEN SKIP ++ ELSE HEAP ITEM := HEAP[1:1]COMPONENT := COMPONENT (routine, 0, 0, SKIP, arg) ++ FI; ++ ++ PROC make str = (STRING val) REF ITEM: ++ IF failed THEN SKIP ++ ELIF UPB val = 0 THEN NIL ++ ELSE INT i := 0, BOOL nf := TRUE; ++ WHILE IF (i +:= 1) <= nin ++ THEN nf := val /= val OF (STR spool [i]) ++ ELSE FALSE ++ FI ++ DO SKIP OD; ++ IF nf ++ THEN IF nin = spoolsize THEN error ("TOO MANY STRINGS") FI; ++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := (val, NIL) ++ FI; ++ spool[i] ++ FI; ++ ++ PROC break scan = (STRING str, arg) INT: ++ BEGIN # RESULT = UPB STR IF NO BREAK CHAR, LESS OTHERWISE # ++ INT j := 0; ++ FOR i TO UPB str WHILE NOT any (arg, str[i]) ++ DO j := i OD; ++ j ++ END; ++ ++ PROC any = (STRING str, CHAR ch) BOOL: ++ BEGIN BOOL nf; ++ FOR i TO UPB str WHILE nf := ch /= str[i] DO SKIP OD; ++ NOT nf ++ END; ++ ++ interpret ((REF ITEM (prog entry) IS NIL | 1 | find label (prog entry))) ++ END # INTERPRETATION PHASE # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-1.a68 +@@ -0,0 +1,11 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Some_Mode = real; ++ Some_Mode some_real := random; ++ ++ puts ("Hello time for SUPPER!\n"); ++ if some_real > 0.5 ++ then puts ("YES\n") ++ else puts ("NO\n") ++ fi ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-10.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-11.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-12.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin for i while i < 10 ++ do puts ("lala\n") ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-13.a68 +@@ -0,0 +1,7 @@ ++{ dg-options "-fstropping=supper" } ++ ++{ mode_ should not be recognized as a symbol. } ++ ++begin int mode_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-2.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_bar = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-3.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_bar_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-4.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin int foo_ = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-5.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Foo_bar = int; ++ Foo_bar some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-6.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin go to done; ++done: skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-7.a68 +@@ -0,0 +1,5 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin goto done; ++done: skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-8.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode Int = int; ++ Int some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/supper-9.a68 +@@ -0,0 +1,6 @@ ++{ dg-options {-fstropping=supper} } ++ ++begin mode BEGIN = int; ++ BEGIN some_int = 10; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/uniting-1.a68 +@@ -0,0 +1,8 @@ ++{ dg-options {-fstropping=supper} } ++begin mode JSON_Val = union (int,ref JSON_Obj), ++ JSON_Obj = struct (int je), ++ ++ proc json_new_obj = JSON_Val: ++ (JSON_Obj o; o); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/upper-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options {-fstropping=upper} } # ++ ++BEGIN MODE SOME_MODE = REAL; ++ SOME_MODE some_real := random; ++ ++ puts ("Hello time for SUPPER!\n"); ++ IF some_real > 0.5 ++ THEN puts ("YES\n") ++ ELSE puts ("NO\n") ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-2.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (union ([]int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-3.a68 +@@ -0,0 +1,5 @@ ++{ dg-options "-Whidden-declarations" } ++begin op UPB = (union (int,union(string,real)) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-4.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations" } ++begin ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-5.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=none" } ++begin real b; ++ begin int getchar = 10; ++ int b; ++ op UPB = (int i, union (int,string) v) int: ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-6.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=prelude" } ++begin real b; ++ begin int getchar = 10; { dg-warning "hides" } ++ int b; ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-7.a68 +@@ -0,0 +1,9 @@ ++{ dg-options "-Whidden-declarations=all" } ++begin real b; ++ begin int getchar = 10; { dg-warning "hides" } ++ int b; { dg-warning "hides" } ++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } ++ (v | (string s): UPB s | 0); ++ UPB "lala" ++ end ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-module-hidding-1.a68 +@@ -0,0 +1,6 @@ ++{ dg-options "-Whidden-declarations=all" } ++ ++module Foo = def int i; i := 10 postlude puts ("bye foo'n") fed, ++ Bar = def int j; j := 20 ++ postlude int j; puts ("bye bar'n") fed, { dg-warning "hidden" } ++ Baz = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-pub-loc-1.a68 +@@ -0,0 +1,7 @@ ++module Foo = ++def pub ref int xx = loc int := 777; { dg-warning "" } ++ pub ref int yy; ++ pub ref int zz = heap int := 888; ++ ref int vv = loc int := 999; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++ ++# Potential scope violation warnings are disabled by default. # ++BEGIN PROC increase = (REF INT i) REF INT: ++ BEGIN INT j := i; ++ j # Inhibited warning. # ++ END; ++ increase (LOC INT) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++BEGIN PROC increase = (REF INT i) REF INT: ++ BEGIN ++ INT j := i; ++ j # { dg-warning "scope violation" } # ++ END; ++ increase (LOC INT) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-3.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++(REF INT xx; ++ xx := (INT x; x := 3)) # { dg-warning "scope violation" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++(REF INT xx; ++ (INT x; xx:= x; x := 3)) # { dg-warning "scope violation" } # +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++# The scope violation here is due to the routine text, which is copied ++ to P, referring to a value whose range doesn't exist anymore: X # ++BEGIN (PROC REAL p; ++ (REAL x; ++ p := REAL: x * 2); # { dg-warning "scope violation" } # ++ p) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++BEGIN (PROC REAL p; REAL mypi := 3.14; ++ (REAL x; ++ p := REAL: mypi * 2); # No scope violation here. # ++ p) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-scope-7.a68 +@@ -0,0 +1,12 @@ ++# { dg-options {-Wscope -fstropping=upper} } # ++# N,M below represent pairs of insc, outsc # ++BEGIN (INT x; ++ REF INT xx; ++ (REF INT yy; ++ INT y; ++ xx := yy; # 0,0 := 1,0. Dynamic check. # ++ yy := y; # 1,1 := 1,1. OK # ++ xx := y # 0,0 := 1,1. { dg-warning "scope violation" } # ++ ) ++ ) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options {-Wvoiding -fstropping=upper} } # ++BEGIN PROC sum = (INT a, INT b) INT: ++ ( a + b ); ++ sum (10, 20) # { dg-warning "will be voided" } # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++ ++BEGIN PROC sum = (INT a, INT b) INT: ++ ( a + b ); ++ sum (10, 20) # Voiding warning won't be emitted by default. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# ABS for SIZETY BITS # ++BEGIN ASSERT (255 = ABS 16rff); ++ ASSERT (LONG 255 = ABS LONG 16rff); ++ ASSERT (LONG LONG 255 = ABS LONG LONG 16rff) ++ # XXX test ABS of negative numbers (extension). # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-bool-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS TRUE /= 0); ++ ASSERT (ABS FALSE = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-char-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS "a" = 97) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ABS 10 = 10); ++ ASSERT (ABS -10 = 10); ++ ASSERT (ABS SHORT 10 = SHORT 10); ++ ASSERT (ABS - SHORT 10 = SHORT 10); ++ ASSERT (ABS - SHORT SHORT 10 = SHORT SHORT 10); ++ ASSERT (ABS LONG 10 = LONG 10); ++ ASSERT (ABS - LONG 10 = LONG 10); ++ ASSERT (ABS - LONG LONG 10 = LONG LONG 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper -std=algol68" } # ++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; ++ ASSERT (ABS b = SHORT SHORT INT (SKIP)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-gnu-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper -std=gnu68" } # ++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; ++ ASSERT (ABS b = - SHORT SHORT 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/acos-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arccos (r) = 0.0); ++ long arccos (rr); ++ long long arccos (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/affirm-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (+i = 10); ++ ASSERT (+ii = LONG 10); ++ ASSERT (+iii = LONG LONG 10); ++ ASSERT (+ss = SHORT 10); ++ ASSERT (+sss = SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/and-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# AND for SIZETY BITS. # ++BEGIN BITS b = 16r0f0f0; ++ ASSERT ((b AND 16r0f0f) = 16r0); ++ ASSERT ((b AND 16r00ff) = 16rf0); ++ LONG BITS bb = LONG 16r0f0f0; ++ ASSERT ((bb AND LONG 16r0f0f) = LONG 16r0); ++ ASSERT ((bb AND LONG 16r00ff) = LONG 16rf0); ++ LONG LONG BITS bbb = LONG LONG 16r0f0f0; ++ ASSERT ((bbb AND LONG LONG 16r0f0f) = LONG LONG 16r0); ++ ASSERT ((bbb AND LONG LONG 16r00ff) = LONG LONG 16rf0); ++ SHORT BITS ss = SHORT 16r0f0f0; ++ ASSERT ((ss AND SHORT 16r0f0f) = SHORT 16r0); ++ ASSERT ((ss AND SHORT 16r00ff) = SHORT 16rf0); ++ SHORT SHORT BITS sss = SHORT SHORT 16r0f0f0; ++ ASSERT ((sss AND SHORT SHORT 16r0f0f) = SHORT SHORT 16r0); ++ ASSERT ((sss AND SHORT SHORT 16r00ff) = SHORT SHORT 16rf0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/andf-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ASSERT (i /= 0 ANDTH i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ascription-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Make sure structs are copied when ascribed. # ++BEGIN MODE BAR = STRUCT (INT j, REAL r); ++ MODE FOO = STRUCT (INT i, BAR bar); ++ ++ FOO f1 := (10, (20, 3.14)); ++ FOO f2 = f1; ++ ++ j OF bar OF f1 := 200; ++ ASSERT (j OF bar OF f1 = 200); ++ ASSERT (j OF bar OF f2 = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/asin-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arcsin (r) = 0.0); ++ long arcsin (rr); ++ long long arcsin (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assert-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-char-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN CHAR c; ++ c := "x"; ++ ASSERT (c = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ i := 20; ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN x := 100; ++ INT x; ++ ASSERT (x = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT j = LOC INT; ++ INT i; ++ i := j := 20; ++ ASSERT (i + j = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT xx; ++ INT x := 10; ++ ASSERT ((xx := (x)) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-int-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ x := 20; ++ ASSERT ((xx := (INT j; x)) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT ([2:3]INT m, [1:5]REAL g) s; ++ g OF s:= (1.0, 2.0, 3.0, 4.0, 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-2.a68 +@@ -0,0 +1,15 @@ ++begin [5]struct(char i, real r) foo; ++ ++ { The stride in the single dimension of the multiple resulting ++ from the selection is not the size of a 'char'. } ++ i of foo := ("a","b","c","d","e"); ++ puts ((i of foo) + "'n"); ++ { Via indexing then selection. } ++ assert (i of foo[1] = "a"); ++ assert (i of foo[2] = "b"); ++ assert (i of foo[3] = "c"); ++ assert (i of foo[4] = "d"); ++ assert (i of foo[5] = "e"); ++ { Via selection of multiple. } ++ assert (i of foo = "abcde"); ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT one, two, three); ++ NODE top; ++ top := (10,20,30); ++ ASSERT (two OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Struct containing a multiple, which must be copied when ++ the struct value is assigned. # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1; ++ f1 := ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/atan-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (arctan (r) = 0.0); ++ long arctan (rr); ++ long long arctan (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/balancing-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x, y; ++ REF REAL xx, yy; ++ xx := yy := x; ++ ++ ASSERT (xx :=: x); ++ ASSERT (x :=: xx); ++ ASSERT (xx :/=: yy); ++ ASSERT (REF REAL (xx) :=: yy); ++ ASSERT (xx :=: REF REAL (yy)); ++ ASSERT (REF REAL (xx) :=: REF REAL (yy)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/balancing-rows-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB IF FALSE THEN []INT (1) ELSE [,]REAL (1) FI = 1); ++ ASSERT (2 UPB CASE 2 IN []INT (1), [,]REAL (1) ESAC = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# BIN for SIZETY INTs # ++BEGIN ASSERT (BIN 255 = 16rff); ++ ASSERT (BIN LONG 255 = LONG 16rff); ++ ASSERT (BIN LONG LONG 255 = LONG LONG 16rff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-negative-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper -std=algol68" } # ++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/bin-negative-gnu-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper -std=gnu68" } # ++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r11111110) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/boolops-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BOOL t := TRUE; ++ BOOL f := FALSE; ++ ASSERT (NOT t = FALSE); ++ ASSERT (~t = FALSE); ++ ASSERT ((t AND t) = TRUE); ++ ASSERT ((t AND f) = FALSE); ++ ASSERT ((f AND f) = FALSE); ++ ASSERT ((f AND t) = FALSE); ++ ASSERT ((t OR t) = TRUE); ++ ASSERT ((t OR f) = TRUE); ++ ASSERT ((f OR f) = FALSE); ++ ASSERT ((f OR t) = TRUE); ++ ASSERT ((t XOR t) = FALSE); ++ ASSERT ((t XOR f) = TRUE); ++ ASSERT ((f XOR f) = FALSE); ++ ASSERT ((f XOR t) = TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/call-1.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Calling a procedure that gets a row of united values. # ++BEGIN INT num ints := 0, num reals := 0, num strings := 0; ++ PROC foo = ([]UNION(INT,REAL,STRING) d) VOID: ++ BEGIN FOR i TO UPB d ++ DO CASE d[i] ++ IN (STRING): num strings +:= 1, ++ (INT): num ints +:= 1, ++ (REAL): num reals +:= 1 ++ ESAC ++ OD ++ END; ++ foo (()); ++ foo (10); ++ ASSERT (num ints = 1 AND num reals = 0 AND num strings = 0); ++ num ints := 0; ++ foo (("baz", 1, 3.14, 2, 0.0, "foo")); ++ ASSERT (num ints = 2 AND num reals = 2 AND num strings = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/call-2.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT control := 0; ++ PROC set control = (PROC(INT)VOID p) VOID: p (100); ++ PROC setter = (INT i) VOID: control := i; ++ PROC(INT)VOID setter 2 = (INT i) VOID: control := i + 1; ++ PROC(INT)VOID setter 3 := setter 2; ++ PROC(INT)VOID setter 4 := (INT i) VOID: control := i + 2; ++ REF PROC(INT)VOID setter 5 := setter 4; ++ set control (setter); ++ ASSERT (control = 100); ++ set control (setter 2); ++ ASSERT (control = 101); ++ control := 0; ++ set control (setter 3); ++ ASSERT (control = 101); ++ set control (setter 4); ++ ASSERT (control = 102); ++ control := 0; ++ set control (setter 5); ++ ASSERT (control = 102) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j := 1; ++ ASSERT ((j|10,20,30|40) = 10); ++ j := 2; ++ ASSERT ((j|10,20,30|40) = 20); ++ j := 3; ++ ASSERT ((j|10,20,30|40) = 30); ++ j := 100; ++ ASSERT ((j|10,20,30|40) = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ ASSERT (CASE INT x = 10; i ++ IN x + 1, ++ x + 2, ++ x + 3 ++ ESAC = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT days, INT month = 2, year = 2024; ++ days := CASE month ++ IN 31, (year MOD 4 = 0 AND year MOD 100 /= 0 OR year MOD 400 = 0 | 29 | 28), ++ 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ESAC; ++ ASSERT (days = 29) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/case-clause-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT day = 3; ++ STRING day name = (day | "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"); ++ ASSERT (day name[1] = "W") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/closed-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL pie, my small real := 0.001; ++ PROC my sqrt = (REAL r) REAL: r; ++ BEGIN REAL w := 0, INT i := 1, REAL z = my sqrt (my small real / 2); ++ loop: w := w + 2 / (i * (i + 2)); ++ i := i + 4; ++ IF 1/i > z THEN GO TO loop FI; ++ pie := 4 * w ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/closed-clause-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL my small real := 0.001; ++ PROC my sqrt = (REAL r) REAL: r; ++ REAL res = 4 * (REAL w := 0, INT i := 1; REAL z = my sqrt (my small real / 2); ++ loop: w := w + 2/(i * (i + 2)); i := i + 4; ++ IF 1/i > z THEN loop FI; ++ w); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ (i, i + 1, i + 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ( ++ BEGIN ++ (i + 1, i +:= 1, i + 2) ++ END ++ ); ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ( ++ i +:= 1; ++ BEGIN ++ (i + 1, (i +:= 1, i + 10, i + 11, SKIP), i + 2) ++ END; ++ i +:= i ++ ); ++ ASSERT (i = 24) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (SKIP,SKIP) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x, y, z; ++ (x := 1, y := 2, z := 3); ++ ASSERT (x = 1 AND y = 2 AND z = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ PROC side = INT: (i := 1; i := 2; i); ++ PROC add = (INT ii, INT jj) INT: ii + jj; ++ INT res = add (side, side); ++ # can be 3 or 4 due to collateral evaluation of arguments. # ++ ASSERT (res = 3 OR res = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ BEGIN (i := 20 EXIT ++cont: i := 30 ++ ); ++ i +:= 1 ++ END; ++ ASSERT (i = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-10.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT xx := x; ++ REF REF INT xxx; ++ REF INT i := (x := 10; xxx := xx EXIT foo: xxx EXIT bar: xxx := xx); ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = (foo; ++ 10 EXIT ++foo: 20 EXIT ++bar: 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = ((((foo; 10 EXIT foo: 20 EXIT bar: 30)))); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := (foo; 10 EXIT foo: 20 EXIT bar: 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x; ++ REF INT i := (foo; x := 10 EXIT foo: x := 20 EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (foo; x := 10 EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (x := 10 EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-8.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT i := (x EXIT foo: x EXIT bar: x := 30); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/completer-9.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 20; ++ REF INT xx := x; ++ REF INT i := (xx EXIT foo: xx EXIT bar: xx := x); ++ ASSERT (i = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10, x; ++ IF i > 5 THEN x := i FI; ++ ASSERT (x = i) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10, x; ++ IF i < 5 THEN x = i FI; ++ ASSERT (x /= i) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 5; ++ IF i = 5 ++ THEN 0 ++ ELSE ASSERT (FALSE); 1 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-4.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations in enquiry clause. # ++(INT i; i := 3 ; i := 2; i /= i | ASSERT (FALSE); 1 | 0) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-5.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++# Closed clauses in enquiry clause. # ++((INT i; (i := 3 ; i := 2); ((i /= i))) | ASSERT (FALSE); 1 | 0) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-6.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested conditional clauses # ++BEGIN ++ INT i = 10; ++ IF i > 5 THEN ++ IF i < 15 THEN ++ IF i > 11 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++ FI ++ ELSE ++ IF i > 100 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-7.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested conditional clauses # ++BEGIN ++ INT i = 12; ++ IF i > 5 THEN ++ IF i < 15 THEN ++ IF i > 11 THEN ++ 0 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++ ELSE ++ IF i > 100 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-8.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# ELIF # ++BEGIN ++ INT i = 12; ++ IF i > 20 THEN ++ 1 ++ ELIF i > 5 THEN ++ BEGIN ++ IF FALSE THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++ END ++ ELIF i < 10 THEN ++ ASSERT (FALSE); ++ 1 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cond-clause-9.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++# ELIF with ELSE # ++BEGIN ++ INT i = 12; ++ IF i > 20 THEN ++ 1 ++ ELIF i > 12 THEN ++ BEGIN ++ IF FALSE THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ ASSERT (FALSE); ++ 1 ++ FI ++ END ++ ELIF i < 10 THEN ++ ASSERT (FALSE); ++ 1 ++ ELSE ++ 0 ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := 10; ++ INT i = CASE datum ++ IN (REAL): 2, ++ (INT i): i + 1, ++ (CHAR): 3 ++ ESAC; ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := "X"; ++ INT i = CASE datum ++ IN (REAL): 2, ++ (INT val): val + 1 ++ OUT INT x = 100; ++ x + 10 ++ ESAC; ++ ASSERT (i = 110) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); ++ DATUM datum := 20; ++ INT i = CASE INT i = 10; datum ++ IN (REAL): 2, ++ (INT val): val + i ++ OUT INT x = 100; ++ x + 10 ++ ESAC; ++ ASSERT (i = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []UNION(INT,STRING,REAL) datum = (10, 3.14, "foo", 200); ++ ASSERT (CASE datum[1] IN (INT): 100 ESAC = 100); ++ ASSERT (CASE datum[2] IN (REAL): 200 ESAC = 200); ++ ASSERT (CASE datum[3] IN (STRING): 300 ESAC = 300); ++ ASSERT (CASE datum[4] IN (INT): 400 ESAC = 400) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-5.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(CHAR,BOOL,INT,REAL) cbira := "X"; ++ IF CASE cbira ++ IN (BOOL b): b, ++ (INT i): i > 0, ++ (REAL r): r > 0 ++ OUT FALSE ++ ESAC ++ THEN # We get here if cbira was not a CHAR and was otherwise ++ TRUE or >0, as the case may be. ++ # ++ ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = 10; ++ IF (cbra | (CHAR): FALSE, (BOOL b): b ++ |: ira | (INT i): i > 0, (REAL r): r > 0) ++ THEN SKIP ++ ELSE ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-7.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = -10; ++ IF (cbra | (CHAR): FALSE, (BOOL b): b ++ |: ira | (INT i): i > 0, (REAL r): r > 0) ++ THEN ASSERT (FALSE) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-8.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE JORL = STRUCT (UNION(INT,REAL) i, REF JORL next); ++ REF JORL p := HEAP JORL := (10, HEAP JORL := (20.0, NIL)); ++ p := HEAP JORL := (30, p); ++ INT num ints := 0, num reals := 0; ++ WHILE REF JORL (p) ISNT NIL ++ DO CASE i OF p IN (INT): num ints +:= 1, (REAL): num reals +:= 1 ESAC; ++ p := next OF p ++ OD; ++ ASSERT (num ints = 2 AND num reals = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-9.a68 +@@ -0,0 +1,10 @@ ++begin union (int, bool, string) foo = 666; ++ case foo ++ in (union(int,string) bar): ++ case bar ++ in (int i): assert (i = 666), ++ (string s): assert (false) ++ esac, ++ (bool baz): assert (false) ++ esac ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/conj-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ CONJ z; ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ CONJ zz; ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ CONJ zzz; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/cos-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (cos (r) = 1.0); ++ long cos (rr); ++ long long cos (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/declarer-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Tests a jump out of the elaboration of a declarer. # ++BEGIN STRING month = CASE 13 ++ IN "Jan", "Feb","March","April","May","June", ++ "July","Aug","Sept", "Oct", "Nov","Dec", ++ stop ++ ESAC; ++ ASSERT (FALSE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/declarer-2.a68 +@@ -0,0 +1,6 @@ ++begin int n := 1; ++ { The actual-declarer below should be ++ elaborated only once. } ++ [1: n +:= 1]real a, b; ++ assert (n = 2) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deprocedure-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x = 100; ++ PROC foo = INT: (INT i = 10, j = 20; PROC bar = INT: 100; i + j + bar); ++ ASSERT (foo = 130) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deprocedure-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure variables. # ++BEGIN INT x = 100; ++ PROC foo := INT: (INT i = 10, j = 20; PROC bar := INT: 100; i + j + bar); ++ ASSERT (foo = 130) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT res := (REF INT xx := x; xx); ++ ASSERT (res = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT y := 20; ++ REF INT xx := x; ++ CO This makes xx to refer to y ++ REF REF INT := REF INT ++ CO ++ xx := y; ++ y := 30; ++ ASSERT (xx = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ INT y := 20; ++ REF INT xx := x; ++ # This sets x to the current value of y # ++ REF INT (xx) := y; ++ ASSERT (x = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-5.a68 +@@ -0,0 +1,42 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ASSERT (x = 10); ++ ASSERT (xx = 10); ++ ASSERT (xxx = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x + 1 = 11); ++ ASSERT (xx + 1 = 11); ++ ASSERT (xxx + 1 = 11); ++ ASSERT ((x + 1) = 11); ++ ASSERT ((xx + 1) = 11); ++ ASSERT ((xxx + 1) = 11); ++ ASSERT ((x := x) = 10); ++ ASSERT ((xx := x) = 10); ++ ASSERT ((xxx := xx) = 10); ++ ASSERT ((x := x) + 1 = 11); ++ ASSERT ((xx := x) + 1 = 11); ++ ASSERT ((xxx := xx) + 1 = 11); ++ x := 20; ++ ASSERT (x = 20); ++ ASSERT (xx = 20); ++ ASSERT (xxx = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x + 1 = 21); ++ ASSERT (xx + 1 = 21); ++ ASSERT (xxx + 1 = 21); ++ ASSERT ((x + 1) = 21); ++ ASSERT ((xx + 1) = 21); ++ ASSERT ((xxx + 1) = 21); ++ ASSERT ((x := x) = 20); ++ ASSERT ((xx := x) = 20); ++ ASSERT ((xxx := xx) = 20); ++ ASSERT ((x := x) + 1 = 21); ++ ASSERT ((xx := x) + 1 = 21); ++ ASSERT ((xxx := xx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-6.a68 +@@ -0,0 +1,48 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. # ++BEGIN MODE S = STRUCT (REF INT x, REF REF INT xx, REF REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s = (x, xx, xxx); ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := x) = 10); ++ ASSERT ((xxx OF s := xx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := x) + 1 = 11); ++ ASSERT ((xxx OF s := xx) + 1 = 11); ++ x OF s := 20; ++ ASSERT (x OF s = 20); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 21); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 21); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := x) = 20); ++ ASSERT ((xxx OF s := xx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := x) + 1 = 21); ++ ASSERT ((xxx OF s := xx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-7.a68 +@@ -0,0 +1,48 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. Version with sub-names. # ++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s := (x, xx, xxx); ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := xx) = 10); ++ ASSERT ((xxx OF s := xxx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := xx) + 1 = 11); ++ ASSERT ((xxx OF s := xxx) + 1 = 11); ++ x := 20; ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := xx) = 20); ++ ASSERT ((xxx OF s := xxx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := xx) + 1 = 21); ++ ASSERT ((xxx OF s := xxx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/deref-8.a68 +@@ -0,0 +1,53 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing of struct fields. Version with sub-names and ++ explicit assignations instead of initialization in variable declaration. # ++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); ++ ++ INT x := 10; ++ REF INT xx := x; ++ REF REF INT xxx := xx; ++ ++ S s; ++ ++ x OF s := x; ++ xx OF s := xx; ++ xxx OF s := xxx; ++ ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 10); ++ ASSERT (xxx OF s = 10); ++ ASSERT ((x) = 10); ++ ASSERT ((xx) = 10); ++ ASSERT ((xxx) = 10); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 11); ++ ASSERT (xxx OF s + 1 = 11); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 11); ++ ASSERT ((xxx OF s + 1) = 11); ++ ASSERT ((x OF s := x) = 10); ++ ASSERT ((xx OF s := xx) = 10); ++ ASSERT ((xxx OF s := xxx) = 10); ++ ASSERT ((x OF s := x) + 1 = 11); ++ ASSERT ((xx OF s := xx) + 1 = 11); ++ ASSERT ((xxx OF s := xxx) + 1 = 11); ++ x := 20; ++ ASSERT (x OF s = 10); ++ ASSERT (xx OF s = 20); ++ ASSERT (xxx OF s = 20); ++ ASSERT ((x) = 20); ++ ASSERT ((xx) = 20); ++ ASSERT ((xxx) = 20); ++ ASSERT (x OF s + 1 = 11); ++ ASSERT (xx OF s + 1 = 21); ++ ASSERT (xxx OF s + 1 = 21); ++ ASSERT ((x OF s + 1) = 11); ++ ASSERT ((xx OF s + 1) = 21); ++ ASSERT ((xxx OF s + 1) = 21); ++ ASSERT ((x OF s := x) = 20); ++ ASSERT ((xx OF s := xx) = 20); ++ ASSERT ((xxx OF s := xxx) = 20); ++ ASSERT ((x OF s := x) + 1 = 21); ++ ASSERT ((xx OF s := xx) + 1 = 21); ++ ASSERT ((xxx OF s := xxx) + 1 = 21) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/div-int-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ ASSERT (i / 2 = 5.0); ++ ASSERT (ii / LONG 2 = LONG 5.0); ++ ASSERT (iii / LONG LONG 2 = LONG LONG 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/divab-real-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r := 3.14; ++ r DIVAB 2.0; ++ r /:= 2.0; ++ LONG REAL rr := LONG 3.14; ++ rr DIVAB LONG 2.0; ++ rr /:= LONG 2.0; ++ LONG LONG REAL rrr := LONG LONG 3.14; ++ rrr DIVAB LONG LONG 2.0; ++ rrr /:= LONG LONG 2.0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elem-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# ELEM for SIZETY BITS # ++BEGIN BITS b = 2r1010; ++ ASSERT ((bits width - 1) ELEM b); ++ ASSERT (NOT ((bits width - 2) ELEM b)); ++ LONG BITS bb = LONG 2r1010; ++ ASSERT ((long bits width - 1) ELEM bb); ++ ASSERT (NOT ((long bits width - 2) ELEM bb)); ++ LONG LONG BITS bbb = LONG LONG 2r1010; ++ ASSERT ((long long bits width - 1) ELEM bbb); ++ ASSERT (NOT ((long long bits width - 2) ELEM bbb)); ++ SHORT BITS ss = SHORT 2r1010; ++ ASSERT ((short bits width - 1) ELEM ss); ++ ASSERT (NOT ((short bits width - 2) ELEM ss)); ++ SHORT SHORT BITS sss = SHORT SHORT 2r1010; ++ ASSERT ((short short bits width - 1) ELEM sss); ++ ASSERT (NOT ((short short bits width - 2) ELEM sss)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elems-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (ELEMS "foo" = 3); ++ ASSERT (ELEMS "" = 0); ++ ASSERT (1 ELEMS "foo" = 3); ++ ASSERT (1 ELEMS "" = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/elems-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Flat and ultra-flat multiples. # ++BEGIN [3,10:3]INT arr; ++ ASSERT (2 ELEMS arr = 0); ++ [1:0]INT arr2; ++ ASSERT (ELEMS arr2 = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/entier-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x = 3.14, y = 3.80; ++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; ++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; ++ ASSERT (ENTIER x = 3 AND ENTIER y = 3); ++ ASSERT (ENTIER xx = LONG 3 AND ENTIER yy = LONG 3); ++ ASSERT (ENTIER xxx = LONG LONG 3 AND ENTIER yyy = LONG LONG 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY INTs # ++BEGIN ASSERT (max int /= 0); ++ (INT max int = 10; ASSERT (max int = 10)); ++ ASSERT (long max int >= LENG max int); ++ ASSERT (long long max int >= LENG long max int); ++ ASSERT (min int /= 0); ++ ASSERT (long min int <= LENG min int); ++ ASSERT (long long min int <= LENG long min int) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-2.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY REALs # ++BEGIN ASSERT (max real /= 0.0); ++ ASSERT (long max real >= LENG max real); ++ ASSERT (long long max real >= LENG long max real); ++ ASSERT (min real /= 0.0); ++ ASSERT (long min real <= LENG min real); ++ ASSERT (long long min real <= LENG long min real); ++ ASSERT (small real > 0.0); ++ ASSERT (long small real > LONG 0.0); ++ ASSERT (long long small real > LONG LONG 0.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY BITS # ++BEGIN ASSERT (bits width > 0); ++ ASSERT (long bits width >= bits width); ++ ASSERT (long long bits width >= long bits width); ++ ASSERT (short bits width <= bits width); ++ ASSERT (short short bits width <= short bits width) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for pi constants. # ++BEGIN ASSERT (pi > 3.0 AND pi < 4.0); ++ ASSERT (long pi > LONG 3.0 AND long pi < LONG 4.0); ++ ASSERT (long long pi > LONG LONG 3.0 AND long long pi < LONG LONG 4.0) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for certain particular characters. # ++BEGIN ASSERT (null character /= blank); ++ ASSERT (max abs char = ABS 16r10ffff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY BITs # ++BEGIN ASSERT (max bits /= 10r0); ++ # XXX use LENG max bits below # ++ ASSERT (long max bits >= LONG 10r0); ++ ASSERT (long long max bits >= LONG LONG 10r0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-7.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for widths # ++BEGIN ASSERT (int width > 0); ++ ASSERT (long int width > 0); ++ ASSERT (long long int width > 0); ++ ASSERT (short int width > 0); ++ ASSERT (short short int width > 0); ++ ASSERT (real width > 0); ++ ASSERT (long real width > 0); ++ ASSERT (long long real width > 0) ++CO exp width; ++ long exp width; ++ long long exp width; ++CO ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-8.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (flip = "T"); ++ ASSERT (flop = "F"); ++ ASSERT (error char = "*"); ++ ASSERT (ABS replacement char = ABS 16rfffd) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-bits-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; ++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; ++ ASSERT (b = 2r0); ++ ASSERT (bb EQ LONG 8r377); ++ ASSERT (bbb = LONG LONG 8r0); ++ ASSERT (ss EQ SHORT 8r377); ++ ASSERT (sss = SHORT SHORT 8r0) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-char-char-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" = "a") ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (12 = i); ++ ASSERT (ii = LONG 12); ++ ASSERT (iii = LONG LONG 12); ++ ASSERT (s = SHORT 12); ++ ASSERT (ss = SHORT SHORT 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-string-1.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ # = # ++ ASSERT ("" = ""); ++ ASSERT ("foo" = foo); ++ ASSERT (NOT (foo = bar)); ++ ASSERT (NOT (foo = quux)); ++ ASSERT (NOT (quux = foo)); ++ # EQ # ++ ASSERT ("" EQ ""); ++ ASSERT ("foo" EQ foo); ++ ASSERT (NOT (foo EQ bar)); ++ ASSERT (NOT (foo EQ quux)); ++ ASSERT (NOT (quux EQ foo)) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/eq-string-stride-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "2", "3"), ++ ("4", "5", "6"), ++ ("7", "8", "9")); ++ ASSERT (matrix[1:3,2] = "258") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/execute.exp +@@ -0,0 +1,37 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Execute tests, torture testing. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++load_lib torture-options.exp ++ ++torture-init ++set-torture-options $TORTURE_OPTIONS ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++ set algol68_compile_args "" ++} ++ ++torture-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/factorial-1.a68 +@@ -0,0 +1,170 @@ ++# { dg-options "-fstropping=upper" } # ++# The Most Contrived Factorial Program ++ By John P. Baker ++ University of Bristol. ++ ++ Published in the Algol Bulletin 42. ++ http://jemarch.net/algol-bulletin-42.pdf ++ ++ Version adapted for GCC. ++# ++ ++BEGIN INT one = 1, two = 2, three = 3, four = 4, five = 5, ++ six = 6, seven = 7, eight = 8, nine = 9, ten = 10, ++ eleven = 11, twelve = 12; ++ INT a = one; ++ PRIO ME=5, LOVE=7, MY=7, LORDS=7, LADIES=7, ++ PIPERS=7, DRUMMERS=7, MAIDS=7, SWANS=7, GEESE=7, ++ GOLD=7, COLLY=7, FRENCH=7, TURTLE=7, PARTRIDGE=6; ++ BOOL sent to := TRUE; ++ OP THE = (BOOL a) BOOL: a, ++ TWELFTH = (INT a) BOOL: a = twelve, ++ ELEVENTH = (INT a) BOOL: a = eleven, ++ TENTH = (INT a) BOOL: a = ten, ++ NINTH = (INT a) BOOL: a = nine, ++ EIGHTH = (INT a) BOOL: a = eight, ++ SEVENTH = (INT a) BOOL: a = seven, ++ SIXTH = (INT a) BOOL: a = six, ++ FIFTH = (INT a) BOOL: a = five, ++ FOURTH = (INT a) BOOL: a = four, ++ THIRD = (INT a) BOOL: a = three, ++ SECOND = (INT a) BOOL: a = two, ++ FIRST = (INT a) BOOL: a = one; ++ OP ME = (BOOL a, INT b) VOID: SKIP; # XXX when transput done (a|print(b)) # ++ OP LOVE = (BOOL a, b) BOOL: (a|b|FALSE), ++ MY = (BOOL a, b) BOOL: a LOVE b; ++ OP AND = (INT a) INT: a; ++ MODE DATE = STRUCT (INT day, month); ++ LOC DATE christmas := (25, 12); ++ OP LORDS = (INT a, b) INT: a * b, ++ LADIES = (INT a, b) INT: a * b, ++ PIPERS = (INT a, b) INT: a * b, ++ DRUMMERS = (INT a, b) INT: a * b, ++ MAIDS = (INT a, b) INT: a * b, ++ SWANS = (INT a, b) INT: a * b, ++ GEESE = (INT a, b) INT: a * b, ++ GOLD = (INT a, b) INT: a * b, ++ COLLY = (INT a, b) INT: a * b, ++ FRENCH = (INT a, b) INT: a * b, ++ TURTLE = (INT a, b) INT: a * b; ++ OP LEAPING = (INT a) INT: a, ++ DANCING = (INT a) INT: a, ++ PIPING = (INT a) INT: a, ++ DRUMMING = (INT a) INT: a, ++ MILKING = (INT a) INT: a, ++ SWIMMING = (INT a) INT: a, ++ LAYING = (INT a) INT: a, ++ RINGS = (INT a) INT: a, ++ BIRDS = (INT a) INT: a, ++ HENS = (INT a) INT: a, ++ DOVES = (INT a) INT: a; ++ OP PARTRIDGE = (INT a, b) INT: a + b; ++ INT in a pear tree = 0; ++ ++ # Now we are ready... # ++ ++ THE FIRST day OF christmas MY TRUE LOVE sent to ME ++ a PARTRIDGE in a pear tree; ++ ++ THE SECOND day OF christmas MY TRUE LOVE sent to ME ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE THIRD day OF christmas MY TRUE LOVE sent to ME ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE FOURTH day OF christmas MY TRUE LOVE sent to ME ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE FIFTH day OF christmas MY TRUE LOVE sent to ME ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE SIXTH day OF christmas MY TRUE LOVE sent to ME ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE SEVENTH day OF christmas MY TRUE LOVE sent to ME ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE EIGHTH day OF christmas MY TRUE LOVE sent to ME ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE NINTH day OF christmas MY TRUE LOVE sent to ME ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE TENTH day OF christmas MY TRUE LOVE sent to ME ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE ELEVENTH day OF christmas MY TRUE LOVE sent to ME ++ eleven LADIES DANCING ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ THE TWELFTH day OF christmas MY TRUE LOVE sent to ME ++ twelve LORDS LEAPING ++ eleven LADIES DANCING ++ ten PIPERS PIPING ++ nine DRUMMERS DRUMMING ++ eight MAIDS MILKING ++ seven SWANS SWIMMING ++ six GEESE LAYING ++ five GOLD RINGS ++ four COLLY BIRDS ++ three FRENCH HENS ++ two TURTLE DOVES AND ++ a PARTRIDGE in a pear tree; ++ ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-1.a68 +@@ -0,0 +1,7 @@ ++{ Assigning to the flexible name replaces the descriptor ++ as well as the elements. } ++begin [10:0]int flat1; ++ flex[10:-10]int flat2; ++ flat2 := flat1; ++ assert (UPB flat2 = 0 AND LWB flat2 = 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-2.a68 +@@ -0,0 +1,8 @@ ++{ Assigning to the flexible name replaces the descriptor ++ as well as the elements. } ++begin [1:20,10:0]int flat1; ++ flex[100:200,10:-10]int flat2; ++ flat2 := flat1; ++ assert (1 UPB flat2 = 20 AND 1 LWB flat2 = 1); ++ assert (2 UPB flat2 = 0 AND 2 LWB flat2 = 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[3]INT list := (1,2,3); ++ list[2] := 20; ++ ASSERT (list[2] = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing to flexible rows. # ++BEGIN FLEX[]INT list = 10; ++ ASSERT (list[1] = 10); ++ FLEX[,]INT table = 10; ++ ASSERT (table[1,1] = 10) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Slicing flexible names. # ++BEGIN FLEX[]INT list = (1,2,3); ++ FLEX[]INT sliced = list[2:3]; ++ ASSERT (LWB sliced = 1 AND UPB sliced = 2); ++ ASSERT (sliced[1] = 2 AND sliced[2] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing to flexible rows. # ++BEGIN FLEX[3]INT list := (1,2,3); ++ list := (10,20,30,40); ++ ASSERT (list[4] = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/flex-5.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[1:0]INT a; ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); ++ a := (1,2,3); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 1 AND a[2] = 2 AND a[3] = 3); ++ a := (10,a[2],a[3]); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 10 AND a[2] = 2 AND a[3] = 3); ++ a := 100; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND a[1] = 100); ++ a := (); ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/formula-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP JORL = (INT a, b) INT: a + b; ++ OP JORL = (REAL a, b) REAL: a + b; ++ OP JORL = ([]CHAR s) INT: ELEMS s; ++ PRIO JORL = 6; ++ ASSERT (10 JORL 20 = 30); ++ ASSERT (REAL r = 3.14 JORL REAL (1); r > 4.13 AND r < 4.15); ++ ASSERT (JORL "foo" = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/formula-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ PROC side = INT: (i := 1; i := 2; i); ++ INT res = side + side; ++ # Can be either due to collateral elaboration in the formula above. # ++ ASSERT (res = 3 OR res = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/fsize-1.a68 +@@ -0,0 +1,2 @@ ++begin assert (fsize (-1) = - long long 1) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ge-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i >= 10); ++ ASSERT (ii GE LONG 10); ++ ASSERT (iii >= LONG LONG 12); ++ ASSERT (s >= SHORT 12); ++ ASSERT (ss >= SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ge-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "0", "1"), ++ ("4", "0", "4"), ++ ("7", "0", "7")); ++ ASSERT (matrix[1:3,1] >= matrix[1:3,3]); ++ ASSERT (("1","4","7") >= matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-flex-1.a68 +@@ -0,0 +1,10 @@ ++begin flex[10:-10]int je; ++ int num_fields = 3; ++ assert (UPB je = -10 AND LWB je = 10 AND ELEMS je = 0); ++ ++ [1:num_fields][1:num_fields]string fields; ++ for i to num_fields ++ do for j to num_fields ++ do assert (fields[i][j] = "") od ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var = HEAP INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var := HEAP INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ INT var := HEAP INT := 15; # The generated name goes away # ++ ASSERT (var = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-bool-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF BOOL x = HEAP BOOL; ++ ASSERT (x = FALSE); ++ x := TRUE; ++ ASSERT (x = TRUE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-int-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF INT x = HEAP INT := 4; ++ ASSERT (x = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-real-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF REAL x = HEAP REAL := 4; ++ ASSERT (x > 3.9 AND x < 4.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT(INT i, REAL r) foo; ++ ASSERT (i OF foo = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT([10]INT i, REAL r) foo; ++ FOR i FROM LWB i OF foo TO UPB i OF foo ++ DO ASSERT ((i OF foo)[i] = 0) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP STRUCT([10]INT i, STRING s) foo; ++ FOR i FROM LWB i OF foo TO UPB i OF foo ++ DO ASSERT ((i OF foo)[i] = 0) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var = LOC INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ REF INT var := LOC INT; ++ var := jorl := 10; ++ ASSERT (var = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT jorl; ++ INT var := LOC INT := 15; # The generated name goes away # ++ ASSERT (var = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-loc-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ ++ NODE top := (10, NIL); ++ next OF top := LOC NODE := (20, NIL); ++ ASSERT (code OF top = 10); ++ ASSERT (code OF next OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-multiple-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE JORL = [(INT x; x + 1)]INT; ++ JORL xx; ++ ASSERT (ELEMS xx = 1 AND xx[1] = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,[]INT,CHAR) datux; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 0); ++ []INT ja = (1,2,3); ++ datux := ja; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN [10]UNION(INT,REAL,[]INT,CHAR) datux; ++ FOR i FROM LWB datux TO UPB datux ++ DO ASSERT (CASE datux[i] ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 0); ++ []INT ja = (1,2,3); ++ datux[i] := ja; ++ ASSERT (CASE datux[i] ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR): 30, ++ ([]INT): 40 ++ ESAC = 40) ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gen-union-3.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# An union generated from SKIP has -1 as overhead. # ++BEGIN MODE JSONVAL = UNION (JSONOBJ,JSONSTR), ++ JSONSTR = STRING, ++ JSONOBJ = STRUCT (REF JSONFLD fields), ++ JSONFLD = STRUCT (JSONVAL value, REF JSONFLD next); ++ ++ JSONFLD fields; ++ ASSERT (CASE value OF fields ++ IN (JSONSTR s): "string", ++ (JSONOBJ o): "object" ++ OUT "fuckyou" ++ ESAC = "fuckyou") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++beg: IF (i < 5) ++ THEN i +:= 1; ++ GOTO beg ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN GOTO end; ++ ASSERT(FALSE); ++end: SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ INT i := 0; ++ beginning: ++ IF (i < 5) THEN ++ i +:= 1; ++ GO TO beginning ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-4.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ INT i := 0; ++ beginning: ++ IF (i < 5) THEN ++ i +:= 1; ++ beginning ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/goto-5.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is prime = (INT m) BOOL: ++ BEGIN IF m < 2 ++ THEN puts ("program terminated because m is less than 2\n"); ++ GOTO stop ++ FI; ++ ++ BOOL factor found := NOT (ODD m OR m = 2); ++ FOR i FROM 3 BY 2 TO m - 1 WHILE NOT factor found ++ DO factor found := m MOD i = 0 OD; ++ factor found ++ END; ++ ++ ASSERT (is prime (1)); ++ ASSERT (is prime (3)); ++ ASSERT (is prime (71)); ++ ASSERT (is prime (97)); ++ is prime (0); ++ ASSERT (FALSE) # Should jump to stop in the standard postlude. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gt-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i > 10); ++ ASSERT (ii GT LONG 10); ++ ASSERT (iii > LONG LONG 10); ++ ASSERT (s > SHORT 10); ++ ASSERT (ss > SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/gt-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "0", "1"), ++ ("4", "0", "4"), ++ ("7", "0", "6")); ++ ASSERT (matrix[1:3,1] > matrix[1:3,3]); ++ ASSERT (("1","4","7") > matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/i-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4I5; ++ LONG COMPL zz = LONG 4 I LONG 6; ++ LONG LONG COMPL zzz = LONG LONG 4 I LONG LONG7; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/i-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identification-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC a = REAL: b := c; ++ REAL b := 1, c := 2; ++ REAL x := a; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identification-2.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# The identification of c in the assignation marked with XXX works. ++ In some Algol 68 systems the assignation may fail or result in UB, ++ because the storage of the REF REAL c doesn't exist yet. In GNU ++ Algol 68 this works and the value yielded by c is guaranteed to be ++ zero. ++# ++ ++BEGIN REAL b; ++ b := c; # XXX # ++ ASSERT (b = 0); ++ REAL c; ++ c := b ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = x := 20; ++ ASSERT (xx = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = x; ++ ASSERT (xx = 10); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = (x := 20); ++ ASSERT (xx = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx = ((x)); ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1 = ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (1,2,3); ++ ASSERT (ELEMS foo = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][]INT foo = ((1,2,3),(4,5,6)); ++ ASSERT (ELEMS foo = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [3]INT a := (1,2,3); ++ REF[]INT nn = a; # No copy happens here. # ++ nn[1] := 200; ++ ASSERT (a[1] = 200) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-5.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [:]INT foo = (1,2,3); ++ ASSERT (ELEMS foo = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = (); ++ ASSERT (UPB a = 0); ++ ASSERT (LWB a = 1); ++ ASSERT (ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-2.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,,]INT a = (); ++ ASSERT (1 UPB a = 0); ++ ASSERT (1 LWB a = 1); ++ ASSERT (1 ELEMS a = 0); ++ ASSERT (2 UPB a = 0); ++ ASSERT (2 LWB a = 1); ++ ASSERT (2 ELEMS a = 0); ++ ASSERT (3 UPB a = 0); ++ ASSERT (3 LWB a = 1); ++ ASSERT (3 ELEMS a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (ELEMS a = 0)); ++ foo ([]INT()) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0)); ++ foo (()) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-struct-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# An identity declaration shall make a copy of the struct value being ++ ascribed. # ++BEGIN MODE FOO = STRUCT (STRING s, INT n); ++ FOO f1 := ("foo", 10); ++ FOO f2 = f1; ++ f1 := ("bar", 20); ++ ASSERT (n OF f1 = 20); ++ ASSERT (n OF f2 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/infinity-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN infinity; ++ minus infinity ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-ge-bits-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# <= and => for SIZETY BITS # ++BEGIN ASSERT (16rff <= 16rffff); ++ ASSERT (2r101 LE 2r111); ++ ASSERT (2r111 >= 2r101); ++ ASSERT (16rffff GE 16rff); ++ ++ ASSERT (LONG 16rff <= LONG 16rffff); ++ ASSERT (LONG 2r101 LE LONG 2r111); ++ ASSERT (LONG 2r111 >= LONG 2r101); ++ ASSERT (LONG 16rffff GE LONG 16rff); ++ ++ ASSERT (LONG LONG 16rff <= LONG LONG 16rffff); ++ ASSERT (LONG LONG 2r101 LE LONG LONG 2r111); ++ ASSERT (LONG LONG 2r111 >= LONG LONG 2r101); ++ ASSERT (LONG LONG 16rffff GE LONG LONG 16rff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i <= 13); ++ ASSERT (ii LE LONG 13); ++ ASSERT (iii <= LONG LONG 13); ++ ASSERT (s <= SHORT 12); ++ ASSERT (ss <= SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/le-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "Z", "1"), ++ ("4", "Y", "4"), ++ ("7", "X", "9")); ++ ASSERT (matrix[1:3,1] <= matrix[1:3,3]); ++ ASSERT (("1","4","9") <= matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# SHORTEN and LENG on SIZETY BITS # ++BEGIN ASSERT (LENG 16rff = LONG 16rff); ++ ASSERT (SHORTEN LONG 16rffff = 16rffff); ++ ASSERT (LENG LONG 16rffff = LONG LONG 16rffff); ++ ASSERT (SHORTEN LONG LONG 16rffff = LONG 16rffff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-ints-1.a68 +@@ -0,0 +1,27 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY INTs # ++BEGIN # LENG # ++ (SHORT SHORT INT iii = short short max int; ASSERT (LENG iii = LENG short short max int)); ++ (SHORT INT ii = short max int; ASSERT (LENG ii = LENG short max int)); ++ (INT i = max int; ASSERT (LENG i = LENG max int)); ++ (LONG INT ii = long max int; ASSERT (LENG ii = LENG long max int)); ++ # SHORTEN # ++ (SHORT INT i = SHORT 10; SHORT SHORT INT ii = SHORT SHORT 100; ASSERT (ii + SHORTEN i = SHORT SHORT 110)); ++ IF int shorths > 2 ++ THEN (SHORT INT ii = LENG short short max int - SHORT 2; ++ ASSERT (SHORTEN ii = short short max int - SHORT SHORT 2)); ++ (SHORT INT ii = LENG short short max int + SHORT 1; ASSERT (SHORTEN ii = short short max int)); ++ (SHORT INT ii = LENG short short min int - SHORT 1; ASSERT (SHORTEN ii = short short min int)) ++ FI; ++ (INT i = LENG short max int - 2; ASSERT (SHORTEN i = SHORTEN max int - SHORT 2)); ++ (INT i = LENG short max int + 1; ASSERT (SHORTEN i = SHORTEN max int)); ++ (INT i = LENG short min int - 1; ASSERT (SHORTEN i = SHORTEN min int)); ++ (LONG INT ii = LENG max int - LONG 2; ASSERT (SHORTEN ii = max int - 2)); ++ (LONG INT ii = LENG max int + LONG 1; ASSERT (SHORTEN ii = max int)); ++ (LONG INT ii = LENG min int - LONG 1; ASSERT (SHORTEN ii = min int)); ++ IF int lengths > 2 ++ THEN (LONG LONG INT ii = LENG long max int - LONG LONG 2; ASSERT (SHORTEN ii = long max int - LONG 2)); ++ (LONG LONG INT ii = LENG long max int + LONG LONG 1; ASSERT (SHORTEN ii = long max int)); ++ (LONG LONG INT ii = LENG long min int - LONG LONG 1; ASSERT (SHORTEN ii = long min int)) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-reals-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# Environment enquiries for SIZETY REALs # ++BEGIN # LENG # ++ (REAL i = max real; ASSERT (LENG i = LENG max real)); ++ (LONG REAL ii = long max real; ASSERT (LENG ii = LENG long max real)); ++ ++ # SHORTEN # ++ (LONG REAL ii = LENG max real - LONG 2.0; ASSERT (SHORTEN ii = max real - 2.0)); ++ (LONG REAL ii = LENG max real + LONG 1.0; ASSERT (SHORTEN ii = max real)); ++ (LONG REAL ii = LENG min real - LONG 1.0; ASSERT (SHORTEN ii = min real)); ++ IF (long long max real > LENG long max real) ++ THEN (LONG LONG REAL ii = LENG long max real - LONG LONG 2.0; ++ ASSERT (SHORTEN ii = long max real - LONG 2.0)); ++ (LONG LONG REAL ii = LENG long max real + LONG LONG 1.0; ASSERT (SHORTEN ii = long max real)); ++ (LONG LONG REAL ii = LENG long min real - LONG LONG 1.0; ASSERT (SHORTEN ii = long min real)) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lengths-shorths-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (int lengths > 0); ++ ASSERT (int shorths > 0); ++ ASSERT (bits lengths > 0); ++ ASSERT (bits shorths > 0); ++ ASSERT (real lengths > 0); ++ ASSERT (real shorths > 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lisp-1.a68 +@@ -0,0 +1,25 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 0, num chars := 0; ++ PROC collect stats = (REF CONS tree) VOID: ++ BEGIN REF CONS e := tree; ++ WHILE REF CONS (e) ISNT NIL ++ DO CASE car OF e ++ IN (CHAR c): num chars +:= 1, ++ (INT): num ints +:= 1, ++ (REF CONS s): collect stats (s) ++ ESAC; ++ e := cdr OF e ++ OD ++ END; ++ MODE ATOM = UNION (CHAR, INT); ++ MODE CONS = STRUCT (UNION (ATOM, REF CONS) car, REF CONS cdr); ++ PROC list = ([]UNION (ATOM, REF CONS) item) REF CONS: ++ BEGIN REF CONS a := NIL; ++ FOR i FROM UPB item BY -1 TO 1 ++ DO a := HEAP CONS := (item[i], a) OD; ++ a ++ END; ++ REF CONS expression := list (("X", "+", list (("Y", "x", 2)))); ++ collect stats (expression); ++ ASSERT (num ints = 1 AND num chars = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lisp-2.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num constants := 0, num vars := 0, num operators := 0; ++ PROC collect stats = (REF EXPRESSION expr) VOID: ++ BEGIN CASE left OF expr ++ IN (INT): num constants +:= 1, ++ (CHAR): num vars +:= 1, ++ (REF EXPRESSION s): collect stats (s) ++ ESAC; ++ num operators +:= 1; ++ CASE right OF expr ++ IN (INT): num constants +:= 1, ++ (CHAR): num vars +:= 1, ++ (REF EXPRESSION s): collect stats (s) ++ ESAC ++ END; ++ MODE OPERAND = UNION (CHAR,INT,REF EXPRESSION), ++ EXPRESSION = STRUCT (OPERAND left, CHAR operator, OPERAND right); ++ REF EXPRESSION expression := HEAP EXPRESSION := ("X", "+", HEAP EXPRESSION := ("Y", "x", 2)); ++ collect stats (expression); ++ ASSERT (num constants = 1 AND num vars = 2 AND num operators = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ln-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 2.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (ln (r) = 0.0); ++ long ln (rr); ++ long long ln (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/log-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 1.0; ++ LONG REAL rr = LONG 2.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (log (r) = 0.0); ++ long log (rr); ++ long long log (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++ DO i +:= 1; IF i = 5 THEN exit FI ++ OD; ++exit: ASSERT (i = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-10.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a FROM n BY 2 TO n + 2 DO i +:= a OD; ++ ASSERT (i = 2 + 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-11.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Negative steps towards minus infinity. # ++BEGIN INT i := 0, n := -5; ++ BY -1 TO n - 1 DO i -:= 1 OD; ++ ASSERT (i = -8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-12.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 5; ++ FOR a TO n WHILE a < 3 DO i +:= 1 OD; ++ ASSERT (i = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0; ++ FOR a FROM 2 BY 1 WHILE a <= 10 ++ DO i +:= 1 OD; ++ ASSERT (i = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-14.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# The while-part shall not be elaborated if the iterator is exhausted. # ++BEGIN STRING s = "abc", INT j := 0; ++ FOR i TO UPB s WHILE s[i] /= "x" ++ DO j +:= 1 OD; ++ ASSERT (j = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# While loop. # ++BEGIN INT i := 0; ++ WHILE INT j = 5; i < j ++ DO i +:= 1 OD; ++ ASSERT (i = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-3.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested loops. # ++BEGIN INT i := 10, res := 0; ++ WHILE i > 0 ++ DO INT j := 10; ++ WHILE j > 0 ++ DO res +:= 1; ++ j -:= 1 ++ OD; ++ ASSERT (j = 0); ++ i -:= 1; ++ OD; ++ ASSERT (i = 0 AND res = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-4.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested loops and j on outside range. # ++BEGIN INT i := 10, j := 10, res := 0; ++ WHILE i > 0 ++ DO j := 10; ++ WHILE j > 0 ++ DO res +:= 1; ++ j -:= 1 ++ OD; ++ i -:= 1 ++ OD; ++ ASSERT (i = 0 AND j = 0 AND res = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Skip in loop. # ++BEGIN INT i := 0; ++ WHILE i +:= 1; i < 10 ++ DO SKIP OD; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# The range of the while-part shall cover the do-part. # ++BEGIN INT i := 0; ++ WHILE INT incr = 2; i < 10 ++ DO i +:= incr OD; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 5; ++ TO n + 1 DO i +:= 1 OD; ++ ASSERT (i = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-8.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a TO n + 1 DO i +:= a OD; ++ ASSERT (i = 1 + 2 + 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-9.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 0, n := 2; ++ FOR a FROM n TO n + 2 DO i +:= a OD; ++ ASSERT (i = 2 + 3 + 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/loop-overflow-underflow.a68 +@@ -0,0 +1,55 @@ ++{ Test for overflow/underflow in loops with implicit and explicit ++ iterators. } ++ ++begin int count; ++ ++ { Overflow. } ++ count := 0; ++ by 1 while true do count +:= 1 od; ++ assert (count = max_int); ++ ++ count := 0; ++ from max_int do count +:= 1 od; ++ assert (count = 1); ++ count := 0; ++ ++ by max_int do count +:= 1 od; ++ assert (count = 1); ++ ++ count := 0; ++ for i by max_int do count +:= 1 od; ++ assert (count = 1); ++ ++ count := 0; ++ by max_int % 2 do count +:= 1 od; ++ assert (count = 3); ++ ++ count := 0; ++ by max_int - 1 do count +:= 1 od; ++ assert (count = 2); ++ ++ { Underflow. } ++ count := 0; ++ by -1 while true do count +:= 1 od; ++ assert (count = -min_int + 2); ++ ++ count := 0; ++ from min_int by -1 do count +:= 1 od; ++ assert (count = 1); ++ count := 0; ++ ++ by min_int do count +:= 1 od; ++ assert (count = 2); ++ ++ count := 0; ++ for i by min_int do count +:= 1 od; ++ assert (count = 2); ++ ++ count := 0; ++ by min_int % 2 do count +:= 1 od; ++ assert (count = 3); ++ ++ count := 0; ++ by min_int + 1 do count +:= 1 od; ++ assert (count = 2) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lt-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (i < 13); ++ ASSERT (ii LT LONG 13); ++ ASSERT (iii < LONG LONG 13); ++ ASSERT (s < SHORT 13); ++ ASSERT (ss < SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lt-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1", "Z", "1"), ++ ("4", "Y", "4"), ++ ("7", "X", "9")); ++ ASSERT (matrix[1:3,1] < matrix[1:3,3]); ++ ASSERT (("1","4","0") < matrix[1:3,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/lwb-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (LWB "foo" = 1); ++ ASSERT (LWB "" = 1); ++ ASSERT (1 LWB "foo" = 1); ++ ASSERT (1 LWB "" = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/execute.exp +@@ -0,0 +1,29 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++} +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL e = 2.7182818284; REAL circum; ++ circum := 2 * pi * e ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3c.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10, result; ++ result := n * (n + 1) * (2 * n + 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.1a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer denotations. # ++BEGIN 000; 43; 456; 0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Real denotations. # ++BEGIN .5; 0.5; 2.0; .001; ++ 2.3e1; 2e0; 2e+0; 2e-0 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Character denotations. # ++BEGIN "X"; "a"; "1"; "."; " " ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Identifiers. # ++BEGIN INT circum, r, ibm, a1, log2, begin; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity declarations. # ++BEGIN REAL e = 2.7182818284, log2 = 0.618, INT ten = 10, g = 32; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3c.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Equivalent declarations. # ++BEGIN REAL x = 2.34; ++ REF INT n = LOC INT, REF INT m = LOC INT; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3e.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Initialisation. # ++BEGIN CHAR firstchar := "A", lastchar := "Z", currentchar; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Ordinary division. # ++BEGIN ASSERT (4/2 = 2.0); ++ INT a = 4, b = 7; ++ a/b # Yields a value of mode REAL. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2b.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer division. The operator OVER (%) performs integer ++ division with truncation. # ++BEGIN ASSERT (4 % 2 = 2); ++ ASSERT (4 OVER 2 = 2); ++ ASSERT (5 % 3 = 1); ++ ASSERT (5 OVER 3 = 1); ++ INT n = -5, m = -3; ++ ASSERT (n % 3 = -1); ++ ASSERT (n % m = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2c.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Integer modulus. The operator MOD (%*) performs integer modulus ++ with truncation. # ++BEGIN ASSERT (0 MOD 4 = 0); ++ ASSERT (0 %* 4 = 0); ++ ASSERT (5 %* 3 = 2); ++ INT m = 5, n = -3; ++ ASSERT (m MOD n = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.3a.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Exponentiation. # ++BEGIN ASSERT (2 ** 3 = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparison operators. # ++BEGIN REAL x = 2.7, y = 3.6, z = 4.7; ++ ASSERT (x < y); ++ ASSERT ("B" /= "C") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparison operators and boolean operators. # ++BEGIN INT a = 4, b = 5, c = 9, REAL x = 4.7, y = 5.7, z = 6.7; ++ ASSERT (NOT (x + y < z) AND a + b = c) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7d.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Widening. # ++BEGIN REAL x := 4, y := 7, z := 2.7; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7e.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Dereferencing and widening. # ++BEGIN INT n, REAL x = n; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Examples of assignations. # ++BEGIN REAL pi = 3.14, e = 2.71, INT n = 10, REAL circum, INT result; ++ circum := 2 * pi * e; ++ result := n * (n + 1) * ( 2 * n + 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8b.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Coercions and assignations. # ++BEGIN REAL y, INT n, m := 1; ++ y := n % m ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.9.1a.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Arithmetical assignment operators. # ++BEGIN INT m, n := 4; ++ n PLUSAB 1; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5.1a.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# Equivalence. # ++BEGIN INT m := 3; REF INT p = m; ++ ASSERT (m = 3 AND p = 3); ++ BEGIN INT m := 100; ++ ASSERT (m = 100 AND p = 3); ++ m -:= 1; p +:= 1 ++ END; ++ ASSERT (m = 4 AND p = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5d.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# On the availability and accessibility of space. # ++BEGIN INT m := 3, INT five = 5; ++ ASSERT (m = 3); ++ BEGIN INT m := 100; CHAR five = "5"; ++ m +:= 1 ++ END; ++ ASSERT (m = 3 AND five = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.7.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT p := 10, q := 12; ++ FROM p TO q DO (p +:= 1, q +:= 1) OD; ++ ASSERT (p = 13 AND q = 15) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.8.2a.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Using case clauses. # ++BEGIN PROC is divisible = (INT m) BOOL: ++ BEGIN BOOL divisible := FALSE; ++ FOR i TO 4 WHILE NOT divisible ++ DO INT k = (i|3, 5, 7, 11); ++ divisible := m MOD k = 0 ++ OD; ++ divisible ++ END; ++ ASSERT (is divisible (50)); ++ ASSERT (is divisible (253)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.9.1b.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++# Using jumps. # ++BEGIN INT a, INT b = 0, c = 2, d = 10, BOOL e = TRUE; ++ CO The following program using jumps is equivalent to: ++ FOR a FROM b BY c TO d WHILE e DO SKIP OD ++ CO ++ BEGIN INT j := b, INT k = c, m = d; ++ next: IF (k > 0 AND j <= m) OR (k < 0 AND j >= m) OR k = 0 ++ THEN INT i = j; ++ IF e ++ THEN SKIP; j +:= k; GOTO next ++ FI ++ FI; ++ ASSERT (j = 12) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.2a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Monadic lwb and upb. # ++BEGIN INT n := 4; [n]INT a; ++ ASSERT (UPB a = 4); ++ n := 6; ++ ASSERT (UPB a = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.3a.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic lwb an upb. # ++BEGIN [0:10,-4:100]REAL xx; ++ ASSERT (1 LWB xx = 0); ++ ASSERT (1 UPB xx = 10); ++ ASSERT (1 UPB xx = UPB xx); ++ ASSERT (2 LWB xx = -4); ++ ASSERT (2 UPB xx = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [4]REAL x2 := (6, 7, 8, 9); ++ ASSERT (x2[2] > 6.9); ++ ASSERT (x2[2] < 7.1); ++ x2 := (1, 1, 1, 1); ++ ASSERT(x2[2] > 0.9); ++ ASSERT(x2[2] < 1.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6b.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Multi-dimensional row displays. # ++BEGIN [2,3]INT aa := ((1,2,3),(4,5,6)); ++ [2,3,4]REAL bb := (((1,2,3,4), (5,6,7,8), (9,10,11,12)), ++ ((13,14,15,16),(17,18,19,20),(21,22,2,24))); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6c.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Further row displays. # ++BEGIN [4]INT a, b; ++ [4]INT c := a, d := (1,2,3,0); ++ [2,4]INT ab := (a,b), cd := ((0,0,0,0), b); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT (INT day, month, year) indep day = (4, 7, 1776); ++ ASSERT (day OF indep day = 4); ++ ASSERT (month OF indep day = 7); ++ ASSERT (year OF indep day = 1776); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6b.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []STRUCT(CHAR letter, INT integer) roman ++ = (("I",1),("V",5),("X",10),("L",50),("C",100)); ++ # XXX letter OF roman should be ("I","V","X","L","C") # ++ # XXX integer OF roman whould be (1,5,10,50,100) # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6d.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Multiple values and structures. ++ ++ Having strings of different lenghts would not be valid in a variable ++ declaration, but is acceptable in an identity declaration. ++# ++BEGIN []STRUCT ([]CHAR name, INT age) family = ++ (("JOHN", 3), ("ROBERT", 1), ("CATHERINE", 4)); ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1a.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple mode declarations. # ++BEGIN MODE INTEGER = INT; ++ MODE Z = INT, R = REAL, B = BOOL, V = VOID; ++ MODE ARRAYA = [100]INT, ARRAYB = [10,2:9]REAL; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1b.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Dynamic arrays revisited. # ++BEGIN INT p := 2, q := 10; ++ MODE M = [p:q]INT; ++ M a; ++ ASSERT (LWB a = 2 AND UPB a = 10); ++ q := 4; ++ M b; ++ ASSERT (LWB a = 2 AND UPB a = 10); ++ ASSERT (LWB b = 2 AND UPB b = 4); ++ M c = (1,2,3,4); # M is interpreted as formal declarer. ++ Bounds are ignored. ++ # ++ ASSERT (LWB c = 1 AND UPB c = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Rows of integers. # ++BEGIN [][]INT g = ((1,2,3),(4,5),(6,7,8,9)); ++ ASSERT (UPB g[1] = 3 AND UPB g[2] = 2 AND UPB g[3] = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.2a.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure declarations I. # ++BEGIN INT x = 10, y = 20, i = 2; ++ PROC xxx = (INT arg) INT: 10; ++ PROC yyy = (INT arg) INT: 20; ++ PROC zzz = (INT arg) INT: 30; ++ PROC(INT)INT f = IF x > y THEN xxx ELSE zzz FI, ++ g = CASE i IN xxx, yyy, zzz ESAC; ++ PROC(INT)INT h := IF x < y THEN xxx ELSE yyy FI; ++ ASSERT (f (100) = 30); ++ ASSERT (g (200) = 20); ++ ASSERT (h (300) = 10); ++ h := yyy; ++ ASSERT (h (300) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3a.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Using the factorial function in a program # ++BEGIN PROC f = (INT n) INT: ++ BEGIN INT product := 1; ++ FOR i TO n DO product *:= i OD; ++ product ++ END; ++ ASSERT (f(0) = 1); ++ ASSERT (f(1) = 1); ++ ASSERT (f(2) = 2); ++ ASSERT (f(3) = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3c.a68 +@@ -0,0 +1,29 @@ ++# { dg-options "-fstropping=upper" } # ++# Procedure declarations III # ++BEGIN # From the ALGOL68 Revised Report. # ++ PROC my char in string = (CHAR c, REF INT i, []CHAR s) BOOL: ++ BEGIN BOOL found := FALSE; ++ FOR k FROM LWB s TO UPB s WHILE NOT found ++ DO (c = s[k] | i := k; found := TRUE) OD; ++ found ++ END; ++ ASSERT ((INT idx := 0; ++ my char in string ("o", idx, "foo") ++ ANDTH idx = 2)); ++ ASSERT (my char in string ("x", LOC INT, "foo") = FALSE); ++ # Swapping function. # ++ PROC swap = (REF INT a, b) VOID: ++ (INT r = a; a := b; b := r); ++ ASSERT ((INT x := 1, y := 2; ++ swap (x, y); ++ x = 2 AND y = 1)); ++ # Euclid's algorithm. # ++ PROC hcf = (INT m, n) INT: ++ BEGIN INT a := m, b := n; ++ IF a < b THEN swap (a, b) FI; ++ WHILE b /= 0 ++ DO INT c = b; b := a MOD b; a := c OD; ++ a ++ END; ++ ASSERT (hcf (10, 20) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.5a.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive procedures. # ++BEGIN PROC f = (INT m, n) INT: ++ IF n = 0 ++ THEN m ++ ELIF m < n ++ THEN f (n, m) ++ ELSE m * f (m % n, n - 1) + n * f (m - 1, n) ++ FI; ++ f (10, 20); ++ PROC a = (INT m, n) INT: ++ IF m = 0 ++ THEN + 1 ++ ELIF n = 0 ++ THEN a (m - 1, 1) ++ ELSE a (m - 1, a (m, n - 1)) ++ FI; ++ a (10, 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2a.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Using AND and OR # ++BEGIN ASSERT ((2r111 AND 2r101) = 2r101); ++ ASSERT ((16rff AND 2r111) = 16r7) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2b.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Comparing objects of mode BITS # ++BEGIN ASSERT (2r1010 <= 2r1110); ++ ASSERT (4r331 >= 8r74); ++ ASSERT (NOT (2r100 >= 2r011)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2c.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Using BIN # ++BEGIN ASSERT (BIN 7 = 2r111); ++ INT i = 22; ++ ASSERT ((BITS b = BIN i; ABS (b SHL 3) + ABS (b SHL 1)) = 220) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations of flexible names. # ++BEGIN FLEX[1:0]INT n; ++ ASSERT (LWB n = 1 AND UPB n = 0 AND ELEMS n = 0); ++ FLEX[4,6]INT p; ++ ASSERT (1 LWB p = 1 AND 1 UPB p = 4 AND 1 ELEMS p = 4 ++ AND 2 LWB p = 1 AND 2 UPB p = 6 AND 2 ELEMS p = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1b.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Null row displays an string denotations. # ++BEGIN FLEX[4]INT a, FLEX[4,6]INT b, FLEX[10]CHAR c; ++ a := (); ++ ASSERT (LWB a = 1 AND UPB a = 0); ++ b := ((),()); ++ ASSERT (1 LWB b = 1 AND 1 UPB b = 2 ++ AND 2 LWB b = 1 AND 2 UPB b = 0); ++ c := (); ++ c := "" ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Transient references and declarations. # ++BEGIN FLEX[4,6]INT p; ++ []INT q1 = p[3,]; # Transient name is dereferenced giving []INT # ++ REF FLEX[,]INT q5 = p; # p and q5 are different ways of accessing ++ the same name. # ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.2a.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Virtual declarers. # ++BEGIN REF[]INT s; ++ STRUCT ([10]INT a, [4]REF[]INT b) c; ++ UNION (REF FLEX[]INT, PROC(INT)INT) f; ++ FLEX[4][3]INT a; ++ REF FLEX[][]INT aa = LOC FLEX[4][3]INT; ++ [4]FLEX[3]INT b; ++ REF[]FLEX[]INT bb = LOC[4]FLEX[3]INT; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6a.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 3, m := 3; ++ REF INT w := n, z := n, REF INT y = n; ++ # Delivers TRUE since y and n deliver the same variable of mode REF ++ INT. No coercions take place. ++ # ++ ASSERT (y :=: n); ++ # Delivers TRUE. here w is dereferenced to yield n. The right ++ hand side is taken to be strong since dereferencing cannot ++ occur in a soft position. ++ # ++ ASSERT (n :=: w); ++ # Similarly delivers TRUE. Strong position is lhs. # ++ ASSERT (w :=: n); ++ # Delivers TRUE. No coercions take place. # ++ ASSERT (y ISNT m); ++ # Delivers true. w gets coerced to REF INT due to the strong ++ context introduced by the cast. No further coercions take place. ++ # ++ ASSERT (REF INT (w) :=: z); ++ # Delives true. No coercions take place. # ++ ASSERT (w :/=: z) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6b.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ++ [3]INT a := (1,2,3); ++ ++ CO Comparing transient or flex names using an identity relation is ++ undefined. Therefore, a[2:3] :=: a[2:3] is undefined. ++ CO ++ ++ # But the following are defined. # ++ ASSERT (a[1] :=: a[1]); ++ ASSERT (a[1] :/=: a[2]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.5.3a.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Declarations involving global generators. # ++BEGIN REF REAL xx; ++ BEGIN REF REAL x = HEAP REAL := 4; ++ xx := x ++ END; ++ ASSERT (xx = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau02.a68 +@@ -0,0 +1,23 @@ ++{ Case conformity. } ++begin mode M = union ([]int, bool, string); ++ proc prpm = ref proc M: heap proc M := M: "aap "; ++ ++ int control := 0; ++ for n to 4 ++ do case case n ++ in true, ++ if false then "aa" else "b " fi, ++ prpm { Gets deprocedured twice to yield a string. } ++ out loc[1:1]int := 1 { Gets dereferenced then copied. } ++ esac ++ in (union(string, bool) sb): ++ (control +:= 1; ++ (sb | (bool b): assert (b), (string s): assert (s = "b " OR s = "aap "))), ++ ([]int i): ++ (control +:= 1; ++ assert (i[1] = 1)) ++ out assert (false) ++ esac ++ od; ++ assert (control = 4) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Vacuum. # ++BEGIN ASSERT (LWB []INT BEGIN END = 1); ++ ASSERT (UPB []INT() = 0); ++ CO XXX trimmer ASSERT (UPB([]INT())[1:0] = 0); CO ++ ASSERT (2UPB[,]INT([]INT(puts("here");())) = 0); ++ ASSERT (1UPB[,]INT([]INT(puts("there");())) = 1); ++ ASSERT (2UPB[,]INT(()) = 0); ++ CO runtime error: wrong length CO ++ CO 2UPB[,]INT((),(1)) CO ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau05.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Test vaccum as string. # ++BEGIN PROC p = (STRING s) VOID: ++ BEGIN ASSERT (LWB s = 1); ++ ASSERT (UPB s = 0) ++ END; ++ ++ p (""); ++ p (()); ++ p (BEGIN END) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau07.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++# If-, case- and ucase-clauses. # ++BEGIN FOR i ++ DO (i = 1 | 1 |: i = 2 | 2 |: i = 3 | 3 | eo if) OD; ++eo if: ++ ++ FOR i ++ DO (i | 4, 5 |: i - 2 | 6, 7 | eo case) OD; ++eo case: ++ ++ FOR i ++ DO ( (UNION (INT,REAL,CHAR,STRING,BOOL) ++ (i | 1, 1.0, "a", "", TRUE) ++ | (INT): 8, (REAL): 9 ++ |: UNION (CHAR,STRING,BOOL) (i - 2 | "a", "", TRUE) ++ | (CHAR): 10, (STRING): 11 ++ | eo ucase) ) ++ OD; ++eo ucase: ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau08.a68 +@@ -0,0 +1,159 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN stop; # no errors, but loops if not stopped here # ++ ++# A: Statements in the context of a BEGIN block # ++ ++BEGIN label : SKIP; ++ l1:BEGIN SKIP; SKIP END; ++ ++ BEGIN GOTO label; GO TO label END; ++ ++ BEGIN INT a1, a2, a3; ++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; ++ FOR i FROM a1BY a2TO a3 DO SKIP OD ++ END; ++ ++ l2:BEGIN BOOL a; ++ IF a THEN SKIP FI; ++ l5:IF a THEN SKIP FI ++ END; ++ ++ BEGIN PROC VOID a; l6: a; a END; ++ ++ l3 : BEGIN PROC (INT) VOID a; INT b; ++ a(b); l7 : a(b) ++ END; ++ ++ BEGIN REAL a; a:= a; a:= a END; ++ ++ BEGIN REF[]REAL a; INT i; ++ l8 : a[i]:=i; a[i]:=i ++ END; ++ ++ BEGIN BEGIN SKIP END; ++ BEGIN SKIP END ++ END ++END; ++ ++# B: Statements in the context of a ( block # ++ ++( label : SKIP; ++ l1:( SKIP; SKIP ); ++ ++ ( GOTO label; GO TO label ); ++ ++ ( INT a1, a2, a3; ++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; ++ FOR i FROM a1BY a2TO a3 DO SKIP OD ++ ); ++ ++ l2:( BOOL a; ++ IF a THEN SKIP FI; ++ l5:IF a THEN SKIP FI ++ ); ++ ++ ( PROC VOID a; l6: a; a ); ++ ++ l3 : ( PROC (INT) VOID a; INT b; ++ a(b); l7 : a(b) ++ ); ++ ++ ( REAL a; a:= a; a:= a ); ++ ++ ( REF[]REAL a; INT i; ++ l8 : a[i]:=i; a[i]:=i ++ ); ++ ++ ( ( SKIP ); ++ ( SKIP ) ++ ) ++); ++ ++# C: Statements in the context of IF statement # ++ ++BEGIN BOOL true; ++ ++ IF true THEN SKIP; SKIP FI; ++ ++ IF true THEN SKIP ELSE SKIP; SKIP FI; ++ ++ IF true THEN IF true THEN SKIP FI ++ FI; ++ ++ IF true THEN IF true THEN SKIP FI ++ ELSE SKIP FI; ++ ++ IF true THEN IF true THEN SKIP ELSE SKIP FI ++ FI; ++ ++ IF true THEN IF true THEN SKIP ELSE SKIP FI ++ ELSE SKIP FI; ++ ++ IF true THEN SKIP ++ ELSE IF true THEN SKIP FI ++ FI; ++ ++ IF true THEN SKIP ++ ELSE IF true THEN SKIP ELSE SKIP FI; ++ IF true THEN SKIP FI; SKIP ++ FI ++ ++END; ++ ++# D: Statements in the context of a FOR statement # ++ ++BEGIN INT a1, a2, a3; BOOL true; ++ PROC VOID proc1; PROC (INT) VOID proc2; ++ REAL aa; REF[]REAL bb; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO SKIP; SKIP OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO GOTO stop; GOTO stop OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO IF true THEN SKIP FI; ++ IF true THEN SKIP FI OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO FOR i FROM a1 BY a2 TO a3 ++ DO SKIP OD; ++ FOR i FROM a1 BY a2 TO a3 ++ DO SKIP OD OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO proc1; proc1 OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO proc2(a1); proc2(a1) OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO aa := aa; aa := aa OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO bb [i] := a1; bb[i] := a1 OD; ++ ++ FOR i FROM a1 BY a2 TO a3 ++ DO BEGIN SKIP END; ++ BEGIN SKIP END OD ++ ++END; ++ ++# E: Statements in the context of a routine declaration # ++ ++BEGIN BOOL true; INT a1, a2, a3; ++ REF[]INT a4 = a1; REAL a5; ++ PROC a = VOID:SKIP; ++ PROC b = VOID: IF TRUE THEN SKIP FI; ++ PROC c = VOID: FOR i FROM a1 BY a2 TO a3 DO SKIP ++ OD; ++ PROC d = VOID: d; ++ PROC (INT) VOID e = (INT f) VOID: e(f); ++ PROC f = VOID: a5:=a5; ++ PROC g = VOID: a4[a1] := a1; ++ PROC h = VOID: BEGIN SKIP END; ++ ++ SKIP ++END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/clau09.a68 +@@ -0,0 +1,82 @@ ++# { dg-options "-fstropping=upper" } # ++# Optimisation correct? # ++BEGIN ++ PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := i; ++ STRING res := (i < 0 | n := -n; "-"); ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); ++ n %:= 10 ++ OD; ++ res ++ FI ++ END; ++ ++ puts("\nPrints errors only\n"); ++ ++ PROC puti = (INT i, INT p, q) VOID: ++ IF p /= q THEN puts (itoa (i) + "," + itoa (p) + "," + itoa (q)) FI; ++ ++ PROC putr = (INT i, REAL p, q) VOID: ++ IF p /= q THEN puts (itoa (i) + ", p /= q") FI; ++ ++BEGIN ++ [1:3]INT a; ++ a[1]:=2; a[2]:=3; a[3]:=1; ++ putr(1, 44.9104, ++ (-1.0+(-2.0+(-3.0+(-4.0+2)))) ++ +( ++ (-5.0+(-2.0-(-5.0+(-2.0-7)))) ++ -( ++ a[a[a[a[a[2]]]]] ++ +( ++ a[a[a[a[a[1]]]]] ++ -( ++ a[a[a[a[a[3]]]]] ++ + ( ++ (-1.0*(-2.0*(-3.0*(-4.0*2)))) ++ - ( ++ (-5.0*(-2.0*(-5.0*(-2.0*7)))) ++ * ( ++ 128*(-1.0/(-2.0/(-4.0/(-4.0/2)))) ++ / ( ++ (-10.0/(-5.0/(-5.0/(-2.0/2)))) ++ ** ++ a[a[a[a[a[2]]]]] ++ ** ++ a[a[a[a[a[1]]]]] ++ ** ++ a[a[a[a[a[3]]]]] ++ )))))))) ++ ) ++END; ++ ++BEGIN REAL x; [1:20]REAL a; ++ FOR i FROM 1 BY 1 TO 20 ++ DO a[i] := i-10 OD; ++ x := a[1]+(a[2]+(a[3]+(a[4]+(a[5]+(a[6]+(a[7]+(a[8]+(a[9]+ ++ (a[10]+(a[11]+(a[12]+(a[13]+(a[14]+(a[15]+(a[16]+ ++ (a[17]+(a[18]+(a[19]+(a[20])))))))))))))))))))-9.0; ++ putr(2, 1.0, x) ++END; ++ ++BEGIN ++ ++ [1:10]INT a; ++ ++ FOR i FROM 1 BY 1 TO 9 DO a[i]:=i+1 OD; ++ a[10]:=1; ++ ++ FOR i FROM 1 BY 1 TO 10 ++ DO puti(3, i, a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[i ++ ]]]]]]]]]]]]]]]]]]]] ++ ) ++ OD ++END; ++ ++ puts ("\nEnd of tests\n"); ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer01.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((REAL x := 0; REF[]REAL (x) := 1; x) = 1.0); ++ ASSERT ((INT n := 0; n +:= 1 := 5) = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer02.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++# Widening # ++BEGIN ++ FOR i TO 2 DO ++ ASSERT ( ++ CASE i IN TRUE, 2r1 OUT []BOOL(TRUE) ESAC ++ [CASE i IN 1 , bits width OUT SKIP ESAC] ++ ) OD; # TT # ++ ++ INT n := 1; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 1.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); ++ n := 2; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 2.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); ++ n := 3; ++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 3.0); ++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 5.0) ++ # 1.0 0.0, 2.0 0.0, 3.0 5.0 # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer03.a68 +@@ -0,0 +1,53 @@ ++# { dg-options "-fstropping=upper" } # ++# Morf versus comorf. # ++BEGIN BOOL canary := FALSE; ++ PROC right = VOID: canary := TRUE, ++ wrong = VOID: (ASSERT (FALSE)), ++ check = VOID: (ASSERT (canary); canary := FALSE); ++ ++ PROC deproc = (STRING mcm) VOID: ++ (puts (mcm); puts ("deproc:")); ++ PROC nodeproc = (STRING mcm) VOID: ++ (puts (mcm); puts ("nodeproc:")); ++ ++ deproc ("selection"); ++ proc OF STRUCT(PROC VOID proc, INT d)(right, SKIP); ++ check; ++ ++ deproc ("slice"); ++ []PROC VOID(right)[1]; ++ check; ++ ++ deproc ("routine text"); ++ PROC VOID: right; ++ check; ++ ++ deproc ("formula"); ++ OP + = (INT i) PROC VOID: right; +1; ++ check; ++ ++ deproc ("call"); ++ ((INT i) PROC VOID: right)(1); ++ check; ++ ++ deproc ("identifier"); ++ right; ++ check; ++ ++ nodeproc ("assignation"); ++ LOC PROC VOID := wrong; ++ ++ nodeproc ("cast"); ++ PROC VOID (wrong); ++ ++ nodeproc ("generator"); ++ LOC PROC VOID; ++ ++ FOR i TO 2 ++ DO IF i = 1 ++ THEN deproc ("balance"); right ++ ELSE nodeproc ("balance"); PROC VOID(wrong) ++ FI; ++ IF i = 1 THEN check FI ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer07.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Weak balance. # ++BEGIN COMPL c := (COMPL x:=1; ++ CASE 2 ++ IN NIL, ++ IF [] BOOL (TRUE, FALSE)[2] ++ THEN REF REF [] COMPL: NIL ++ ELSE x ++ FI, ++ LOC PROC REF [] STRUCT (REAL re,im) ++ ESAC # REF [] COMPL = x # [1]:=3; x); ++ ASSERT (re OF c = 3.0); ++ ASSERT (im OF c = 0.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer08.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance. # ++BEGIN ASSERT ((HEAP INT x := 314; ++ CASE 3 ++ IN SKIP, ++ IF x < 0 THEN GOTO stop ELSE REF[]INT: NIL FI, ++ IF x > 0 THEN x ELSE x +:= 1 FI ++ ESAC := 200)[1] = 200) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer09.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance. # ++BEGIN ASSERT (CASE 2 ++ IN SKIP, ++ NIL, ++ IF BOOL (SKIP) ++ THEN GOTO stop ++ ELSE PROC REF[]INT (SKIP) ++ FI ++ ESAC :=: CASE 3 ++ IN LOC REF REF []INT, ++ LOC INT, ++ NIL ++ ESAC) ++ # TRUE, would you believe. # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer10.a68 +@@ -0,0 +1,62 @@ ++# { dg-options "-fstropping=upper" } # ++# Union with VOID # ++BEGIN OP TOPROCINT = (INT i) PROC INT : INT : 1; ++ OP TOVOID = (INT i) VOID : 1; ++ ++ STRING proc int = "proc int", void = "void", ++ before = "before ", after = " after", ++ newline = "\n"; ++ ++ puts ("Results must be:" + newline + ++ void + newline + ++ proc int + after + " 1 " + newline + ++ before + void + newline + ++ before + void + newline + ++ before + void + newline + ++ proc int + " 1 " + newline + ++ void + newline + ++ proc int + " 1 " + newline + ++ proc int + after + " 1 " + newline + ++ before + void + newline + ++ newline + "Results are:" + newline); ++ ++ UNION(PROC INT, VOID) upiv := EMPTY; ++ PROC pupiv = VOID: ++ (upiv ++ |(PROC INT pi) : (puts (proc int + " pi " + newline)) ++ | puts (void + newline)); ++ ++ pupiv; ++ upiv:= INT : (puts(after); 1); ++ pupiv; ++ ++ upiv:= VOID : (puts(before); 1); ++ pupiv; ++ ++ upiv:= VOID ((puts(before); 1)); ++ pupiv; ++ ++ # firm void position # ++ upiv:= puts(before); ++ pupiv; ++ ++ upiv:= TOPROCINT 1; ++ pupiv; ++ ++ upiv:= TOVOID 1; ++ pupiv; ++ ++ upiv:= INT : 1; ++ upiv:= label # must jump before assigning #; puts("Error 1"); ++label: ++ pupiv; ++ ++ FOR i TO 2 ++ DO upiv:= ++ CASE i IN ++ INT : (puts(after); 1), ++ VOID : (puts(before); 1) ++ ESAC; ++ pupiv ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer11.a68 +@@ -0,0 +1,37 @@ ++# { dg-options "-fstropping=upper" } # ++# Contains all possible two-member coercion sequences. # ++BEGIN UNION(INT, BOOL) ib:= 1; ++ ++ []REAL(1); ++ []REAL(INT : 1); ++ []REAL(REAL : 1); ++ ++ [,]COMPL (1); ++ [] [,]COMPL (LOC INT:= 1); ++ [] [,]COMPL ([]COMPL(1, 2)); ++ ++ [,,] [] BOOL (16 r f); ++ [,,] [] [,] BOOL (16 r f); ++ [,,] [] BOOL (BITS : 16 r f); ++ [,,] [] [,] BOOL (BITS : 16 r f); ++ ++COMMENT XXX bytes pack not supported yet ++ [,] [] CHAR (bytes pack ("ab")); ++ [,] [] [,] CHAR (bytes pack ("ab")); ++ [,] [] CHAR (LOC BYTES:= bytes pack("ab")); ++ [,] [] [,] CHAR(LOC BYTES:= bytes pack("ab")); ++COMMENT ++ ++ REF[]INT(REF INT : HEAP INT:= 1); ++ REF[,]INT(REF[]INT : HEAP[1]INT:= 1); ++ ++ UNION(INT, REAL, BOOL) (ib); ++ [] REF [] [,] [] [] INT ++ (LOC PROC REF INT:= REF INT : HEAP INT:= 1) [1]; ++ ++ []UNION(INT, REAL) (LOC INT:= 1) [1]; ++ []UNION(INT, REAL) (REAL : 1) [1]; ++ []UNION(INT, REAL, BOOL) (ib) [1]; ++ ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer13.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Soft balance with EXIT's. # ++BEGIN INT i; [ 1 : 1 ]INT ri, rj; ++ PROC pri = REF[]INT : rj; ++ ++ FOR c TO 3 ++ DO ++ ([]PROC VOID switch = ( lrri, li, lpri); ++ switch[c]; SKIP # hip # ++ EXIT lrri: LOC REF[]INT := ri # deref # ++ EXIT li: i # row # ++ EXIT lpri: pri # deproc # ++ ) := c ++ OD; ++ ++ ASSERT (ri[1] = 1); ++ ASSERT (i = 2); ++ ASSERT (pri[1] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/coer14.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN ASSERT (REF[]INT(NIL) :=: REF INT(NIL)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Some declarers. # ++BEGIN [1:10]INT i, ++ [1:10]STRUCT(REF[]INT i, BOOL j) k, ++ [1:10]STRUCT([1:10]INT i, BOOL j) l, ++ [1:10]REF[]INT p; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl03.a68 +@@ -0,0 +1,40 @@ ++# { dg-options "-fstropping=upper" } # ++# P.G. Hibbard, Proc. Int. Conf. A68 III, Winnipeg, June 1974: ++ applied occurrence of mode-indication in actual-bounds ++ of its actual-declarer ++# ++BEGIN PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := i; ++ STRING res := (i < 0 | n := -n; "-"); ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); ++ n %:= 10 ++ OD; ++ res ++ FI ++ END; ++ ++ INT n := 4; ++ CHAR a := "a", b := "b", c := "c", d; ++ ++ PROC swap = (REF CHAR c1, c2) VOID: ++ (d := c1; c1 := c2; c2 := d); ++ ++ MODE HANOI = ++ [IF n > 0 ++ THEN n -:= 1; ++ swap (b, c); ++ HANOI h1; ++ swap (b, c); ++ puts ("move " + itoa (LWB h1 + 1) + " from " + a + " to " + c); ++ swap (a, b); ++ HANOI h2; ++ swap (a, b); ++ n +:= 1 ++ ELSE 0 ++ FI : 1] INT; ++ LOC HANOI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl04.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++(MODE U = UNION(INT,REAL); ++ LOC UNION(U) # no list needed # u := 1; SKIP) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/decl05.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Application of a virtually useless mode. # ++BEGIN puts ("Result should be ppp"); ++ MODE P = PROC (P) P; ++ P p = (P p) P: (puts ("p"); p); ++ (p(p(p(p)))) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/execute.exp +@@ -0,0 +1,29 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++} +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/flex01.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE S = FLEX[1:0]CHAR, T = [1:0]CHAR; ++ REF STRING n = LOC STRING := "Next line will be empty, then a"; ++ UNION (REF S, REF T) f = LOC T := ""; ++ UNION (STRING, CHAR) u = UNION (S,CHAR) ("a"); ++ ++ puts (n); ++ puts ((f | (REF S s): s, (REF T t): t)); ++ puts ((u | (STRING s): s, (CHAR c): c)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/flex02.a68 +@@ -0,0 +1,11 @@ ++{ Transiency tests. } ++begin bool b = true, y = false; ++ ++ assert ((if b then loc char else (loc string)[1] fi := "a") ++ = "a"); ++ assert ((if b then loc[1:3]char else (loc string)[] fi := "bcd") ++ = "bcd"); ++ { XXX original says loc string but parser doesn't like it. ++ probably parser bug } ++ if y then loc char else loc[1:1,1:3]char fi := "efg" ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef01.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF INT i := 1; FALSE ++ THEN INT i := 2; ASSERT (i = 2) ++ ELSE ASSERT (i = 1) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef02.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF INT i := 1; TRUE ++ THEN INT i := 2; ASSERT (i = 2) ++ ELSE ASSERT (i = 1) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef03.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 1; ++ ++ PROC a = INT: (INT i = 2; b); ++ PROC b = INT: i; ++ ASSERT (a = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 1, j := -1; ++ ++ PROC a = VOID: (INT i = 2, j = -2; b); ++ PROC b = VOID: (INT j = -3; ++ PROC c = VOID: (ASSERT (i + j = -2)); ++ d (c)); ++ PROC d = (PROC VOID e) VOID: ++ (INT i = 4, j = -4; e); ++ a ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef05.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ (INT i = i; ASSERT (i = 0)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef06.a68 +@@ -0,0 +1,23 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING int = "INT", real = "REAL", rreal = "[]REAL"; ++ ++ OP AA = (UNION(INT,REAL,[]REAL) p) UNION(REAL,[]REAL): ++ CASE p ++ IN (INT i): AA REAL (i), ++ (REAL r): AA []REAL (r) ++ OUSE p ++ IN ([]REAL rr): CASE ROUND rr[1] IN 3.0, rr OUT 4.0 ESAC ++ OUT error ++ ESAC; ++ ++ FOR i TO 3 ++ DO AA AA CASE i ++ IN UNION(REAL,INT)(1), ++ UNION(INT,[]REAL)([]REAL(2)), ++ AA 3 ++ ESAC ++ OD; ++ 0 EXIT ++error: ++ puts ("Error in united-case clause"); ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef07.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Redeclaring LWB. # ++BEGIN OP LWB = ([]INT a) REAL: a[1] + a[2]; ++ OP LWB = ([]REAL a) REAL: a[1] - a[2]; ++ ++ ASSERT (LWB (1| (8, 2), 3, []INT: SKIP) = 10); ++ ASSERT (LWB (1| (8, 2), 3, []REAL: SKIP) = 6.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef11.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# More operators and uniting. # ++BEGIN MODE UN = UNION (INT, REAL); ++ OP + = (UNION (REF UN, REF CHAR) a) VOID: ++ BEGIN CASE a ++ IN (REF UN ru): (ru | ++ (INT i): (puts ("integer"); SKIP), ++ (REAL r): (puts ("real"); SKIP) ++ ), ++ (REF CHAR ch): (puts ("char"); SKIP) ++ ESAC ++ END; ++ ++ +(HEAP UN := 1); ++ +(HEAP UN := 2.0); ++ +(HEAP CHAR := "3") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idef12.a68 +@@ -0,0 +1,52 @@ ++# { dg-options "-fstropping=upper" } # ++# Priorities and weird constructions # ++BEGIN ++WHILE INT n:= 0; ++ OP + = (REF INT i, CHAR c) STRING: "ab"; ++ ( WHILE DO GOTO skip OD; TRUE DO SKIP OD; ++ PRIO + = 1; SKIP ++ EXIT skid: ++ (HEAP INT +:= 1 + "1" +=: (HEAP STRING := "c")) = "abc" ++ EXIT skip: GOTO skid ++ ) ++DO DO ++ # The implicit structure of the formulas is ++ ( a O1 ( b + ( c O2 d))) ++ which is only achieved if pr(O1) < pr(+) < pr(O2) ++ # ++ ++ PRIO + = 2; ++ ++ OP + = (INT i, BOOL b) STRING: (puts("corr"); "ect,"); ++ OP + = (REAL x, BOOL b) BOOL: (puts("Line "); FALSE); ++ OP + = (CHAR c, BOOL b) BOOL: (puts("two "); FALSE); ++ OP + = (BITS b, INT i) STRING: (puts("one "); "Nope "); ++ OP + = (REF BYTES b, REAL x) INT: (puts("is "); -(n+:=1)); ++ OP + = (STRING s, COMPL c) BITS: (puts("sho"); drop); ++ ++ puts((HEAP STRING +:= ++ ABS ++ IF PRIO + = 3; ++ ODD n OR 2.0 + "a" = "b" ++ THEN PRIO + = 4; ++ TRUE AND "a" + 2 < 3 ++ ELSE PRIO + = 5; ++ "prio" = 2r1 + 2 - 3 ++ FI ++ ++ + # prio 2 # ++ ++ CASE PRIO + = 7; ++ 0 - LOC BYTES + 3.0 ** 5 ++ IN TRUE, FALSE ++ OUT PRIO + = 8; ++ 3 ELEM "prio" + 2.0 I 3.0 ++ ESAC ++ ++ AND random < .5) + "\n") ++ OD ++ EXIT drop: ++ puts("rter than line three." + "\n" + "End of test"); ++ stop ++OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/idrl01.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity relations. # ++BEGIN REAL x; REF REAL y := x; ++ ASSERT ((x :=: y) AND (y :=: x)); ++ ASSERT (x :=: REF[]REAL(x)[1]); ++ ASSERT (x :/=: REF[]REAL(x)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump01.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple jumps and EXITs. # ++BEGIN INT control := 0; ++ FOR i TO 2 ++ DO IF i = 2 THEN GOTO l FI; control +:= 10 EXIT ++ l: control +:= 3 ++ OD; ++ ASSERT (control = 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump02.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL a; ++ GOTO l; ++ INT i := 1; ++ # The declaration of `i' has not been elaborated. # ++l: ASSERT (i = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump03.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 1, j := 2; ++ i := j := (GOTO l; 3); ++l: ASSERT (i = 1 AND j = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/jump04.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Jump out of procedure. # ++BEGIN # Directly # ++ (PROC jump = VOID: (GOTO l; ASSERT (FALSE)); ++ jump; ASSERT (FALSE); ++ l: SKIP); ++ # Indirectly # ++ (MODE HIDE = PROC VOID; ++ HIDE p = (TRUE | GOTO m); ++ p; ASSERT (FALSE); m: SKIP) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq02.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Mode equivalencing. # ++BEGIN MODE N = PROC(M)M, M = PROC(N)N; ++ # Both okay, since M and N are the same. # ++ PROC M(PROC N(SKIP)); ++ PROC N(PROC M(SKIP)); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq04.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# Unions. # ++BEGIN MODE N = UNION (REAL, UNION (BOOL, INT)), ++ M = UNION (UNION (REAL, BOOL), INT); ++ # Both okay, since M and N are the same. # ++ PROC M (PROC N (SKIP)); ++ PROC N (PROC M (SKIP)); ++ ++ MODE U = UNION (INT, PROC(U)INT), ++ V = UNION (U, PROC(V)INT); ++ # Both okay, since U and V are the same. # ++ PROC U (PROC V (SKIP)); ++ PROC V (PROC U (SKIP)); ++ ++ SKIP ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/misc07.a68 +@@ -0,0 +1,207 @@ ++# { dg-options "-fstropping=upper" } # ++# 100 nested proc declarations; prints 100 100 # ++(INT i := 0; INT j := (INT a = ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++(PROC a = INT: ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++i+:=1; a); ++a); ++ASSERT (i = j); ++ASSERT (i = 100 AND j = 100) ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null01.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# The original test uses just SKIP, but this compiler requires an ++ enclosed clause. # ++ ++(SKIP) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null02.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++(0) ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null03.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN DO stop OD ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null04.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++((SKIP,SKIP)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null05.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++(PAR (SKIP,SKIP)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null06.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BY 0 DO stop OD ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null07.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++IF BOOL (SKIP) THEN SKIP FI +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null08.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++CASE INT(SKIP) IN SKIP, SKIP ESAC ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/null09.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++CASE UNION(BOOL, VOID)(SKIP) IN (VOID): SKIP ESAC ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/numr07.a68 +@@ -0,0 +1,81 @@ ++# { dg-options "-fstropping=upper" } # ++#JKok, 730612, test Choleski decomposition# ++BEGIN OP * = ([]REAL a, b) REAL : ++ (REAL s:= 0; FOR i TO UPB a DO s +:= a[i] * b[i] OD;s); ++ ++ PROC decsym= (REF [,] REAL a, REF [] INT p, REAL aux) ++ INT : ++ IF INT n = 1 UPB a; ++ 2 UPB a /= n OR UPB p /= n THEN 0 ++ ELSE REAL max:= 0, epsnorm, ukk, uki, aii, INT pk:= 1, r:= 0; ++ ++ PROC ichvec= (REF [] REAL a, b) VOID : ++ IF INT n= UPB a; n > 0 THEN ++ [] REAL h= a; a:= b; b:= h ++ FI # interchange two vectors#; ++ ++ FOR k TO n ++ DO IF a[k,k] > max THEN max:= a[k,k]; pk:= k FI OD; ++ epsnorm:= aux * max; ++ FOR k TO n WHILE max > epsnorm ++ DO INT k1 = k + 1; ++ p[k]:= pk; r:= k; ++ IF pk /= k ++ THEN ichvec(a[ :k-1,k], a[ :k-1,pk]); ++ ichvec(a[k,k1:pk - 1], a[k1:pk - 1,pk]); ++ ichvec(a[k,pk + 1: ], a[pk,pk + 1: ]); ++ a[pk,pk]:= a[k,k] ++ FI; ++ ukk:= a[k,k]:= sqrt(max); max:= 0; pk:= k1; ++ FOR i FROM k1 TO n ++ DO uki:= a[k,i]:= (a[k,i] - a[ :k-1,k]*a[ :k-1,i]) / ukk; ++ aii:= a[i,i] -:= uki * uki; ++ IF aii > max THEN max:= aii; pk:= i FI ++ OD ++ OD; ++ r ++ FI # Choleski decomposition with diagonal pivoting#, ++ ++ PROC solsym= ([,] REAL a,[] INT p,REF [] REAL b) VOID: ++ IF INT n = 1 UPB a; ++ 2 UPBa = n AND UPB p = n AND UPB b = n ++ THEN INT pk, REAL r; ++ FOR k TO n ++ DO r:= b[k]; pk:= p[k]; ++ b[k]:= (b[pk] - a[ :k - 1,k] * b[ :k - 1]) / a[k,k]; ++ IF pk /= k THEN b[pk]:= r FI ++ OD; ++ FOR k FROM n BY - 1 TO 1 ++ DO b[k]:= (b[k] - a[k,k+1: ] * b[k+1: ]) / a[k,k] OD; ++ FOR k FROM n BY - 1 TO 1 ++ DO IF pk:= p[k]; pk /= k ++ THEN r:= b[k]; b[k]:= b[pk]; b[pk]:= r FI ++ OD ++ FI # solution of Choleski decomposed system #; ++ ++ puts ("Value, expected, difference\n\n"); ++ ++ FOR n TO 8 ++ DO [1:n, 1:n] REAL a, aa, [1:n]REAL b, c, [1:n]INT piv; ++ FOR i TO n DO FOR j TO n ++ DO a[i,j]:= aa[i,j]:= 1 / (2 * n + 1 - i - j) OD OD; ++ FOR i TO n DO b[i]:= 2 ** (n - i) OD; ++ IF decsym (a, piv, 1e-13) = n ++ THEN solsym(a, piv, b); ++ FOR i TO n ++ DO ++ CO puts (aa[i,] * b, REAL(2 ** (n - i)), ++ aa[i,] * b - 2 ** (n - i)); ++ CO ++ puts ("term\n") ++ OD ++ ELSE puts ("Coefficients matrix is not positive definite") ++ FI; ++ puts ("\n") ++ OD ++ #Output approximately: 1 ++ 2 1 ++ 4 2 1 ++ . . . ++ 128 64 . . . 1 # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator test. # ++BEGIN OP +:= = (INT a, b) INT: a + b; ++ OP +:= = (INT a, REAL b) INT: ROUND (a - b); ++ ++ ASSERT ((2+:=1) = 3); ++ ASSERT ((2+:=1.0) = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper02.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator and balancing. # ++BEGIN OP + = (UNION(INT,BOOL) a) INT: (a|(BOOL):1,(INT):2); ++ ASSERT (+IF TRUE THEN TRUE ELSE 0 FI = 1); ++ ASSERT (+IF FALSE THEN TRUE ELSE 0 FI = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper03.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator priorities. # ++BEGIN PRIO + = 7; ++ ASSERT ((1+2*3) = 9); ++ BEGIN PRIO + = 6; ++ ASSERT ((1+2*3) = 7); ++ FOR i TO 1 WHILE PRIO + = 7; TRUE ++ DO ASSERT ((1+2*3) = 9); OD; ++ ASSERT ((1+2*3) = 7) ++ END; ++ ASSERT ((1+2*3) = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper04.a68 +@@ -0,0 +1,21 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator identification. # ++BEGIN MODE M = UNION ([]INT, BOOL, STRING); ++ ++ OP + = (REAL a) INT: 2; ++ OP + = (CHAR a) INT: 3; ++ OP + = (M a) INT: 1; ++ ++ PROC prpm = REF PROC M: HEAP PROC M := M : "aap"; ++ UNION (BOOL, STRING) b = "b "; ++ ++ FOR n TO 5 ++ DO ASSERT ((+ CASE n ++ IN SKIP, ++ TRUE, ++ IF FALSE THEN "aa" ELSE b FI, ++ prpm ++ OUT LOC[1:1]INT := 1 ++ ESAC) = 1) ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper05.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator test, mutual recursion. # ++BEGIN PRIO +> = 1, +< = 1; ++ INT cnt := 0; ++ OP +> = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +< b FI; ++ OP +< = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +> b FI; ++ 1 +> 2 # loop # ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper07.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Operator declarations. # ++BEGIN OP SQ = (REAL x) REAL: x * x, ++ RD = (INT x) REAL: random, ++ OP (REAL)REAL SIN = (puts ("Print ten times 1\n"); sin), ++ COS = cos; ++ ++ puts ("\n"); ++ TO 10 ++ DO REAL x = RD 1; SQ SIN x + SQ COS x OD; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper08.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# A complicated formula relying totally on priorities. # ++( ++ OP I= (INT i, j) COMPL : (i, j); ++ OP ** = (INT i, COMPL z) INT : ROUND(i + RE z + IM z); ++ OP < = (INT i, j) INT : (i - j) * 2; ++ OP = = (INT i, j) INT : (i + j) * 2; ++ OP AND= (INT i, j) INT : (i + i - j) * 3; ++ OP OR= (INT i, j) INT : (i - j - j) * 3; ++ ++ INT loc int; ++ # Note: all operators are followed by their priorities # ++ ASSERT (((loc int := 0) -:= 1 OR 2 AND 3 = 4 < 5 + 6 * 7 ** 8 I 9 ++ -:= 1 ** 8 OR 2 * 7 AND 3 + 6 = 4 < 5) EQ 10650) ++ # The implied parenthesis structure is : ++ (1(2(3(4(5(6(7(8(9)))))))))1((8)2((7)3((6)4(5)))) ++ and it yields 10650 # ++) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper09.a68 +@@ -0,0 +1,65 @@ ++# { dg-options "-fstropping=upper" } # ++# Monadic operators, non-bold monads. # ++BEGIN INT decls := 0; ++ OP += (INT a) INT: a + 1; decls +:= 1; ++ OP +<= (INT a) INT: a + 1; decls +:= 1; ++ OP +>= (INT a) INT: a + 1; decls +:= 1; ++ OP +/= (INT a) INT: a + 1; decls +:= 1; ++ OP +== (INT a) INT: a + 1; decls +:= 1; ++ OP +*= (INT a) INT: a + 1; decls +:= 1; ++ OP +:== (INT a) INT: a + 1; decls +:= 1; ++ OP +<:== (INT a) INT: a + 1; decls +:= 1; ++ OP +>:== (INT a) INT: a + 1; decls +:= 1; ++ OP +/:== (INT a) INT: a + 1; decls +:= 1; ++ OP +=:== (INT a) INT: a + 1; decls +:= 1; ++ OP +*:== (INT a) INT: a + 1; decls +:= 1; ++ OP +=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +>=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP +==:= (INT a) INT: a + 1; decls +:= 1; ++ OP +*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ OP -= (INT a) INT: a + 1; decls +:= 1; ++ OP -<= (INT a) INT: a + 1; decls +:= 1; ++ OP ->= (INT a) INT: a + 1; decls +:= 1; ++ OP -/= (INT a) INT: a + 1; decls +:= 1; ++ OP -== (INT a) INT: a + 1; decls +:= 1; ++ OP -*= (INT a) INT: a + 1; decls +:= 1; ++ OP -:== (INT a) INT: a + 1; decls +:= 1; ++ OP -<:== (INT a) INT: a + 1; decls +:= 1; ++ OP ->:== (INT a) INT: a + 1; decls +:= 1; ++ OP -/:== (INT a) INT: a + 1; decls +:= 1; ++ OP -=:== (INT a) INT: a + 1; decls +:= 1; ++ OP -*:== (INT a) INT: a + 1; decls +:= 1; ++ OP -=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP ->=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP -==:= (INT a) INT: a + 1; decls +:= 1; ++ OP -*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ OP %= (INT a) INT: a + 1; decls +:= 1; ++ OP %<= (INT a) INT: a + 1; decls +:= 1; ++ OP %>= (INT a) INT: a + 1; decls +:= 1; ++ OP %/= (INT a) INT: a + 1; decls +:= 1; ++ OP %== (INT a) INT: a + 1; decls +:= 1; ++ OP %*= (INT a) INT: a + 1; decls +:= 1; ++ OP %:== (INT a) INT: a + 1; decls +:= 1; ++ OP %<:== (INT a) INT: a + 1; decls +:= 1; ++ OP %>:== (INT a) INT: a + 1; decls +:= 1; ++ OP %/:== (INT a) INT: a + 1; decls +:= 1; ++ OP %=:== (INT a) INT: a + 1; decls +:= 1; ++ OP %*:== (INT a) INT: a + 1; decls +:= 1; ++ OP %=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %<=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %>=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %/=:= (INT a) INT: a + 1; decls +:= 1; ++ OP %==:= (INT a) INT: a + 1; decls +:= 1; ++ OP %*=:= (INT a) INT: a + 1; decls +:= 1; ++ ++ ASSERT (++<+>+/+=+*+:=+<:=+>:=+/:=+=:=+*:=+=:+<=:+>=:+/=:+==:+*=: ++ --<->-/-=-*-:=-<:=->:=-/:=-=:=-*:=-=:-<=:->=:-/=:-==:-*=: ++ %%<%>%/%=%*%:=%<:=%>:=%/:=%=:=%*:=%=:%<=:%>=:%/=:%==:%*=: 0 = decls) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper10.a68 +@@ -0,0 +1,87 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic operators, non-bold monads # ++BEGIN # the first declaration is different to avoid a recursive loop # ++ INT decls := 0; ++ OP += (INT a, b) INT: (INT c:= a; c PLUSAB b); ++ decls PLUSAB 1; ++ OP +<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +>=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP +*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ OP -= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP ->=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP -*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ OP %= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %=:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*:== (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %<=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %>=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %/=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %==:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ OP %*=:= (INT a, b) INT: a + b; decls PLUSAB 1; ++ ++ PRIO ++ +=1, +<=1, +>=1, +/=1, +==1, +*=1, ++ +:==1, +<:==1, +>:==1, +/:==1, +=:==1, +*:==1, ++ +=:=1, +<=:=1, +>=:=1, +/=:=1, +==:=1, +*=:=1, ++ ++ -=1, -<=1, ->=1, -/=1, -==1, -*=1, ++ -:==1, -<:==1, ->:==1, -/:==1, -=:==1, -*:==1, ++ -=:=1, -<=:=1, ->=:=1, -/=:=1, -==:=1, -*=:=1, ++ ++ %=1, %<=1, %>=1, %/=1, %==1, %*=1, ++ %:==1, %<:==1, %>:==1, %/:==1, %=:==1, %*:==1, ++ %=:=1, %<=:=1, %>=:=1, %/=:=1, %==:=1, %*=:=1; ++ ++ ASSERT ((+ 1 +< 1 +> 1 +/ 1 += 1 +* 1 ++ +:= 1 +<:= 1 +>:= 1 +/:= 1 +=:= 1 +*:= 1 ++ +=: 1 +<=: 1 +>=: 1 +/=: 1 +==: 1 +*=: 1 ++ ++ - 1 -< 1 -> 1 -/ 1 -= 1 -* 1 ++ -:= 1 -<:= 1 ->:= 1 -/:= 1 -=:= 1 -*:= 1 ++ -=: 1 -<=: 1 ->=: 1 -/=: 1 -==: 1 -*=: 1 ++ ++ % 1 %< 1 %> 1 %/ 1 %= 1 %* 1 ++ %:= 1 %<:= 1 %>:= 1 %/:= 1 %=:= 1 %*:= 1 ++ %=: 1 %<=: 1 %>=: 1 %/=: 1 %==: 1 %*=: 1) EQ decls) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper11.a68 +@@ -0,0 +1,141 @@ ++# { dg-options "-fstropping=upper" } # ++# Dyadic operators, non-bold nomads # ++BEGIN INT decls := 0; ++ ++ OP <= (INT a, b) INT: a + b; decls +:= 1; ++ OP <<= (INT a, b) INT: a + b; decls +:= 1; ++ OP <>= (INT a, b) INT: a + b; decls +:= 1; ++ OP :== (INT a, b) INT: a + b; decls +:= 1; ++ OP =:= (INT a, b) INT: a + b; decls +:= 1; ++ OP = (INT a, b) INT: a + b; decls +:= 1; ++ OP ><= (INT a, b) INT: a + b; decls +:= 1; ++ OP >>= (INT a, b) INT: a + b; decls +:= 1; ++ OP >/= (INT a, b) INT: a + b; decls +:= 1; ++ OP >== (INT a, b) INT: a + b; decls +:= 1; ++ OP >*= (INT a, b) INT: a + b; decls +:= 1; ++ OP >:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ><:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >/:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP >=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP ><=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >/=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP >*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP /= (INT a, b) INT: a + b; decls +:= 1; ++ OP /<= (INT a, b) INT: a + b; decls +:= 1; ++ OP />= (INT a, b) INT: a + b; decls +:= 1; ++ OP //= (INT a, b) INT: a + b; decls +:= 1; ++ OP /== (INT a, b) INT: a + b; decls +:= 1; ++ OP /*= (INT a, b) INT: a + b; decls +:= 1; ++ OP /:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP />:== (INT a, b) INT: a + b; decls +:= 1; ++ OP //:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP /=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP />=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP //=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP /*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP == (INT a, b) INT: a + b; decls +:= 1; ++ OP =<= (INT a, b) INT: a + b; decls +:= 1; ++ OP =>= (INT a, b) INT: a + b; decls +:= 1; ++ OP =/= (INT a, b) INT: a + b; decls +:= 1; ++ OP === (INT a, b) INT: a + b; decls +:= 1; ++ OP =*= (INT a, b) INT: a + b; decls +:= 1; ++ OP =:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =/:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ==:== (INT a, b) INT: a + b; decls +:= 1; ++ OP =*:== (INT a, b) INT: a + b; decls +:= 1; ++ OP ==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =/=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP ===:= (INT a, b) INT: a + b; decls +:= 1; ++ OP =*=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ OP *= (INT a, b) INT: a + b; decls +:= 1; ++ OP *<= (INT a, b) INT: a + b; decls +:= 1; ++ OP *>= (INT a, b) INT: a + b; decls +:= 1; ++ OP */= (INT a, b) INT: a + b; decls +:= 1; ++ OP *== (INT a, b) INT: a + b; decls +:= 1; ++ OP **= (INT a, b) INT: a + b; decls +:= 1; ++ OP *:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *<:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *>:== (INT a, b) INT: a + b; decls +:= 1; ++ OP */:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *=:== (INT a, b) INT: a + b; decls +:= 1; ++ OP **:== (INT a, b) INT: a + b; decls +:= 1; ++ OP *=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *<=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *>=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP */=:= (INT a, b) INT: a + b; decls +:= 1; ++ OP *==:= (INT a, b) INT: a + b; decls +:= 1; ++ OP **=:= (INT a, b) INT: a + b; decls +:= 1; ++ ++ PRIO ++ <=1, <<=1, <>=1, :==1, =:=1, =1, ><=1, >>=1, >/=1, >==1, >*=1, ++ >:==1, ><:==1, >>:==1, >/:==1, >=:==1, >*:==1, ++ >=:=1, ><=:=1, >>=:=1, >/=:=1, >==:=1, >*=:=1, ++ ++ /=1, /<=1, />=1, //=1, /==1, /*=1, ++ /:==1, /<:==1, />:==1, //:==1, /=:==1, /*:==1, ++ /=:=1, /<=:=1, />=:=1, //=:=1, /==:=1, /*=:=1, ++ ++ ==1, =<=1, =>=1, =/=1, ===1, =*=1, ++ =:==1, =<:==1, =>:==1, =/:==1, ==:==1, =*:==1, ++ ==:=1, =<=:=1, =>=:=1, =/=:=1, ===:=1, =*=:=1, ++ ++ *=1, *<=1, *>=1, */=1, *==1, **=1, ++ *:==1, *<:==1, *>:==1, */:==1, *=:==1, **:==1, ++ *=:=1, *<=:=1, *>=:=1, */=:=1, *==:=1, **=:=1; ++ ++ ASSERT ((0 ++ < 1 << 1 <> 1 := 1 =: 1 1 >< 1 >> 1 >/ 1 >= 1 >* 1 ++ >:= 1 ><:= 1 >>:= 1 >/:= 1 >=:= 1 >*:= 1 ++ >=: 1 ><=: 1 >>=: 1 >/=: 1 >==: 1 >*=: 1 ++ ++ / 1 /< 1 /> 1 // 1 /= 1 /* 1 ++ /:= 1 /<:= 1 />:= 1 //:= 1 /=:= 1 /*:= 1 ++ /=: 1 /<=: 1 />=: 1 //=: 1 /==: 1 /*=: 1 ++ ++ = 1 =< 1 => 1 =/ 1 == 1 =* 1 ++ =:= 1 =<:= 1 =>:= 1 =/:= 1 ==:= 1 =*:= 1 ++ ==: 1 =<=: 1 =>=: 1 =/=: 1 ===: 1 =*=: 1 ++ ++ * 1 *< 1 *> 1 */ 1 *= 1 ** 1 ++ *:= 1 *<:= 1 *>:= 1 */:= 1 *=:= 1 **:= 1 ++ *=: 1 *<=: 1 *>=: 1 */=: 1 *==: 1 **=: 1) EQ decls) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper14.a68 +@@ -0,0 +1,32 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB []INT(1,2,3,4) = 4); ++ ASSERT (UPB "abcde" = 5); ++ ASSERT (UPB []INT(SKIP,SKIP)[1:1@5] = 5); ++ ASSERT (2 UPB [,]INT(1,2)[,@4] = 4); ++ ++ # All declarers are of the mode row-of, so UPB/LWB ++ should work. ++ # ++ ASSERT (UPB UNION([]INT,[,]INT)([]INT (1)) = 1); ++ ASSERT (UPB UNION([]INT,[,]INT)([,]INT (1,1)) = 2); ++ ASSERT (UPB UNION([]STRING,STRING)("ab") = 2); ++ ASSERT (LWB UNION([]INT,[,]INT)([]INT (1)) = 1); ++ ASSERT (LWB UNION([]INT,[,]INT)([,]INT (1,1)) = 1); ++ ASSERT (LWB UNION([]STRING,STRING)("ab") = 1); ++ ++ ASSERT (1 UPB [,,]CHAR ("abc", "def") = 2); ++ ASSERT (2 UPB [,,]CHAR ("abc", "def") = 1); ++ ASSERT (3 UPB [,,]CHAR ("abc", "def") = 3); ++ ++ ASSERT (LWB LOC STRING LWB LOC STRING = 1); ++ ++ # Balance. # ++ FOR n TO 4 ++ DO n UPB CASE n ++ IN []INT (1), ++ [,]REAL (1), ++ UNION([]INT,[,,]BOOL) ([,,]BOOL (TRUE)), ++ UNION([]INT,UNION([,]REAL,[,,,]CHAR))([,,,]CHAR ("a")) ++ ESAC ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/oper16.a68 +@@ -0,0 +1,866 @@ ++# { dg-options "-fstropping=upper" } # ++# Tests on operators. # ++BEGIN ++ PROC itoa = (INT i) STRING: ++ BEGIN IF i = 0 ++ THEN "0" ++ ELSE INT n := ABS i; ++ STRING res; ++ WHILE n /= 0 ++ DO INT rem = n %* 10; ++ res := REPR (rem > 9 ++ | (rem - 10) + ABS "a" ++ | rem + ABS "0") + res; ++ n %:= 10 ++ OD; ++ (i < 0 | "-" + res | res) ++ FI ++ END; ++ ++ INT errors := 0; ++ PROC error = (INT i) VOID: ++ (puts("Error in test " + itoa (i)); errors +:= 1); ++ ++ PROC tste = (INT i) VOID: ++ BEGIN error(i); ++ puts ("; wrong branch taken\n") ++ END; ++ ++ PROC tsti = (INT i, INT p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; value is: " + itoa (q) + ", must be: " + itoa (p) + "\n") ++ FI; ++ ++ PROC tstr = (INT i, REAL p, q) VOID: ++ # two reals are considered equal if their difference is negligible ++ compared to one of them ++ # ++ IF p + (p-q)/8 = p THEN SKIP ++ ELSE error(i); ++ errors -:= 1; # XXX Optimizations make comparisons to fail. # ++ puts ("; real values are not equal\n") ++ FI; ++ ++ PROC tstb = (INT i, BOOL p, q) VOID: ++ BEGIN ++ IF p THEN IF q THEN SKIP ELSE GOTO bad FI ++ ELSE IF q THEN GOTO bad ELSE SKIP FI ++ FI ++ EXIT bad: ++ error(i); ++ puts ("; boolean values are not equal\n") ++ END; ++ ++ PROC tstc = (INT i, CHAR p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; value is: " + q + ", must be: " + p + "\n") ++ FI; ++ ++ PROC tstli = (INT i, LONG INT p, q) VOID: ++ IF p = q THEN SKIP ++ ELSE error(i); ++ puts ("; long int values are not equal\n") ++ FI; ++ ++ PROC tstlr = (INT i, LONG REAL p, q) VOID: ++ IF p + (p-q)/LONG 8 = p THEN SKIP ++ ELSE error(i); ++ errors -:= 1; # XXX Optimizations make comparisons to fail. # ++ puts ("; long real values are not equal\n") ++ FI; ++ ++puts("Test: REPR, ABS\n"); ++BEGIN ++ INT b1; LONG INT b2; ++ INT b0 = 44; ++ [1:2]CHAR a; ++ a[2]:="a"; ++ tstc(1, "a", REPR ABS"a"); ++ tstc(2, "a", REPR ABS a[2]); ++ tsti(3, +43, ABS(REPR 43)); ++ tsti(4, +44, ABS(REPR b0)); ++ b1:=45; ++ tsti(5, +45, ABS(REPR b1)); ++ tsti(6, +46, ABS(REPR (46+0))); ++ b2:=LONG 43; ++ tsti(7, +43, ABS(REPR SHORTEN b2)); ++ tsti(8, +46, ABS REPR SHORTEN LONG 46) ++END; ++ ++puts("Test: LWB, UPB\n"); ++BEGIN ++ REF[]CHAR b; ++ [-5:-3, -1:3]REF[ , ]REAL a; ++ tsti(9, -5, 1 LWB a); ++ tsti(10, -5, LWB a); ++ tsti(11, -1, 2 LWB a); ++ tsti(12, -3, 1 UPB a); ++ tsti(13, -3, UPB a); ++ tsti(14, +3, 2 UPB a); ++ FOR i FROM LWB a BY 1 TO UPB a DO ++ FOR j FROM 2 LWB a BY 1 TO 2 UPB a DO ++ BEGIN ++ [i:j, -j:-i]REAL b; ++ a[i, j] := b; ++ tsti(15, i, 1 LWB a[i, j]); ++ tsti(16, j, UPB a[i, j]); ++ tsti(17, -j, 2 LWB a[i, j]); ++ tsti(18, -i, 2 UPB a[i, j]) ++ END ++ OD OD ++END; ++ ++BEGIN ++ [1:3, 2:4, 3:5]INT a aaaaa; ++ INT jjjjjj; ++ FOR i FROM 1 BY 1 TO 3 ++ DO tsti(19, i, i LWB aaaaaa); ++ tsti(20, i+2, i UPB aaaaaa) ++ OD; ++ FOR i FROM-3BY 1 TO-1 ++ DO tsti(21, -i, -i LWB aaaaaa); ++ tsti(22, 2-i, -i UPB aaaaaa) ++ OD; ++ jjjjjj:=2; tsti(23, +2, jjjjjj LWB aaaaaa); ++ tsti(24, +4, jjjjjj UPB aaaaaa); ++ tsti(25, +1, LWB"abc"); ++ tsti(26, +3, UPB"cde"); ++ tsti(27, +1, (1+0) LWB"abc"); ++ tsti(28, +3, 1 UPB"efg") ++END; ++ ++puts("Test: OR, AND\n"); ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ BOOL a; ++ a:=t OR t; tstb(29, TRUE, a); ++ a:=t OR f; tstb(30, TRUE, a); ++ a:=f OR t; tstb(31, TRUE, a); ++ a:=f OR f; tstb(32, FALSE, a); ++ a:=t AND t; tstb(33, TRUE, a); ++ a:=t AND f; tstb(34, FALSE, a); ++ a:=f AND t; tstb(35, FALSE, a); ++ a:=f AND f; tstb(36, FALSE, a); ++ a:=NOT t AND t; tstb(37, FALSE, a); ++ a:=NOT f AND t; tstb(38, TRUE, a); ++ a:=NOT t AND f; tstb(39, FALSE, a); ++ a:=NOT f AND f; tstb(40, FALSE, a); ++ a:=NOT t OR t; tstb(41, TRUE, a); ++ a:=NOT f OR t; tstb(42, TRUE, a); ++ a:=NOT t OR f; tstb(43, FALSE, a); ++ a:=NOT f OR f; tstb(44, TRUE, a); ++ a:=t AND NOT t; tstb(45, FALSE, a); ++ a:=t AND NOT f; tstb(46, TRUE, a); ++ a:=f AND NOT t; tstb(47, FALSE, a); ++ a:=f AND NOT f; tstb(48, FALSE, a); ++ a:=t OR NOT t; tstb(49, TRUE, a); ++ a:=t OR NOT f; tstb(50, TRUE, a); ++ a:=f OR NOT t; tstb(51, FALSE, a); ++ a:=f OR NOT f; tstb(52, TRUE, a); ++ a:=NOT t AND NOT t; tstb(53, FALSE, a); ++ a:=NOT t AND NOT f; tstb(54, FALSE, a); ++ a:=NOT f AND NOT t; tstb(55, FALSE, a); ++ a:=NOT f AND NOT f; tstb(56, TRUE, a); ++ a:=NOT t OR NOT t; tstb(57, FALSE, a); ++ a:=NOT t OR NOT f; tstb(58, TRUE, a); ++ a:=NOT f OR NOT t; tstb(59, TRUE, a); ++ a:=NOT f OR NOT f; tstb(60, TRUE, a); ++ ++ a:=t; tstb(61, TRUE, a); ++ a:=a AND t; tstb(62, TRUE, a); ++ a:=a OR t; tstb(63, TRUE, a); ++ a:=a OR f; tstb(64, TRUE, a); ++ a:=a AND f; tstb(65, FALSE, a); ++ a:=a AND f; tstb(66, FALSE, a); ++ a:=a AND t; tstb(67, FALSE, a); ++ a:=a OR f; tstb(68, FALSE, a); ++ a:=a OR t; tstb(69, TRUE, a); ++ a:=t; tstb(70, TRUE, a); ++ a:=t AND a; tstb(71, TRUE, a); ++ a:=t OR a; tstb(72, TRUE, a); ++ a:=f OR a; tstb(73, TRUE, a); ++ a:=f AND a; tstb(74, FALSE, a); ++ a:=f AND a; tstb(75, FALSE, a); ++ a:=t AND a; tstb(76, FALSE, a); ++ a:=f OR a; tstb(77, FALSE, a); ++ a:=t OR a; tstb(78, TRUE, a); ++ SKIP ++END; ++ ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ tstb(79, TRUE, t OR f); ++ tstb(80, TRUE, t OR t); ++ tstb(81, TRUE, f OR t); ++ tstb(82, FALSE, f OR f); ++ tstb(83, TRUE, NOT (f OR f)); ++ tstb(84, TRUE, NOT (f AND f)); ++ tstb(85, TRUE, t AND t); ++ tstb(86, FALSE, t AND f); ++ tstb(87, FALSE, f AND t); ++ tstb(88, FALSE, f AND f); ++ tstb(89, TRUE, (t OR t) OR (f OR f)); ++ tstb(90, FALSE, (t OR t) AND (f OR f)); ++ tstb(91, TRUE, t OR (f OR f)); ++ tstb(92, TRUE, NOT (t AND (f OR f))); ++ tstb(93, FALSE, NOT NOT ((f OR f) OR f)); ++ tstb(94, TRUE, NOT NOT NOT ((f OR f) AND f)); ++ IF t OR f THEN SKIP ELSE tste(95) FI; ++ IF t OR t THEN SKIP ELSE tste(96) FI; ++ IF f OR t THEN SKIP ELSE tste(97) FI; ++ IF f OR f THEN tste(98) FI; ++ IF NOT (f OR f) THEN SKIP ELSE tste(99) FI; ++ IF NOT (f AND f) THEN SKIP ELSE tste(100) FI; ++ IF t AND t THEN SKIP ELSE tste(101) FI; ++ IF t AND f THEN tste(102) FI; ++ IF f AND t THEN tste(103) FI; ++ IF f AND f THEN tste(104) FI; ++ IF (t OR t) AND (t OR t) THEN SKIP ELSE tste(105) FI; ++ IF (t OR t) OR (t OR t) THEN SKIP ELSE tste(106) FI; ++ IF (t OR t) OR f THEN SKIP ELSE tste(107) FI; ++ IF (t OR t) AND t THEN SKIP ELSE tste(108) FI; ++ IF t OR (t OR t) THEN SKIP ELSE tste(109) FI; ++ IF t AND (t OR f) THEN SKIP ELSE tste(110) FI; ++ BOOL a1; a1:=t AND f; tstb(111, FALSE, a1); ++ BOOL a2; a2:=NOT (t OR f); tstb(112, FALSE, a2); ++ BEGIN ++ BOOL t; t := TRUE; ++ BOOL f; f:=FALSE; ++ IF (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR f AND f)) AND f) ++ OR NOT t ++ THEN tste(113) ELSE SKIP FI; ++ BOOL x; x:= ++ (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) ++ OR NOT t; ++ tstb(114, FALSE, x); ++ BOOL y = ++ (NOT (NOT ((t OR t) AND (t OR t)) OR ++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) ++ OR NOT t; ++ tstb(115, FALSE, y) ++ END ++END; ++ ++puts("Test: NE, EQ for booleans\n"); ++BEGIN ++ BOOL t = TRUE; BOOL f = FALSE; ++ tstb(116, TRUE, t NE f); ++ tstb(117, FALSE, t NE t); ++ tstb(118, TRUE, f NE t); ++ tstb(119, FALSE, f NE f); ++ tstb(120, TRUE, NOT (f NE f)); ++ tstb(121, FALSE, NOT (f EQ f)); ++ tstb(122, TRUE, t EQ t); ++ tstb(123, FALSE, t EQ f); ++ tstb(124, FALSE, f EQ t); ++ tstb(125, TRUE, f EQ f); ++ tstb(126, FALSE, (t NE t) NE (f NE f)); ++ tstb(127, TRUE, (t NE t) EQ (f NE f)); ++ tstb(128, TRUE, t NE (f NE f)); ++ tstb(129, TRUE, NOT (t EQ (f NE f))); ++ tstb(130, FALSE, NOT NOT ((f NE f) NE f)); ++ tstb(131, FALSE, NOT NOT NOT ((f NE f) EQ f)); ++ IF t NE f THEN SKIP ELSE tste(132) FI; ++ IF t NE t THEN tste(133) FI; ++ IF f NE t THEN SKIP ELSE tste(134) FI; ++ IF f NE f THEN tste(135) FI; ++ IF NOT (f NE f) THEN SKIP ELSE tste(136) FI; ++ IF NOT (f EQ f) THEN tste(137) FI; ++ IF t EQ t THEN SKIP ELSE tste(138) FI; ++ IF t EQ f THEN tste(139) FI; ++ IF f EQ t THEN tste(140) FI; ++ IF f EQ f THEN SKIP ELSE tste(141) FI; ++ IF (t NE t) EQ (t NE t) THEN SKIP ELSE tste(142) FI; ++ IF (t NE t) NE (t NE t) THEN tste(143) FI; ++ IF (t NE t) NE f THEN tste(144) FI; ++ IF (t NE t) EQ t THEN tste(145) FI; ++ IF t NE (t NE t) THEN SKIP ELSE tste(146) FI; ++ IF t EQ (t NE f) THEN SKIP ELSE tste(147) FI; ++ BOOL a1; a1:=t EQ f; tstb(148, FALSE, a1); ++ BOOL a2; a2:=NOT (t NE f); tstb(149, FALSE, a2); ++ BEGIN ++ BOOL t; t := TRUE; ++ BOOL f; f:=FALSE; ++ IF (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE f EQ f)) EQ f) ++ NE NOT t ++ THEN SKIP ELSE tste(150) FI; ++ BOOL x; x:= ++ (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) ++ NE NOT t; ++ tstb(151, TRUE, x); ++ BOOL y = ++ (NOT (NOT ((t NE t) EQ (t NE t)) NE ++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) ++ NE NOT t; ++ tstb(152, TRUE, y) ++ END ++END; ++ ++puts("Test: NOT\n"); ++BEGIN ++ BOOL a1, a2, a3, b1, b2, b3; ++ BOOL a4=NOT FALSE; BOOL a5=NOT NOT FALSE; ++ BOOL a6=NOT NOT NOT FALSE; ++ BOOL a7=NOT a6; BOOL a8=NOT a7; BOOL a9=NOT NOT a8; ++ BOOL a10=NOT NOT NOT a9; ++ IF NOT TRUE THEN tste(153) FI; ++ IF NOT NOT TRUE THEN SKIP ELSE tste(154) FI; ++ IF NOT NOT NOT TRUE THEN tste(155) FI; ++ a1:=NOT TRUE; a2:=NOT NOT FALSE; ++ a3:=NOT NOT NOT TRUE; ++ b1:=NOT TRUE AND FALSE; ++ b2:=NOT NOT TRUE AND FALSE; ++ b3:=TRUE OR NOT NOT NOT TRUE OR FALSE; ++ tstb(156, FALSE, a1); ++ tstb(157, FALSE, a2); ++ tstb(158, FALSE, a3); ++ tstb(159, TRUE, a4); ++ tstb(160, FALSE, a5); ++ tstb(161, TRUE, a6); ++ tstb(162, FALSE, a7); ++ tstb(163, TRUE, a8); ++ tstb(164, TRUE, a9); ++ tstb(165, FALSE, a10); ++ tstb(166, FALSE, b1); ++ tstb(167, FALSE, b2); ++ tstb(168, TRUE, b3) ++END; ++ ++puts("Test: EQ, NE, LT, LE, GT, GE\n"); ++BEGIN ++ IF -1=-1 THEN SKIP ELSE tste(169) FI; ++ tstb(170, TRUE, -LONG 1=-LONG 1); ++ IF -1/=1 THEN SKIP ELSE tste(171) FI; ++ tstb(172, TRUE, -LONG 1/=LONG 1); ++ IF 1 /= -1 THEN SKIP ELSE tste(173) FI; ++ tstb(174, TRUE, LONG 1/=-LONG 1); ++ IF 1 =1 THEN SKIP ELSE tste(175) FI; ++ tstb(176, TRUE, LONG 1=LONG 1); ++ IF 0=0.0 THEN SKIP ELSE tste(177) FI; ++ tstb(178, TRUE, LONG 0=LONG 0.0); ++ IF 1.0=1 THEN SKIP ELSE tste(179) FI; ++ tstb(180, TRUE, LONG 1.0=LONG 1); ++ IF -1.0=-1.0 THEN SKIP ELSE tste(181) FI; ++ tstb(182, TRUE, -LONG 1.0=-LONG 1.0); ++ IF -1.0/=1.0 THEN SKIP ELSE tste(183) FI; ++ tstb(184, TRUE, LENG-1.0/=LONG 1.0); ++ IF 1.0/= -1.0 THEN SKIP ELSE tste(185) FI; ++ tstb(186, TRUE, LONG 1.0/=LENG-1.0); ++ BOOL ++ a1=1=1, a2=1/=1, a3=1>1, ++ a4=1<1, a5=1<= 1, a6=1>=0, ++ a7=1.0=2.0, a8=1.0/=2.0, a9=1.0<2.0, ++ a10=1.0>0.0, a11=1.0<=1.0, ++ a12=1.0>=-1.0; ++ tstb(187, TRUE, a1); ++ tstb(188, FALSE, a2); ++ tstb(189, FALSE, a3); ++ tstb(190, FALSE, a4); ++ tstb(191, TRUE, a5); ++ tstb(192, TRUE, a6); ++ tstb(193, FALSE, a7); ++ tstb(194, TRUE, a8); ++ tstb(195, TRUE, a9); ++ tstb(196, TRUE, a10); ++ tstb(197, TRUE, a11); ++ tstb(198, TRUE, a12); ++ IF 1 = 1 THEN SKIP ELSE tste(199) FI; ++ tstb(200, TRUE, 1=1); ++ IF NOT (1/=1) THEN SKIP ELSE tste(201) FI; ++ tstb(202, TRUE, NOT NOT NOT (1/=1)); ++ IF 1/=2 AND 2/=3 AND 4/=5 THEN SKIP ELSE tste(203) FI ++END; ++ ++BEGIN ++ REAL j; ++ [-3 : 3] BOOL lt0; ++ lt0[-3]:= lt0[-2]:= lt0[-1]:= TRUE; ++ lt0[0]:= lt0[1]:= lt0[2]:= lt0[3]:= FALSE; ++ FOR i FROM -3 BY 1 TO 3 ++ DO ++ tstb(204, NOT(lt0[i] OR lt0[-i]), i=0); ++ tstb(205, lt0[i] OR lt0[-i], i/=0); ++ tstb(206, lt0[-i], i>0); ++ tstb(207, NOT lt0[i], i>=0); ++ tstb(208, lt0[i], i<0); ++ tstb(209, NOT lt0[-i], i<=0); ++ j:=i; ++ tstb(210, NOT(lt0[i] OR lt0[-i]), j=0); ++ tstb(211, lt0[i] OR lt0[-i], j/=0); ++ tstb(212, lt0[-i], j>0); ++ tstb(213, NOT lt0[i], j>=0); ++ tstb(214, lt0[i], j<0); ++ tstb(215, NOT lt0[-i], j<=0) ++ OD ++END; ++ ++puts("Test: monadic -\n"); ++BEGIN ++ INT x0, x1, x2, x3; LONG INT z0, z1, z2, z3; ++ REAL y0, y1, y2, y3; LONG REAL t0, t1, t2, t3; ++ INT x4 = 10; LONG INT z4 = LONG 10; ++ REAL y4 = x4; LONG REAL t4 = z4; ++ z0 := --LONG 38; z1 := -LONG 1000000000; z2 := -z1; ++ x0:=--79; x1 := -1; x2 := -x1; x3 := -SHORTEN z0; ++ t0 := --LONG 8.7; t1 := -LONG 79.99e-2; t2 := -t1; ++ y0 := --6.7e-4; y1 := -39.47e-2; y2 := -y1; y3 := -SHORTEN t2; ++ tsti(216, +79, x0); ++ tsti(217, -1, x1); ++ tsti(218, +1, x2); ++ tsti(219, -38, x3); ++ tsti(220, +10, x4); ++ tstli(221, +LONG 38, z0); ++ tstli(222, -LONG 1000000000, z1); ++ tstli(223, +LONG 1000000000, z2); ++ tstli(224, +LONG 10, z4); ++ tstr(225, +6.7e-4, y0); ++ tstr(226, -3.947e-1, y1); ++ tstr(227, +3.947e-1, y2); ++ tstr(228, -7.999e-1, y3); ++ tstr(229, +1e+1, y4); ++ tstlr(230, +LONG 8.7e+0, t0); ++ tstlr(231, -LONG 7.999e-1, t1); ++ tstlr(232, +LONG 7.999e-1, t2); ++ tstlr(233, +LONG 10e+0, t4) ++END; ++ ++puts("Test: dyadic -\n"); ++BEGIN ++ tsti(234, -2, 1-3); ++ tstli(235, +LONG 4, LONG 7-LONG 3); ++ tsti(236, -4, -1-3); ++ tstli(237, -LONG 13, -LONG 8-LONG 5); ++ tsti(238, +4, 1--3); ++ tstli(239, +LONG 7, LONG 4--LONG 3); ++ tsti(240, +2, -1--3); ++ tstli(241, -LONG 10, -LONG 5--LENG-5); ++ ++ tstr(242, -6.4e+0, 1-7.4); ++ tstlr(243, +LONG 8e+0, LONG 4-LENG-4.0); ++ tstr(244, +6.4e+0, 7.4-1); ++ tstlr(245, -LONG 1.2e+1, -LONG 6.0-LONG 6); ++ tstr(246, +1.22e+1, 6.1--6.1); ++ tstlr(247, +LONG 8.6e+0, LONG 4.3--LONG 4.3); ++ ++ tsti(248, +29999, 30000-1); ++ tstli(249, +LONG 999999998, LONG 1000000000-LONG 2); ++ ++ tstr(250, +1e+0, -1.0-(-1.0-(-1.0-(-1.0-1)))); ++ tstlr(251, +LONG 0e+0, ++ -LONG 1.0-(-LONG 1.0-(-LONG 1.0-(-LONG 1.0 ++ -(LONG 1-LONG 1.0))))) ++END; ++ ++puts("Test: dyadic +\n"); ++BEGIN ++ tsti(252, +4, 1+3); ++ tstli(253, +LONG 10, LONG 7+LONG 3); ++ tsti(254, +2, -1+3); ++ tstli(255, -LONG 3, -LONG 8+LONG 5); ++ tsti(256, -2, 1+-3); ++ tstli(257, +LONG 1, LONG 4+-LONG 3); ++ tsti(258, -4, -1+-3); ++ tstli(259, +LONG 0, -LONG 5+-LENG-5); ++ ++ tstr(260, +8.4e+0, 1+7.4); ++ tstlr(261, +LONG 0e+0, LONG 4+LENG-4.0); ++ tstr(262, +8.4e+0, 7.4+1); ++ tstlr(263, +LONG 0e+0, -LONG 6.0+LONG 6); ++ tstr(264, +0e+0, 6.1+-6.1); ++ tstlr(265, +LONG 0e+0, LONG 4.3+-LONG 4.3); ++ ++ tsti(266, -29999, -30000+1); ++ tstli(267, -LONG 999999998, -LONG 1000000000+LONG 2); ++ ++ tstr(268, -3e+0, -1.0+(-1.0+(-1.0+(-1.0+1)))); ++ tstlr(269, -LONG 2e+0, ++ -LONG 1.0+(-LONG 1.0+(-LONG 1.0+(-LONG 1.0 ++ +(LONG 1+LONG 1.0))))) ++END; ++ ++puts("Test: ABS\n"); ++BEGIN ++ tsti(270, +19, ABS 19); ++ tsti(271, +19, ABS-19); ++ tsti(272, +0, ABS 0); ++ tsti(273, +32, SHORTEN ABS LONG 32); ++ tsti(274, +43, SHORTEN ABS-LONG 43); ++ tsti(275, +0, SHORTEN ABS LONG 0); ++ tstr(276, +1.97e+2, ABS 197.0); ++ tstr(277, +4.97e+1, ABS-49.7); ++ tstr(278, +0e+0, ABS .0); ++ tstr(279, +1e+0, SHORTEN ABS LONG 1.0); ++ tstr(280, +0e+0, SHORTEN ABS LONG 0.0e+7); ++ tstr(281, +1.9e+0, SHORTEN ABS-LONG 1.9) ++END; ++ ++puts("Test: * for integers\n"); ++BEGIN ++ tsti(282, +6, 2*3); ++ tsti(283, -6, -2*3); ++ tsti(284, -6, 2*-3); ++ tsti(285, +6, -2*-3); ++ tsti(286, +6, SHORTEN(-LONG 2*-LONG 3)); ++ tsti(287, -6, SHORTEN(LONG 2*-LONG 3)); ++ tsti(288, -6, SHORTEN(-LONG 2*LONG 3)); ++ tsti(289, +6, SHORTEN(LONG 2*LONG 3)); ++ tsti(290, +0, 0*10); ++ tstli(291, +LONG 0, LONG 0*-LONG 10); ++ tsti(292, +0, 10*0); ++ tstli(293, +LONG 0, -LONG 10*LENG 0); ++ tsti(294, +3, 1*3); ++ tstli(295, +LONG 3, LONG 3*LONG 1); ++ tsti (296, +16384, 2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2 ++ )))))))))))))) ++END; ++ ++puts("Test: * mixed\n"); ++BEGIN ++ REAL a1=1.0; LONG REAL a2=-LONG 1.0; ++ REAL a3; LONG REAL a4; ++ tstr(297, +4.2e+1, 6.0*7.0); ++ tstlr(298, +LONG 2.6e+1, LONG 13.0*LONG 2.0); ++ tstr(299, -4.2e+1, -6.0*7.0); ++ tstlr(300, -LONG 6e+0, -LONG 2.0*LONG 3.0); ++ tstr(301, -5.6e+1, 7.0*-8.0); ++ tstlr(302, -LONG 4.8e+1, LONG 16.0*-LENG 3.0); ++ tstr(303, +5.6e+1, -8.0*-7.0); ++ tstlr(304, +LONG 2.5e+1, -LENG 5.0*-LONG 5.0); ++ ++ tstr(305, +4.2e+1, 7*6.0); ++ tstlr(306, +LONG 2.1e+1, LONG 3*LONG 7.0); ++ tstr(307, +4.2e+1, 6.0*7); ++ tstlr(308, +LONG 3.6e+1, LONG 6.0*LONG 6); ++ tstr(309, +4.2e+1, -7*-6.0); ++ tstlr(310, +LONG 2.25e+2, -LONG 15*-LONG 15.0); ++ tstr(311, +4.2e+1, -6.0*-7); ++ tstlr(312, +LONG 1.9e+1, -LONG 19.0*-LONG 1); ++ ++ a3:=14.0; a4:=LENG-13.0; ++ tstr(313, +1.4e+1, a3*a1); ++ tstlr(314, +LONG 1.3e+1, a2*a4); ++ tstr(315, +10e-43, 1.0e-20*1.0e-22); ++ tstlr(316, +LONG 10e+39, LONG 1.0e+20*LONG 1.0e+20) ++END; ++ ++puts("Test: OVER, MOD\n"); ++BEGIN ++ tsti(317, +2, 12 OVER 6); ++ tsti(318, -5, -20 OVER 4); ++ tsti(319, -25, 100 OVER -4); ++ tsti(320, +10, -10 OVER -1); ++ tsti(321, +2, 7 OVER 3); ++ tsti(322, -2, -8 OVER 3); ++ tsti(323, -1, 10 OVER -7); ++ tsti(324, +1, -49 OVER -27); ++ tsti(325, +3, SHORTEN(LONG 10 OVER LONG 3)); ++ tsti(326, -1, SHORTEN(-LONG 50 OVER LONG 50)); ++ tsti(327, -1, -12 OVER 7); ++ tsti(328, -1, 12 OVER -7); ++ tsti(329, -1, SHORTEN(-LONG 50 OVER LONG 50)); ++ tsti(330, +0, SHORTEN(LONG 0 OVER -LONG 25)); ++ tsti(331, +0, 12 MOD 6); ++ tsti(332, +0, -20 MOD 4); ++ tsti(333, +0, 100 MOD -4); ++ tsti(334, +0, -10 MOD -1); ++ tsti(335, +1, 7 MOD 3); ++ tsti(336, +1, -8 MOD 3); ++ tsti(337, +3, 10 MOD -7); ++ tsti(338, +5, -49 MOD -27); ++ tsti(339, +1, SHORTEN(LONG 10 MOD LONG 3)); ++ tsti(340, +0, SHORTEN(-LONG 50 MOD LONG 50)); ++ tsti(341, +2, -12 MOD 7); ++ tsti(342, +5, 12 MOD -7); ++ tsti(343, +0, SHORTEN(-LONG 50 MOD LONG 50)); ++ tsti(344, +0, SHORTEN(LONG 0 MOD -LONG 25)) ++END; ++ ++puts("Test: /\n"); ++BEGIN ++ REAL a, b; LONG REAL c, d; REAL x = 127.0; ++ FOR i FROM -3 BY 1 TO 3 DO ++ FOR j FROM -3 BY 1 TO 3 DO ++ IF j /= 0 THEN ++ a:=i/j; ++ tstr(345, i, a*j); ++ a:=i; a:=a/j; ++ tstr(346, i, a*j); ++ a:=j; a :=i/a; ++ tstr(347, i, a*j); ++ a := i; b := j; a := a/b; ++ tstr(348, i, a*j); ++ c := LENG i/LENG j; ++ tstlr(349, LENG i, c*LENG j); ++ c := LENG i; c := c/LENG j; ++ tstlr(350, LENG i, c*LENG j); ++ c := LENG j; c :=LENG i/c; ++ tstlr(351, LENG i, c*LENG j); ++ c := LENG i; d:=LENG j; c:=c/d; ++ tstlr(352, LENG i, c*LENG j) ++ FI ++ OD OD; ++ tstr(353, -1e+0, 1.9e-7/-1.9e-7); ++ a:=19.74e+2; ++ tstr(354, +1e+0, 19.74e+2/a); ++ tstr(355, +10e-5, 19.74e-2/19.74e+2); ++ tstr(356, +1e+3, 127000.0/x); ++ tstr(357, +1e+2, x/1.27); ++ tstr(358, -1e+1, x/-12.7); ++ tstr(359, +1e+0, x/x); ++ a:=1270.0; ++ tstr(360, +10e-2, x/a); ++ a:=0.0149; tstr(361, +1e+0, a/149e-4); ++ tstr(362, +1e+0, a/a); ++ tstr(363, +1.173228346456693e-4, a/x); ++ tstr(364, -1e-2, a/-1.49); ++ tstr(365, +1.27e+2, -x/-1.0); ++ tstr(366, -1e+0, -x/x); ++ tstr(367, -8.523489932885906e+3, -x/a); ++ tstr(368, +1e+0, -x/-x) ++END; ++ ++puts("Test: **\n"); ++BEGIN ++ INT a; ++ tsti(369, +1, 1**0); ++ tsti(370, +1, 10**0); ++ tsti(371, +1, -20**0); ++ tsti(372, +1, 1**1); ++ tsti(373, +10, 10**1); ++ tsti(374, -10, -10**1); ++ tsti(375, +0, 0**1); ++ tsti(376, +0, 0**30000); ++ tsti(377, +1, 0**0); ++ tsti(378, +49, 7**2); ++ tsti(379, +1, 1**2); ++ tsti(380, +9, -3**2); ++ tsti(381, -27, -3**3); ++ tsti(382, +32, 2**5); ++ tsti(383, +81, SHORTEN(LONG 9**2)); ++ tsti(384, -19683, SHORTEN(-LONG 27**3)); ++ tstr(385, +2.7e+1, 3.0**3); ++ tstr(386, +6.5536e+4, 2.0**16); ++ tstr(387, -3.2768e+4, -2.0**15); ++ tstr(388, +3.6e+1, -6.0**2); ++ tstr(389, +2.5e-1, 2.0**-2); ++ tstr(390, -10e-4, -10.0**-3); ++ tstr(391, +1e+0, 3.0**-0); ++ tstr(392, +1e+0, 3.0**-0); ++ tstr(393, +4.9e+1, SHORTEN(LONG 7.0**2)); ++ tstr(394, +3.969e+1, SHORTEN(-LONG 6.3**2)); ++ tstr(395, +1.385019350059107e-8, SHORTEN(LONG 37.3**-5)); ++ a:= 1; ++ FOR i FROM 1 BY 1 TO 10 ++ DO tsti(396, a, (-1)**(i-1)); a:= -a OD; ++ a:= 0; ++ FOR i FROM 1 BY 1 TO 10 ++ DO a := a + 1**30000 OD; ++ tsti(397, +10, a) ++END; ++ ++puts("Test: SHORTEN, LENG\n"); ++BEGIN ++ LONG INT a1 = LONG 128; LONG INT a2; ++ LONG REAL a3 = LONG 1.9999999999; LONG REAL a4; ++ REAL a6; ++ INT a5; a5 := 30000; ++ a6 := 2/3; ++ tstli(398, +LONG 179, LENG 179); ++ tsti(399, +19, SHORTEN LONG 19); ++ tsti(400, +30000, SHORTEN LONG 30000); ++ tsti(401, -27, SHORTEN-LONG 27); ++ tsti(402, -30000, SHORTEN-LONG 30000); ++ tsti(403, +128, SHORTEN a1); ++ a2:=LONG 0; ++ tsti(404, +0, SHORTEN a2); ++ tsti(405, +30000, SHORTEN LENG a5); ++ tstr(406, +1.234566666e-1, SHORTEN LONG .1234566666); ++ tstr(407, +1.9999999999e+0, SHORTEN a3); ++ a4:=LONG .1111111111; tstr(408, +1.111111111e-1, SHORTEN a4); ++ tstr(409, -3.333333333333333e-1, SHORTEN-LENG (1/3)); ++ tstr(410, +6.666666666666667e-1, SHORTEN LENG a6) ++END; ++ ++puts("Test: ODD\n"); ++BEGIN ++ IF ODD-1 THEN SKIP ELSE tste(411) FI; ++ tstb(412, FALSE, ODD 2); ++ IF NOT ODD-LONG 2 THEN SKIP ELSE tste(413) FI; ++ tstb(414, TRUE, ODD LONG 1); ++ BOOL a1, a2; ++ a1:= FALSE; ++ FOR i FROM -10 BY 1 TO 10 ++ DO tstb(415, a1, ODD i); a1:= NOT a1 OD; ++ a1:=ODD-3; ++ a2:=ODD-LONG 0; ++ BOOL b1 = NOT ODD -13; ++ BOOL b2 = NOT NOT ODD -LONG 16; ++ tstb(416, TRUE, a1); ++ tstb(417, FALSE, a2); ++ tstb(418, FALSE, b1); ++ tstb(419, FALSE, b2); ++ tstb(420, FALSE, NOT NOT NOT ODD 55); ++ tstb(421, FALSE, NOT NOT NOT ODD LONG 1) ++END; ++ ++puts("Test: SIGN\n"); ++BEGIN ++ tsti(422, +1, SIGN 7); ++ tsti(423, +0, SIGN 0); ++ tsti(424, -1, SIGN-7); ++ tsti(425, +1, SIGN LONG 1000000000); ++ tsti(426, +0, SIGN LONG 0); ++ tsti(427, -1, SIGN-LONG 8); ++ tsti(428, +1, SIGN 1.9); ++ tsti(429, +0, SIGN 0.0); ++ tsti(430, -1, SIGN-3.6); ++ tsti(431, +1, SIGN LONG 67.0); ++ tsti(432, +0, SIGN LONG 0.0); ++ tsti(433, -1, SIGN-LONG 37.0) ++END; ++ ++puts("Test: ROUND, ENTIER\n"); ++BEGIN ++ REAL a1 = 1.7; LONG REAL a2 = LONG 27.7; ++ REAL a3; LONG REAL a4; ++ tstli(434, -LONG 28, LENG ROUND-27.7); ++ tstli(435, -LONG 28, LENG ENTIER-27.7); ++ tstli(436, +LONG 2, LENG ROUND a1); ++ tstli(437, +LONG 1, LENG ENTIER a1); ++ tstli(438, +LONG 13, LENG ROUND 12.9); ++ tstli(439, +LONG 12, LENG ENTIER 12.994); ++ a3:=134e+2; a4:=LONG 135.1e-1; ++ tstli(440, +LONG 13400, LENG ROUND a3); ++ tstli(441, +LONG 13400, LENG ENTIER a3); ++ tstli(442, +LONG 14, LENG ROUND SHORTEN a4); ++ tstli(443, +LONG 13, LENG ENTIER SHORTEN a4); ++ tstli(444, -LONG 1, ROUND-LENG 127e-2); ++ tstli(445, +LONG 1, ENTIER--LONG 127e-2); ++ tstli(446, +LONG 28, ROUND a2); ++ tstli(447, +LONG 27, ENTIER a2); ++ tstli(448, +LONG 13, ROUND LONG 12.87); ++ tstli(449, +LONG 12, ENTIER LONG 12.87); ++ tstli(450, +LONG 14, ROUND a4); ++ tstli(451, +LONG 13, ENTIER a4); ++ tstli(452, -LONG 2, ROUND-LONG 1.5001); ++ tstli(453, -LONG 2, ENTIER-LENG 1.5001); ++ tstli(454, +LONG 6, LENG ROUND 6.499) ++END; ++ ++puts("Test: EQ, NE, LT, LE, GT, GE for chars\n"); ++BEGIN ++ CHAR a = "1"; CHAR b = "2"; CHAR c; c := "1"; ++ [1:1]CHAR d; d[1]:="$"; ++ INT abs0 = ABS"0", abs1 = ABS"1", abs2 = ABS"2"; ++ ++ tstb(455, TRUE, "1"="1"); ++ tstb(456, FALSE, "1"/="1"); ++ tstb(457, TRUE, "1"<="1"); ++ tstb(458, FALSE, "1"<"1"); ++ tstb(459, TRUE, "1">="1"); ++ tstb(460, FALSE, "1">"1"); ++ tstb(461, FALSE, "1"="2"); ++ tstb(462, TRUE, "1"/="2"); ++ tstb(463, TRUE, "1"<="2"); ++ tstb(464, TRUE, "1"<"2"); ++ tstb(465, FALSE, "1">="2"); ++ tstb(466, FALSE, "1">"2"); ++ tstb(467, FALSE, "2"="1"); ++ tstb(468, TRUE, "2"/="1"); ++ tstb(469, FALSE, "2"<="1"); ++ tstb(470, FALSE, "2"<"1"); ++ tstb(471, TRUE, "2">="1"); ++ tstb(472, TRUE, "2">"1"); ++ ++ tstb(473, TRUE, a=a); ++ tstb(474, FALSE, a/=a); ++ tstb(475, TRUE, a<=a); ++ tstb(476, FALSE, a=a); ++ tstb(478, FALSE, a>a); ++ tstb(479, FALSE, a=b); ++ tstb(480, TRUE, a/=b); ++ tstb(481, TRUE, a<=b); ++ tstb(482, TRUE, a=b); ++ tstb(484, FALSE, a>b); ++ tstb(485, FALSE, b=a); ++ tstb(486, TRUE, b/=a); ++ tstb(487, FALSE, b<=a); ++ tstb(488, FALSE, b=a); ++ tstb(490, TRUE, b>a); ++ ++ tstb(491, TRUE, REPR abs1=REPR abs1); ++ tstb(492, FALSE, REPR abs1/=REPR abs1); ++ tstb(493, TRUE, REPR abs1<=REPR abs1); ++ tstb(494, FALSE, REPR abs1=REPR abs1); ++ tstb(496, FALSE, REPR abs1>REPR abs1); ++ tstb(497, FALSE, REPR abs1=REPR abs2); ++ tstb(498, TRUE, REPR abs1/=REPR abs2); ++ tstb(499, TRUE, REPR abs1<=REPR abs2); ++ tstb(500, TRUE, REPR abs1=REPR abs2); ++ tstb(502, FALSE, REPR abs1>REPR abs2); ++ tstb(503, FALSE, REPR abs2=REPR abs1); ++ tstb(504, TRUE, REPR abs2/=REPR abs1); ++ tstb(505, FALSE, REPR abs2<=REPR abs1); ++ tstb(506, FALSE, REPR abs2=REPR abs1); ++ tstb(508, TRUE, REPR abs2>REPR abs1); ++ ++ tstb(509, TRUE, REPR abs1=c); ++ tstb(510, FALSE, REPR abs1/=c); ++ tstb(511, TRUE, REPR abs1<=c); ++ tstb(512, FALSE, REPR abs1=c); ++ tstb(514, FALSE, REPR abs1>c); ++ tstb(515, FALSE, REPR abs0=c); ++ tstb(516, TRUE, REPR abs0/=c); ++ tstb(517, TRUE, REPR abs0<=c); ++ tstb(518, TRUE, REPR abs0=c); ++ tstb(520, FALSE, REPR abs0>c); ++ tstb(521, FALSE, REPR abs2=c); ++ tstb(522, TRUE, REPR abs2/=c); ++ tstb(523, FALSE, REPR abs2<=c); ++ tstb(524, FALSE, REPR abs2=c); ++ tstb(526, TRUE, REPR abs2>c); ++ ++ tstb(527, TRUE, c=REPR abs1); ++ tstb(528, FALSE, c/=REPR abs1); ++ tstb(529, TRUE, c<=REPR abs1); ++ tstb(530, FALSE, c=REPR abs1); ++ tstb(532, FALSE, c>REPR abs1); ++ tstb(533, FALSE, c=REPR abs0); ++ tstb(534, TRUE, c/=REPR abs0); ++ tstb(535, FALSE, c<=REPR abs0); ++ tstb(536, FALSE, c=REPR abs0); ++ tstb(538, TRUE, c>REPR abs0); ++ tstb(539, FALSE, c=REPR abs2); ++ tstb(540, TRUE, c/=REPR abs2); ++ tstb(541, TRUE, c<=REPR abs2); ++ tstb(542, TRUE, c=REPR abs2); ++ tstb(544, FALSE, c>REPR abs2); ++ ++ tstb(545, TRUE, "$"=d[1]); ++ tstb(546, FALSE, "$"/=d[1]); ++ tstb(547, TRUE, "$"<=d[1]); ++ tstb(548, FALSE, "$"=d[1]); ++ tstb(550, FALSE, "$">d[1]); ++ tstb(551, TRUE, "$"=d[1]) ++END; ++ ASSERT (errors = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp01.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# ALGOL68 test to see if the compiler exists # ++BEGIN INT i, j, k; ++ INT s := 17, INT t := 3; ++ i := 0; ++ FOR l FROM 0 BY 2 TO 13 DO i +:= l OD; ++ ASSERT (i = 42) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp02.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Test that ranges are correct # ++range_of_variables: ++BEGIN INT i, j; ++ i := 3; j := 4; ++ BEGIN INT i, k; ++ i := 2; k := 5; ++ ASSERT (i = 2); ++ ASSERT (k = 5) ++ END; ++ ASSERT (i = 3); ++ ASSERT (j = 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp03.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Referencing and dereferencing. # ++BEGIN INT i1 := 1; ++ INT i2 := 2; ++ INT i3 := 3; ++ INT ii1 := i1; ++ INT ii2 := i2; ++ REF INT iii1 := ii1; ++ ASSERT (iii1 = 1); ++ iii1 := ii2; ++ ASSERT (iii1 = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp04.a68 +@@ -0,0 +1,46 @@ ++# { dg-options "-fstropping=upper" } # ++# Multiple values. # ++multiples: ++structures: ++BEGIN [1:100]INT i, j, k; ++ FOR l TO 100 DO i[l] := j[l] := k[l] := l OD; ++ FOR l TO 100 ++ DO IF i[l] /= l OR j[l] /= l OR k[l] /= l ++ THEN ASSERT (FALSE) ++ FI ++ OD; ++ [1:100]REAL p; ++ p[1] := 1.0; ++ p[1:5] := (2.0, 3.0, 4.0, 5.0, 6.0); ++ FOR i FROM 1 TO 5 DO ASSERT (p[i] = REAL(i) + 1.0) OD; ++ # Test the @ workings # ++ p[2:6 # Implicit @1 #] := (2.0, 3.0, 4.0, 5.0, 6.0); ++ FOR i FROM 2 TO 6 DO ASSERT (p[i] = REAL(i)) OD; ++ p[2:3@8] := p[3:4@8]; ++ ASSERT (UPB p[1:3@9] = 11 AND UPB p[1:0@5] = 4); ++ [1:10,1:10] INT l; ++ FOR i TO 10 DO FOR j TO 10 DO l[i,j] := 10 OD OD; ++ FOR i TO 2 DO FOR j TO 10 DO l[1:2,1:10][i,j] := 11 OD OD; ++ FOR i TO 10 DO FOR j TO 10 ++ DO IF i >= 1 AND i <= 2 ++ THEN ASSERT (l[i,j] = 11) ++ ELSE ASSERT (l[i,j] = 10) ++ FI ++ OD ++ OD; ++ # Structures. # ++ STRUCT ([1:2] INT m, ++ [1:i[5] # Whose value is 5 from above. #]REAL g, ++ BOOL t) s1, s2; ++ t OF s1 := t OF s2 := l[1,1] = l[1:1,1:2][1,1]; ++ ASSERT (t OF s1 AND t OF s2); ++ FOR m TO UPB m OF s1 ++ DO (m OF s1)[m] := ((m OF s2)[3-m] := 50) + 1 OD; ++ g OF s1 := (g OF s2)[] := (1.0, 2.0, 3.0, 4.0, 5.0); ++ ASSERT ((m OF s1)[1] = 51 AND (m OF s1)[2] = 51); ++ # REF STRUCT's # ++ [1:2]REF STRUCT ([]INT m, []REAL g, BOOL t) ss1 := (s1, s2); ++ t OF ss1[2] := FALSE; ++ ASSERT (t OF s1 = TRUE); ++ ASSERT (t OF s2 = FALSE) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp05.a68 +@@ -0,0 +1,28 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple jumps. # ++(INT j:= 0, i; ++ k: i:= j; ++ IF i >= 2 THEN GOTO l FI; ++ puts ("0"); ++ m: IF i >= 1 THEN n FI; ++ puts ("0"); ++ o: GOTO p; ++ l: puts ("1"); i := i - 2; m; ++ n: puts ("1"); o; ++ p: puts (""); ++ j := j + 1; ++ IF j <= 3 THEN k FI) ++CO ++Result: ++ 0 ++ 0 ++ ++ 0 ++ 1 ++ ++ 1 ++ 0 ++ ++ 1 ++ 1 ++CO +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp07.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# loops. # ++BEGIN INT i = 5, INT c := 0; ++ FOR i TO i DO c +:= 1 OD; ++ ASSERT (c = 5); ++ INT s = 8; ++ FOR a FROM s BY 1 WHILE INT b = a - s + 1; a <= 2 * s ++ DO INT q := 0, r := a; ++ WHILE r >= b DO (q +:= 1, r -:= b) OD; ++ IF a /= b * q + r OR r >= b ++ THEN ASSERT (FALSE) ++ FI ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp08.a68 +@@ -0,0 +1,35 @@ ++# { dg-options "-fstropping=upper" } # ++# Simple coercions. # ++BEGIN [1:3]INT ia := (1, 2, 3); ++ PROC get ia = REF[]INT: ia; ++ # Dereferencing. # ++ INT i := LOC REF INT := ia[1]; # Twice dereferenced, at the right moment. # ++ ASSERT (i = 1); ++ REF INT ri := ia[2]; # No deref # ++ REF INT (ri) := -2; ++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = 3); ++ # Deproceduring. # ++ PROC pri = REF INT: ia[3]; pri := -3; # Soft deproc. # ++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = -3); ++ PROC pria = REF[]INT: ia; pria[1] := pria[2]; ++ ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); ++ # Uniting. # ++ UNION(REAL,[]INT,[,]INT) unia = # some uniting # ++ UNION(REAL,[]INT) # cast # # one uniting # (ia); # deref # ++ ia := (3,2,1); # spoil ia # ++ CASE unia ++ IN ([]INT ia): (ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); ++ ASSERT (get ia[1] = 3 AND get ia[2] = 2 AND get ia[3] = 1)) ++ OUT SKIP ++ ESAC; ++ # Widening. # ++ REAL x = ia[1]; ++ ASSERT (x > 2.9 AND x < 3.1); ++ # Rowing. # ++ [1:1,1:3] INT iaa; FOR i TO 3 DO iaa[1,i] := 5 + i OD; ++ # Hipping. # ++ REF INT p = NIL, q = NIL; ++ ASSERT (p :=: q); ++ ia := (5, SKIP, 7); ia[2] := 6; ++ ASSERT (ia[1] = 5 AND ia[2] = 6 AND ia[3] = 7) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp09.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++# In "situ" permutation # ++BEGIN PROC permvec = (REF[]INT vec, []INT p) VOID: ++ FOR j TO UPB p ++ DO INT k := p[j]; ++ WHILE k > j DO k := p[k] OD; ++ IF k = j ++ THEN INT h = vec[j], INT l := p[k]; ++ WHILE l NE j ++ DO vec[k] := vec[l]; k := l; l := p[k] OD; ++ vec[k] := h ++ FI ++ OD, ++ [1:5]INT x := (4, 5, 1, 3, 2); ++ permvec (x, (3,5,4,1,2)); ++ ASSERT (x[1] = 1 AND x[2] = 2 AND x[3] = 3 AND x[4] = 4 AND x[5] = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp10.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++(INT i := 1; ++ PROC a = (INT j) INT: i + j; ++ (INT i := 2; ASSERT (a(10) = 11) ++ ) ++ ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp11.a68 +@@ -0,0 +1,36 @@ ++# { dg-options "-fstropping=upper" } # ++# Translation decimal number to Roman notation and vice versa # ++BEGIN PROC roman = (INT number) STRING: ++ BEGIN INT n := number, STRING result; ++ []STRUCT(INT value, STRING r) table = ++ ((1000, "M"), (900, "CM"), (500, "D"), (400, "DC"), ++ (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), ++ (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")); ++ FOR i TO UPB table ++ DO INT v = value OF table[i], STRING r = r OF table[i]; ++ WHILE v LE n DO (result +:= r, n -:= v) OD ++ OD; ++ result ++ END; ++ ++ PROC value of roman = (STRING text) INT: ++ IF text = "" ++ THEN 0 ++ ELSE OP ABS = (CHAR s) INT: ++ CASE INT p; char in string (s, p, "IVXLCDM"); p ++ IN 1, 5, 10, 50, 100, 500, 1000 ++ ESAC, ++ PROC char in string = (CHAR c, REF INT i, STRING s) BOOL: ++ (FOR k TO UPB s DO (c = s[k] | i := k; l) OD; FALSE EXIT l: TRUE); ++ INT v, maxv := 0, maxp; ++ FOR p TO UPB text ++ DO IF (v := ABS text[p]) > maxv ++ THEN maxp := p; maxv := v ++ FI ++ OD; ++ maxv - value of roman (text[: maxp-1])+ value of roman (text[maxp + 1:]) ++ FI; ++ ++ ASSERT (roman (1968) = "MCMLXVIII"); ++ ASSERT (value of roman ("MCMLXXIII") = 1973) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/simp13.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Continued fraction. # ++BEGIN OP / = ([]REAL a, b) REAL: ++ (UPB a = 0 | 0 | a[1]/(b[1] + a[2:]/b[2:])), ++ [1:20]REAL x,y; ++ ++ FOR i TO 20 ++ DO x[i] := (i-1)**2; y[i] := 2*i-1 OD; ++ x[1] := 1; ++ FOR i TO 20 ++ DO 4 * (x[1:i]/y[1:i]) # Approximations of PI # ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/stow02.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++# Some slices # ++BEGIN [0:7][0:15] INT a; ++ INT n:= 0; ++ ++ FOR i TO 8 DO FOR j TO 16 DO a[i-1][j-1]:= n+:=1OD OD; ++ ASSERT (a[0][15] = 16); ++ ASSERT (a[0:0 AT 0][0][15] = 16); ++ ASSERT (a[0:0 AT 0][0:0 AT 0][0][3:15][11:13 AT 2][4] = 16); ++CO XXX run-time error ++ []INT k = a[0:0][15] # wrong, a[0:0] has bounds [1:1][0:15], ++ so there occurs overflow #; ++CO ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mcts/stow06.a68 +@@ -0,0 +1,30 @@ ++# { dg-options "-fstropping=upper" } # ++# Against over-optimization of string comparison. # ++BEGIN ++ STRING newline = "'n"; ++ STRING str = "string with step > 1"; STRING ref str:= str; ++ [1:UPB str] STRUCT(REAL flub, CHAR c) rst; ++ ++ puts ("Result must be:" ++ + newline + str + "." + newline + str + "." + newline ++ + "First test OK" + newline + "Second test OK" + newline ++ + newline + "Result is:" + newline); ++ ++ FOR i TO UPB str DO c OF rst[i]:= ref str[i] OD; ++ puts (c OF rst + "." + newline + ref str + "." + newline); ++ ++ IF c OF rst = str AND c OF rst = ref str ++ THEN puts ("First test OK" + newline) ++ ELSE puts ("Erroneous string, is: " + c OF rst ++ + " , must be: " + str + newline); ++ ASSERT (FALSE) ++ FI; ++ ++ c OF rst:= str; ++ IF c OF rst /= str OR c OF rst /= ref str ++ THEN puts ("Erroneous string, is: " + c OF rst ++ + " , must be: " + str + newline); ++ ASSERT (FALSE) ++ ELSE puts ("Second test OK" + newline) ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minus-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i - 2 = 8); ++ ASSERT (ii - LONG 2 = LONG 8); ++ ASSERT (iii - LONG LONG 2 = LONG LONG 8); ++ ASSERT (ss - SHORT 2 = SHORT 8); ++ ASSERT (sss - SHORT SHORT 2 = SHORT SHORT 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-1.a68 +@@ -0,0 +1,32 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN INT i := 10; ++ i -:= 2; ++ ASSERT (i = 8); ++ i MINUSAB 2; ++ ASSERT (i = 6) ++ END; ++ BEGIN LONG INT i := LONG 1000; ++ i -:= LONG 100; ++ ASSERT (i = LONG 900); ++ i MINUSAB LONG 100; ++ ASSERT (i = LONG 800) ++ END; ++ BEGIN LONG LONG INT i := LONG LONG 10000; ++ i -:= LONG LONG 1000; ++ ASSERT (i = LONG LONG 9000); ++ i MINUSAB LONG LONG 1000; ++ ASSERT (i = LONG LONG 8000) ++ END; ++ BEGIN SHORT INT i := SHORT 100; ++ i -:= SHORT 10; ++ ASSERT (i = SHORT 90); ++ i MINUSAB SHORT 10; ++ ASSERT (i = SHORT 80) ++ END; ++ BEGIN SHORT SHORT INT i := SHORT SHORT 10; ++ i -:= SHORT SHORT 1; ++ ASSERT (i = SHORT SHORT 9); ++ i MINUSAB SHORT SHORT 2; ++ ASSERT (i = SHORT SHORT 7) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN REAL i := 10.0; ++ i -:= 2.0; ++ ASSERT (i = 8.0); ++ i MINUSAB 2.0; ++ ASSERT (i = 6.0) ++ END; ++ BEGIN LONG REAL i := LONG 1000.0; ++ i -:= LONG 100.0; ++ ASSERT (i = LONG 900.0); ++ i MINUSAB LONG 100.0; ++ ASSERT (i = LONG 800.0) ++ END; ++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; ++ i -:= LONG LONG 1000.0; ++ ASSERT (i = LONG LONG 9000.0); ++ i MINUSAB LONG LONG 1000.0; ++ ASSERT (i = LONG LONG 8000.0) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n -:= 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/minusab-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 10; ++ num ints -:= 1; ++ ASSERT (num ints = 9); ++ ASSERT ((LOC INT -:= 12) = -12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mod-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i %* 3 = 1); ++ ASSERT (ii %* LONG 3 = LONG 1); ++ ASSERT (iii %* LONG LONG 3 = LONG LONG 1); ++ ASSERT (ss %* SHORT 3 = SHORT 1); ++ ASSERT (sss MOD SHORT SHORT 3 = SHORT SHORT 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modab-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (SHORT SHORT INT i := SHORT SHORT 11; i MODAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 1)); ++ (SHORT INT i := SHORT 11; i MODAB SHORT 2; ASSERT (i = SHORT 1)); ++ (INT i := 11; i MODAB 2; ASSERT (i = 1)); ++ (INT i := 11; i %*:= 2; ASSERT (i = 1)); ++ (LONG INT i := LONG 11; i MODAB LONG 2; ASSERT (i = LONG 1)); ++ (LONG INT i := LONG 11; i %*:= LONG 2; ASSERT (i = LONG 1)); ++ (LONG LONG INT i := LONG LONG 11; i MODAB LONG LONG 2; ASSERT (i = LONG LONG 1)); ++ (LONG LONG INT i := LONG LONG 11; i %*:= LONG LONG 2; ASSERT (i = LONG LONG 1)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modab-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n MODAB 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mode-indication-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT j; REAL y; ++ MODE R = REAL; ++ BEGIN MODE R = INT; ++ R i := j; ++ SKIP ++ END; ++ R x := y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/README +@@ -0,0 +1,7 @@ ++This directory contains tests that require using several packets. ++ ++Files named module*.a68 contain prelude packets, i.e. the definitions ++of one or more modules. These are to be referred within test programs ++using dg-modules. ++ ++Each program*.a68 file is a testcase. +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/execute.exp +@@ -0,0 +1,44 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Execute tests, torture testing. ++ ++if $tracelevel then { ++ strace $tracelevel ++} ++ ++load_lib algol68-torture.exp ++load_lib torture-options.exp ++ ++torture-init ++set-torture-options $TORTURE_OPTIONS ++ ++# The programs need to be able to find the built modules, which are ++# left in objdir. ++global BUILT_MODULES_DIR ++set BUILT_MODULES_DIR "$objdir" ++ ++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/program-*.a68]] { ++ # If we're only testing specific files and this isn't one of them, skip it. ++ if ![runtest_file_p $runtests $testcase] then { ++ continue ++ } ++ algol68-torture-execute $testcase ++ set algol68_compile_args "" ++ global module_objects ++ set module_objects "" ++} ++ ++torture-finish +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module1.a68 +@@ -0,0 +1,9 @@ ++module Module1 = ++def ++ pub mode MyInt = int; ++ pub int beast_number := 666; ++ pub string who = "jemarch"; ++ puts ("Hello from module'n") ++postlude ++ puts ("Bye from module'n") ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module10.a68 +@@ -0,0 +1,7 @@ ++module Module10 = ++access Module9, Module3 ++def int je = foo; ++ prio QUUX = 9; ++ pub Lala bar = (bump; getcounter); {11} ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module11.a68 +@@ -0,0 +1,11 @@ ++{ Mixing module texts with revelations and without revelations. } ++ ++module Module11 = ++ access Module1, Module3 ++ def pub proc someproc = (int a, b) int: a + b; ++ skip ++ postlude ++ skip ++ fed, ++ Foo = def skip postlude skip fed, ++ Bar = def skip fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module12.a68 +@@ -0,0 +1,5 @@ ++module Module_12 = ++def pub proc foo = (proc(int,string)void cb, int a) void: cb (a, "Foo"); ++ pub proc bar = (real r) void: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module13.a68 +@@ -0,0 +1,5 @@ ++module Module_13 = ++def ++ pub mode JSON_Val = struct (int i); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module14.a68 +@@ -0,0 +1,5 @@ ++module Module14 = ++access Module13 ++def pub proc getval = JSON_Val: skip; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module15.a68 +@@ -0,0 +1,8 @@ ++module Module15 = ++access Module13, Module14 ++def pub proc foo = int: ++ begin JSON_Val val = getval; ++ i of val ++ end; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module16.a68 +@@ -0,0 +1,8 @@ ++module Module_16 = ++def ++ pub int counter; ++ skip ++postlude ++ assert (counter = 666); ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module17.a68 +@@ -0,0 +1,13 @@ ++module Module = ++def ++ pub int ce_port; ++ pub string ce_host; ++ ++ pub proc ce_connect = void: ++ myconnect (ce_host, ce_port); ++ ++ proc myconnect = (string host, int port) void: ++ skip; ++ ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module3.a68 +@@ -0,0 +1,11 @@ ++module Module_3 = ++def ++ { variable = 0 in_proc = 1 } pub proc bump = void: counter +:= 1; ++ { variable = 0 in_proc = 1 } pub proc bumptimes = (int n) void: to n do bump od; ++ { variable = 1 in_proc = 0 } pub proc vbump := void: counter +:= 1; ++ { variable = 1 in_proc = 0 } pub proc vbumptimes := (int n) void: to n do vbump od; ++ { variable = 0 in_proc = 1 } pub proc getcounter = int: counter; ++ { variable = 0 in_proc = 0 } pub proc int anothergetcounter = getcounter; ++ int counter := 10; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module4.a68 +@@ -0,0 +1,4 @@ ++module Module_4 = ++def pub int ten = 10; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module5.a68 +@@ -0,0 +1,7 @@ ++module Module_5 = ++def pub prio // = 9; ++ pub op // = (int a, b) int: a + b; ++ pub prio LALA = 9; ++ pub op LALA = (int a, b) int: a - b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module6.a68 +@@ -0,0 +1,5 @@ ++module Module_6 = ++def prio // = 9; { Note priority is not publicized. } ++ pub op // = (int a, b) int: a + b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module7.a68 +@@ -0,0 +1,10 @@ ++{ This module exports an operator defined in a non-brief operator ++ declaration. This means the exported symbol is a pointer to a ++ function and shall be indirected on the accessing side. } ++ ++module Module_7 = ++def pub prio MINUS = 9; ++ pub op (int,int)int MINUS = minus; ++ proc minus = (int a, b) int: a - b; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module8.a68 +@@ -0,0 +1,9 @@ ++module Module_8 = ++access Module_1, Module_4 ++def ++ pub proc checks = void: ++ begin assert (ten = 10); ++ assert (beast_number = 666) ++ end; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/module9.a68 +@@ -0,0 +1,8 @@ ++module Module9 = ++def pub int foo = 10; ++ pub prio // = 9; ++ pub op QUUX = (int a, b) int: a + b; ++ prio QUUX = 9; ++ pub mode Lala = int; ++ skip ++fed +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-1.a68 +@@ -0,0 +1,20 @@ ++{ dg-modules "module1" } ++ ++begin string je = access Module1 begin who end; ++ string ju = access Module1 ( who ); ++ string ji = access Module1 if true then who else who fi; ++ string ja = access Module1 (true | who | who); ++ string aa = access Module1 case 1 in who, "no" esac; ++ mode United = union (void,int); ++ string bb = access Module1 case United (10) in (int): who esac; ++ string cc = access Module1 (1 | who, "no"); ++ assert (je = "jemarch"); ++ assert (ju = "jemarch"); ++ assert (ji = "jemarch"); ++ assert (ja = "jemarch"); ++ assert (aa = "jemarch"); ++ assert (bb = "jemarch"); ++ assert (cc = "jemarch"); ++ access Module1 to 1 do assert (who = "jemarch") od; ++ access Module1 (assert (beast_number = 666)) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-10.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module3 module9 module10" } ++ ++access Module10 ++begin int x = 11; ++ assert (x = bar) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-11.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module1 module3 module11" } ++ ++access Module11 ( assert (someproc (2, 3) = 5)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-12.a68 +@@ -0,0 +1,6 @@ ++{ dg-modules "module12" } ++ ++access Module_12 ++begin proc lala = (int n, string s) void: skip; ++ foo (lala, 10) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-15.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module13 module14 module15" } ++ ++access Module15 (assert (foo = 0)) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-16.a68 +@@ -0,0 +1,8 @@ ++{ dg-modules module16 } ++ ++access Module_16 ++begin assert (counter = 0); ++ counter := 20; ++ access Module_16 (assert (counter = 20)); ++ counter := 666 ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-17.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules module17 } ++ ++access Module17 ++begin ce_port := 8888; ++ ce_host := "localhost"; ++ ce_connect ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-2.a68 +@@ -0,0 +1,15 @@ ++{ dg-modules "module1" } ++ ++begin int x = 1 + access Module1 ( beast_number); ++ int i = access Module1 ( beast_number ) + 1; ++ int z = 1 + access Module1 if true then beast_number fi; ++ int v = access Module1 if true then beast_number fi + 1; ++ int w = access Module1 if true then beast_number fi ++ + access Module1 if true then beast_number fi; ++ assert (i = 667); ++ assert (x = 667); ++ assert (z = 667); ++ assert (v = 667); ++ assert (w = 666 * 2); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-3.a68 +@@ -0,0 +1,16 @@ ++{ dg-modules "module3" } ++ ++access Module_3 ++begin assert (getcounter = 10); ++ bump; ++ assert (getcounter = 11); ++ bumptimes (3); ++ assert (getcounter = 14) ++ { vbump and vbumptimes are set to non-publicized routines ++ that are local to the module, so it is a scope violation ++ to call them. } ++{ vbump; ++ assert (getcounter = 15); ++ vbumptimes (10); ++ assert (anothergetcounter = 25) } ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-4.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules "module4" } ++ ++{ The widening coercion "jumps" inside the controlled xclause. } ++ ++begin real realten = access Module_4 (ten); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-5.a68 +@@ -0,0 +1,7 @@ ++{ dg-modules "module5" } ++ ++access Module_5 ++begin assert (2 // 3 = 5); ++ assert (2 LALA 3 = -1); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-6.a68 +@@ -0,0 +1,9 @@ ++{ dg-modules "module6" } ++ ++{ New priority is given to an importe operator. } ++ ++access Module_6 ++begin assert (2 // 3 = 5); ++ prio // = 9; ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-7.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module7" } ++ ++access Module_7 ( assert (2 MINUS 3 = -1) ) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/modules/program-8.a68 +@@ -0,0 +1,3 @@ ++{ dg-modules "module1 module4 module8" } ++ ++access Module_8 (checks) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-char-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" * 3 = "aaa"); ++ ASSERT ("" * 1 = ""); ++ ASSERT ("x" * 0 = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i * 2 = 20); ++ ASSERT (ii * LONG 2 = LONG 20); ++ ASSERT (iii * LONG LONG 2 = LONG LONG 20); ++ ASSERT (ss * SHORT 2 = SHORT 20); ++ ASSERT (sss * SHORT SHORT 2 = SHORT SHORT 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo"; ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []CHAR foo = ("f","o","o"); ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-3.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN FLEX[3]CHAR foo := ("f","o","o"); ++ ASSERT (foo * -10 = "foo"); ++ ASSERT (-10 * foo = "foo"); ++ ASSERT (foo * 0 = "foo"); ++ ASSERT (0 * foo = "foo"); ++ ASSERT (foo * 1 = "foo"); ++ ASSERT (1 * foo = "foo"); ++ ASSERT (foo * 2 = "foofoo"); ++ ASSERT (2 * foo = "foofoo"); ++ ASSERT (foo * 3 = "foofoofoo"); ++ ASSERT (3 * foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mult-string-4.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "abc"; ++ ASSERT (foo[] * 2 = "abcabc") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-1.a68 +@@ -0,0 +1,31 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ i *:= 2; ++ ASSERT (i = 4); ++ i *:= 2; ++ ASSERT (i = 8); ++ ++ SHORT INT s := SHORT 2; ++ s *:= SHORT 2; ++ ASSERT (s = SHORT 4); ++ s *:= SHORT 3; ++ ASSERT (s = SHORT 12); ++ ++ SHORT SHORT INT ss := SHORT SHORT 2; ++ ss *:= SHORT SHORT 2; ++ ASSERT (ss = SHORT SHORT 4); ++ ss *:= SHORT SHORT 3; ++ ASSERT (ss = SHORT SHORT 12); ++ ++ REF LONG INT ii = HEAP LONG INT := LONG 2; ++ ii *:= LONG 2; ++ ASSERT (ii = LONG 4); ++ ii *:= LONG 2; ++ ASSERT (ii = LONG 8); ++ ++ LONG LONG INT iii := LONG LONG 2; ++ iii *:= LONG LONG 2; ++ ASSERT (iii = LONG LONG 4); ++ iii *:= LONG LONG 2; ++ ASSERT (iii = LONG LONG 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-2.a68 +@@ -0,0 +1,31 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 2; ++ i TIMESAB 2; ++ ASSERT (i = 4); ++ i TIMESAB 2; ++ ASSERT (i = 8); ++ ++ REF SHORT INT ss = HEAP SHORT INT := SHORT 2; ++ ss TIMESAB SHORT 2; ++ ASSERT (ss = SHORT 4); ++ ss TIMESAB SHORT 2; ++ ASSERT (ss = SHORT 8); ++ ++ SHORT SHORT INT sss := SHORT SHORT 2; ++ sss TIMESAB SHORT SHORT 2; ++ ASSERT (sss = SHORT SHORT 4); ++ sss TIMESAB SHORT SHORT 2; ++ ASSERT (sss = SHORT SHORT 8); ++ ++ REF LONG INT ii = HEAP LONG INT := LONG 2; ++ ii TIMESAB LONG 2; ++ ASSERT (ii = LONG 4); ++ ii TIMESAB LONG 2; ++ ASSERT (ii = LONG 8); ++ ++ LONG LONG INT iii := LONG LONG 2; ++ iii TIMESAB LONG LONG 2; ++ ASSERT (iii = LONG LONG 4); ++ iii TIMESAB LONG LONG 2; ++ ASSERT (iii = LONG LONG 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/multab-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 10; ++ num ints *:= 2; ++ ASSERT (num ints = 20); ++ ASSERT ((LOC INT *:= 12) = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/mutual-recursion-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = 0 | TRUE | is odd (n - 1)); ++ PROC is odd = (INT n) BOOL: (n = 0 | FALSE | is even (n - 1)); ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-bits-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; ++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; ++ ASSERT (b /= 2r1); ++ ASSERT (bb NE LONG 8r477); ++ ASSERT (bbb /= LONG LONG 8r2); ++ ASSERT (ss NE SHORT 8r477); ++ ASSERT (sss /= SHORT SHORT 8r2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-char-char-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("x" /= "a") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 12; ++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; ++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; ++ ASSERT (13 /= i); ++ ASSERT (ii NE LONG 13); ++ ASSERT (iii /= LONG LONG 13); ++ ASSERT (s /= SHORT 13); ++ ASSERT (ss /= SHORT SHORT 13) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/ne-string-1.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ # /= # ++ ASSERT (NOT ("" /= "")); ++ ASSERT (NOT ("foo" /= foo)); ++ ASSERT (foo /= bar); ++ ASSERT (foo /= quux); ++ ASSERT (quux /= foo); ++ # NE # ++ ASSERT (NOT ("" NE "")); ++ ASSERT (NOT ("foo" NE foo)); ++ ASSERT (foo NE bar); ++ ASSERT (foo NE quux); ++ ASSERT (quux NE foo) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/neg-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (-i = -10); ++ ASSERT (-ii = - LONG 10); ++ ASSERT (-iii = - LONG LONG 10); ++ ASSERT (-ss = - SHORT 10); ++ ASSERT (-sss = - SHORT SHORT 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/not-bits-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# NOT for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((NOT b AND 16rffff) = 16r0f0f); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((NOT bb AND LONG 16rffff) = LONG 16r0f0f); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((NOT bbb AND LONG LONG 16rffff) = LONG LONG 16r0f0f); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((NOT ss AND SHORT 16rffff) = SHORT 16r0f0f); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; ++ ASSERT ((NOT sss AND SHORT SHORT 16rffff) = SHORT SHORT 16r0f0f) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/odd-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT a = 1; ++ ASSERT (ODD a); ++ ASSERT (ODD LONG 3); ++ ASSERT (NOT ODD LONG LONG 4); ++ ASSERT (ODD SHORT 3); ++ ASSERT (NOT ODD SHORT SHORT 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP ONEOVER = (REAL a) REAL: 1/a; ++ REAL x; ++ x := ONEOVER 3.14 ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP + = (INT a, b) INT: a - -b; ++ ASSERT (10 + 30 = 40) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/op-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN OP MIN = (REAL a, b) REAL: (a < b | a | b), ++ MIN = (INT a, REAL b) REAL: (a < b | a | b), ++ MIN = (REAL a, INT b) REAL: a MIN REAL (b); ++ PRIO MIN = 6; ++ ASSERT (10.0 MIN 20.0 > 9.9 AND 10.0 MIN 20.0 < 10.1); ++ ASSERT (10.0 MIN 100 > 9.9 AND 10.0 MIN 100 < 10.1); ++ ASSERT (100.0 MIN 10 > 9.9 AND 100.0 MIN 10 < 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/operator-declaration-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n = 10; ++ # Note that the priority for the monadic operators gets ignored. # ++ PRIO JORL = 6, JURL = 6, XXX = 6, YYY = 6; ++ OP(INT)INT JORL = (n > 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1), ++ JURL = (n <= 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1); ++ OP(INT,INT)INT XXX = (INT a, b) INT: a + b, ++ YYY = (n > 10 | (INT a,b) INT: a * b | (INT a,b) INT: a - b); ++ ASSERT (JORL 10 = 9); ++ ASSERT (JURL 10 = 11); ++ ASSERT (2 XXX 3 = 5); ++ ASSERT (2 YYY 3 = -1); ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/or-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# OR for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((b OR 16r0f0f) = 16rffff); ++ ASSERT ((b OR 16r00ff) = 16rf0ff); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((bb OR LONG 16r0f0f) = LONG 16rffff); ++ ASSERT ((bb OR LONG 16r00ff) = LONG 16rf0ff); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((bbb OR LONG LONG 16r0f0f) = LONG LONG 16rffff); ++ ASSERT ((bbb OR LONG LONG 16r00ff) = LONG LONG 16rf0ff); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((ss OR SHORT 16r0f0f) = SHORT 16rffff); ++ ASSERT ((ss OR SHORT 16r00ff) = SHORT 16rf0ff); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; ++ ASSERT ((sss OR SHORT SHORT 16r0f0f) = SHORT SHORT 16rffff); ++ ASSERT ((sss OR SHORT SHORT 16r00ff) = SHORT SHORT 16rf0ff) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/orf-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ ASSERT (i = 0 OREL i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/over-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i % 2 = 5); ++ ASSERT (ii % LONG 2 = LONG 5); ++ ASSERT (iii % LONG LONG 2 = LONG LONG 5); ++ ASSERT (ss % SHORT 2 = SHORT 5); ++ ASSERT (sss % SHORT SHORT 2 = SHORT SHORT 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/overab-1.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN (INT i := 11; i OVERAB 2; ASSERT (i = 5)); ++ (INT i := 11; i %:= 2; ASSERT (i = 5)); ++ (SHORT INT i := SHORT 11; i OVERAB SHORT 2; ASSERT (i = SHORT 5)); ++ (SHORT INT i := SHORT 11; i %:= SHORT 2; ASSERT (i = SHORT 5)); ++ (SHORT SHORT INT i := SHORT SHORT 11; i OVERAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); ++ (SHORT SHORT INT i := SHORT SHORT 11; i %:= SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); ++ (LONG INT i := LONG 11; i OVERAB LONG 2; ASSERT (i = LONG 5)); ++ (LONG INT i := LONG 11; i %:= LONG 2; ASSERT (i = LONG 5)); ++ (LONG LONG INT i := LONG LONG 11; i OVERAB LONG LONG 2; ASSERT (i = LONG LONG 5)); ++ (LONG LONG INT i := LONG LONG 11; i %:= LONG LONG 2; ASSERT (i = LONG LONG 5)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/overab-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10; ++ (((n OVERAB 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/particular-program-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++# Particular program with preceding labels. # ++jo: ju: ++BEGIN SKIP END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-char-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("a" + "b" = "ab"); ++ ASSERT ("" + "x" = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; ++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; ++ ASSERT (i + 2 = 12); ++ ASSERT (ii + LONG 2 = LONG 12); ++ ASSERT (iii + LONG LONG 2 = LONG LONG 12); ++ ASSERT (ss + SHORT 2 = SHORT 12); ++ ASSERT (sss + SHORT SHORT 2 = SHORT SHORT 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; ++ ASSERT ("" + "" = ""); ++ ASSERT ("" + foo = "foo"); ++ ASSERT (bar + "" = "bar"); ++ ASSERT (foo + bar = "foobar"); ++ STRING res = foo + bar; ++ ASSERT (LWB res = 1 AND UPB res = 6); ++ STRING empty = "" + ""; ++ ASSERT (LWB empty = 1 AND UPB empty = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC rec parse comment = VOID: ++ BEGIN STRING content; ++ done; ++ 100; ++ done: ++ ASSERT (content + "x" = "x") ++ END; ++ ++ rec parse comment ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plus-string-stride-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1","H","3"), ++ ("4","O","6"), ++ ("7","M","9"), ++ ("8","E","2")); ++ ASSERT (matrix[1:2,1] + matrix[3:4,3] = "1492") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-1.a68 +@@ -0,0 +1,34 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN INT i := 10; ++ i +:= 2; ++ ASSERT (i = 12); ++ i PLUSAB 2; ++ ASSERT (i = 14) ++ END; ++ ++ BEGIN SHORT INT i := SHORT 1000; ++ i +:= SHORT 100; ++ ASSERT (i = SHORT 1100); ++ i PLUSAB SHORT 100; ++ ASSERT (i = SHORT 1200) ++ END; ++ BEGIN SHORT SHORT INT i := SHORT SHORT 10000; ++ i +:= SHORT SHORT 1000; ++ ASSERT (i = SHORT SHORT 11000); ++ i PLUSAB SHORT SHORT 1000; ++ ASSERT (i = SHORT SHORT 12000) ++ END; ++ ++ BEGIN LONG INT i := LONG 1000; ++ i +:= LONG 100; ++ ASSERT (i = LONG 1100); ++ i PLUSAB LONG 100; ++ ASSERT (i = LONG 1200) ++ END; ++ BEGIN LONG LONG INT i := LONG LONG 10000; ++ i +:= LONG LONG 1000; ++ ASSERT (i = LONG LONG 11000); ++ i PLUSAB LONG LONG 1000; ++ ASSERT (i = LONG LONG 12000) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-2.a68 +@@ -0,0 +1,20 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN REAL i := 10.0; ++ i +:= 2.0; ++ ASSERT (i > 11.9); ++ i PLUSAB 2.0; ++ ASSERT (i > 13.9) ++ END; ++ BEGIN LONG REAL i := LONG 1000.0; ++ i +:= LONG 100.0; ++ ASSERT (i > LONG 1099.9); ++ i PLUSAB LONG 100.0; ++ ASSERT (i > LONG 1199.9) ++ END; ++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; ++ i +:= LONG LONG 1000.0; ++ ASSERT (i > LONG LONG 10999.9); ++ i PLUSAB LONG LONG 1000.0; ++ ASSERT (i > LONG LONG 11999.9) ++ END ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 0; ++ (((n +:= 1))) := 5; ++ ASSERT (n = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT num ints := 0; ++ num ints +:= 1; ++ ASSERT (num ints = 1); ++ ASSERT ((LOC INT +:= 12) = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusab-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo := ""; ++ foo +:= "foo"; ++ ASSERT (LWB foo = 1 AND UPB foo = 3 AND foo = "foo"); ++ foo PLUSAB "bar"; ++ ASSERT (LWB foo = 1 AND UPB foo = 6 AND foo = "foobar") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusto-char-1.a68 +@@ -0,0 +1,7 @@ ++begin string foo := "foo"; ++ char c := "x"; ++ c PLUSTO foo; ++ assert (foo = "xfoo"); ++ c +=: foo; ++ assert (foo = "xxfoo") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/plusto-string-1.a68 +@@ -0,0 +1,6 @@ ++begin string foo := "foo"; ++ "bar" PLUSTO foo; ++ assert (foo = "barfoo"); ++ "quux" +=: foo; ++ assert (foo = "quuxbarfoo") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-argc-argv-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (argc >= 1); ++ ASSERT (argv (1000) = ""); ++ ASSERT (argv (-1) = ""); ++ FOR i TO argc ++ DO puts (argv (i)) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-fopen-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ ASSERT (fd = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-fputc-fputs-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN fputc (stdout, "X"); ++ ASSERT (fputs (stdout, "foo") = 3); ++ fputs (stdout, fputc (stdout, "Y") + "T"); ++ fputc (stdout, "Z"); ++ ASSERT (fputs (stdout, "") = 0); ++ puts ("") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-getenv-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (getenv ("") = ""); ++ ASSERT (getenv ("DOESNT EXIST FOR SURE") = "") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-lseek.a68 +@@ -0,0 +1,17 @@ ++begin int fd = fopen ("../../ga68", file_o_rdonly); ++ assert (fd /= -1); ++ assert (errno = 0); ++ long long int offset; ++ offset := lseek (fd, long long 0, seek_cur); ++ assert (offset = long long 0); ++ assert (errno = 0); ++ offset := lseek (fd, long long 0, seek_set); ++ assert (offset = long long 0); ++ assert (errno = 0); ++ offset := lseek (fd, long long 0, seek_end); ++ long long int offset2 = lseek (fd, offset, seek_set); ++ assert (offset = offset2); ++ long long int file_size = fsize (fd); ++ assert (errno = 0); ++ assert (offset = file_size) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-perror-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# { dg-output "^something unique: " } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ IF fd = -1 THEN ++ ASSERT (strerror (errno) /= ""); ++ perror ("something unique") ++ FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-putchar-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN putchar ("X"); ++ putchar ("Y"); ++ putchar ("Z"); ++ puts ("\n") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-stdinouterr-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (stdin = 0); ++ ASSERT (stdout = 1); ++ ASSERT (stderr = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-strerror-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT fd = fopen ("doesn''t exist", file o default); ++ IF fd = -1 THEN ASSERT (strerror (errno) /= "") FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/posix-stride-1.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]CHAR matrix = (("1","H","3"), ++ ("4","O","6"), ++ ("7","M","9"), ++ ("8","E","0")); ++ []CHAR column = matrix[1:4,2]; ++ puts (column); ++ fputs (stdout, matrix[3,2:3]); ++ puts ("\n"); ++ fputs (stdout, matrix[1:3,1]); ++ puts ("\n"); ++ puts (getenv (matrix[,2])); ++ perror (matrix[,3]) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/pow-int-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 2; ++ LONG INT ii = LONG 2, LONG LONG INT iii = LONG LONG 2; ++ SHORT INT ss = SHORT 2, SHORT SHORT INT sss = SHORT SHORT 2; ++ ASSERT (i ** 2 = 4); ++ ASSERT (ii ** 2 = LONG 4); ++ ASSERT (iii ** 2 = LONG LONG 4); ++ ASSERT (ss ** 2 = SHORT 4); ++ ASSERT (sss ** 2 = SHORT SHORT 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/pow-real-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r0 = 2.0; LONG REAL rr0 = LONG 2.0; LONG LONG REAL rrr0 = LONG LONG 2.0; ++ REAL r1 = r0 ^ 2; REAL r2 = r0 ^ 3.0; ++ LONG REAL rr1 = rr0 ^ LONG 2; LONG REAL rr2 = rr0 ^ LONG 3.0; ++ LONG LONG REAL rrr1 = rrr0 ^ LONG LONG 2; LONG LONG REAL rrr2 = rrr0 ^ LONG LONG 3.0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = INT: 100; ++ ASSERT (foo = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-10.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC(INT,INT)INT foo = (INT i, j) INT: i + j; ++ ASSERT (foo (10, 20) = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-12.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC(INT)INT foo = baz; ++ PROC bar = (INT i) INT: i + 1; ++ PROC baz = (INT i) INT: i - 1; ++ ASSERT (foo (10) = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; ++ ASSERT (is even (40)); ++ PROC no args := BOOL: TRUE; ++ ASSERT (no args) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-14.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; ++ PROC is odd := (INT n) BOOL: n %* 2 /= 0; ++ PROC(INT)BOOL f = is even; ++ PROC(INT)BOOL g = is odd; ++ ASSERT (f (40)); ++ ASSERT (g (3)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-15.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Nested procedures. # ++BEGIN PROC foo = (INT i) INT: ++ BEGIN PROC bar = (INT i) INT: i - 1; ++ bar (i) * 10 ++ END; ++ ASSERT (foo (10) = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-16.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC bar = (INT i) INT: i - 1; ++ PROC foo = (INT i) INT: ++ BEGIN ++ bar (i) * 10 ++ END; ++ ASSERT (foo (10) = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-17.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++# Identity declarations and procedures. # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ ASSERT (foo (10) = 11); ++ PROC(INT)INT bar = (INT i) INT: i + 1; ++ ASSERT (bar (10) = 11); ++ PROC(INT)INT baz = foo; ++ ASSERT (baz (10) = 11); ++ PROC(INT)INT quux = IF 10 > 1 THEN baz ELSE foo FI; ++ ASSERT (quux (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-18.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar; ++ bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-19.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Call a non-variable procedure before declaration. # ++BEGIN ASSERT (foo = 100); ++ PROC foo = INT: 100; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-20.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo := (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-21.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# REF REF PROC # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ REF PROC(INT)INT baz; ++ baz := bar; ++ ASSERT (baz (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-22.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# REF REF PROC # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar := foo; ++ REF PROC(INT)INT baz := bar; ++ ASSERT (baz (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-23.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC increment = (INT a) INT: a + 1; ++ PROC getproc = PROC(INT)INT: ++ BEGIN increment ++ END; ++ # getproc below gets deprocedured to yield increment. # ++ ASSERT (getproc (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-25.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC increment := (INT a) INT: a + 1; ++ PROC getproc := PROC(INT)INT: ++ BEGIN increment ++ END; ++ # getproc below gets deprocedured to yield increment. # ++ ASSERT (getproc (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-26.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC sum = (INT a, b) INT: a + b, ++ minus = (INT a, b) INT: a - b; ++ ASSERT (sum (1, 2) = 3); ++ ASSERT (minus (1, 2) = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-27.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC reciprocal = (REAL a) REAL: 1/a; ++ REAL x; ++ x := reciprocal (3.14) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-28.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC hcf = (INT m, n) INT: ++ IF m < n ++ THEN hcf (n, m) ++ ELIF n = 0 ++ THEN m ++ ELSE hcf (n, m MOD n) ++ FI; ++ ASSERT (hcf (10, 20) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-29.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# A heap proc variable. # ++BEGIN HEAP PROC foo := INT: 666; ++ ASSERT (foo = 666) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-3.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i, j) INT: i + j + 1; ++ ASSERT (foo (10, 11) = 22) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (foo (10, 11) = 22); ++ PROC foo = (INT i, j) INT: i + j + 1; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive function. # ++BEGIN PROC foo = (INT i) INT: (i > 0 | i + foo (i - 1) | 0); ++ ASSERT (foo (10) = 55) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-6.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Recursive function, used before declared. # ++BEGIN ASSERT (foo (10) = 55); ++ PROC foo = (INT i) INT: BEGIN (i > 0 | i + foo (i - 1) | 0) END; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-7.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC foo = (INT i) INT: i + 1; ++ PROC(INT)INT bar = foo; ++ ASSERT (bar (10) = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/proc-8.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC INT foo = INT: 100; ++ ASSERT (foo = 100) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/procedured-goto-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 4; ++beg: WHILE i > 0 ++ DO []PROC VOID table = (l3,l1,l2,end); ++ table[i]; ++l1: puts ("uno\n"); i -:= 1; beg; ++l2: puts ("dos\n"); i -:= 1; beg; ++l3: puts ("tres\n"); i -:= 1; beg; ++end: puts ("cuatro\n"); i -:= 1; beg ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/quine.a68 +@@ -0,0 +1,2 @@ ++# { dg-options "-fstropping=upper" } # ++(STRING a="(STRING a="";puts(2*a[:19]+2*a[19:]);0)";puts(2*a[:19]+2*a[19:])) +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/random-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN IF random > 0.5 THEN puts ("yes\n") ELSE puts ("no\n") FI; ++ LONG REAL rr = long random; ++ IF rr > LONG 0.5 THEN puts ("long yes\n") ELSE puts ("long no\n") FI; ++ LONG LONG REAL rrr = long long random; ++ IF rrr > LONG LONG 0.5 THEN puts ("long long yes\n") ELSE puts ("long long no\n") FI ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/re-im-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN COMPL z = 4.0I5.0; ++ ASSERT (RE z = 4.0 AND IM z = 5.0); ++ LONG COMPL zz = LONG 4.0 I LONG 6.0; ++ ASSERT (RE zz = LONG 4.0 AND IM zz = LONG 6.0); ++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; ++ ASSERT (RE zzz = LONG LONG 4.0 AND IM zzz = LONG LONG 7.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rela-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ("" >= ""); ++ ASSERT ("" <= ""); ++ ASSERT ("zzz" > "aaa"); ++ ASSERT ("zzz" >= "aaa"); ++ ASSERT ("HelloA" < "HelloB") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/repr-1.a68 +@@ -0,0 +1,3 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (REPR ABS "x" = "x") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/round-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL x = 3.14, y = 3.80; ++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; ++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; ++ ASSERT (ROUND x = 3 AND ROUND y = 4); ++ ASSERT (ROUND xx = LONG 3 AND ROUND yy = LONG 4); ++ ASSERT (ROUND xxx = LONG LONG 3 AND ROUND yyy = LONG LONG 4) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (7,8,9); ++ [,]INT bar = ((1,2,3),(4,5,6),foo); ++ ASSERT (bar[1,1] = 1); ++ ASSERT (bar[1,2] = 2); ++ ASSERT (bar[1,3] = 3); ++ ASSERT (bar[2,1] = 4); ++ ASSERT (bar[2,2] = 5); ++ ASSERT (bar[2,3] = 6); ++ ASSERT (bar[3,1] = 7); ++ ASSERT (bar[3,2] = 8); ++ ASSERT (bar[3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (7,8,9); ++ [3,3]INT bar := ((1,2,3),(4,5,6),foo); ++ ASSERT (bar[1,1] = 1); ++ ASSERT (bar[1,2] = 2); ++ ASSERT (bar[1,3] = 3); ++ ASSERT (bar[2,1] = 4); ++ ASSERT (bar[2,2] = 5); ++ ASSERT (bar[2,3] = 6); ++ ASSERT (bar[3,1] = 7); ++ ASSERT (bar[3,2] = 8); ++ ASSERT (bar[3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-3.a68 +@@ -0,0 +1,15 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, STRING s); ++ [,]FOO matrix = (((10, "foo"), (20, "bar"), (30, "baz")), ++ ((40, "uno"), (50, "dos"), (60, "tres")), ++ ((70, "cuatro"), (80, "cinco"), (90, "seis"))); ++ ASSERT (i OF matrix[1,1] = 10); ++ ASSERT (i OF matrix[1,2] = 20); ++ ASSERT (i OF matrix[1,3] = 30); ++ ASSERT (i OF matrix[2,1] = 40); ++ ASSERT (i OF matrix[2,2] = 50); ++ ASSERT (i OF matrix[2,3] = 60); ++ ASSERT (i OF matrix[3,1] = 70); ++ ASSERT (i OF matrix[3,2] = 80); ++ ASSERT (i OF matrix[3,3] = 90) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-4.a68 +@@ -0,0 +1,16 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,][]INT duples = (((1,2), (3,4), (5,6)), ++ ((7,8), (9,10), (11,12))); ++ ASSERT (duples[1,1][1] = 1); ++ ASSERT (duples[1,1][2] = 2); ++ ASSERT (duples[1,2][1] = 3); ++ ASSERT (duples[1,2][2] = 4); ++ ASSERT (duples[1,3][1] = 5); ++ ASSERT (duples[1,3][2] = 6); ++ ASSERT (duples[2,1][1] = 7); ++ ASSERT (duples[2,1][2] = 8); ++ ASSERT (duples[2,2][1] = 9); ++ ASSERT (duples[2,2][2] = 10); ++ ASSERT (duples[2,3][1] = 11); ++ ASSERT (duples[2,3][2] = 12) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/row-display-5.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT list1 = (1,2,3), ++ list2 = (4,5,6), ++ list3 = (7,8,9); ++ [,]INT matrix = (list1, list2, list3); ++ [,,]INT cube = (matrix, matrix, matrix); ++ ASSERT (cube[1,1,1] = 1); ++ ASSERT (cube[2,2,2] = 5); ++ ASSERT (cube[3,3,3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = 10; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (a[1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-10.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ REF[,]INT a = i; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ a[1,1] := a[1,1] + 1; ++ ASSERT (a[1,1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-11.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ REF[,,]INT a = i; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ ASSERT (3 LWB a = 1 AND 3 UPB a = 1 AND 3 ELEMS a = 1); ++ a[1,1,1] := a[1,1,1] + 1; ++ ASSERT (a[1,1,1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-12.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF INT i = NIL; ++ REF[]INT a = i; ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-13.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF INT i = (NIL); ++ REF[,,]INT a = (i); ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][]INT a = 10; ++ ASSERT (a[1][1] = 10); ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [][][]INT a = 10; ++ ASSERT (a[1][1][1] = 10); ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); ++ ASSERT (LWB a[1][1] = 1 AND UPB a[1][1] = 1 AND ELEMS a[1][1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REAL r); ++ FOO foo = (10, 3.14); ++ [][]FOO a = foo; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); ++ ASSERT (i OF a[1][1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of a name. # ++BEGIN INT i := 10; ++ REF[]INT a = i; ++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); ++ a[1] := a[1] + 1; ++ ASSERT (a[1] = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Rowing of NIL yields NIL. # ++BEGIN REF[]INT a = REF INT(NIL); ++ ASSERT (a :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-7.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT a = 10; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); ++ ASSERT (a[1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-8.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = 10; ++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); ++ [,]INT aa = a; ++ ASSERT (1 LWB aa = 1 AND 1 UPB aa = 1 AND 1 ELEMS aa = 1); ++ ASSERT (2 LWB aa = 1 AND 2 UPB aa = 1 AND 2 ELEMS aa = 1); ++ [,,]INT aaa = aa; ++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); ++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); ++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); ++ ASSERT (aaa[1,1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/rowing-9.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,,]INT aaa = 10; ++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); ++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); ++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); ++ ASSERT (aaa[1,1,1] = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Selecting a struct results in a sub-value. # ++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); ++ PERSON person = (44, 999.99, 0); ++ ASSERT (age OF person = 44); ++ ASSERT (num children OF person = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-2.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Selecting a struct name results in sub-names. # ++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); ++ PERSON person; ++ age OF person := 44; ++ income OF person := 999.99; ++ num children OF person := 0; ++ ASSERT (age OF person = 44); ++ ASSERT (num children OF person = 0); ++ REF INT ptr to age := age OF person; ++ ASSERT (ptr to age = 44); ++ age OF person := 55; ++ ASSERT (ptr to age = 55) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-3.a68 +@@ -0,0 +1,12 @@ ++# { dg-options "-fstropping=upper" } # ++# Structs can be nested in other structs. # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ ++ PERSON person = (44, (999.99, 0.0, 10), 3); ++ ++ ASSERT (age OF person = 44); ++ ASSERT (code OF income OF person = 10); ++ ASSERT (num children OF person = 3); ++ ASSERT (num children OF person * code OF income OF person = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-4.a68 +@@ -0,0 +1,19 @@ ++# { dg-options "-fstropping=upper" } # ++# Structs can be nested in other structs. Version with subnames. # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ ++ PERSON person; ++ ++ age OF person := 44; ++ salary OF income OF person := 999.99; ++ stock OF income OF person := 0.0; ++ num children OF person := 3; ++ code OF income OF person := num children OF person; ++ ++ ASSERT (age OF person = 44); ++ ASSERT (code OF income OF person = num children OF person); ++ ASSERT (code OF income OF person = 3); ++ ASSERT (num children OF person = 3); ++ ASSERT (num children OF person * code OF income OF person = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-5.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++# pr UPPER pr # ++BEGIN MODE JORL = STRUCT (INT i, REAL r); ++ REF JORL jorl = LOC JORL := (10, 3.14); ++ ASSERT (i OF jorl = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-1.a68 +@@ -0,0 +1,12 @@ ++begin [10]struct (int age, string name) persons; ++ ++ for i to UPB persons ++ do age of persons[i] := 20 + i; ++ name of persons[i] := "x" * i ++ od; ++ ++ for i to UPB name of persons ++ do assert ((age of persons)[i] = 20 + i); ++ assert ((name of persons)[i] = "x" * i) ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-2.a68 +@@ -0,0 +1,18 @@ ++begin [10,5]struct (int age, string name) persons; ++ ++ for i to 1 UPB persons ++ do for j to 2 UPB persons ++ do age of persons[i,j] := 20 + i + j; ++ name of persons[i,j] := "x" * (i + j) ++ od ++ od; ++ ++ assert (1 UPB name of persons = 10); ++ assert (2 UPB name of persons = 5); ++ for i to 1 UPB name of persons ++ do for j to 2 UPB name of persons ++ do assert ((age of persons)[i,j] = 20 + i + j); ++ assert ((name of persons)[i,j] = "x" * (i + j)) ++ od ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ BEGIN INT i = 20; # { dg-warning "hides" } # ++ ASSERT (i = 20); ++ i ++ END; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-10.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# NIL is not voided and can appear in a context requiring VOID. # ++BEGIN (NIL); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN ASSERT (i = 0); ++ i ++ END; ++ INT i = 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (i = 0); ++ INT i = 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i := 10; ++ BEGIN ASSERT (i = 10); ++ i +:= 1 ++ END; ++ ASSERT (i = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN BEGIN ASSERT (i = 0); ++ i ++ END; ++ INT i := 10; ++ ASSERT (i = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-6.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx := yy ++ ) ++ ) = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-7.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx + yy ++ ) ++ ) = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-8.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT ((INT y := 10; ++ INT x := 20; ++ REF INT yy; ++ (REF INT xx := x; ++ yy := y; ++ xx ++ ) ++ ) = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-clause-9.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# Serial clause with jump at the end. # ++ ++BEGIN INT i := BEGIN BOOL cont := TRUE; ++ back: cont := FALSE; ++ IF cont THEN GOTO back FI ++ END; ++ ASSERT (i = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-1.a68 +@@ -0,0 +1,18 @@ ++{ This tests stack management for DSA serial clauses. ++ If it fails a stack overflow happens. } ++begin { DSA due to stack allocated multiple. } ++ to 10000 ++ do [10000]int foo; ++ skip ++ od; ++ { DSA due to stack allocated multiple. Explicit loc. } ++ to 10000 ++ do loc[10000]int foo; ++ skip ++ od; ++ { DSA due to loc generator. } ++ to 10000 ++ do ref[]int jorl = loc [10000]int; ++ skip ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-2.a68 +@@ -0,0 +1,6 @@ ++{ Check value yielding of DSA serial clauses. } ++begin assert ((ref int foo = loc int := 100; ++ foo) = 100); ++ []int a = ([10000]int foo; foo[10] := 666; foo); ++ assert (a[10] = 666) ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-3.a68 +@@ -0,0 +1,12 @@ ++{ The jump to leak should not leak stack. } ++begin by 10000 ++ do ++ by 10000 ++ do [10000]int foo; ++ skip; ++ goto leak ++ od; ++ leak: ++ skip ++ od ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-4.a68 +@@ -0,0 +1,4 @@ ++begin (ref int a = loc int := 10; goto leak; a); ++leak: ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-5.a68 +@@ -0,0 +1,3 @@ ++begin assert ((ref int a = loc int := 10; a) + 1 = 11); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-6.a68 +@@ -0,0 +1,4 @@ ++{ DSA and completers in a serial clause. } ++begin assert ((ref int a = loc int := 10; a exit foo: a +:= 1) + 1 = 11); ++ skip ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sign-int-1.a68 +@@ -0,0 +1,28 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT zero = 0; ++ SHORT INT short zero = SHORT 0; ++ SHORT SHORT INT short short zero = SHORT SHORT 0; ++ LONG INT long zero = LONG 0; ++ LONG LONG INT long long zero = LONG LONG 0; ++ INT ten = 10; ++ SHORT INT short ten = SHORT 10; ++ SHORT SHORT INT short short ten = SHORT SHORT 10; ++ LONG INT long ten = LONG 10; ++ LONG LONG INT long long ten = LONG LONG 10; ++ ASSERT (SIGN zero = 0); ++ ASSERT (SIGN short zero = 0); ++ ASSERT (SIGN short short zero = 0); ++ ASSERT (SIGN long zero = 0); ++ ASSERT (SIGN long long zero = 0); ++ ASSERT (SIGN ten = 1); ++ ASSERT (SIGN short ten = 1); ++ ASSERT (SIGN short short ten = 1); ++ ASSERT (SIGN long ten = 1); ++ ASSERT (SIGN long long ten = 1); ++ ASSERT (SIGN -ten = -1); ++ ASSERT (SIGN -short ten = -1); ++ ASSERT (SIGN -short short ten = -1); ++ ASSERT (SIGN -long ten = -1); ++ ASSERT (SIGN -long long ten = -1) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sign-real-1.a68 +@@ -0,0 +1,17 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL zero = 0.0; ++ LONG REAL long zero = LONG 0.0; ++ LONG LONG REAL long long zero = LONG LONG 0.0; ++ REAL ten = 10.0; ++ LONG REAL long ten = LONG 10.0; ++ LONG LONG REAL long long ten = LONG LONG 10.0; ++ ASSERT (SIGN zero = 0); ++ ASSERT (SIGN long zero = 0); ++ ASSERT (SIGN long long zero = 0); ++ ASSERT (SIGN ten = 1); ++ ASSERT (SIGN long ten = 1); ++ ASSERT (SIGN long long ten = 1); ++ ASSERT (SIGN -ten = -1); ++ ASSERT (SIGN -long ten = -1); ++ ASSERT (SIGN -long long ten = -1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sin-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 45.0; ++ LONG LONG REAL rrr = LONG LONG 60.0; ++ ASSERT (sin (r) = 0.0); ++ long sin (rr); ++ long long sin (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-1.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++# Check SKIPs for INT modes # ++BEGIN INT int skip = SKIP; ++ ASSERT (int skip = 0); ++ SHORT INT short int skip = SKIP; ++ ASSERT (short int skip = SHORT 0); ++ SHORT SHORT INT short short int skip = SKIP; ++ ASSERT (short short int skip = SHORT SHORT 0); ++ LONG INT long int skip = SKIP; ++ ASSERT (long int skip = LONG 0); ++ LONG LONG INT long long int skip = SKIP; ++ ASSERT (long long int skip = LONG LONG 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# Check SKIP values for BOOL and CHAR. # ++BEGIN BOOL bool skip = SKIP; ++ ASSERT (bool skip = FALSE); ++ CHAR char skip = SKIP; ++ ASSERT (char skip = " ") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/skip-struct-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT jorl); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ PERSON person = SKIP; ++ ASSERT (age OF person = 0); ++ ASSERT (jorl OF income OF person = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo = "foo"; ++ ASSERT (foo[1] = "f"); ++ ASSERT (foo[2] = "o"); ++ ASSERT (foo[3] = "o"); ++ STRING bar := "foo"; ++ ASSERT (bar[1] = "f"); ++ ASSERT (bar[2] = "o"); ++ ASSERT (bar[3] = "o") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-2.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (1,2,3); ++ ASSERT (foo[1] = 1); ++ ASSERT (foo[2] = 2); ++ ASSERT (foo[3] = 3); ++ [3]INT bar := (1,2,3); ++ ASSERT (bar[1] = 1); ++ ASSERT (bar[2] = 2); ++ ASSERT (bar[3] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-3.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT foo = (10,20,30); ++ ASSERT (foo[1] = 10); ++ ASSERT (foo[2] = 20); ++ ASSERT (foo[3] = 30); ++ [3]INT bar := (100,200,300); ++ ASSERT (bar[1] = 100); ++ ASSERT (bar[2] = 200); ++ ASSERT (bar[3] = 300) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-4.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE PERSON = STRUCT (INT i, STRING s); ++ []PERSON persons = ((10, "foo"), (20, "barbar"), (30, "baz")); ++ puts (s OF persons[1]); ++ puts (s OF persons[2]); ++ puts (s OF persons[3]); ++ ASSERT (i OF persons[1] = 10); ++ ASSERT (i OF persons[2] = 20); ++ ASSERT (i OF persons[3] = 30) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-5.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRUCT([]INT i, REAL r) s = ((1,2,3), 3.14); ++ ASSERT ((i OF s)[1] = 1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT rsp := 5; ++ [10]INT run stack; ++ run stack [(rsp -:= 1) + 1] ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-7.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s := "foo"; ++ s[2] := "x" ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/sqrt-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 100.0; ++ LONG REAL rr = LONG 25.0; ++ LONG LONG REAL rrr = LONG LONG 25.0; ++ ASSERT (sqrt (r) = 10.0); ++ ASSERT (long sqrt (rr) = LONG 5.0); ++ ASSERT (long long sqrt (rrr) = LONG LONG 5.0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s = ""; ++ ASSERT (LWB s = 1 AND UPB s = 0); ++ STRING t = (); ++ ASSERT (LWB t = 1 AND UPB t = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-2.a68 +@@ -0,0 +1,13 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s; ++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); ++ s := "foo"; ++ puts (s); ++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "f" AND s[2] = "o" AND s[3] = "o"); ++ s := "bar"; ++ puts (s); ++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "b" AND s[2] = "a" AND s[3] = "r"); ++ s := "x"; ++ ASSERT (LWB s = 1 AND UPB s = 1 AND s[1] = "x"); ++ puts (s) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING s; ++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); ++ s +:= "foo"; ++ ASSERT (LWB s = 1 AND UPB s = 3 AND ELEMS s = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/string-break-1.a68 +@@ -0,0 +1,8 @@ ++begin assert (UPB "foo'nbar" = 7 AND "foo'nbar"[4] = REPR 10); ++ assert (UPB "foo'tbar" = 7 AND "foo'tbar"[4] = REPR 9); ++ assert (UPB "foo'rbar" = 7 AND "foo'rbar"[4] = REPR 13); ++ assert (UPB "foo'fbar" = 7 AND "foo'fbar"[4] = REPR 12); ++ assert (UPB "foo''bar" = 7 AND "foo''bar"[4] = REPR 39); ++ assert ("'(u0048,u0065,U0000006c,u006c,U0000006f)" = "Hello"); ++ assert ("'( u0048, u0065, U0000006c,u006c, U0000006f )" = "Hello") ++end +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top; ++ ASSERT (next OF top :=: REF NODE (NIL)) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top = (20, NIL); ++ ASSERT (code OF top = 20); ++ ASSERT (next OF top :=: NIL) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/struct-self-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); ++ NODE top := (10, NIL); ++ NODE next := (20, NIL); ++ next OF top := next; ++ ASSERT (code OF next OF top = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-1.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); ++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); ++ INCOME income = (100.0, 200.0, 300); ++ ASSERT (code OF income = 300); ++ PERSON person := (24, (1000.0, 2000.0, 3000), 3); ++ ASSERT (code OF income OF person = 3000); ++ ASSERT (num children OF person = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE NODE = STRUCT (INT code, REF INT next); ++ INT val := 20; ++ NODE top = (10, val); ++ ASSERT (val = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REF INT j); ++ INT x := 10; ++ FOO foo; ++ foo := (10, x); ++ ASSERT (j OF foo = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (INT i, REF INT j); ++ INT x := 10; ++ REF INT xx; ++ FOO foo; ++ foo := (10, xx := x); ++ ASSERT (j OF foo = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/structure-display-5.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE VEC = STRUCT (REAL xcoord, ycoord, zcoord); ++ VEC v1, v2, v3; ++ v1 := (1,1,1); ++ ASSERT (xcoord OF v1 = 1); ++ ASSERT (ycoord OF v1 = 1); ++ ASSERT (zcoord OF v1 = 1); ++ REAL x = 3.14, i = 3; ++ v2 := (x + 2, 3.4, i - 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/tan-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REAL r = 0.0; ++ LONG REAL rr = LONG 50.0; ++ LONG LONG REAL rrr = LONG LONG 50.0; ++ ASSERT (tan (r) = 0.0); ++ long tan (rr); ++ long long tan (rrr) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/timesab-string-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN STRING foo := "foo"; ++ foo TIMESAB 1; ++ ASSERT (foo = "foo"); ++ foo *:= 3; ++ ASSERT (foo = "foofoofoo") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[2:3@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); ++ ASSERT (jorl[20] = 1 AND jorl [21] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-10.a68 +@@ -0,0 +1,14 @@ ++# { dg-options "-fstropping=upper" } # ++# Trimming with flat descriptors should lead to flat multiples. # ++BEGIN []INT a = (1,2,3); ++ ++ ASSERT (UPB a[2:1] < LWB a[2:1]); ++ ASSERT (UPB a[20:2] < LWB a[20:2]); ++ ++ [,]INT aa = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ ++ ASSERT ((1 UPB aa[1,2:1]) < ((1 LWB aa[1,2:1]))); ++ ASSERT ((1 UPB aa[1,20:]) < ((1 LWB aa[1,20:]))) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[2:3]; ++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); ++ ASSERT (jorl[1] = 1 AND jorl [2] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); ++ ASSERT (jorl[20] = 1 AND jorl[21] = 2 AND jorl[22] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-4.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[3:]; ++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); ++ ASSERT (jorl[1] = 2 AND jorl[2] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-5.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:3 AT 10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-6.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ []INT jorl = arr[:3@10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-7.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT arr = (1,2,3); ++ ASSERT (arr[2] = 2 AND arr[3] = 3); ++ []INT jorl = arr[2:3@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); ++ ASSERT (jorl[20] = 2 AND jorl [21] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-8.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; ++ ASSERT (arr[3] = 2 AND arr[4] = 3); ++ [10:11]INT jorl := arr[:3 AT 10]; ++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); ++ ASSERT (jorl[10] = 1 AND jorl[11] = 2); ++ jorl[10] := 100; ++ ASSERT (jorl[10] = 100 AND jorl[11] = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-9.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT arr = (1,2,3); ++ ASSERT (arr[2] = 2 AND arr[3] = 3); ++ []INT jorl = arr[@20]; ++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); ++ ASSERT (jorl[20] = 1 AND jorl [21] = 2 AND jorl [22] = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-1.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [2]INT column := matrix[3,2:3]; ++ ASSERT (column[1] = 8); ++ ASSERT (column[2] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-2.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [2]INT column := matrix[2,1:2]; ++ ASSERT (column[1] = 4); ++ ASSERT (column[2] = 5) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-3.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ [3]INT column := matrix[2,1:3]; ++ ASSERT (column[1] = 4); ++ ASSERT (column[2] = 5); ++ ASSERT (column[3] = 6) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-4.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT column = matrix[1:3,2]; ++ ASSERT (LWB column = 1); ++ ASSERT (UPB column = 3); ++ ASSERT (column[1] = 2 AND column[2] = 5 AND column[3] = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-5.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT column = matrix[2:3,2]; ++ ASSERT (LWB column = 1); ++ ASSERT (UPB column = 2); ++ ASSERT (column[1] = 5 AND column[2] = 8) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-6.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [,]INT matrix = ((1,2,3), ++ (4,5,6), ++ (7,8,9)); ++ []INT row = matrix[3,1:3]; ++ ASSERT (LWB row = 1); ++ ASSERT (UPB row = 3); ++ ASSERT (row[1] = 7 AND row[2] = 8 AND row[3] = 9) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/trimmer-name-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN REF[]CHAR t; ++ PROC foo = VOID: (HEAP[3]CHAR ss := ("1","2","3"); t := ss[1:3]); ++ foo; ++ ASSERT (LWB t = 1 AND UPB t = 3); ++ ASSERT (t[1] = "1" AND t[2] = "2" AND t[3] = "3") ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-1.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++# j's value is undefined (defined to be 0 in GNU Algol) # ++BEGIN INT x := 0; ++ FOR i TO 5 ++ DO ASSERT (j = 0); ++ IF j > 20 THEN stop FI; ++ INT j = x + i; ++ x +:= 1 ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-2.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++# The undefined value of the multiple `a' is an empty multiple. # ++BEGIN ASSERT (i = 0); ++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); ++ []INT a = (1, 2, 3); ++ INT i = 10; ++ ASSERT (i = 10); ++ ASSERT (LWB a = 1 AND UPB a = 3 AND ELEMS a = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (sum = 1); ++ PROC sum = INT: i + 1; ++ INT i = 10; ++ ASSERT (sum = 11) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-4.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (n - 1)); ++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (n - 1)); ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)); ++ INT zero := 0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/undefined-5.a68 +@@ -0,0 +1,9 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (DECR n)); ++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (DECR n)); ++ OP DECR = (INT a) INT: a - 1; ++ ASSERT (is even (20)); ++ ASSERT (is odd (13)); ++ INT zero := 0; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-1.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := 3.14; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 20); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-2.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := "X"; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 30); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-3.a68 +@@ -0,0 +1,11 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN UNION(INT,REAL,CHAR) datum := 10; ++ UNION(INT,REAL,[]INT,CHAR) datux; ++ datux := datum; ++ ASSERT (CASE datux ++ IN (INT): 10, ++ (REAL): 20, ++ (CHAR c): 30 ++ ESAC = 10); ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/uniting-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++# Uniting STRING to ROWS. # ++BEGIN PROC strlen = (STRING s) INT: ELEMS s; ++ ASSERT (strlen ("foo") = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/up-down-bits-1.a68 +@@ -0,0 +1,33 @@ ++# { dg-options "-fstropping=upper" } # ++# SHORTEN and LENG on SIZETY BITS # ++BEGIN BITS b = 16rff; ++ ASSERT (b UP 4 = 16rff0); ++ ASSERT (b SHL 4 = 16rff0); ++ ASSERT (b DOWN 4 = 16r0f); ++ ASSERT (b SHR 4 = 16r0f); ++ ++ LONG BITS bb = LONG 16rff; ++ ASSERT (bb UP 4 = LONG 16rff0); ++ ASSERT (bb SHL 4 = LONG 16rff0); ++ ASSERT (bb DOWN 4 = LONG 16r0f); ++ ASSERT (bb SHR 4 = LONG 16r0f); ++ ++ LONG LONG BITS bbb = LONG LONG 16rff; ++ ASSERT (bbb UP 4 = LONG LONG 16rff0); ++ ASSERT (bbb SHL 4 = LONG LONG 16rff0); ++ ASSERT (bbb DOWN 4 = LONG LONG 16r0f); ++ ASSERT (bbb SHR 4 = LONG LONG 16r0f); ++ ++ SHORT BITS ss = SHORT 16rff; ++ ASSERT (ss UP 4 = SHORT 16rff0); ++ ASSERT (ss SHL 4 = SHORT 16rff0); ++ ASSERT (ss DOWN 4 = SHORT 16r0f); ++ ASSERT (ss SHR 4 = SHORT 16r0f); ++ ++ SHORT SHORT BITS sss = SHORT SHORT 16r0f; ++ ASSERT (sss UP 4 = SHORT SHORT 16rf0); ++ ASSERT (sss SHL 4 = SHORT SHORT 16rf0); ++ ASSERT (sss DOWN 2 = SHORT SHORT 16r03); ++ ASSERT (sss SHR 2 = SHORT SHORT 16r03) ++END ++ +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/upb-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN ASSERT (UPB "foo" = 3); ++ ASSERT (1 UPB "foo" = 3); ++ ASSERT (UPB "" = 0); ++ ASSERT ((INT i = 1; UPB "") = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/vacuum-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN []INT a = (); ++ ASSERT (LWB a = 1 AND UPB a = 0) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-2.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := x; ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-3.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := (x := 20); ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-4.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF INT xx := ((x)); ++ ASSERT (xx = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-5.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT x := 10; ++ REF REF INT xx := LOC REF INT := x := 20; ++ ASSERT (xx = 20) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-6.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN MODE FOO = STRUCT (STRING s, INT i); ++ FOO f1 := ("foo", 10); ++ ASSERT (i OF f1 = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP INT a := 10; ++ ASSERT (a = 10) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-2.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN HEAP INT x, y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-1.a68 +@@ -0,0 +1,5 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [10,3]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n = 10; ++ [n,3]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-3.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 10, m := 3; ++ [n,m]INT arr; ++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-4.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]INT arr; ++ ASSERT (1 LWB arr = -4 AND 1 UPB arr = 0 AND 1 ELEMS arr = 5); ++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 2 AND 2 ELEMS arr = 2) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-5.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]INT arr; ++ FOR i FROM 1 LWB arr TO 1 UPB arr ++ DO FOR j FROM 2 LWB arr TO 2 UPB arr ++ DO ASSERT (arr[i,j] = INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-6.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [n:m,2]REF INT arr; ++ FOR i FROM 1 LWB arr TO 1 UPB arr ++ DO FOR j FROM 2 LWB arr TO 2 UPB arr ++ DO ASSERT (REF INT (arr[i,j]) :=: REF INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-7.a68 +@@ -0,0 +1,8 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := 2, m := 3; ++ [n][m]INT arr; ++ FOR i FROM LWB arr TO UPB arr ++ DO FOR j FROM LWB arr[i] TO UPB arr[i] ++ DO ASSERT (arr[i][j] = INT(SKIP)) OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-8.a68 +@@ -0,0 +1,10 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT n := -4, m := 0; ++ [10][n:m,2]INT arr; ++ FOR k FROM LWB arr TO UPB arr ++ DO FOR i FROM 1 LWB arr[k] TO 1 UPB arr[k] ++ DO FOR j FROM 2 LWB arr[k] TO 2 UPB arr[k] ++ DO ASSERT (arr[k][i,j] = INT(SKIP)) OD ++ OD ++ OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-9.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN [4]INT x, y; ++ SKIP ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/voiding-1.a68 +@@ -0,0 +1,4 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i; ++ 2 = i ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-1.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN INT i = 10; ++ REAL foo = i; ++ ASSERT (foo > 9.9); ++ ASSERT (foo < 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-2.a68 +@@ -0,0 +1,6 @@ ++# { dg-options "-fstropping=upper" } # ++BEGIN LONG INT i = LONG 10; ++ LONG REAL foo = i; ++ ASSERT (foo > LONG 9.9); ++ ASSERT (foo < LONG 10.1) ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-1.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of BITS # ++BEGIN []BOOL foo = 16rffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 32); ++ FOR i TO 16 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 17 TO 32 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-2.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of LONG BITS # ++BEGIN []BOOL foo = LONG 16rffffffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 64); ++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/widening-bits-3.a68 +@@ -0,0 +1,7 @@ ++# { dg-options "-fstropping=upper" } # ++# XXX use environment enquiry for actual size of LONG LONG BITS # ++BEGIN []BOOL foo = LONG LONG 16rffffffff; ++ ASSERT (LWB foo = 1 AND UPB foo = 64); ++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; ++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD ++END +--- /dev/null ++++ b/src/gcc/testsuite/algol68/execute/xor-bits-1.a68 +@@ -0,0 +1,18 @@ ++# { dg-options "-fstropping=upper" } # ++# XOR for SIZETY BITS. # ++BEGIN BITS b = 16rf0f0; ++ ASSERT ((b XOR 16r0f0f) = 16rffff); ++ ASSERT ((b XOR 16r00ff) = 16rf00f); ++ LONG BITS bb = LONG 16rf0f0; ++ ASSERT ((bb XOR LONG 16r0f0f) = LONG 16rffff); ++ ASSERT ((bb XOR LONG 16r00ff) = LONG 16rf00f); ++ LONG LONG BITS bbb = LONG LONG 16rf0f0; ++ ASSERT ((bbb XOR LONG LONG 16r0f0f) = LONG LONG 16rffff); ++ ASSERT ((bbb XOR LONG LONG 16r00ff) = LONG LONG 16rf00f); ++ SHORT BITS ss = SHORT 16rf0f0; ++ ASSERT ((ss XOR SHORT 16r0f0f) = SHORT 16rffff); ++ ASSERT ((ss XOR SHORT 16r00ff) = SHORT 16rf00f); ++ SHORT SHORT BITS sss = SHORT SHORT 16rf0; ++ ASSERT ((sss XOR SHORT SHORT 16r0f) = SHORT SHORT 16rff); ++ ASSERT ((sss XOR SHORT SHORT 16rff) = SHORT SHORT 16r0f) ++END +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68-dg.exp +@@ -0,0 +1,96 @@ ++# Copyright (C) 1997-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++load_lib gcc-dg.exp ++ ++# Define ALGOL68 callbacks for dg.exp. ++ ++proc algol68-dg-test { prog do_what extra_tool_flags } { ++ return [gcc-dg-test-1 algol68_target_compile $prog $do_what $extra_tool_flags] ++} ++ ++proc algol68-dg-prune { system text } { ++ return [gcc-dg-prune $system $text] ++} ++ ++# Global modules options ++set MODULES_OPTIONS "" ++ ++# Modified dg-runtest that can cycle through a list of optimization options ++# as c-torture does. ++proc algol68-dg-runtest { testcases flags default-extra-flags } { ++ global runtests ++ global TORTURE_OPTIONS ++ global MODULES_OPTIONS ++ ++ foreach test $testcases { ++ # If we're only testing specific files and this isn't one of ++ # them, skip it. ++ if ![runtest_file_p $runtests $test] { ++ continue ++ } ++ ++ # look if this is dg-do-run test, in which case ++ # we cycle through the option list, otherwise we don't ++ if [expr [search_for $test "dg-do run"]] { ++ set option_list $TORTURE_OPTIONS ++ } else { ++ set option_list [list { -O2 } ] ++ } ++ ++ set nshort [file tail [file dirname $test]]/[file tail $test] ++ ++ foreach flags_t $option_list { ++ verbose "Testing $nshort, $flags $flags_t" 1 ++ dg-test $test "$MODULES_OPTIONS $flags $flags_t" ${default-extra-flags} ++ } ++ } ++} ++ ++# Build a series of modules ACCESSed by this test. ++# ++# The first to dg-modules is a list of module names. The source file ++# for a given module MODULE is assumed to be MODULE.a68, and that file ++# must reside in the current directory. ++# ++# The second option to dg-modules, which is optional, can be used to ++# specify additional options to be passed to ga68 when it compiles the ++# modules. ++ ++proc dg-modules { args } { ++ ++ global objdir ++ global srcdir ++ global subdir ++ ++ if { [llength $args] != 2 && [llength $args] != 3 } { ++ error "[lindex $args 0]: invalid arguments" ++ } ++ set modules [lindex $args 1] ++ ++ set module_options {} ++ if { [llength $args] == 3 } { ++ set module_options [lindex $args 2] ++ } ++ ++ foreach module $modules { ++ set srcfile "${module}.a68" ++ set objfile "${module}.o" ++ # Compile the module ++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ ++ $objdir/$objfile object $module_options] ++ } ++} +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68-torture.exp +@@ -0,0 +1,480 @@ ++# Copyright (C) 2009-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Please email any bugs, comments, and/or additions to this file to ++# the author. ++ ++load_lib dg.exp ++ ++load_lib target-supports.exp ++ ++load_lib target-utils.exp ++ ++# The default option list can be overridden by ++# TORTURE_OPTIONS="{ { list1 } ... { listN } }" ++ ++if ![info exists TORTURE_OPTIONS] { ++ set TORTURE_OPTIONS [list \ ++ { -O0 } { -O1 } { -O2 } \ ++ { -O2 -fomit-frame-pointer -finline-functions } \ ++ { -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \ ++ { -O2 -fcheck=bounds } \ ++ { -O2 -fcheck=nil } \ ++ { -O3 -g } \ ++ { -Os }] ++ ++ if [check_effective_target_lto] { ++ set TORTURE_OPTIONS \ ++ [concat $TORTURE_OPTIONS [list {-flto}]] ++ } ++} ++ ++# Location of built modules ++set BUILT_MODULES_DIR "" ++ ++# Build a series of modules ACCESSed by this test. ++# ++# The first to dg-modules is a list of module names. The source file ++# for a given module MODULE is assumed to be MODULE.a68, and that file ++# must reside in the current directory. ++# ++# The second option to dg-modules, which is optional, can be used to ++# specify additional options to be passed to ga68 when it compiles the ++# modules. ++ ++set module_objects "" ++ ++proc dg-modules { args } { ++ ++ global objdir ++ global srcdir ++ global subdir ++ global module_objects ++ ++ if { [llength $args] != 2 && [llength $args] != 3 } { ++ error "[lindex $args 0]: invalid arguments" ++ } ++ set modules [lindex $args 1] ++ ++ set module_options {} ++ if { [llength $args] == 3 } { ++ set module_options [lindex $args 2] ++ } ++ ++ foreach module $modules { ++ set srcfile "${module}.a68" ++ set objfile "${module}.o" ++ # Compile the module ++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ ++ $objdir/$objfile object $module_options] ++ lappend module_objects $objfile ++ } ++} ++ ++# ++# algol68-torture-compile -- compile an algol68/execute/torture testcase. ++# ++# SRC is the full pathname of the testcase. ++# OPTION is the specific compiler flag we're testing (eg: -O2). ++# ++proc algol68-torture-compile { src option } { ++ global output ++ global srcdir tmpdir ++ global host_triplet ++ ++ set output "$tmpdir/[file tail [file rootname $src]].o" ++ ++ regsub "(?q)$srcdir/" $src "" testcase ++ ++ # If we couldn't rip $srcdir out of `src' then just do the best we can. ++ # The point is to reduce the unnecessary noise in the logs. Don't strip ++ # out too much because different testcases with the same name can confuse ++ # `test-tool'. ++ if [string match "/*" $testcase] { ++ set testcase "[file tail [file dirname $src]]/[file tail $src]" ++ } ++ ++ verbose "Testing $testcase, $option" 1 ++ ++ # Run the compiler and get results in comp_output. ++ set options "" ++ lappend options "additional_flags=-w $option" ++ ++ set comp_output [algol68_target_compile "$src" "$output" object $options] ++ ++ # See if we got something bad. ++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" ++ ++ if [string match "$fatal_signal 6" $comp_output] then { ++ algol68_fail $testcase "Got Signal 6, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ if [string match "$fatal_signal 11" $comp_output] then { ++ algol68_fail $testcase "Got Signal 11, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { ++ algol68_fail $testcase "$option ($ice)" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # We shouldn't get these because of -w, but just in case. ++ if [string match "*algol68*:*warning:*" $comp_output] then { ++ warning "$testcase: (with warnings) $option" ++ send_log "$comp_output\n" ++ unresolved "$testcase, $option" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # Prune warnings we know are unwanted. ++ set comp_output [prune_warnings $comp_output] ++ ++ # Report if the testcase is not supported. ++ set unsupported_message [algol68_check_unsupported_p $comp_output] ++ if { $unsupported_message != "" } { ++ unsupported "$testcase: $unsupported_message" ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ # remove any leftover LF/CR to make sure any output is legit ++ regsub -all -- "\[\r\n\]*" $comp_output "" comp_output ++ ++ # If any message remains, we fail. ++ if ![string match "" $comp_output] then { ++ algol68_fail $testcase $option ++ catch { remote_file build delete $output } ++ return ++ } ++ ++ algol68_pass $testcase $option ++ catch { remote_file build delete $output } ++} ++ ++ ++# ++# algol68-torture-execute -- compile and execute a testcase. ++# ++# SRC is the full pathname of the testcase. ++# ++# If the testcase has an associated .x file, we source that to run the ++# test instead. We use .x so that we don't lengthen the existing filename ++# to more than 14 chars. ++# ++proc algol68-torture-execute { src } { ++ global output ++ global srcdir tmpdir ++ global tool ++ global compiler_conditional_xfail_data ++ global TORTURE_OPTIONS ++ global BUILT_MODULES_DIR ++ global module_objects ++ global errorCode errorInfo ++ global algol68_compile_args ++ global algol68_execute_args ++ global dg-extra-tool-flags ++ ++ set dg-excess-errors-flag 0 ++ set dg-messages "" ++ set dg-extra-tool-flags "" ++ set dg-final-code "" ++ ++ # `dg-output-text' is a list of two elements: pass/fail and text. ++ # Leave second element off for now (indicates "don't perform test") ++ set dg-output-text "P" ++ ++ set tmp [dg-get-options $src] ++ foreach op $tmp { ++ verbose "Processing option: $op" 3 ++ set status [catch $op errmsg] ++ if { $status != 0 } { ++ if { 0 && [info exists errorInfo] } { ++ # This also prints a backtrace which will just confuse ++ # testcase writers, so it's disabled. ++ perror "$src: $errorInfo\n" ++ } else { ++ perror "$src: $errmsg for \"$op\"\n" ++ } ++ perror "$src: $errmsg for \"$op\"" 0 ++ return ++ } ++ } ++ ++ # Check for alternate driver. ++ set additional_flags "" ++ if [file exists [file rootname $src].x] { ++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 ++ set done_p 0 ++ catch "set done_p \[source [file rootname $src].x\]" ++ if { $done_p } { ++ return ++ } ++ } ++ ++ # Setup the options for the testcase run. ++ set option_list $TORTURE_OPTIONS ++ set executable $tmpdir/[file tail [file rootname $src].x] ++ regsub "(?q)$srcdir/" $src "" testcase ++ ++ if { ! [info exists algol68_compile_args] } { ++ set algol68_compile_args "" ++ } ++ if { ! [info exists algol68_execute_args] } { ++ set algol68_execute_args "" ++ } ++ ++ # If we couldn't rip $srcdir out of `src' then just do the best we can. ++ # The point is to reduce the unnecessary noise in the logs. Don't strip ++ # out too much because different testcases with the same name can confuse ++ # `test-tool'. ++ if [string match "/*" $testcase] { ++ set testcase "[file tail [file dirname $src]]/[file tail $src]" ++ } ++ ++ # Walk the list of options and compile and run the testcase for all ++ # options that are not explicitly disabled by the .x script (if present). ++ foreach option $option_list { ++ ++ # Torture_{compile,execute}_xfail are set by the .x script. ++ if [info exists torture_compile_xfail] { ++ setup_xfail $torture_compile_xfail ++ } ++ ++ # Torture_execute_before_{compile,execute} can be set by the .x script. ++ if [info exists torture_eval_before_compile] { ++ set ignore_me [eval $torture_eval_before_compile] ++ } ++ ++ # FIXME: We should make sure that the modules required by this testcase ++ # exist. If not, the testcase should XFAIL. ++ ++ # Compile the testcase. ++ catch { remote_file build delete $executable } ++ verbose "Testing $testcase, $option" 1 ++ ++ set options "" ++ lappend options "additional_flags=-w $option" ++ if { ${dg-extra-tool-flags} != "" } { ++ lappend options "additional_flags=${dg-extra-tool-flags}" ++ } ++ if { $additional_flags != "" } { ++ lappend options "additional_flags=$additional_flags" ++ } ++ if { $algol68_compile_args != "" } { ++ lappend options "additional_flags=$algol68_compile_args" ++ } ++ if { $BUILT_MODULES_DIR != "" } { ++ lappend options "additional_flags=-I$BUILT_MODULES_DIR" ++ } ++ if { $module_objects != "" } { ++ lappend options "additional_flags=$module_objects" ++ } ++ set comp_output [algol68_target_compile "$src" "$executable" executable $options] ++ ++ # See if we got something bad. ++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" ++ ++ if [string match "$fatal_signal 6" $comp_output] then { ++ algol68_fail $testcase "Got Signal 6, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ if [string match "$fatal_signal 11" $comp_output] then { ++ algol68_fail $testcase "Got Signal 11, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { ++ algol68_fail $testcase "$option ($ice)" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ # We shouldn't get these because of -w, but just in case. ++ if [string match "*algol68*:*warning:*" $comp_output] then { ++ warning "$testcase: (with warnings) $option" ++ send_log "$comp_output\n" ++ unresolved "$testcase, $option" ++ catch { remote_file build delete $executable } ++ continue ++ } ++ ++ # Prune warnings we know are unwanted. ++ set comp_output [prune_warnings $comp_output] ++ ++ # Report if the testcase is not supported. ++ set unsupported_message [algol68_check_unsupported_p $comp_output] ++ if { $unsupported_message != "" } { ++ unsupported "$testcase: $unsupported_message" ++ continue ++ } elseif ![file exists $executable] { ++ if ![is3way] { ++ fail "$testcase compilation, $option" ++ untested "$testcase execution, $option" ++ continue ++ } else { ++ # FIXME: since we can't test for the existence of a remote ++ # file without short of doing an remote file list, we assume ++ # that since we got no output, it must have compiled. ++ pass "$testcase compilation, $option" ++ } ++ } else { ++ pass "$testcase compilation, $option" ++ } ++ ++ if [info exists torture_execute_xfail] { ++ setup_xfail $torture_execute_xfail ++ } ++ ++ if [info exists torture_eval_before_execute] { ++ set ignore_me [eval $torture_eval_before_execute] ++ } ++ ++ # Run the testcase, and analyse the output. ++ set result [algol68_load "$executable" "$algol68_execute_args" ""] ++ set status [lindex $result 0] ++ set output [lindex $result 1] ++ if { $status eq "pass" } { ++ pass "$testcase execution test, $option" ++ verbose "Exec succeeded." 3 ++ if { [llength ${dg-output-text}] > 1 } { ++ if { [lindex ${dg-output-text} 0] eq "F" } { ++ setup_xfail "*-*-*" ++ } ++ set texttmp [lindex ${dg-output-text} 1] ++ if { ![regexp -- $texttmp $output] } { ++ fail "$testcase output pattern test, $option" ++ send_log "Output was:\n${output}\nShould match:\n$texttmp\n" ++ verbose "Failed test for output pattern $texttmp" 3 ++ } else { ++ pass "$testcase output pattern test, $option" ++ verbose "Passed test for output pattern $texttmp" 3 ++ } ++ unset texttmp ++ } ++ } elseif { $status eq "fail" } { ++ if {[info exists errorCode]} { ++ verbose "Exec failed, errorCode: $errorCode" 3 ++ } else { ++ verbose "Exec failed, errorCode not defined!" 3 ++ } ++ fail "$testcase execution test, $option" ++ } else { ++ $status "$testcase execution, $option" ++ } ++ catch { remote_file build delete $executable } ++ } ++} ++ ++ ++# ++# search_for_re -- looks for a string match in a file ++# ++proc search_for_re { file pattern } { ++ set fd [open $file r] ++ while { [gets $fd cur_line]>=0 } { ++ set lower [string tolower $cur_line] ++ if [regexp "$pattern" $lower] then { ++ close $fd ++ return 1 ++ } ++ } ++ close $fd ++ return 0 ++} ++ ++ ++# ++# algol68-torture -- the algol68-torture testcase source file processor ++# ++# This runs compilation only tests (no execute tests). ++# ++# SRC is the full pathname of the testcase, or just a file name in which ++# case we prepend $srcdir/$subdir. ++# ++# If the testcase has an associated .x file, we source that to run the ++# test instead. We use .x so that we don't lengthen the existing filename ++# to more than 14 chars. ++# ++proc algol68-torture { args } { ++ global srcdir subdir ++ global compiler_conditional_xfail_data ++ global TORTURE_OPTIONS ++ ++ set src [lindex $args 0] ++ if { [llength $args] > 1 } { ++ set options [lindex $args 1] ++ } else { ++ set options "" ++ } ++ ++ # Prepend $srdir/$subdir if missing. ++ if ![string match "*/*" $src] { ++ set src "$srcdir/$subdir/$src" ++ } ++ ++ # Check for alternate driver. ++ if [file exists [file rootname $src].x] { ++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 ++ set done_p 0 ++ catch "set done_p \[source [file rootname $src].x\]" ++ if { $done_p } { ++ return ++ } ++ } ++ ++ # loop through all the options ++ set option_list $TORTURE_OPTIONS ++ foreach option $option_list { ++ ++ # torture_compile_xfail is set by the .x script (if present) ++ if [info exists torture_compile_xfail] { ++ setup_xfail $torture_compile_xfail ++ } ++ ++ # torture_execute_before_compile is set by the .x script (if present) ++ if [info exists torture_eval_before_compile] { ++ set ignore_me [eval $torture_eval_before_compile] ++ } ++ ++ algol68-torture-compile $src "$option $options" ++ } ++} ++ ++# ++# add-ieee-options -- add options necessary for 100% ieee conformance. ++# ++proc add-ieee-options { } { ++ # Ensure that excess precision does not cause problems. ++ if { [istarget i?86-*-*] ++ || [istarget m68k-*-*] } then { ++ uplevel 1 lappend additional_flags "-ffloat-store" ++ } ++ ++ # Enable full IEEE compliance mode. ++ if { [istarget alpha*-*-*] ++ || [istarget sh*-*-*] } then { ++ uplevel 1 lappend additional_flags "-mieee" ++ } ++} +--- /dev/null ++++ b/src/gcc/testsuite/lib/algol68.exp +@@ -0,0 +1,219 @@ ++# Copyright (C) 2012-2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# ++# ALGOL68 support library routines ++# ++ ++load_lib prune.exp ++load_lib gcc-defs.exp ++load_lib timeout.exp ++load_lib target-libpath.exp ++ ++# ++# ALGOL68_UNDER_TEST is the compiler under test. ++# ++ ++set algol68_compile_options "" ++ ++ ++# ++# algol68_include_flags -- include flags for the gcc tree structure ++# ++ ++proc algol68_include_flags { paths } { ++ global srcdir ++ global TESTING_IN_BUILD_TREE ++ ++ set flags "" ++ ++ if { [is_remote host] || ![info exists TESTING_IN_BUILD_TREE] } { ++ return "${flags}" ++ } ++ ++ set gccpath ${paths} ++ ++ return "$flags" ++} ++ ++# ++# algol68_link_flags -- linker flags for the gcc tree structure ++# ++ ++proc algol68_link_flags { paths } { ++ global srcdir ++ global ld_library_path ++ global shlib_ext ++ global SHARED_OPTION ++ global ALGOL68_UNDER_TEST ++ ++ set gccpath ${paths} ++ set libio_dir "" ++ set flags "" ++ set ld_library_path "." ++ set shlib_ext [get_shlib_extension] ++ set SHARED_OPTION "" ++ verbose "shared lib extension: $shlib_ext" ++ ++ # We need to add options to locate libga68. ++ set target_wants_B_option 0 ++ if { [istarget *-*-darwin9* ] || [istarget *-*-darwin\[12\]* ] } { ++ set target_wants_B_option 1 ++ } ++ ++ if { $gccpath != "" } { ++ # Path to libga68.spec. ++ append flags "-B${gccpath}/libga68 " ++ if { [file exists "${gccpath}/libga68/.libs/libga68.a"] \ ++ || [file exists "${gccpath}/libga68/.libs/libga68.${shlib_ext}"] } { ++ if { $target_wants_B_option } { ++ append flags "-B${gccpath}/libga68/.libs " ++ } else { ++ append flags "-L${gccpath}/libga68/.libs " ++ } ++ append ld_library_path ":${gccpath}/libga68/.libs" ++ } ++ # Static linking is default. If only the shared lib is available adjust ++ # flags to always use it. If both are available, set SHARED_OPTION which ++ # will be added to PERMUTE_ARGS ++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.${shlib_ext}"] } { ++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.a"] } { ++ set SHARED_OPTION "-shared-libga68" ++ } else { ++# append flags "-shared-libga68 " ++ } ++ } ++ if [file exists "${gccpath}/libiberty/libiberty.a"] { ++ append flags "-L${gccpath}/libiberty " ++ } ++ append ld_library_path [gcc-set-multilib-library-path $ALGOL68_UNDER_TEST] ++ } ++ ++ set_ld_library_path_env_vars ++ ++ return "$flags" ++} ++ ++# ++# algol68_init -- called at the start of each subdir of tests ++# ++ ++proc algol68_init { args } { ++ global subdir ++ global algol68_initialized ++ global base_dir ++ global tmpdir ++ global libdir ++ global gluefile wrap_flags ++ global objdir srcdir ++ global ALWAYS_ALGOL68FLAGS ++ global TOOL_EXECUTABLE TOOL_OPTIONS ++ global ALGOL68_UNDER_TEST ++ global TESTING_IN_BUILD_TREE ++ global gcc_warning_prefix ++ global gcc_error_prefix ++ ++ # We set LC_ALL and LANG to C so that we get the same error messages as expected. ++ setenv LC_ALL C ++ setenv LANG C ++ ++ if ![info exists ALGOL68_UNDER_TEST] then { ++ if [info exists TOOL_EXECUTABLE] { ++ set ALGOL68_UNDER_TEST $TOOL_EXECUTABLE ++ } else { ++ if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { ++ set ALGOL68_UNDER_TEST [transform ga68] ++ } else { ++ set ALGOL68_UNDER_TEST [findfile $base_dir/../../ga68 "$base_dir/../../ga68 -B$base_dir/../../" [findfile $base_dir/ga68 "$base_dir/ga68 -B$base_dir/" [transform ga68]]] ++ } ++ } ++ } ++ ++ if ![is_remote host] { ++ if { [which $ALGOL68_UNDER_TEST] == 0 } then { ++ perror "ALGOL68_UNDER_TEST ($ALGOL68_UNDER_TEST) does not exist" ++ exit 1 ++ } ++ } ++ ++ if ![info exists tmpdir] { ++ set tmpdir "/tmp" ++ } ++ ++ if [info exists gluefile] { ++ unset gluefile ++ } ++ ++ set gcc_warning_prefix "warning:" ++ set gcc_error_prefix "(fatal )?error:" ++ ++ verbose "algol68 is initialized" 3 ++} ++ ++# ++# algol68_target_compile -- compile a source file ++# ++ ++proc algol68_target_compile { source dest type options } { ++ global tmpdir ++ global gluefile wrap_flags ++ global ALWAYS_ALGOL68FLAGS ++ global ALGOL68_UNDER_TEST ++ global individual_timeout ++ global TEST_ALWAYS_FLAGS ++ ++ # HACK: guard against infinite loops in the compiler ++ set individual_timeout 20 ++ ++ if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { ++ lappend options "libs=${gluefile}" ++ lappend options "ldflags=${wrap_flags}" ++ } ++ ++ set ALWAYS_ALGOL68FLAGS "" ++ ++ # TEST_ALWAYS_FLAGS are flags that should be passed to every ++ # compilation. They are passed first to allow individual ++ # tests to override them. ++ if [info exists TEST_ALWAYS_FLAGS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TEST_ALWAYS_FLAGS" ++ } ++ ++ if ![is_remote host] { ++ if [info exists TOOL_OPTIONS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs ${TOOL_OPTIONS}] ]" ++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs ${TOOL_OPTIONS}] ]" ++ } else { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs] ]" ++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs] ]" ++ } ++ } ++ ++ if [info exists TOOL_OPTIONS] { ++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TOOL_OPTIONS" ++ } ++ ++ verbose -log "ALWAYS_ALGOL68FLAGS set to $ALWAYS_ALGOL68FLAGS" ++ ++ lappend options "timeout=[timeout_value]" ++ lappend options "compiler=$ALGOL68_UNDER_TEST" ++ ++ set options [concat "$ALWAYS_ALGOL68FLAGS" $options] ++ set options [dg-additional-files-options $options $source $dest $type] ++ set ret [target_compile $source $dest $type $options] ++ unset individual_timeout ++ return $ret ++} +--- a/src/include/dwarf2.h ++++ b/src/include/dwarf2.h +@@ -409,6 +409,7 @@ enum dwarf_source_language + DW_LANG_Ruby = 0x0040, + DW_LANG_Move = 0x0041, + DW_LANG_Hylo = 0x0042, ++ DW_LANG_Algol68 = 0x0044, + + DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ + DW_LANG_hi_user = 0xffff, /* Implementation-defined range end. */ +@@ -476,6 +477,7 @@ enum dwarf_source_language_name + DW_LNAME_Odin = 0x002a, + DW_LNAME_P4 = 0x002b, + DW_LNAME_Metal = 0x002c, ++ DW_LNAME_Algol68 = 0x002e, + + DW_LNAME_lo_user = 0x8000, /* Implementation-defined range start. */ + DW_LNAME_hi_user = 0xffff /* Implementation-defined range end. */ +--- /dev/null ++++ b/src/libga68/Makefile.am +@@ -0,0 +1,122 @@ ++# Makefile for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++# ++# ++# if this file is changed then you need to run ++# ++# autoreconf2.69 ++ ++AUTOMAKE_OPTIONS = 1.8 foreign ++ACLOCAL_AMFLAGS = -I .. -I ../config ++# Multilib support. ++MAKEOVERRIDES= ++ ++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) ++ ++GCC_DIR = $(TOP_GCCDIR)/gcc ++A68_SRC = $(GCC_DIR)/algol68 ++ ++toolexeclibdir=@toolexeclibdir@ ++toolexecdir=@toolexecdir@ ++A68_FOR_TARGET=@A68_FOR_TARGET@ ++ ++extra_darwin_ldflags_libga68=@extra_darwin_ldflags_libga68@ ++ ++if ENABLE_DARWIN_AT_RPATH ++extra_darwin_ldflags_libga68 += -Wc,-nodefaultrpaths ++extra_darwin_ldflags_libga68 += -Wl,-rpath,@loader_path ++endif ++ ++A68_BUILDDIR := $(shell pwd) ++ ++# Work around what appears to be a GNU make bug handling MAKEFLAGS ++# values defined in terms of make variables, as is the case for CC and ++# friends when we are called from the top level Makefile. ++AM_MAKEFLAGS = \ ++ "GCC_DIR=$(GCC_DIR)" \ ++ "A68_SRC=$(A68_SRC)" \ ++ "AR_FLAGS=$(AR_FLAGS)" \ ++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ ++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ ++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "CXXFLAGS=$(CXXFLAGS)" \ ++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ ++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ ++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ ++ "EXPECT=$(EXPECT)" \ ++ "INSTALL=$(INSTALL)" \ ++ "INSTALL_DATA=$(INSTALL_DATA)" \ ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ ++ "LDFLAGS=$(LDFLAGS)" \ ++ "LIBCFLAGS=$(LIBCFLAGS)" \ ++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ ++ "MAKE=$(MAKE)" \ ++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ ++ "PICFLAG=$(PICFLAG)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ ++ "SHELL=$(SHELL)" \ ++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ ++ "exec_prefix=$(exec_prefix)" \ ++ "infodir=$(infodir)" \ ++ "libdir=$(libdir)" \ ++ "includedir=$(includedir)" \ ++ "prefix=$(prefix)" \ ++ "tooldir=$(tooldir)" \ ++ "gxx_include_dir=$(gxx_include_dir)" \ ++ "AR=$(AR)" \ ++ "AS=$(AS)" \ ++ "LD=$(LD)" \ ++ "RANLIB=$(RANLIB)" \ ++ "NM=$(NM)" \ ++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ ++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ ++ "DESTDIR=$(DESTDIR)" \ ++ "WERROR=$(WERROR)" \ ++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ ++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ ++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ ++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" ++ ++# Subdir rules rely on $(FLAGS_TO_PASS) ++FLAGS_TO_PASS = $(AM_MAKEFLAGS) ++ ++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++toolexeclib_DATA = libga68.spec ++toolexeclib_LTLIBRARIES = libga68.la ++ ++libga68_la_SOURCES = libga68.c \ ++ ga68-unistr.c \ ++ ga68-posix.c \ ++ ga68-alloc.c \ ++ ga68-error.c \ ++ ga68-standenv.c \ ++ ga68.h ++libga68_la_LIBTOOLFLAGS = ++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) ++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ ++ $(extra_darwin_ldflags_libga68) ++libga68_la_DEPENDENCIES = libga68.spec ++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) ++ ++# target overrides ++-include $(tmake_file) ++ ++include $(top_srcdir)/../multilib.am +--- /dev/null ++++ b/src/libga68/Makefile.in +@@ -0,0 +1,901 @@ ++# Makefile.in generated by automake 1.15.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994-2017 Free Software Foundation, Inc. ++ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++# Makefile for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++# ++# ++# if this file is changed then you need to run ++# ++# autoreconf2.69 ++ ++ ++VPATH = @srcdir@ ++am__is_gnu_make = { \ ++ if test -z '$(MAKELEVEL)'; then \ ++ false; \ ++ elif test -n '$(MAKE_HOST)'; then \ ++ true; \ ++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ ++ true; \ ++ else \ ++ false; \ ++ fi; \ ++} ++am__make_running_with_option = \ ++ case $${target_option-} in \ ++ ?) ;; \ ++ *) echo "am__make_running_with_option: internal error: invalid" \ ++ "target option '$${target_option-}' specified" >&2; \ ++ exit 1;; \ ++ esac; \ ++ has_opt=no; \ ++ sane_makeflags=$$MAKEFLAGS; \ ++ if $(am__is_gnu_make); then \ ++ sane_makeflags=$$MFLAGS; \ ++ else \ ++ case $$MAKEFLAGS in \ ++ *\\[\ \ ]*) \ ++ bs=\\; \ ++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ ++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ ++ esac; \ ++ fi; \ ++ skip_next=no; \ ++ strip_trailopt () \ ++ { \ ++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ ++ }; \ ++ for flg in $$sane_makeflags; do \ ++ test $$skip_next = yes && { skip_next=no; continue; }; \ ++ case $$flg in \ ++ *=*|--*) continue;; \ ++ -*I) strip_trailopt 'I'; skip_next=yes;; \ ++ -*I?*) strip_trailopt 'I';; \ ++ -*O) strip_trailopt 'O'; skip_next=yes;; \ ++ -*O?*) strip_trailopt 'O';; \ ++ -*l) strip_trailopt 'l'; skip_next=yes;; \ ++ -*l?*) strip_trailopt 'l';; \ ++ -[dEDm]) skip_next=yes;; \ ++ -[JT]) skip_next=yes;; \ ++ esac; \ ++ case $$flg in \ ++ *$$target_option*) has_opt=yes; break;; \ ++ esac; \ ++ done; \ ++ test $$has_opt = yes ++am__make_dryrun = (target_option=n; $(am__make_running_with_option)) ++am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++target_triplet = @target@ ++@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -Wc,-nodefaultrpaths \ ++@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path ++subdir = . ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ ++ $(top_srcdir)/../config/depstand.m4 \ ++ $(top_srcdir)/../config/lead-dot.m4 \ ++ $(top_srcdir)/../config/multi.m4 \ ++ $(top_srcdir)/../config/no-executables.m4 \ ++ $(top_srcdir)/../config/override.m4 \ ++ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ ++ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ ++ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ ++ $(am__configure_deps) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno config.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs ++CONFIG_HEADER = config.h ++CONFIG_CLEAN_FILES = libga68.spec ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__uninstall_files_from_dir = { \ ++ test -z "$$files" \ ++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ ++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ ++ $(am__cd) "$$dir" && rm -f $$files; }; \ ++ } ++am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ ++ "$(DESTDIR)$(toolexeclibdir)" ++LTLIBRARIES = $(toolexeclib_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++am_libga68_la_OBJECTS = libga68_la-libga68.lo \ ++ libga68_la-ga68-unistr.lo libga68_la-ga68-posix.lo \ ++ libga68_la-ga68-alloc.lo libga68_la-ga68-error.lo \ ++ libga68_la-ga68-standenv.lo ++libga68_la_OBJECTS = $(am_libga68_la_OBJECTS) ++AM_V_lt = $(am__v_lt_@AM_V@) ++am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) ++am__v_lt_0 = --silent ++am__v_lt_1 = ++libga68_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ ++ $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ ++ $(libga68_la_CFLAGS) $(CFLAGS) $(libga68_la_LDFLAGS) \ ++ $(LDFLAGS) -o $@ ++AM_V_P = $(am__v_P_@AM_V@) ++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) ++am__v_P_0 = false ++am__v_P_1 = : ++AM_V_GEN = $(am__v_GEN_@AM_V@) ++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) ++am__v_GEN_0 = @echo " GEN " $@; ++am__v_GEN_1 = ++AM_V_at = $(am__v_at_@AM_V@) ++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) ++am__v_at_0 = @ ++am__v_at_1 = ++DEFAULT_INCLUDES = -I.@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/../depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_@AM_V@) ++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) ++am__v_CC_0 = @echo " CC " $@; ++am__v_CC_1 = ++CCLD = $(CC) ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_@AM_V@) ++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) ++am__v_CCLD_0 = @echo " CCLD " $@; ++am__v_CCLD_1 = ++SOURCES = $(libga68_la_SOURCES) ++am__can_run_installinfo = \ ++ case $$AM_UPDATE_INFO_DIR in \ ++ n|no|NO) false;; \ ++ *) (install-info --version) >/dev/null 2>&1;; \ ++ esac ++DATA = $(toolexeclib_DATA) ++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ ++ $(LISP)config.h.in ++# Read a list of newline-separated strings from the standard input, ++# and print each of them once, without duplicates. Input order is ++# *not* preserved. ++am__uniquify_input = $(AWK) '\ ++ BEGIN { nonempty = 0; } \ ++ { items[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in items) print i; }; } \ ++' ++# Make sure the list of sources is unique. This is necessary because, ++# e.g., the same source file might be shared among _SOURCES variables ++# for different programs/libraries. ++am__define_uniq_tagged_files = \ ++ list='$(am__tagged_files)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | $(am__uniquify_input)` ++ETAGS = etags ++CTAGS = ctags ++CSCOPE = cscope ++AM_RECURSIVE_TARGETS = cscope ++ACLOCAL = @ACLOCAL@ ++AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CC_FOR_BUILD = @CC_FOR_BUILD@ ++CFLAGS = @CFLAGS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBGA68_BOEHM_GC_INCLUDES = @LIBGA68_BOEHM_GC_INCLUDES@ ++LIBGA68_BOEHM_GC_LIBS = @LIBGA68_BOEHM_GC_LIBS@ ++LIBGA68_GCFLAGS = @LIBGA68_GCFLAGS@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++SPEC_LIBGA68_DEPS = @SPEC_LIBGA68_DEPS@ ++STRIP = @STRIP@ ++VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_libsubdir = @build_libsubdir@ ++build_os = @build_os@ ++build_subdir = @build_subdir@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++enable_shared = @enable_shared@ ++enable_static = @enable_static@ ++exec_prefix = @exec_prefix@ ++extra_darwin_ldflags_libga68 = @extra_darwin_ldflags_libga68@ \ ++ $(am__append_1) ++get_gcc_base_ver = @get_gcc_base_ver@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_noncanonical = @host_noncanonical@ ++host_os = @host_os@ ++host_subdir = @host_subdir@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++libga68_VERSION = @libga68_VERSION@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++multi_basedir = @multi_basedir@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++slibdir = @slibdir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target = @target@ ++target_alias = @target_alias@ ++target_cpu = @target_cpu@ ++target_noncanonical = @target_noncanonical@ ++target_os = @target_os@ ++target_subdir = @target_subdir@ ++target_vendor = @target_vendor@ ++toolexecdir = @toolexecdir@ ++toolexeclibdir = @toolexeclibdir@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++AUTOMAKE_OPTIONS = 1.8 foreign ++ACLOCAL_AMFLAGS = -I .. -I ../config ++# Multilib support. ++MAKEOVERRIDES = ++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) ++GCC_DIR = $(TOP_GCCDIR)/gcc ++A68_SRC = $(GCC_DIR)/algol68 ++A68_FOR_TARGET = @A68_FOR_TARGET@ ++A68_BUILDDIR := $(shell pwd) ++ ++# Work around what appears to be a GNU make bug handling MAKEFLAGS ++# values defined in terms of make variables, as is the case for CC and ++# friends when we are called from the top level Makefile. ++AM_MAKEFLAGS = \ ++ "GCC_DIR=$(GCC_DIR)" \ ++ "A68_SRC=$(A68_SRC)" \ ++ "AR_FLAGS=$(AR_FLAGS)" \ ++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ ++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ ++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "CXXFLAGS=$(CXXFLAGS)" \ ++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ ++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ ++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ ++ "EXPECT=$(EXPECT)" \ ++ "INSTALL=$(INSTALL)" \ ++ "INSTALL_DATA=$(INSTALL_DATA)" \ ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ ++ "LDFLAGS=$(LDFLAGS)" \ ++ "LIBCFLAGS=$(LIBCFLAGS)" \ ++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ ++ "MAKE=$(MAKE)" \ ++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ ++ "PICFLAG=$(PICFLAG)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ ++ "SHELL=$(SHELL)" \ ++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ ++ "exec_prefix=$(exec_prefix)" \ ++ "infodir=$(infodir)" \ ++ "libdir=$(libdir)" \ ++ "includedir=$(includedir)" \ ++ "prefix=$(prefix)" \ ++ "tooldir=$(tooldir)" \ ++ "gxx_include_dir=$(gxx_include_dir)" \ ++ "AR=$(AR)" \ ++ "AS=$(AS)" \ ++ "LD=$(LD)" \ ++ "RANLIB=$(RANLIB)" \ ++ "NM=$(NM)" \ ++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ ++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ ++ "DESTDIR=$(DESTDIR)" \ ++ "WERROR=$(WERROR)" \ ++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ ++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ ++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ ++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" ++ ++ ++# Subdir rules rely on $(FLAGS_TO_PASS) ++FLAGS_TO_PASS = $(AM_MAKEFLAGS) ++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc ++toolexeclib_DATA = libga68.spec ++toolexeclib_LTLIBRARIES = libga68.la ++libga68_la_SOURCES = libga68.c \ ++ ga68-unistr.c \ ++ ga68-posix.c \ ++ ga68-alloc.c \ ++ ga68-error.c \ ++ ga68-standenv.c \ ++ ga68.h ++ ++libga68_la_LIBTOOLFLAGS = ++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) ++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ ++ $(extra_darwin_ldflags_libga68) ++ ++libga68_la_DEPENDENCIES = libga68.spec ++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++all: config.h ++ $(MAKE) $(AM_MAKEFLAGS) all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++am--refresh: Makefile ++ @: ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ ++ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --foreign Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; ++$(top_srcdir)/../multilib.am $(am__empty): ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ $(SHELL) ./config.status --recheck ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ $(am__cd) $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++$(am__aclocal_m4_deps): ++ ++config.h: stamp-h1 ++ @test -f $@ || rm -f stamp-h1 ++ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 ++ ++stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status ++ @rm -f stamp-h1 ++ cd $(top_builddir) && $(SHELL) ./config.status config.h ++$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) ++ rm -f stamp-h1 ++ touch $@ ++ ++distclean-hdr: ++ -rm -f config.h stamp-h1 ++libga68.spec: $(top_builddir)/config.status $(srcdir)/libga68.spec.in ++ cd $(top_builddir) && $(SHELL) ./config.status $@ ++ ++install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ ++ } ++ ++uninstall-toolexeclibLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ ++ done ++ ++clean-toolexeclibLTLIBRARIES: ++ -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) ++ @list='$(toolexeclib_LTLIBRARIES)'; \ ++ locs=`for p in $$list; do echo $$p; done | \ ++ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ ++ sort -u`; \ ++ test -z "$$locs" || { \ ++ echo rm -f $${locs}; \ ++ rm -f $${locs}; \ ++ } ++ ++libga68.la: $(libga68_la_OBJECTS) $(libga68_la_DEPENDENCIES) $(EXTRA_libga68_la_DEPENDENCIES) ++ $(AM_V_CCLD)$(libga68_la_LINK) -rpath $(toolexeclibdir) $(libga68_la_OBJECTS) $(libga68_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-alloc.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-error.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-posix.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-standenv.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-unistr.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-libga68.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ++ ++libga68_la-libga68.lo: libga68.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-libga68.lo -MD -MP -MF $(DEPDIR)/libga68_la-libga68.Tpo -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-libga68.Tpo $(DEPDIR)/libga68_la-libga68.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libga68.c' object='libga68_la-libga68.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c ++ ++libga68_la-ga68-unistr.lo: ga68-unistr.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-unistr.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-unistr.Tpo -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-unistr.Tpo $(DEPDIR)/libga68_la-ga68-unistr.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-unistr.c' object='libga68_la-ga68-unistr.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c ++ ++libga68_la-ga68-posix.lo: ga68-posix.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-posix.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-posix.Tpo -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-posix.Tpo $(DEPDIR)/libga68_la-ga68-posix.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-posix.c' object='libga68_la-ga68-posix.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c ++ ++libga68_la-ga68-alloc.lo: ga68-alloc.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-alloc.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-alloc.Tpo -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-alloc.Tpo $(DEPDIR)/libga68_la-ga68-alloc.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-alloc.c' object='libga68_la-ga68-alloc.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c ++ ++libga68_la-ga68-error.lo: ga68-error.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-error.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-error.Tpo -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-error.Tpo $(DEPDIR)/libga68_la-ga68-error.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-error.c' object='libga68_la-ga68-error.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c ++ ++libga68_la-ga68-standenv.lo: ga68-standenv.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-standenv.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-standenv.Tpo -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-standenv.Tpo $(DEPDIR)/libga68_la-ga68-standenv.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-standenv.c' object='libga68_la-ga68-standenv.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool config.lt ++install-toolexeclibDATA: $(toolexeclib_DATA) ++ @$(NORMAL_INSTALL) ++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ ++ fi; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \ ++ done ++ ++uninstall-toolexeclibDATA: ++ @$(NORMAL_UNINSTALL) ++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ dir='$(DESTDIR)$(toolexeclibdir)'; $(am__uninstall_files_from_dir) ++ ++ID: $(am__tagged_files) ++ $(am__define_uniq_tagged_files); mkid -fID $$unique ++tags: tags-am ++TAGS: tags ++ ++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ set x; \ ++ here=`pwd`; \ ++ $(am__define_uniq_tagged_files); \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: ctags-am ++ ++CTAGS: ctags ++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ $(am__define_uniq_tagged_files); \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++cscope: cscope.files ++ test ! -s cscope.files \ ++ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) ++clean-cscope: ++ -rm -f cscope.files ++cscope.files: clean-cscope cscopelist ++cscopelist: cscopelist-am ++ ++cscopelist-am: $(am__tagged_files) ++ list='$(am__tagged_files)'; \ ++ case "$(srcdir)" in \ ++ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ ++ *) sdir=$(subdir)/$(srcdir) ;; \ ++ esac; \ ++ for i in $$list; do \ ++ if test -f "$$i"; then \ ++ echo "$(subdir)/$$i"; \ ++ else \ ++ echo "$$sdir/$$i"; \ ++ fi; \ ++ done >> $(top_builddir)/cscope.files ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) $(DATA) config.h all-local ++installdirs: ++ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ if test -z '$(STRIP)'; then \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ install; \ ++ else \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ ++ fi ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-local \ ++ clean-toolexeclibLTLIBRARIES mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-hdr distclean-libtool distclean-local distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: install-exec-local install-toolexeclibDATA \ ++ install-toolexeclibLTLIBRARIES ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic \ ++ maintainer-clean-local ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool mostlyclean-local ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-toolexeclibDATA \ ++ uninstall-toolexeclibLTLIBRARIES ++ ++.MAKE: all install-am install-strip ++ ++.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ ++ check-am clean clean-cscope clean-generic clean-libtool \ ++ clean-local clean-toolexeclibLTLIBRARIES cscope cscopelist-am \ ++ ctags ctags-am distclean distclean-compile distclean-generic \ ++ distclean-hdr distclean-libtool distclean-local distclean-tags \ ++ dvi dvi-am html html-am info info-am install install-am \ ++ install-data install-data-am install-dvi install-dvi-am \ ++ install-exec install-exec-am install-exec-local install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip install-toolexeclibDATA \ ++ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ ++ installdirs maintainer-clean maintainer-clean-generic \ ++ maintainer-clean-local mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ ++ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ ++ uninstall-toolexeclibDATA uninstall-toolexeclibLTLIBRARIES ++ ++.PRECIOUS: Makefile ++ ++ ++# target overrides ++-include $(tmake_file) ++ ++# GNU Make needs to see an explicit $(MAKE) variable in the command it ++# runs to enable its job server during parallel builds. Hence the ++# comments below. ++all-multi: ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++install-multi: ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++mostlyclean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++clean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++distclean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++maintainer-clean-multi: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) ++ ++.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ ++ install-multi maintainer-clean-multi mostlyclean-multi ++ ++install-exec-local: install-multi ++ ++all-local: all-multi ++mostlyclean-local: mostlyclean-multi ++clean-local: clean-multi ++distclean-local: distclean-multi ++maintainer-clean-local: maintainer-clean-multi ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +--- /dev/null ++++ b/src/libga68/README +@@ -0,0 +1,2 @@ ++This is the GNU Algol 68 run-time library. It provides the run-time ++components needed by programs compiled by the ga68 compiler. +--- /dev/null ++++ b/src/libga68/aclocal.m4 +@@ -0,0 +1,1200 @@ ++# generated automatically by aclocal 1.15.1 -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++ ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, ++[m4_warning([this file was generated for autoconf 2.69. ++You have another version of autoconf. It may work, but is not guaranteed to. ++If you have problems, you may need to regenerate the build system entirely. ++To do so, use the procedure documented by the package, typically 'autoreconf'.])]) ++ ++# Copyright (C) 2002-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.15' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.15.1], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) ++ ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) ++ ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.15.1])dnl ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) ++ ++# Figure out how to run the assembler. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_AS ++# ---------- ++AC_DEFUN([AM_PROG_AS], ++[# By default we simply use the C compiler to build assembly code. ++AC_REQUIRE([AC_PROG_CC]) ++test "${CCAS+set}" = set || CCAS=$CC ++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS ++AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) ++AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) ++_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl ++]) ++ ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to ++# '$srcdir', '$srcdir/..', or '$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is '.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. ++ ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl ++# Expand $ac_aux_dir to an absolute path. ++am_aux_dir=`cd "$ac_aux_dir" && pwd` ++]) ++ ++# AM_CONDITIONAL -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ([2.52])dnl ++ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++m4_define([_AM_COND_VALUE_$1], [$2])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++ ++ ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl ++ ++m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], ++ [$1], [CXX], [depcc="$CXX" am_compiler_list=], ++ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], ++ [$1], [UPC], [depcc="$UPC" am_compiler_list=], ++ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) ++ ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ am__universal=false ++ m4_case([$1], [CC], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac], ++ [CXX], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac]) ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) ++ ++ ++# AM_SET_DEPDIR ++# ------------- ++# Choose a directory name for dependency files. ++# This macro is AC_REQUIREd in _AM_DEPENDENCIES. ++AC_DEFUN([AM_SET_DEPDIR], ++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) ++ ++ ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE([dependency-tracking], [dnl ++AS_HELP_STRING( ++ [--enable-dependency-tracking], ++ [do not reject slow dependency extractors]) ++AS_HELP_STRING( ++ [--disable-dependency-tracking], ++ [speeds up one-time build])]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++ am__nodep='_no' ++fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++AC_SUBST([am__nodep])dnl ++_AM_SUBST_NOTMAKE([am__nodep])dnl ++]) ++ ++# Generate code to set up dependency tracking. -*- Autoconf -*- ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[{ ++ # Older Autoconf quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named 'Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running 'make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "$am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS ++ ++ ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each '.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ++]) ++ ++# Do all the work for Automake. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. ++ ++dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. ++m4_define([AC_PROG_CC], ++m4_defn([AC_PROG_CC]) ++[_AM_PROG_CC_C_O ++]) ++ ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.65])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[AC_DIAGNOSE([obsolete], ++ [$0: two- and three-arguments forms are deprecated.]) ++m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if( ++ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), ++ [ok:ok],, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) ++ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) ++AM_MISSING_PROG([AUTOCONF], [autoconf]) ++AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) ++AM_MISSING_PROG([AUTOHEADER], [autoheader]) ++AM_MISSING_PROG([MAKEINFO], [makeinfo]) ++AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++# For better backward compatibility. To be removed once Automake 1.9.x ++# dies out for good. For more background, see: ++# ++# ++AC_SUBST([mkdir_p], ['$(MKDIR_P)']) ++# We need awk for the "check" target (and possibly the TAP driver). The ++# system "awk" is bad on some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES([CC])], ++ [m4_define([AC_PROG_CC], ++ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES([CXX])], ++ [m4_define([AC_PROG_CXX], ++ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES([OBJC])], ++ [m4_define([AC_PROG_OBJC], ++ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], ++ [_AM_DEPENDENCIES([OBJCXX])], ++ [m4_define([AC_PROG_OBJCXX], ++ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ++]) ++AC_REQUIRE([AM_SILENT_RULES])dnl ++dnl The testsuite driver may need to know about EXEEXT, so add the ++dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This ++dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. ++AC_CONFIG_COMMANDS_PRE(dnl ++[m4_provide_if([_AM_COMPILER_EXEEXT], ++ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ++ ++# POSIX will say in a future version that running "rm -f" with no argument ++# is OK; and we want to be able to make that assumption in our Makefile ++# recipes. So use an aggressive probe to check that the usage we want is ++# actually supported "in the wild" to an acceptable degree. ++# See automake bug#10828. ++# To make any issue more visible, cause the running configure to be aborted ++# by default if the 'rm' program in use doesn't match our expectations; the ++# user can still override this though. ++if rm -f && rm -fr && rm -rf; then : OK; else ++ cat >&2 <<'END' ++Oops! ++ ++Your 'rm' program seems unable to run without file operands specified ++on the command line, even when the '-f' option is present. This is contrary ++to the behaviour of most rm programs out there, and not conforming with ++the upcoming POSIX standard: ++ ++Please tell bug-automake@gnu.org about your system, including the value ++of your $PATH and any error possibly output before this message. This ++can help us improve future automake versions. ++ ++END ++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then ++ echo 'Configuration will proceed anyway, since you have set the' >&2 ++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 ++ echo >&2 ++ else ++ cat >&2 <<'END' ++Aborting the configuration process, to ensure you take notice of the issue. ++ ++You can download and install GNU coreutils to get an 'rm' implementation ++that behaves properly: . ++ ++If you want to complete the configuration process using your problematic ++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM ++to "yes", and re-run configure. ++ ++END ++ AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) ++ fi ++fi ++dnl The trailing newline in this macro's definition is deliberate, for ++dnl backward compatibility and to allow trailing 'dnl'-style comments ++dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ++]) ++ ++dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not ++dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further ++dnl mangled by Autoconf and run in a shell conditional statement. ++m4_define([_AC_COMPILER_EXEEXT], ++m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) ++ ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_arg=$1 ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++if test x"${install_sh+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; ++ *) ++ install_sh="\${SHELL} $am_aux_dir/install-sh" ++ esac ++fi ++AC_SUBST([install_sh])]) ++ ++# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- ++# From Jim Meyering ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAINTAINER_MODE([DEFAULT-MODE]) ++# ---------------------------------- ++# Control maintainer-specific portions of Makefiles. ++# Default is to disable them, unless 'enable' is passed literally. ++# For symmetry, 'disable' may be passed as well. Anyway, the user ++# can override the default with the --enable/--disable switch. ++AC_DEFUN([AM_MAINTAINER_MODE], ++[m4_case(m4_default([$1], [disable]), ++ [enable], [m4_define([am_maintainer_other], [disable])], ++ [disable], [m4_define([am_maintainer_other], [enable])], ++ [m4_define([am_maintainer_other], [enable]) ++ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) ++AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ++ dnl maintainer-mode's default is 'disable' unless 'enable' is passed ++ AC_ARG_ENABLE([maintainer-mode], ++ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], ++ am_maintainer_other[ make rules and dependencies not useful ++ (and sometimes confusing) to the casual installer])], ++ [USE_MAINTAINER_MODE=$enableval], ++ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) ++ AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ++ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) ++ MAINT=$MAINTAINER_MODE_TRUE ++ AC_SUBST([MAINT])dnl ++] ++) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo this is the am__doit target ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# Ignore all kinds of additional output from 'make'. ++case `$am_make -s -f confmf 2> /dev/null` in #( ++*the\ am__doit\ target*) ++ am__include=include ++ am__quote= ++ _am_result=GNU ++ ;; ++esac ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ case `$am_make -s -f confmf 2> /dev/null` in #( ++ *the\ am__doit\ target*) ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ ;; ++ esac ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf ++]) ++ ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it is modern enough. ++# If it is, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++if test x"${MISSING+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; ++ *) ++ MISSING="\${SHELL} $am_aux_dir/missing" ;; ++ esac ++fi ++# Use eval to expand $SHELL ++if eval "$MISSING --is-lightweight"; then ++ am_missing_run="$MISSING " ++else ++ am_missing_run= ++ AC_MSG_WARN(['missing' script is too old or missing]) ++fi ++]) ++ ++# Helper functions for option handling. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++ ++# _AM_SET_OPTION(NAME) ++# -------------------- ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ------------------------ ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_CC_C_O ++# --------------- ++# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC ++# to automatically call this. ++AC_DEFUN([_AM_PROG_CC_C_O], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([compile])dnl ++AC_LANG_PUSH([C])dnl ++AC_CACHE_CHECK( ++ [whether $CC understands -c and -o together], ++ [am_cv_prog_cc_c_o], ++ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i]) ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++AC_LANG_POP([C])]) ++ ++# For backward compatibility. ++AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_RUN_LOG(COMMAND) ++# ------------------- ++# Run COMMAND, save the exit status in ac_status, and log it. ++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) ++AC_DEFUN([AM_RUN_LOG], ++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ++ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ (exit $ac_status); }]) ++ ++# Check to make sure that the build environment is sane. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Reject unsafe characters in $srcdir or the absolute working directory ++# name. Accept space and tab only in the latter. ++am_lf=' ++' ++case `pwd` in ++ *[[\\\"\#\$\&\'\`$am_lf]]*) ++ AC_MSG_ERROR([unsafe absolute working directory name]);; ++esac ++case $srcdir in ++ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) ++ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; ++esac ++ ++# Do 'set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ am_has_slept=no ++ for am_try in 1 2; do ++ echo "timestamp, slept: $am_has_slept" > conftest.file ++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t "$srcdir/configure" conftest.file` ++ fi ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++ alias in your environment]) ++ fi ++ if test "$[2]" = conftest.file || test $am_try -eq 2; then ++ break ++ fi ++ # Just in case. ++ sleep 1 ++ am_has_slept=yes ++ done ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT([yes]) ++# If we didn't sleep, we still need to ensure time stamps of config.status and ++# generated files are strictly newer. ++am_sleep_pid= ++if grep 'slept: no' conftest.file >/dev/null 2>&1; then ++ ( sleep 1 ) & ++ am_sleep_pid=$! ++fi ++AC_CONFIG_COMMANDS_PRE( ++ [AC_MSG_CHECKING([that generated files are newer than configure]) ++ if test -n "$am_sleep_pid"; then ++ # Hide warnings about reused PIDs. ++ wait $am_sleep_pid 2>/dev/null ++ fi ++ AC_MSG_RESULT([done])]) ++rm -f conftest.file ++]) ++ ++# Copyright (C) 2009-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SILENT_RULES([DEFAULT]) ++# -------------------------- ++# Enable less verbose build rules; with the default set to DEFAULT ++# ("yes" being less verbose, "no" or empty being verbose). ++AC_DEFUN([AM_SILENT_RULES], ++[AC_ARG_ENABLE([silent-rules], [dnl ++AS_HELP_STRING( ++ [--enable-silent-rules], ++ [less verbose build output (undo: "make V=1")]) ++AS_HELP_STRING( ++ [--disable-silent-rules], ++ [verbose build output (undo: "make V=0")])dnl ++]) ++case $enable_silent_rules in @%:@ ((( ++ yes) AM_DEFAULT_VERBOSITY=0;; ++ no) AM_DEFAULT_VERBOSITY=1;; ++ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; ++esac ++dnl ++dnl A few 'make' implementations (e.g., NonStop OS and NextStep) ++dnl do not support nested variable expansions. ++dnl See automake bug#9928 and bug#10237. ++am_make=${MAKE-make} ++AC_CACHE_CHECK([whether $am_make supports nested variables], ++ [am_cv_make_support_nested_variables], ++ [if AS_ECHO([['TRUE=$(BAR$(V)) ++BAR0=false ++BAR1=true ++V=1 ++am__doit: ++ @$(TRUE) ++.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then ++ am_cv_make_support_nested_variables=yes ++else ++ am_cv_make_support_nested_variables=no ++fi]) ++if test $am_cv_make_support_nested_variables = yes; then ++ dnl Using '$V' instead of '$(V)' breaks IRIX make. ++ AM_V='$(V)' ++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' ++else ++ AM_V=$AM_DEFAULT_VERBOSITY ++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY ++fi ++AC_SUBST([AM_V])dnl ++AM_SUBST_NOTMAKE([AM_V])dnl ++AC_SUBST([AM_DEFAULT_V])dnl ++AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl ++AC_SUBST([AM_DEFAULT_VERBOSITY])dnl ++AM_BACKSLASH='\' ++AC_SUBST([AM_BACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ++]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor 'install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in "make install-strip", and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using 'strip' when the user ++# run "make install-strip". However 'strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the 'STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) ++ ++# Copyright (C) 2006-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) ++ ++# AM_SUBST_NOTMAKE(VARIABLE) ++# -------------------------- ++# Public sister of _AM_SUBST_NOTMAKE. ++AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) ++ ++# Check how to create a tarball. -*- Autoconf -*- ++ ++# Copyright (C) 2004-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of 'v7', 'ustar', or 'pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++# ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. Yes, it's still used ++# in the wild :-( We should find a proper way to deprecate it ... ++AC_SUBST([AMTAR], ['$${TAR-tar}']) ++ ++# We'll loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++ ++m4_if([$1], [v7], ++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], ++ ++ [m4_case([$1], ++ [ustar], ++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields. ++ # There is notably a 21 bits limit for the UID and the GID. In fact, ++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 ++ # and bug#13588). ++ am_max_uid=2097151 # 2^21 - 1 ++ am_max_gid=$am_max_uid ++ # The $UID and $GID variables are not portable, so we need to resort ++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls ++ # below are definitely unexpected, so allow the users to see them ++ # (that is, avoid stderr redirection). ++ am_uid=`id -u || echo unknown` ++ am_gid=`id -g || echo unknown` ++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) ++ if test $am_uid -le $am_max_uid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi ++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) ++ if test $am_gid -le $am_max_gid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi], ++ ++ [pax], ++ [], ++ ++ [m4_fatal([Unknown tar format])]) ++ ++ AC_MSG_CHECKING([how to create a $1 tar archive]) ++ ++ # Go ahead even if we have the value already cached. We do so because we ++ # need to set the values for the 'am__tar' and 'am__untar' variables. ++ _am_tools=${am_cv_prog_tar_$1-$_am_tools} ++ ++ for _am_tool in $_am_tools; do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; ++ esac ++ ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break ++ ++ # tar/untar a dummy directory, and stop if the command works. ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++ done ++ rm -rf conftest.dir ++ ++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++ AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++ ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR ++ ++m4_include([../config/acx.m4]) ++m4_include([../config/depstand.m4]) ++m4_include([../config/lead-dot.m4]) ++m4_include([../config/multi.m4]) ++m4_include([../config/no-executables.m4]) ++m4_include([../config/override.m4]) ++m4_include([../libtool.m4]) ++m4_include([../ltoptions.m4]) ++m4_include([../ltsugar.m4]) ++m4_include([../ltversion.m4]) ++m4_include([../lt~obsolete.m4]) +--- /dev/null ++++ b/src/libga68/config.h.in +@@ -0,0 +1,105 @@ ++/* config.h.in. Generated from configure.ac by autoheader. */ ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_DLFCN_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_INTTYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_MEMORY_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDINT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STDLIB_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRINGS_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_STRING_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_STAT_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_TYPES_H ++ ++/* Define to 1 if you have the header file. */ ++#undef HAVE_UNISTD_H ++ ++/* Define to the sub-directory in which libtool stores uninstalled libraries. ++ */ ++#undef LT_OBJDIR ++ ++/* Name of package */ ++#undef PACKAGE ++ ++/* Define to the address where bug reports for this package should be sent. */ ++#undef PACKAGE_BUGREPORT ++ ++/* Define to the full name of this package. */ ++#undef PACKAGE_NAME ++ ++/* Define to the full name and version of this package. */ ++#undef PACKAGE_STRING ++ ++/* Define to the one symbol short name of this package. */ ++#undef PACKAGE_TARNAME ++ ++/* Define to the home page for this package. */ ++#undef PACKAGE_URL ++ ++/* Define to the version of this package. */ ++#undef PACKAGE_VERSION ++ ++/* Define to 1 if you have the ANSI C header files. */ ++#undef STDC_HEADERS ++ ++/* Enable extensions on AIX 3, Interix. */ ++#ifndef _ALL_SOURCE ++# undef _ALL_SOURCE ++#endif ++/* Enable GNU extensions on systems that have them. */ ++#ifndef _GNU_SOURCE ++# undef _GNU_SOURCE ++#endif ++/* Enable threading extensions on Solaris. */ ++#ifndef _POSIX_PTHREAD_SEMANTICS ++# undef _POSIX_PTHREAD_SEMANTICS ++#endif ++/* Enable extensions on HP NonStop. */ ++#ifndef _TANDEM_SOURCE ++# undef _TANDEM_SOURCE ++#endif ++/* Enable general extensions on Solaris. */ ++#ifndef __EXTENSIONS__ ++# undef __EXTENSIONS__ ++#endif ++ ++ ++/* Version number of package */ ++#undef VERSION ++ ++/* Enable large inode numbers on Mac OS X 10.5. */ ++#ifndef _DARWIN_USE_64_BIT_INODE ++# define _DARWIN_USE_64_BIT_INODE 1 ++#endif ++ ++/* Number of bits in a file offset, on hosts where this is settable. */ ++#undef _FILE_OFFSET_BITS ++ ++/* Define for large files, on AIX-style hosts. */ ++#undef _LARGE_FILES ++ ++/* Define to 1 if on MINIX. */ ++#undef _MINIX ++ ++/* Define to 2 if the system does not provide POSIX.1 features except with ++ this defined. */ ++#undef _POSIX_1_SOURCE ++ ++/* Define to 1 if you need to in order for `stat' and other things to work. */ ++#undef _POSIX_SOURCE +--- /dev/null ++++ b/src/libga68/configure +@@ -0,0 +1,15335 @@ ++#! /bin/sh ++# Guess values for system-dependent variables and create Makefiles. ++# Generated by GNU Autoconf 2.69 for package-unused version-unused. ++# ++# ++# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. ++# ++# ++# This configure script is free software; the Free Software Foundation ++# gives unlimited permission to copy, distribute and modify it. ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++ ++ ++as_nl=' ++' ++export as_nl ++# Printing a long string crashes Solaris 7 /usr/bin/printf. ++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='printf %s\n' ++ as_echo_n='printf %s' ++else ++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then ++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' ++ as_echo_n='/usr/ucb/echo -n' ++ else ++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' ++ as_echo_n_body='eval ++ arg=$1; ++ case $arg in #( ++ *"$as_nl"*) ++ expr "X$arg" : "X\\(.*\\)$as_nl"; ++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; ++ esac; ++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ++ ' ++ export as_echo_n_body ++ as_echo_n='sh -c $as_echo_n_body as_echo' ++ fi ++ export as_echo_body ++ as_echo='sh -c $as_echo_body as_echo' ++fi ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { ++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || ++ PATH_SEPARATOR=';' ++ } ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++as_myself= ++case $0 in #(( ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ exit 1 ++fi ++ ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++# Use a proper internal environment variable to ensure we don't fall ++ # into an infinite loop, continuously re-executing ourselves. ++ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then ++ _as_can_reexec=no; export _as_can_reexec; ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++esac ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++as_fn_exit 255 ++ fi ++ # We don't want this to propagate to other subprocesses. ++ { _as_can_reexec=; unset _as_can_reexec;} ++if test "x$CONFIG_SHELL" = x; then ++ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '\${1+\"\$@\"}'='\"\$@\"' ++ setopt NO_GLOB_SUBST ++else ++ case \`(set -o) 2>/dev/null\` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++" ++ as_required="as_fn_return () { (exit \$1); } ++as_fn_success () { as_fn_return 0; } ++as_fn_failure () { as_fn_return 1; } ++as_fn_ret_success () { return 0; } ++as_fn_ret_failure () { return 1; } ++ ++exitcode=0 ++as_fn_success || { exitcode=1; echo as_fn_success failed.; } ++as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } ++as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } ++as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } ++if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : ++ ++else ++ exitcode=1; echo positional parameters were not saved. ++fi ++test x\$exitcode = x0 || exit 1 ++test -x / || exit 1" ++ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO ++ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO ++ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && ++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 ++test \$(( 1 + 1 )) = 2 || exit 1 ++ ++ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ++ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ++ PATH=/empty FPATH=/empty; export PATH FPATH ++ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ ++ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" ++ if (eval "$as_required") 2>/dev/null; then : ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : ++ ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++as_found=false ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ as_found=: ++ case $as_dir in #( ++ /*) ++ for as_base in sh bash ksh sh5; do ++ # Try only shells that exist, to save several forks. ++ as_shell=$as_dir/$as_base ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ CONFIG_SHELL=$as_shell as_have_required=yes ++ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : ++ break 2 ++fi ++fi ++ done;; ++ esac ++ as_found=false ++done ++$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && ++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : ++ CONFIG_SHELL=$SHELL as_have_required=yes ++fi; } ++IFS=$as_save_IFS ++ ++ ++ if test "x$CONFIG_SHELL" != x; then : ++ export CONFIG_SHELL ++ # We cannot yet assume a decent shell, so we have to provide a ++# neutralization value for shells without unset; and this also ++# works around shells that cannot unset nonexistent variables. ++# Preserve -v and -x to the replacement shell. ++BASH_ENV=/dev/null ++ENV=/dev/null ++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV ++case $- in # (((( ++ *v*x* | *x*v* ) as_opts=-vx ;; ++ *v* ) as_opts=-v ;; ++ *x* ) as_opts=-x ;; ++ * ) as_opts= ;; ++esac ++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} ++# Admittedly, this is quite paranoid, since all the known shells bail ++# out after a failed `exec'. ++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 ++exit 255 ++fi ++ ++ if test x$as_have_required = xno; then : ++ $as_echo "$0: This script requires a shell more modern than all" ++ $as_echo "$0: the shells that I found on your system." ++ if test x${ZSH_VERSION+set} = xset ; then ++ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" ++ $as_echo "$0: be upgraded to zsh 4.3.4 or later." ++ else ++ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, ++$0: including any error possibly output before this ++$0: message. Then install a modern shell, or manually run ++$0: the script under such a shell if you do have one." ++ fi ++ exit 1 ++fi ++fi ++fi ++SHELL=${CONFIG_SHELL-/bin/sh} ++export SHELL ++# Unset more variables known to interfere with behavior of common tools. ++CLICOLOR_FORCE= GREP_OPTIONS= ++unset CLICOLOR_FORCE GREP_OPTIONS ++ ++## --------------------- ## ++## M4sh Shell Functions. ## ++## --------------------- ## ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p ++ ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++ ++ as_lineno_1=$LINENO as_lineno_1a=$LINENO ++ as_lineno_2=$LINENO as_lineno_2a=$LINENO ++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && ++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { ++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } ++ ++ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have ++ # already done that, so ensure we don't try to do so again and fall ++ # in an infinite loop. This has already happened in practice. ++ _as_can_reexec=no; export _as_can_reexec ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in #((((( ++-n*) ++ case `echo 'xy\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir 2>/dev/null ++fi ++if (echo >conf$$.file) 2>/dev/null; then ++ if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -pR'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -pR' ++ elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++ else ++ as_ln_s='cp -pR' ++ fi ++else ++ as_ln_s='cp -pR' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p='mkdir -p "$as_dir"' ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++ ++test -n "$DJDIR" || exec 7<&0 &1 ++ ++# Name of the host. ++# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, ++# so uname gets run too. ++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ++ ++# ++# Initializations. ++# ++ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIBOBJS= ++cross_compiling=no ++subdirs= ++MFLAGS= ++MAKEFLAGS= ++ ++# Identity of this package. ++PACKAGE_NAME='package-unused' ++PACKAGE_TARNAME='libga68' ++PACKAGE_VERSION='version-unused' ++PACKAGE_STRING='package-unused version-unused' ++PACKAGE_BUGREPORT='' ++PACKAGE_URL='' ++ ++ac_unique_file="Makefile.am" ++# Factoring default headers for most tests. ++ac_includes_default="\ ++#include ++#ifdef HAVE_SYS_TYPES_H ++# include ++#endif ++#ifdef HAVE_SYS_STAT_H ++# include ++#endif ++#ifdef STDC_HEADERS ++# include ++# include ++#else ++# ifdef HAVE_STDLIB_H ++# include ++# endif ++#endif ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H ++# include ++# endif ++# include ++#endif ++#ifdef HAVE_STRINGS_H ++# include ++#endif ++#ifdef HAVE_INTTYPES_H ++# include ++#endif ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H ++# include ++#endif" ++ ++ac_unique_file="Makefile.am" ++ac_subst_vars='am__EXEEXT_FALSE ++am__EXEEXT_TRUE ++LTLIBOBJS ++LIBOBJS ++LIBGA68_BOEHM_GC_LIBS ++LIBGA68_BOEHM_GC_INCLUDES ++LIBGA68_GCFLAGS ++extra_darwin_ldflags_libga68 ++libga68_VERSION ++SPEC_LIBGA68_DEPS ++get_gcc_base_ver ++CC_FOR_BUILD ++enable_static ++enable_shared ++ENABLE_DARWIN_AT_RPATH_FALSE ++ENABLE_DARWIN_AT_RPATH_TRUE ++OTOOL64 ++OTOOL ++LIPO ++NMEDIT ++DSYMUTIL ++OBJDUMP ++LN_S ++ac_ct_DUMPBIN ++DUMPBIN ++LD ++FGREP ++SED ++LIBTOOL ++RANLIB ++NM ++AR ++am__fastdepCCAS_FALSE ++am__fastdepCCAS_TRUE ++CCASDEPMODE ++CCASFLAGS ++CCAS ++MAINT ++MAINTAINER_MODE_FALSE ++MAINTAINER_MODE_TRUE ++toolexeclibdir ++toolexecdir ++slibdir ++AM_BACKSLASH ++AM_DEFAULT_VERBOSITY ++AM_DEFAULT_V ++AM_V ++am__fastdepCC_FALSE ++am__fastdepCC_TRUE ++CCDEPMODE ++am__nodep ++AMDEPBACKSLASH ++AMDEP_FALSE ++AMDEP_TRUE ++am__quote ++am__include ++DEPDIR ++am__untar ++am__tar ++AMTAR ++am__leading_dot ++SET_MAKE ++AWK ++mkdir_p ++MKDIR_P ++INSTALL_STRIP_PROGRAM ++STRIP ++install_sh ++MAKEINFO ++AUTOHEADER ++AUTOMAKE ++AUTOCONF ++ACLOCAL ++VERSION ++PACKAGE ++CYGPATH_W ++am__isrc ++INSTALL_DATA ++INSTALL_SCRIPT ++INSTALL_PROGRAM ++target_subdir ++host_subdir ++build_subdir ++build_libsubdir ++target_noncanonical ++host_noncanonical ++target_os ++target_vendor ++target_cpu ++target ++host_os ++host_vendor ++host_cpu ++host ++build_os ++build_vendor ++build_cpu ++build ++EGREP ++GREP ++CPP ++OBJEXT ++EXEEXT ++ac_ct_CC ++CPPFLAGS ++LDFLAGS ++CFLAGS ++CC ++multi_basedir ++target_alias ++host_alias ++build_alias ++LIBS ++ECHO_T ++ECHO_N ++ECHO_C ++DEFS ++mandir ++localedir ++libdir ++psdir ++pdfdir ++dvidir ++htmldir ++infodir ++docdir ++oldincludedir ++includedir ++localstatedir ++sharedstatedir ++sysconfdir ++datadir ++datarootdir ++libexecdir ++sbindir ++bindir ++program_transform_name ++prefix ++exec_prefix ++PACKAGE_URL ++PACKAGE_BUGREPORT ++PACKAGE_STRING ++PACKAGE_VERSION ++PACKAGE_TARNAME ++PACKAGE_NAME ++PATH_SEPARATOR ++SHELL' ++ac_subst_files='' ++ac_user_opts=' ++enable_option_checking ++enable_multilib ++with_build_libsubdir ++enable_dependency_tracking ++enable_silent_rules ++enable_largefile ++with_cross_host ++enable_version_specific_runtime_libs ++with_slibdir ++enable_maintainer_mode ++enable_shared ++enable_static ++with_pic ++enable_fast_install ++with_gnu_ld ++enable_libtool_lock ++enable_darwin_at_rpath ++with_gcc_major_version_only ++enable_algol68_gc ++with_target_bdw_gc ++with_target_bdw_gc_include ++with_target_bdw_gc_lib ++' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ ++ ++# Initialize some variables set by options. ++ac_init_help= ++ac_init_version=false ++ac_unrecognized_opts= ++ac_unrecognized_sep= ++# The variables have the same names as the options, with ++# dashes changed to underlines. ++cache_file=/dev/null ++exec_prefix=NONE ++no_create= ++no_recursion= ++prefix=NONE ++program_prefix=NONE ++program_suffix=NONE ++program_transform_name=s,x,x, ++silent= ++site= ++srcdir= ++verbose= ++x_includes=NONE ++x_libraries=NONE ++ ++# Installation directory options. ++# These are left unexpanded so users can "make install exec_prefix=/foo" ++# and all the variables that are supposed to be based on exec_prefix ++# by default will actually change. ++# Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) ++bindir='${exec_prefix}/bin' ++sbindir='${exec_prefix}/sbin' ++libexecdir='${exec_prefix}/libexec' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' ++sysconfdir='${prefix}/etc' ++sharedstatedir='${prefix}/com' ++localstatedir='${prefix}/var' ++includedir='${prefix}/include' ++oldincludedir='/usr/include' ++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' ++ ++ac_prev= ++ac_dashdash= ++for ac_option ++do ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *=) ac_optarg= ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=bindir ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ bindir=$ac_optarg ;; ++ ++ -build | --build | --buil | --bui | --bu) ++ ac_prev=build_alias ;; ++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) ++ build_alias=$ac_optarg ;; ++ ++ -cache-file | --cache-file | --cache-fil | --cache-fi \ ++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ++ ac_prev=cache_file ;; ++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ ++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ++ cache_file=$ac_optarg ;; ++ ++ --config-cache | -C) ++ cache_file=config.cache ;; ++ ++ -datadir | --datadir | --datadi | --datad) ++ ac_prev=datadir ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) ++ datadir=$ac_optarg ;; ++ ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ ++ -disable-* | --disable-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid feature name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"enable_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval enable_$ac_useropt=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; ++ ++ -enable-* | --enable-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid feature name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"enable_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval enable_$ac_useropt=\$ac_optarg ;; ++ ++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ ++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ ++ | --exec | --exe | --ex) ++ ac_prev=exec_prefix ;; ++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ ++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ ++ | --exec=* | --exe=* | --ex=*) ++ exec_prefix=$ac_optarg ;; ++ ++ -gas | --gas | --ga | --g) ++ # Obsolete; use --with-gas. ++ with_gas=yes ;; ++ ++ -help | --help | --hel | --he | -h) ++ ac_init_help=long ;; ++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ++ ac_init_help=recursive ;; ++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ++ ac_init_help=short ;; ++ ++ -host | --host | --hos | --ho) ++ ac_prev=host_alias ;; ++ -host=* | --host=* | --hos=* | --ho=*) ++ host_alias=$ac_optarg ;; ++ ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=includedir ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ includedir=$ac_optarg ;; ++ ++ -infodir | --infodir | --infodi | --infod | --info | --inf) ++ ac_prev=infodir ;; ++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ++ infodir=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=libdir ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ libdir=$ac_optarg ;; ++ ++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ ++ | --libexe | --libex | --libe) ++ ac_prev=libexecdir ;; ++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ ++ | --libexe=* | --libex=* | --libe=*) ++ libexecdir=$ac_optarg ;; ++ ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated \ ++ | --localstate | --localstat | --localsta | --localst | --locals) ++ ac_prev=localstatedir ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) ++ localstatedir=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ++ ac_prev=mandir ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ++ mandir=$ac_optarg ;; ++ ++ -nfp | --nfp | --nf) ++ # Obsolete; use --without-fp. ++ with_fp=no ;; ++ ++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ++ | --no-cr | --no-c | -n) ++ no_create=yes ;; ++ ++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ++ no_recursion=yes ;; ++ ++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ ++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ ++ | --oldin | --oldi | --old | --ol | --o) ++ ac_prev=oldincludedir ;; ++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ ++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ ++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ++ oldincludedir=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=prefix ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ prefix=$ac_optarg ;; ++ ++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ ++ | --program-pre | --program-pr | --program-p) ++ ac_prev=program_prefix ;; ++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ ++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ++ program_prefix=$ac_optarg ;; ++ ++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ ++ | --program-suf | --program-su | --program-s) ++ ac_prev=program_suffix ;; ++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ ++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ++ program_suffix=$ac_optarg ;; ++ ++ -program-transform-name | --program-transform-name \ ++ | --program-transform-nam | --program-transform-na \ ++ | --program-transform-n | --program-transform- \ ++ | --program-transform | --program-transfor \ ++ | --program-transfo | --program-transf \ ++ | --program-trans | --program-tran \ ++ | --progr-tra | --program-tr | --program-t) ++ ac_prev=program_transform_name ;; ++ -program-transform-name=* | --program-transform-name=* \ ++ | --program-transform-nam=* | --program-transform-na=* \ ++ | --program-transform-n=* | --program-transform-=* \ ++ | --program-transform=* | --program-transfor=* \ ++ | --program-transfo=* | --program-transf=* \ ++ | --program-trans=* | --program-tran=* \ ++ | --progr-tra=* | --program-tr=* | --program-t=*) ++ program_transform_name=$ac_optarg ;; ++ ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ silent=yes ;; ++ ++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ++ ac_prev=sbindir ;; ++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ ++ | --sbi=* | --sb=*) ++ sbindir=$ac_optarg ;; ++ ++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ ++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ ++ | --sharedst | --shareds | --shared | --share | --shar \ ++ | --sha | --sh) ++ ac_prev=sharedstatedir ;; ++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ ++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ ++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ ++ | --sha=* | --sh=*) ++ sharedstatedir=$ac_optarg ;; ++ ++ -site | --site | --sit) ++ ac_prev=site ;; ++ -site=* | --site=* | --sit=*) ++ site=$ac_optarg ;; ++ ++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ++ ac_prev=srcdir ;; ++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ++ srcdir=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy) ++ ac_prev=sysconfdir ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ++ sysconfdir=$ac_optarg ;; ++ ++ -target | --target | --targe | --targ | --tar | --ta | --t) ++ ac_prev=target_alias ;; ++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ++ target_alias=$ac_optarg ;; ++ ++ -v | -verbose | --verbose | --verbos | --verbo | --verb) ++ verbose=yes ;; ++ ++ -version | --version | --versio | --versi | --vers | -V) ++ ac_init_version=: ;; ++ ++ -with-* | --with-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid package name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"with_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval with_$ac_useropt=\$ac_optarg ;; ++ ++ -without-* | --without-*) ++ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && ++ as_fn_error $? "invalid package name: $ac_useropt" ++ ac_useropt_orig=$ac_useropt ++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` ++ case $ac_user_opts in ++ *" ++"with_$ac_useropt" ++"*) ;; ++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ++ ac_unrecognized_sep=', ';; ++ esac ++ eval with_$ac_useropt=no ;; ++ ++ --x) ++ # Obsolete; use --with-x. ++ with_x=yes ;; ++ ++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ ++ | --x-incl | --x-inc | --x-in | --x-i) ++ ac_prev=x_includes ;; ++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ ++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ++ x_includes=$ac_optarg ;; ++ ++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ ++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ++ ac_prev=x_libraries ;; ++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ ++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ++ x_libraries=$ac_optarg ;; ++ ++ -*) as_fn_error $? "unrecognized option: \`$ac_option' ++Try \`$0 --help' for more information" ++ ;; ++ ++ *=*) ++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` ++ # Reject names that are not valid shell variable names. ++ case $ac_envvar in #( ++ '' | [0-9]* | *[!_$as_cr_alnum]* ) ++ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; ++ esac ++ eval $ac_envvar=\$ac_optarg ++ export $ac_envvar ;; ++ ++ *) ++ # FIXME: should be removed in autoconf 3.0. ++ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ++ ;; ++ ++ esac ++done ++ ++if test -n "$ac_prev"; then ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ as_fn_error $? "missing argument to $ac_option" ++fi ++ ++if test -n "$ac_unrecognized_opts"; then ++ case $enable_option_checking in ++ no) ;; ++ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; ++ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; ++ esac ++fi ++ ++# Check all directory arguments for consistency. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir ++do ++ eval ac_val=\$$ac_var ++ # Remove trailing slashes. ++ case $ac_val in ++ */ ) ++ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` ++ eval $ac_var=\$ac_val;; ++ esac ++ # Be sure to have absolute directory names. ++ case $ac_val in ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; ++ esac ++ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" ++done ++ ++# There might be people who depend on the old broken behavior: `$host' ++# used to hold the argument of --host etc. ++# FIXME: To remove some day. ++build=$build_alias ++host=$host_alias ++target=$target_alias ++ ++# FIXME: To remove some day. ++if test "x$host_alias" != x; then ++ if test "x$build_alias" = x; then ++ cross_compiling=maybe ++ elif test "x$build_alias" != "x$host_alias"; then ++ cross_compiling=yes ++ fi ++fi ++ ++ac_tool_prefix= ++test -n "$host_alias" && ac_tool_prefix=$host_alias- ++ ++test "$silent" = yes && exec 6>/dev/null ++ ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ as_fn_error $? "working directory cannot be determined" ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ as_fn_error $? "pwd does not report name of working directory" ++ ++ ++# Find the source files, if location was not specified. ++if test -z "$srcdir"; then ++ ac_srcdir_defaulted=yes ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$as_myself" || ++$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_myself" : 'X\(//\)[^/]' \| \ ++ X"$as_myself" : 'X\(//\)$' \| \ ++ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_myself" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ srcdir=$ac_confdir ++ if test ! -r "$srcdir/$ac_unique_file"; then ++ srcdir=.. ++ fi ++else ++ ac_srcdir_defaulted=no ++fi ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done ++ ++# ++# Report the --help message. ++# ++if test "$ac_init_help" = "long"; then ++ # Omit some internal or obsolete options to make the list less imposing. ++ # This message is too long to be a string in the A/UX 3.1 sh. ++ cat <<_ACEOF ++\`configure' configures package-unused version-unused to adapt to many kinds of systems. ++ ++Usage: $0 [OPTION]... [VAR=VALUE]... ++ ++To assign environment variables (e.g., CC, CFLAGS...), specify them as ++VAR=VALUE. See below for descriptions of some of the useful variables. ++ ++Defaults for the options are specified in brackets. ++ ++Configuration: ++ -h, --help display this help and exit ++ --help=short display options specific to this package ++ --help=recursive display the short help of all the included packages ++ -V, --version display version information and exit ++ -q, --quiet, --silent do not print \`checking ...' messages ++ --cache-file=FILE cache test results in FILE [disabled] ++ -C, --config-cache alias for \`--cache-file=config.cache' ++ -n, --no-create do not create output files ++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] ++ ++Installation directories: ++ --prefix=PREFIX install architecture-independent files in PREFIX ++ [$ac_default_prefix] ++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ++ [PREFIX] ++ ++By default, \`make install' will install all the files in ++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ++an installation prefix other than \`$ac_default_prefix' using \`--prefix', ++for instance \`--prefix=\$HOME'. ++ ++For better control, use the options below. ++ ++Fine tuning of the installation directories: ++ --bindir=DIR user executables [EPREFIX/bin] ++ --sbindir=DIR system admin executables [EPREFIX/sbin] ++ --libexecdir=DIR program executables [EPREFIX/libexec] ++ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] ++ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] ++ --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --libdir=DIR object code libraries [EPREFIX/lib] ++ --includedir=DIR C header files [PREFIX/include] ++ --oldincludedir=DIR C header files for non-gcc [/usr/include] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/libga68] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] ++_ACEOF ++ ++ cat <<\_ACEOF ++ ++Program names: ++ --program-prefix=PREFIX prepend PREFIX to installed program names ++ --program-suffix=SUFFIX append SUFFIX to installed program names ++ --program-transform-name=PROGRAM run sed PROGRAM on installed program names ++ ++System types: ++ --build=BUILD configure for building on BUILD [guessed] ++ --host=HOST cross-compile to build programs to run on HOST [BUILD] ++ --target=TARGET configure for building compilers for TARGET [HOST] ++_ACEOF ++fi ++ ++if test -n "$ac_init_help"; then ++ case $ac_init_help in ++ short | recursive ) echo "Configuration of package-unused version-unused:";; ++ esac ++ cat <<\_ACEOF ++ ++Optional Features: ++ --disable-option-checking ignore unrecognized --enable/--with options ++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) ++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ++ --enable-multilib build many library versions (default) ++ --enable-dependency-tracking ++ do not reject slow dependency extractors ++ --disable-dependency-tracking ++ speeds up one-time build ++ --enable-silent-rules less verbose build output (undo: "make V=1") ++ --disable-silent-rules verbose build output (undo: "make V=0") ++ --disable-largefile omit support for large files ++ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ++ --enable-maintainer-mode ++ enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer ++ --enable-shared[=PKGS] build shared libraries [default=yes] ++ --enable-static[=PKGS] build static libraries [default=yes] ++ --enable-fast-install[=PKGS] ++ optimize for fast installation [default=yes] ++ --disable-libtool-lock avoid locking (might break parallel builds) ++ --enable-darwin-at-rpath ++ install libraries with @rpath/library-name, requires ++ rpaths to be added to executables ++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU ++ Algol runtime ++ ++Optional Packages: ++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-build-libsubdir=DIR Directory where to find libraries for build system ++ --with-cross-host=HOST Configuring with a cross compiler ++ --with-slibdir=DIR shared libraries in DIR LIBDIR ++ --with-pic try to use only PIC/non-PIC objects [default=use ++ both] ++ --with-gnu-ld assume the C compiler uses GNU ld [default=no] ++ --with-gcc-major-version-only ++ use only GCC major number in filesystem paths ++ --with-target-bdw-gc=PATHLIST ++ specify prefix directory for installed bdw-gc ++ package. Equivalent to ++ --with-target-bdw-gc-include=PATH/include plus ++ --with-target-bdw-gc-lib=PATH/lib ++ --with-target-bdw-gc-include=PATHLIST ++ specify directories for installed bdw-gc include ++ files ++ --with-target-bdw-gc-lib=PATHLIST ++ specify directories for installed bdw-gc library ++ ++Some influential environment variables: ++ CC C compiler command ++ CFLAGS C compiler flags ++ LDFLAGS linker flags, e.g. -L if you have libraries in a ++ nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory ++ CPP C preprocessor ++ CCAS assembler compiler command (defaults to CC) ++ CCASFLAGS assembler compiler flags (defaults to CFLAGS) ++ ++Use these variables to override the choices made by `configure' or to help ++it to find libraries and programs with nonstandard names/locations. ++ ++Report bugs to the package provider. ++_ACEOF ++ac_status=$? ++fi ++ ++if test "$ac_init_help" = "recursive"; then ++ # If there are subdirs, report their specific --help. ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || ++ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || ++ continue ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive ++ else ++ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } ++ done ++fi ++ ++test -n "$ac_init_help" && exit $ac_status ++if $ac_init_version; then ++ cat <<\_ACEOF ++package-unused configure version-unused ++generated by GNU Autoconf 2.69 ++ ++Copyright (C) 2012 Free Software Foundation, Inc. ++This configure script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it. ++_ACEOF ++ exit ++fi ++ ++## ------------------------ ## ++## Autoconf initialization. ## ++## ------------------------ ## ++ ++# ac_fn_c_try_compile LINENO ++# -------------------------- ++# Try to compile conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext ++ if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_compile ++ ++# ac_fn_c_try_cpp LINENO ++# ---------------------- ++# Try to preprocess conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_cpp () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } > conftest.i && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_cpp ++ ++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists, giving a warning if it cannot be compiled using ++# the include files in INCLUDES and setting the cache variable VAR ++# accordingly. ++ac_fn_c_check_header_mongrel () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if eval \${$3+:} false; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++else ++ # Is the header compilable? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 ++$as_echo_n "checking $2 usability... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_header_compiler=yes ++else ++ ac_header_compiler=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 ++$as_echo "$ac_header_compiler" >&6; } ++ ++# Is the header present? ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 ++$as_echo_n "checking $2 presence... " >&6; } ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include <$2> ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ac_header_preproc=yes ++else ++ ac_header_preproc=no ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 ++$as_echo "$ac_header_preproc" >&6; } ++ ++# So? What about this header? ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( ++ yes:no: ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 ++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++ no:yes:* ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 ++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 ++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 ++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 ++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 ++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ++ ;; ++esac ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ eval "$3=\$ac_header_compiler" ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++fi ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_header_mongrel ++ ++# ac_fn_c_try_run LINENO ++# ---------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes ++# that executables *can* be run. ++ac_fn_c_try_run () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: program exited with status $ac_status" >&5 ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=$ac_status ++fi ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_run ++ ++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES ++# ------------------------------------------------------- ++# Tests whether HEADER exists and can be compiled using the include files in ++# INCLUDES, setting the cache variable VAR accordingly. ++ac_fn_c_check_header_compile () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++$4 ++#include <$2> ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_header_compile ++ ++# ac_fn_c_try_link LINENO ++# ----------------------- ++# Try to link conftest.$ac_ext, and return whether this succeeded. ++ac_fn_c_try_link () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ rm -f conftest.$ac_objext conftest$ac_exeext ++ if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ grep -v '^ *+' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ mv -f conftest.er1 conftest.err ++ fi ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && { ++ test "$cross_compiling" = yes || ++ test -x conftest$ac_exeext ++ }; then : ++ ac_retval=0 ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_retval=1 ++fi ++ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information ++ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would ++ # interfere with the next link command; also delete a directory that is ++ # left behind by Apple's compiler. We do this before executing the actions. ++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ as_fn_set_status $ac_retval ++ ++} # ac_fn_c_try_link ++ ++# ac_fn_c_check_func LINENO FUNC VAR ++# ---------------------------------- ++# Tests whether FUNC exists, setting the cache variable VAR accordingly ++ac_fn_c_check_func () ++{ ++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 ++$as_echo_n "checking for $2... " >&6; } ++if eval \${$3+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++/* Define $2 to an innocuous variant, in case declares $2. ++ For example, HP-UX 11i declares gettimeofday. */ ++#define $2 innocuous_$2 ++ ++/* System header to define __stub macros and hopefully few prototypes, ++ which can conflict with char $2 (); below. ++ Prefer to if __STDC__ is defined, since ++ exists even on freestanding compilers. */ ++ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ ++#undef $2 ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char $2 (); ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined __stub_$2 || defined __stub___$2 ++choke me ++#endif ++ ++int ++main () ++{ ++return $2 (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ eval "$3=yes" ++else ++ eval "$3=no" ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++eval ac_res=\$$3 ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 ++$as_echo "$ac_res" >&6; } ++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno ++ ++} # ac_fn_c_check_func ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by package-unused $as_me version-unused, which was ++generated by GNU Autoconf 2.69. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++## --------- ## ++## Platform. ## ++## --------- ## ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ $as_echo "PATH: $as_dir" ++ done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; ++ 2) ++ as_fn_append ac_configure_args1 " '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ as_fn_append ac_configure_args " '$ac_arg'" ++ ;; ++ esac ++ done ++done ++{ ac_configure_args0=; unset ac_configure_args0;} ++{ ac_configure_args1=; unset ac_configure_args1;} ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ $as_echo "## ---------------- ## ++## Cache variables. ## ++## ---------------- ##" ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( ++ *) { eval $ac_var=; unset $ac_var;} ;; ++ esac ;; ++ esac ++ done ++ (set) 2>&1 | ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ sed -n \ ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( ++ *) ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) ++ echo ++ ++ $as_echo "## ----------------- ## ++## Output variables. ## ++## ----------------- ##" ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ $as_echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ $as_echo "## ------------------- ## ++## File substitutions. ## ++## ------------------- ##" ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ $as_echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ $as_echo "## ----------- ## ++## confdefs.h. ## ++## ----------- ##" ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ $as_echo "$as_me: caught signal $ac_signal" ++ $as_echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && ++ exit $exit_status ++' 0 ++for ac_signal in 1 2 13 15; do ++ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal ++done ++ac_signal=0 ++ ++# confdefs.h avoids OS command line length limits that DEFS can exceed. ++rm -f -r conftest* confdefs.h ++ ++$as_echo "/* confdefs.h */" > confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_URL "$PACKAGE_URL" ++_ACEOF ++ ++ ++# Let the site file select an alternate cache file if it wants to. ++# Prefer an explicitly selected file to automatically selected ones. ++ac_site_file1=NONE ++ac_site_file2=NONE ++if test -n "$CONFIG_SITE"; then ++ # We do not want a PATH search for config.site. ++ case $CONFIG_SITE in #(( ++ -*) ac_site_file1=./$CONFIG_SITE;; ++ */*) ac_site_file1=$CONFIG_SITE;; ++ *) ac_site_file1=./$CONFIG_SITE;; ++ esac ++elif test "x$prefix" != xNONE; then ++ ac_site_file1=$prefix/share/config.site ++ ac_site_file2=$prefix/etc/config.site ++else ++ ac_site_file1=$ac_default_prefix/share/config.site ++ ac_site_file2=$ac_default_prefix/etc/config.site ++fi ++for ac_site_file in "$ac_site_file1" "$ac_site_file2" ++do ++ test "x$ac_site_file" = xNONE && continue ++ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 ++$as_echo "$as_me: loading site script $ac_site_file" >&6;} ++ sed 's/^/| /' "$ac_site_file" >&5 ++ . "$ac_site_file" \ ++ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "failed to load site script $ac_site_file ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++done ++ ++if test -r "$cache_file"; then ++ # Some versions of bash will fail to source /dev/null (special files ++ # actually), so we avoid doing that. DJGPP emulates it as a regular file. ++ if test /dev/null != "$cache_file" && test -f "$cache_file"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 ++$as_echo "$as_me: loading cache $cache_file" >&6;} ++ case $cache_file in ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; ++ esac ++ fi ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 ++$as_echo "$as_me: creating cache $cache_file" >&6;} ++ >$cache_file ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set ++ eval ac_new_set=\$ac_env_${ac_var}_set ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value ++ case $ac_old_set,$ac_new_set in ++ set,) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,set) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 ++$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,);; ++ *) ++ if test "x$ac_old_val" != "x$ac_new_val"; then ++ # differences in whitespace do not lead to failure. ++ ac_old_val_w=`echo x $ac_old_val` ++ ac_new_val_w=`echo x $ac_new_val` ++ if test "$ac_old_val_w" != "$ac_new_val_w"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 ++$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ ac_cache_corrupted=: ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 ++$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} ++ eval $ac_var=\$ac_old_val ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 ++$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 ++$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} ++ fi;; ++ esac ++ # Pass precious variables to config.status. ++ if test "$ac_new_set" = set; then ++ case $ac_new_val in ++ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) as_fn_append ac_configure_args " '$ac_arg'" ;; ++ esac ++ fi ++done ++if $ac_cache_corrupted; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 ++$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} ++ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 ++fi ++## -------------------- ## ++## Main body of script. ## ++## -------------------- ## ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++ ++ ++ ++ ++ac_config_headers="$ac_config_headers config.h" ++ ++ ++# Add --enable-multilib to configure, which defaults to enable. ++# Default to --enable-multilib ++# Check whether --enable-multilib was given. ++if test "${enable_multilib+set}" = set; then : ++ enableval=$enable_multilib; case "$enableval" in ++ yes) multilib=yes ;; ++ no) multilib=no ;; ++ *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; ++ esac ++else ++ multilib=yes ++fi ++ ++ ++# We may get other options which we leave undocumented: ++# --with-target-subdir, --with-multisrctop, --with-multisubdir ++# See config-ml.in if you want the gory details. ++ ++if test "$srcdir" = "."; then ++ if test "$with_target_subdir" != "."; then ++ multi_basedir="$srcdir/$with_multisrctop../.." ++ else ++ multi_basedir="$srcdir/$with_multisrctop.." ++ fi ++else ++ multi_basedir="$srcdir/.." ++fi ++ ++ ++# Even if the default multilib is not a cross compilation, ++# it may be that some of the other multilibs are. ++if test $cross_compiling = no && test $multilib = yes \ ++ && test "x${with_multisubdir}" != x ; then ++ cross_compiling=maybe ++fi ++ ++ac_config_commands="$ac_config_commands default-1" ++ ++ ++if test "${multilib}" = "yes"; then ++ multilib_arg="--enable-multilib" ++else ++ multilib_arg= ++fi ++ ++# Cope with compilers, in subsequent tests, that at this stage may not ++# be able to build executables. ++ ++ ++# Enable extensions to C or POSIX on hosts that normally disable the ++# extensions. This should be called before any macros that run the C ++# compiler. ++ac_aux_dir= ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install-sh -c" ++ break ++ elif test -f "$ac_dir/install.sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install.sh -c" ++ break ++ elif test -f "$ac_dir/shtool"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/shtool install -c" ++ break ++ fi ++done ++if test -z "$ac_aux_dir"; then ++ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 ++fi ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ ++ ++# Expand $ac_aux_dir to an absolute path. ++am_aux_dir=`cd "$ac_aux_dir" && pwd` ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $# != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } ++ ++# Provide some information about the compiler. ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 ++set X $ac_compile ++ac_compiler=$2 ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done ++ ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++printf ("hello world\n"); ++ ; ++ return 0; ++} ++_ACEOF ++# FIXME: Cleanup? ++if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ gcc_no_link=no ++else ++ gcc_no_link=yes ++fi ++if test x$gcc_no_link = xyes; then ++ # Setting cross_compile will disable run tests; it will ++ # also disable AC_CHECK_FILE but that's generally ++ # correct if we can't link. ++ cross_compiling=yes ++ EXEEXT= ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" ++# Try to create an executable without -o first, disregard a.out. ++# It will help us diagnose broken compilers, and finding out an intuition ++# of exeext. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 ++$as_echo_n "checking whether the C compiler works... " >&6; } ++ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ++ ++# The possible output files: ++ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ++ ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { { ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link_default") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' ++do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ++ ;; ++ [ab].out ) ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; ++ *.* ) ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. ++ break;; ++ * ) ++ break;; ++ esac ++done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ ++else ++ ac_file='' ++fi ++if test -z "$ac_file"; then : ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++$as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error 77 "C compiler cannot create executables ++See \`config.log' for more details" "$LINENO" 5; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 ++$as_echo_n "checking for C compiler default output file name... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 ++$as_echo "$ac_file" >&6; } ++ac_exeext=$ac_cv_exeext ++ ++rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ++ac_clean_files=$ac_clean_files_save ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 ++$as_echo_n "checking for suffix of executables... " >&6; } ++if { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ # If both `conftest.exe' and `conftest' are `present' (well, observable) ++# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ++# work properly (i.e., refer to `conftest.exe'), while it won't with ++# `rm'. ++for ac_file in conftest.exe conftest conftest.*; do ++ test -f "$ac_file" || continue ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; ++ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ break;; ++ * ) break;; ++ esac ++done ++else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot compute suffix of executables: cannot compile and link ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++rm -f conftest conftest$ac_cv_exeext ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 ++$as_echo "$ac_cv_exeext" >&6; } ++ ++rm -f conftest.$ac_ext ++EXEEXT=$ac_cv_exeext ++ac_exeext=$EXEEXT ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++FILE *f = fopen ("conftest.out", "w"); ++ return ferror (f) || fclose (f) != 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++ac_clean_files="$ac_clean_files conftest.out" ++# Check that the compiler produces executables we can run. If not, either ++# the compiler is broken, or we cross compile. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 ++$as_echo_n "checking whether we are cross compiling... " >&6; } ++if test "$cross_compiling" != yes; then ++ { { ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_link") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ if { ac_try='./conftest$ac_cv_exeext' ++ { { case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_try") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; }; then ++ cross_compiling=no ++ else ++ if test "$cross_compiling" = maybe; then ++ cross_compiling=yes ++ else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot run C compiled programs. ++If you meant to cross compile, use \`--host'. ++See \`config.log' for more details" "$LINENO" 5; } ++ fi ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 ++$as_echo "$cross_compiling" >&6; } ++ ++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ++ac_clean_files=$ac_clean_files_save ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 ++$as_echo_n "checking for suffix of object files... " >&6; } ++if ${ac_cv_objext+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.o conftest.obj ++if { { ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compile") 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then : ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; ++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ++ break;; ++ esac ++done ++else ++ $as_echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "cannot compute suffix of object files: cannot compile ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++rm -f conftest.$ac_cv_objext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 ++$as_echo "$ac_cv_objext" >&6; } ++OBJEXT=$ac_cv_objext ++ac_objext=$OBJEXT ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 ++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } ++if ${ac_cv_c_compiler_gnu+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_compiler_gnu=yes ++else ++ ac_compiler_gnu=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 ++$as_echo "$ac_cv_c_compiler_gnu" >&6; } ++if test $ac_compiler_gnu = yes; then ++ GCC=yes ++else ++ GCC= ++fi ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 ++$as_echo_n "checking whether $CC accepts -g... " >&6; } ++if ${ac_cv_prog_cc_g+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++else ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 ++$as_echo "$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 ++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } ++if ${ac_cv_prog_cc_c89+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++struct stat; ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_c89=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++$as_echo "none needed" >&6; } ;; ++ xno) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++$as_echo "unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 ++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : ++ ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 ++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } ++if ${am_cv_prog_cc_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 ++$as_echo "$am_cv_prog_cc_c_o" >&6; } ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 ++$as_echo_n "checking how to run the C preprocessor... " >&6; } ++# On Suns, sometimes $CPP names a directory. ++if test -n "$CPP" && test -d "$CPP"; then ++ CPP= ++fi ++if test -z "$CPP"; then ++ if ${ac_cv_prog_CPP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ # Double quotes because CPP needs to be expanded ++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ++ do ++ ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ++else ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ # Broken: success on invalid input. ++continue ++else ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : ++ break ++fi ++ ++ done ++ ac_cv_prog_CPP=$CPP ++ ++fi ++ CPP=$ac_cv_prog_CPP ++else ++ ac_cv_prog_CPP=$CPP ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 ++$as_echo "$CPP" >&6; } ++ac_preproc_ok=false ++for ac_c_preproc_warn_flag in '' yes ++do ++ # Use a header file that comes with gcc, so configuring glibc ++ # with a fresh cross-compiler works. ++ # Prefer to if __STDC__ is defined, since ++ # exists even on freestanding compilers. ++ # On the NeXT, cc -E runs the code through the compiler's parser, ++ # not just through cpp. "Syntax error" is here to catch this case. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#ifdef __STDC__ ++# include ++#else ++# include ++#endif ++ Syntax error ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ ++else ++ # Broken: fails on valid input. ++continue ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++ # OK, works on sane cases. Now check whether nonexistent headers ++ # can be detected and how. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++_ACEOF ++if ac_fn_c_try_cpp "$LINENO"; then : ++ # Broken: success on invalid input. ++continue ++else ++ # Passes both tests. ++ac_preproc_ok=: ++break ++fi ++rm -f conftest.err conftest.i conftest.$ac_ext ++ ++done ++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ++rm -f conftest.i conftest.err conftest.$ac_ext ++if $ac_preproc_ok; then : ++ ++else ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check ++See \`config.log' for more details" "$LINENO" 5; } ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 ++$as_echo_n "checking for grep that handles long lines and -e... " >&6; } ++if ${ac_cv_path_GREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$GREP"; then ++ ac_path_GREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_GREP" || continue ++# Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_GREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_GREP"; then ++ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 ++$as_echo "$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 ++$as_echo_n "checking for egrep... " >&6; } ++if ${ac_cv_path_EGREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ if test -z "$EGREP"; then ++ ac_path_EGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_EGREP" || continue ++# Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_EGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_EGREP"; then ++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_EGREP=$EGREP ++fi ++ ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 ++$as_echo "$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 ++$as_echo_n "checking for ANSI C header files... " >&6; } ++if ${ac_cv_header_stdc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++#include ++#include ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_header_stdc=yes ++else ++ ac_cv_header_stdc=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++if test $ac_cv_header_stdc = yes; then ++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "memchr" >/dev/null 2>&1; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "free" >/dev/null 2>&1; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f conftest* ++ ++fi ++ ++if test $ac_cv_header_stdc = yes; then ++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ++ if test "$cross_compiling" = yes; then : ++ : ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++#if ((' ' & 0x0FF) == 0x020) ++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ++#else ++# define ISLOWER(c) \ ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) ++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ++#endif ++ ++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ++int ++main () ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ if (XOR (islower (i), ISLOWER (i)) ++ || toupper (i) != TOUPPER (i)) ++ return 2; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ ++else ++ ac_cv_header_stdc=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 ++$as_echo "$ac_cv_header_stdc" >&6; } ++if test $ac_cv_header_stdc = yes; then ++ ++$as_echo "#define STDC_HEADERS 1" >>confdefs.h ++ ++fi ++ ++# On IRIX 5.3, sys/types and inttypes.h are conflicting. ++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ++ inttypes.h stdint.h unistd.h ++do : ++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default ++" ++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : ++ cat >>confdefs.h <<_ACEOF ++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" ++if test "x$ac_cv_header_minix_config_h" = xyes; then : ++ MINIX=yes ++else ++ MINIX= ++fi ++ ++ ++ if test "$MINIX" = yes; then ++ ++$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h ++ ++ ++$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h ++ ++ ++$as_echo "#define _MINIX 1" >>confdefs.h ++ ++ fi ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 ++$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } ++if ${ac_cv_safe_to_define___extensions__+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++# define __EXTENSIONS__ 1 ++ $ac_includes_default ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_safe_to_define___extensions__=yes ++else ++ ac_cv_safe_to_define___extensions__=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 ++$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } ++ test $ac_cv_safe_to_define___extensions__ = yes && ++ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h ++ ++ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h ++ ++ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h ++ ++ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h ++ ++ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h ++ ++ ++ ++# Determine the system type and set output variabls to the names of ++# the canonical system types. ++# ++# Do not delete or change the following two lines. For why, and for ++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the ++# recommended AC_CANONICAL_HOST, see ++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 ++$as_echo_n "checking build system type... " >&6; } ++if ${ac_cv_build+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 ++$as_echo "$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; ++esac ++build=$ac_cv_build ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 ++$as_echo_n "checking host system type... " >&6; } ++if ${ac_cv_host+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 ++$as_echo "$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; ++esac ++host=$ac_cv_host ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 ++$as_echo_n "checking target system type... " >&6; } ++if ${ac_cv_target+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 ++$as_echo "$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; ++esac ++target=$ac_cv_target ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac ++ ++ ++# The aliases save the names the user supplied, while $host etc. ++# will get canonicalized. ++test -n "$target_alias" && ++ test "$program_prefix$program_suffix$program_transform_name" = \ ++ NONENONEs,x,x, && ++ program_prefix=${target_alias}- ++ ++target_alias=${target_alias-$host_alias} ++ ++ ++ ++# These macro are for supporting canadian crosses, in which build /= ++# host /= target. ++ case ${build_alias} in ++ "") build_noncanonical=${build} ;; ++ *) build_noncanonical=${build_alias} ;; ++esac ++ ++ case ${host_alias} in ++ "") host_noncanonical=${build_noncanonical} ;; ++ *) host_noncanonical=${host_alias} ;; ++esac ++ ++ ++ ++ case ${target_alias} in ++ "") target_noncanonical=${host_noncanonical} ;; ++ *) target_noncanonical=${target_alias} ;; ++esac ++ ++ ++ ++ ++# post-stage1 host modules use a different CC_FOR_BUILD so, in order to ++# have matching libraries, they should use host libraries: Makefile.tpl ++# arranges to pass --with-build-libsubdir=$(HOST_SUBDIR). ++# However, they still use the build modules, because the corresponding ++# host modules (e.g. bison) are only built for the host when bootstrap ++# finishes. So: ++# - build_subdir is where we find build modules, and never changes. ++# - build_libsubdir is where we find build libraries, and can be overridden. ++ ++# Prefix 'build-' so this never conflicts with target_subdir. ++build_subdir="build-${build_noncanonical}" ++ ++# Check whether --with-build-libsubdir was given. ++if test "${with_build_libsubdir+set}" = set; then : ++ withval=$with_build_libsubdir; build_libsubdir="$withval" ++else ++ build_libsubdir="$build_subdir" ++fi ++ ++# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories ++if ( test $srcdir = . && test -d gcc ) \ ++ || test -d $srcdir/../host-${host_noncanonical}; then ++ host_subdir="host-${host_noncanonical}" ++else ++ host_subdir=. ++fi ++# No prefix. ++target_subdir=${target_noncanonical} ++ ++ ++# Initialize Automake with proper options. ++am__api_version='1.15' ++ ++# Find a good install program. We prefer a C program (faster), ++# so one script is as good as another. But avoid the broken or ++# incompatible versions: ++# SysV /etc/install, /usr/sbin/install ++# SunOS /usr/etc/install ++# IRIX /sbin/install ++# AIX /bin/install ++# AmigaOS /C/install, which installs bootblocks on floppy discs ++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag ++# AFS /usr/afsws/bin/install, which mishandles nonexistent args ++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic ++# ./install, which can be erroneously created by make from ./install.sh. ++# Reject install programs that cannot install multiple files. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 ++$as_echo_n "checking for a BSD-compatible install... " >&6; } ++if test -z "$INSTALL"; then ++if ${ac_cv_path_install+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in #(( ++ ./ | .// | /[cC]/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ rm -rf conftest.one conftest.two conftest.dir ++ echo one > conftest.one ++ echo two > conftest.two ++ mkdir conftest.dir ++ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && ++ test -s conftest.one && test -s conftest.two && ++ test -s conftest.dir/conftest.one && ++ test -s conftest.dir/conftest.two ++ then ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi ++ fi ++ done ++ done ++ ;; ++esac ++ ++ done ++IFS=$as_save_IFS ++ ++rm -rf conftest.one conftest.two conftest.dir ++ ++fi ++ if test "${ac_cv_path_install+set}" = set; then ++ INSTALL=$ac_cv_path_install ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ INSTALL=$ac_install_sh ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 ++$as_echo "$INSTALL" >&6; } ++ ++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. ++# It thinks the first close brace ends the variable substitution. ++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ++ ++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' ++ ++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 ++$as_echo_n "checking whether build environment is sane... " >&6; } ++# Reject unsafe characters in $srcdir or the absolute working directory ++# name. Accept space and tab only in the latter. ++am_lf=' ++' ++case `pwd` in ++ *[\\\"\#\$\&\'\`$am_lf]*) ++ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; ++esac ++case $srcdir in ++ *[\\\"\#\$\&\'\`$am_lf\ \ ]*) ++ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; ++esac ++ ++# Do 'set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ am_has_slept=no ++ for am_try in 1 2; do ++ echo "timestamp, slept: $am_has_slept" > conftest.file ++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` ++ if test "$*" = "X"; then ++ # -L didn't work. ++ set X `ls -t "$srcdir/configure" conftest.file` ++ fi ++ if test "$*" != "X $srcdir/configure conftest.file" \ ++ && test "$*" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken ++ alias in your environment" "$LINENO" 5 ++ fi ++ if test "$2" = conftest.file || test $am_try -eq 2; then ++ break ++ fi ++ # Just in case. ++ sleep 1 ++ am_has_slept=yes ++ done ++ test "$2" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ as_fn_error $? "newly created file is older than distributed files! ++Check your system clock" "$LINENO" 5 ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++# If we didn't sleep, we still need to ensure time stamps of config.status and ++# generated files are strictly newer. ++am_sleep_pid= ++if grep 'slept: no' conftest.file >/dev/null 2>&1; then ++ ( sleep 1 ) & ++ am_sleep_pid=$! ++fi ++ ++rm -f conftest.file ++ ++test "$program_prefix" != NONE && ++ program_transform_name="s&^&$program_prefix&;$program_transform_name" ++# Use a double $ so make ignores it. ++test "$program_suffix" != NONE && ++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" ++# Double any \ or $. ++# By default was `s,x,x', remove it if useless. ++ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' ++program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` ++ ++if test x"${MISSING+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; ++ *) ++ MISSING="\${SHELL} $am_aux_dir/missing" ;; ++ esac ++fi ++# Use eval to expand $SHELL ++if eval "$MISSING --is-lightweight"; then ++ am_missing_run="$MISSING " ++else ++ am_missing_run= ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 ++$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} ++fi ++ ++if test x"${install_sh+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; ++ *) ++ install_sh="\${SHELL} $am_aux_dir/install-sh" ++ esac ++fi ++ ++# Installed binaries are usually stripped using 'strip' when the user ++# run "make install-strip". However 'strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the 'STRIP' environment variable to overrule this program. ++if test "$cross_compiling" != no; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++$as_echo "$STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++$as_echo "$ac_ct_STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 ++$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } ++if test -z "$MKDIR_P"; then ++ if ${ac_cv_path_mkdir+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in mkdir gmkdir; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue ++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( ++ 'mkdir (GNU coreutils) '* | \ ++ 'mkdir (coreutils) '* | \ ++ 'mkdir (fileutils) '4.1*) ++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext ++ break 3;; ++ esac ++ done ++ done ++ done ++IFS=$as_save_IFS ++ ++fi ++ ++ test -d ./--version && rmdir ./--version ++ if test "${ac_cv_path_mkdir+set}" = set; then ++ MKDIR_P="$ac_cv_path_mkdir -p" ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for MKDIR_P within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ MKDIR_P="$ac_install_sh -d" ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 ++$as_echo "$MKDIR_P" >&6; } ++ ++for ac_prog in gawk mawk nawk awk ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AWK+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AWK"; then ++ ac_cv_prog_AWK="$AWK" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AWK="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AWK=$ac_cv_prog_AWK ++if test -n "$AWK"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 ++$as_echo "$AWK" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$AWK" && break ++done ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } ++set x ${MAKE-make} ++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ SET_MAKE= ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++ ++DEPDIR="${am__leading_dot}deps" ++ ++ac_config_commands="$ac_config_commands depfiles" ++ ++ ++am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo this is the am__doit target ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 ++$as_echo_n "checking for style of include used by $am_make... " >&6; } ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# Ignore all kinds of additional output from 'make'. ++case `$am_make -s -f confmf 2> /dev/null` in #( ++*the\ am__doit\ target*) ++ am__include=include ++ am__quote= ++ _am_result=GNU ++ ;; ++esac ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ case `$am_make -s -f confmf 2> /dev/null` in #( ++ *the\ am__doit\ target*) ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ ;; ++ esac ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 ++$as_echo "$_am_result" >&6; } ++rm -f confinc confmf ++ ++# Check whether --enable-dependency-tracking was given. ++if test "${enable_dependency_tracking+set}" = set; then : ++ enableval=$enable_dependency_tracking; ++fi ++ ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++ am__nodep='_no' ++fi ++ if test "x$enable_dependency_tracking" != xno; then ++ AMDEP_TRUE= ++ AMDEP_FALSE='#' ++else ++ AMDEP_TRUE='#' ++ AMDEP_FALSE= ++fi ++ ++ ++# Check whether --enable-silent-rules was given. ++if test "${enable_silent_rules+set}" = set; then : ++ enableval=$enable_silent_rules; ++fi ++ ++case $enable_silent_rules in # ((( ++ yes) AM_DEFAULT_VERBOSITY=0;; ++ no) AM_DEFAULT_VERBOSITY=1;; ++ *) AM_DEFAULT_VERBOSITY=1;; ++esac ++am_make=${MAKE-make} ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 ++$as_echo_n "checking whether $am_make supports nested variables... " >&6; } ++if ${am_cv_make_support_nested_variables+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if $as_echo 'TRUE=$(BAR$(V)) ++BAR0=false ++BAR1=true ++V=1 ++am__doit: ++ @$(TRUE) ++.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then ++ am_cv_make_support_nested_variables=yes ++else ++ am_cv_make_support_nested_variables=no ++fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 ++$as_echo "$am_cv_make_support_nested_variables" >&6; } ++if test $am_cv_make_support_nested_variables = yes; then ++ AM_V='$(V)' ++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' ++else ++ AM_V=$AM_DEFAULT_VERBOSITY ++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY ++fi ++AM_BACKSLASH='\' ++ ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ am__isrc=' -I$(srcdir)' ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++ ++ ++# Define the identity of the package. ++ PACKAGE='libga68' ++ VERSION='version-unused' ++ ++ ++# Some tools Automake needs. ++ ++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} ++ ++ ++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ++ ++ ++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} ++ ++ ++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} ++ ++ ++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ++ ++# For better backward compatibility. To be removed once Automake 1.9.x ++# dies out for good. For more background, see: ++# ++# ++mkdir_p='$(MKDIR_P)' ++ ++# We need awk for the "check" target (and possibly the TAP driver). The ++# system "awk" is bad on some platforms. ++# Always define AMTAR for backward compatibility. Yes, it's still used ++# in the wild :-( We should find a proper way to deprecate it ... ++AMTAR='$${TAR-tar}' ++ ++ ++# We'll loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar pax cpio none' ++ ++am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ++ ++ ++ ++ ++ ++depcc="$CC" am_compiler_list= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++$as_echo_n "checking dependency style of $depcc... " >&6; } ++if ${am_cv_CC_dependencies_compiler_type+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CC_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ am__universal=false ++ case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CC_dependencies_compiler_type=none ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 ++$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } ++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then ++ am__fastdepCC_TRUE= ++ am__fastdepCC_FALSE='#' ++else ++ am__fastdepCC_TRUE='#' ++ am__fastdepCC_FALSE= ++fi ++ ++ ++ ++# POSIX will say in a future version that running "rm -f" with no argument ++# is OK; and we want to be able to make that assumption in our Makefile ++# recipes. So use an aggressive probe to check that the usage we want is ++# actually supported "in the wild" to an acceptable degree. ++# See automake bug#10828. ++# To make any issue more visible, cause the running configure to be aborted ++# by default if the 'rm' program in use doesn't match our expectations; the ++# user can still override this though. ++if rm -f && rm -fr && rm -rf; then : OK; else ++ cat >&2 <<'END' ++Oops! ++ ++Your 'rm' program seems unable to run without file operands specified ++on the command line, even when the '-f' option is present. This is contrary ++to the behaviour of most rm programs out there, and not conforming with ++the upcoming POSIX standard: ++ ++Please tell bug-automake@gnu.org about your system, including the value ++of your $PATH and any error possibly output before this message. This ++can help us improve future automake versions. ++ ++END ++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then ++ echo 'Configuration will proceed anyway, since you have set the' >&2 ++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 ++ echo >&2 ++ else ++ cat >&2 <<'END' ++Aborting the configuration process, to ensure you take notice of the issue. ++ ++You can download and install GNU coreutils to get an 'rm' implementation ++that behaves properly: . ++ ++If you want to complete the configuration process using your problematic ++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM ++to "yes", and re-run configure. ++ ++END ++ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 ++ fi ++fi ++ ++ ++# Tell Autoheader to include templates for PACKAGE and VERSION in ++# config.h.in. ++ ++ ++ ++# Command-line options. ++ ++# Enable large-file support. ++# Check whether --enable-largefile was given. ++if test "${enable_largefile+set}" = set; then : ++ enableval=$enable_largefile; ++fi ++ ++if test "$enable_largefile" != no; then ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 ++$as_echo_n "checking for special C compiler options needed for large files... " >&6; } ++if ${ac_cv_sys_largefile_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_sys_largefile_CC=no ++ if test "$GCC" != yes; then ++ ac_save_CC=$CC ++ while :; do ++ # IRIX 6.2 and later do not support large files by default, ++ # so use the C compiler's -n32 option if that helps. ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ if ac_fn_c_try_compile "$LINENO"; then : ++ break ++fi ++rm -f core conftest.err conftest.$ac_objext ++ CC="$CC -n32" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_largefile_CC=' -n32'; break ++fi ++rm -f core conftest.err conftest.$ac_objext ++ break ++ done ++ CC=$ac_save_CC ++ rm -f conftest.$ac_ext ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 ++$as_echo "$ac_cv_sys_largefile_CC" >&6; } ++ if test "$ac_cv_sys_largefile_CC" != no; then ++ CC=$CC$ac_cv_sys_largefile_CC ++ fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 ++$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } ++if ${ac_cv_sys_file_offset_bits+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ while :; do ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_file_offset_bits=no; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#define _FILE_OFFSET_BITS 64 ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_file_offset_bits=64; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_sys_file_offset_bits=unknown ++ break ++done ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 ++$as_echo "$ac_cv_sys_file_offset_bits" >&6; } ++case $ac_cv_sys_file_offset_bits in #( ++ no | unknown) ;; ++ *) ++cat >>confdefs.h <<_ACEOF ++#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits ++_ACEOF ++;; ++esac ++rm -rf conftest* ++ if test $ac_cv_sys_file_offset_bits = unknown; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 ++$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } ++if ${ac_cv_sys_large_files+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ while :; do ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_large_files=no; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#define _LARGE_FILES 1 ++#include ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_sys_large_files=1; break ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_cv_sys_large_files=unknown ++ break ++done ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 ++$as_echo "$ac_cv_sys_large_files" >&6; } ++case $ac_cv_sys_large_files in #( ++ no | unknown) ;; ++ *) ++cat >>confdefs.h <<_ACEOF ++#define _LARGE_FILES $ac_cv_sys_large_files ++_ACEOF ++;; ++esac ++rm -rf conftest* ++ fi ++ ++ ++fi ++ ++ ++ ++# Check whether --with-cross-host was given. ++if test "${with_cross_host+set}" = set; then : ++ withval=$with_cross_host; ++fi ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 ++$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } ++# Check whether --enable-version-specific-runtime-libs was given. ++if test "${enable_version_specific_runtime_libs+set}" = set; then : ++ enableval=$enable_version_specific_runtime_libs; case "$enableval" in ++ yes) version_specific_libs=yes ;; ++ no) version_specific_libs=no ;; ++ *) as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; ++ esac ++else ++ version_specific_libs=no ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5 ++$as_echo "$version_specific_libs" >&6; } ++ ++ ++# Check whether --with-slibdir was given. ++if test "${with_slibdir+set}" = set; then : ++ withval=$with_slibdir; slibdir="$with_slibdir" ++else ++ if test "${version_specific_libs}" = yes; then ++ slibdir='$(libsubdir)' ++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then ++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++else ++ slibdir='$(libdir)' ++fi ++fi ++ ++ ++ ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++toolexecdir=no ++toolexeclibdir=no ++case ${version_specific_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++ ++ ++ ++# Add support for --enable-maintainer-mode={yes,no} to configure. ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 ++$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } ++ # Check whether --enable-maintainer-mode was given. ++if test "${enable_maintainer_mode+set}" = set; then : ++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval ++else ++ USE_MAINTAINER_MODE=no ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 ++$as_echo "$USE_MAINTAINER_MODE" >&6; } ++ if test $USE_MAINTAINER_MODE = yes; then ++ MAINTAINER_MODE_TRUE= ++ MAINTAINER_MODE_FALSE='#' ++else ++ MAINTAINER_MODE_TRUE='#' ++ MAINTAINER_MODE_FALSE= ++fi ++ ++ MAINT=$MAINTAINER_MODE_TRUE ++ ++ ++ ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_CC"; then ++ ac_ct_CC=$CC ++ # Extract the first word of "gcc", so it can be a program name with args. ++set dummy gcc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="gcc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++else ++ CC="$ac_cv_prog_CC" ++fi ++ ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++set dummy ${ac_tool_prefix}cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="${ac_tool_prefix}cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ fi ++fi ++if test -z "$CC"; then ++ # Extract the first word of "cc", so it can be a program name with args. ++set dummy cc; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++ ac_prog_rejected=no ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ++ ac_prog_rejected=yes ++ continue ++ fi ++ ac_cv_prog_CC="cc" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++if test $ac_prog_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $ac_cv_prog_CC ++ shift ++ if test $# != 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same basename, so the bogon will be chosen ++ # first if we set CC to just the basename; use the full file name. ++ shift ++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" ++ fi ++fi ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$CC"; then ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in cl.exe ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$CC"; then ++ ac_cv_prog_CC="$CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++CC=$ac_cv_prog_CC ++if test -n "$CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 ++$as_echo "$CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$CC" && break ++ done ++fi ++if test -z "$CC"; then ++ ac_ct_CC=$CC ++ for ac_prog in cl.exe ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_CC+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_CC"; then ++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_CC="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_CC=$ac_cv_prog_ac_ct_CC ++if test -n "$ac_ct_CC"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 ++$as_echo "$ac_ct_CC" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_CC" && break ++done ++ ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi ++fi ++ ++fi ++ ++ ++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ++as_fn_error $? "no acceptable C compiler found in \$PATH ++See \`config.log' for more details" "$LINENO" 5; } ++ ++# Provide some information about the compiler. ++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 ++set X $ac_compile ++ac_compiler=$2 ++for ac_option in --version -v -V -qversion; do ++ { { ac_try="$ac_compiler $ac_option >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" ++$as_echo "$ac_try_echo"; } >&5 ++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err ++ ac_status=$? ++ if test -s conftest.err; then ++ sed '10a\ ++... rest of stderr output deleted ... ++ 10q' conftest.err >conftest.er1 ++ cat conftest.er1 >&5 ++ fi ++ rm -f conftest.er1 conftest.err ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++done ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 ++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } ++if ${ac_cv_c_compiler_gnu+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++#ifndef __GNUC__ ++ choke me ++#endif ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_compiler_gnu=yes ++else ++ ac_compiler_gnu=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ac_cv_c_compiler_gnu=$ac_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 ++$as_echo "$ac_cv_c_compiler_gnu" >&6; } ++if test $ac_compiler_gnu = yes; then ++ GCC=yes ++else ++ GCC= ++fi ++ac_test_CFLAGS=${CFLAGS+set} ++ac_save_CFLAGS=$CFLAGS ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 ++$as_echo_n "checking whether $CC accepts -g... " >&6; } ++if ${ac_cv_prog_cc_g+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++else ++ CFLAGS="" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++else ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_g=yes ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 ++$as_echo "$ac_cv_prog_cc_g" >&6; } ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS=$ac_save_CFLAGS ++elif test $ac_cv_prog_cc_g = yes; then ++ if test "$GCC" = yes; then ++ CFLAGS="-g -O2" ++ else ++ CFLAGS="-g" ++ fi ++else ++ if test "$GCC" = yes; then ++ CFLAGS="-O2" ++ else ++ CFLAGS= ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 ++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } ++if ${ac_cv_prog_cc_c89+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_cv_prog_cc_c89=no ++ac_save_CC=$CC ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++#include ++struct stat; ++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ ++struct buf { int x; }; ++FILE * (*rcsopen) (struct buf *, struct stat *, int); ++static char *e (p, i) ++ char **p; ++ int i; ++{ ++ return p[i]; ++} ++static char *f (char * (*g) (char **, int), char **p, ...) ++{ ++ char *s; ++ va_list v; ++ va_start (v,p); ++ s = g (p, va_arg (v,int)); ++ va_end (v); ++ return s; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++do ++ CC="$ac_save_CC $ac_arg" ++ if ac_fn_c_try_compile "$LINENO"; then : ++ ac_cv_prog_cc_c89=$ac_arg ++fi ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break ++done ++rm -f conftest.$ac_ext ++CC=$ac_save_CC ++ ++fi ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 ++$as_echo "none needed" >&6; } ;; ++ xno) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 ++$as_echo "unsupported" >&6; } ;; ++ *) ++ CC="$CC $ac_cv_prog_cc_c89" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 ++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; ++esac ++if test "x$ac_cv_prog_cc_c89" != xno; then : ++ ++fi ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 ++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } ++if ${am_cv_prog_cc_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 ++$as_echo "$am_cv_prog_cc_c_o" >&6; } ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# By default we simply use the C compiler to build assembly code. ++ ++test "${CCAS+set}" = set || CCAS=$CC ++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS ++ ++ ++ ++depcc="$CCAS" am_compiler_list= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 ++$as_echo_n "checking dependency style of $depcc... " >&6; } ++if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_CCAS_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` ++ fi ++ am__universal=false ++ ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CCAS_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CCAS_dependencies_compiler_type=none ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 ++$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } ++CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type ++ ++ if ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then ++ am__fastdepCCAS_TRUE= ++ am__fastdepCCAS_FALSE='#' ++else ++ am__fastdepCCAS_TRUE='#' ++ am__fastdepCCAS_FALSE= ++fi ++ ++ ++ ++ ++ ++# In order to override CFLAGS_FOR_TARGET, all of our special flags go ++# in XCFLAGS. But we need them in CFLAGS during configury. So put them ++# in both places for now and restore CFLAGS at the end of config. ++save_CFLAGS="$CFLAGS" ++ ++# Find other programs we need. ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++$as_echo "$AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_AR="ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++$as_echo "$ac_ct_AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nm; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NM"; then ++ ac_cv_prog_NM="$NM" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_NM="${ac_tool_prefix}nm" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++NM=$ac_cv_prog_NM ++if test -n "$NM"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 ++$as_echo "$NM" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NM"; then ++ ac_ct_NM=$NM ++ # Extract the first word of "nm", so it can be a program name with args. ++set dummy nm; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_NM"; then ++ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_NM="nm" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NM=$ac_cv_prog_ac_ct_NM ++if test -n "$ac_ct_NM"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 ++$as_echo "$ac_ct_NM" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_NM" = x; then ++ NM="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ NM=$ac_ct_NM ++ fi ++else ++ NM="$ac_cv_prog_NM" ++fi ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 ++$as_echo "$RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 ++$as_echo "$ac_ct_RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB="ranlib-not-found-in-path-error" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } ++set x ${MAKE-make} ++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` ++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat >conftest.make <<\_ACEOF ++SHELL = /bin/sh ++all: ++ @echo '@@@%%%=$(MAKE)=@@@%%%' ++_ACEOF ++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. ++case `${MAKE-make} -f conftest.make 2>/dev/null` in ++ *@@@%%%=?*=@@@%%%*) ++ eval ac_cv_prog_make_${ac_make}_set=yes;; ++ *) ++ eval ac_cv_prog_make_${ac_make}_set=no;; ++esac ++rm -f conftest.make ++fi ++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ SET_MAKE= ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ SET_MAKE="MAKE=${MAKE-make}" ++fi ++ ++ ++ ++# Initialize libtool. ++case `pwd` in ++ *\ * | *\ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 ++$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; ++esac ++ ++ ++ ++macro_version='2.2.7a' ++macro_revision='1.3134' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++# Backslashify metacharacters that are still active within ++# double-quoted strings. ++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\(["`\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# Sed substitution to delay expansion of an escaped single quote. ++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' ++ ++# Sed substitution to avoid accidental globbing in evaled expressions ++no_glob_subst='s/\*/\\\*/g' ++ ++ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 ++$as_echo_n "checking how to print strings... " >&6; } ++# Test print first, because it will be a builtin if present. ++if test "X`print -r -- -n 2>/dev/null`" = X-n && \ ++ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='print -r --' ++elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ++ ECHO='printf %s\n' ++else ++ # Use this function as a fallback that always works. ++ func_fallback_echo () ++ { ++ eval 'cat <<_LTECHO_EOF ++$1 ++_LTECHO_EOF' ++ } ++ ECHO='func_fallback_echo' ++fi ++ ++# func_echo_all arg... ++# Invoke $ECHO with all args, space-separated. ++func_echo_all () ++{ ++ $ECHO "" ++} ++ ++case "$ECHO" in ++ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 ++$as_echo "printf" >&6; } ;; ++ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 ++$as_echo "print -r" >&6; } ;; ++ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 ++$as_echo "cat" >&6; } ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 ++$as_echo_n "checking for a sed that does not truncate output... " >&6; } ++if ${ac_cv_path_SED+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ ++ for ac_i in 1 2 3 4 5 6 7; do ++ ac_script="$ac_script$as_nl$ac_script" ++ done ++ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed ++ { ac_script=; unset ac_script;} ++ if test -z "$SED"; then ++ ac_path_SED_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in sed gsed; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_SED" || continue ++# Check for GNU ac_path_SED and select it if it is found. ++ # Check for GNU $ac_path_SED ++case `"$ac_path_SED" --version 2>&1` in ++*GNU*) ++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo '' >> "conftest.nl" ++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_SED_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_SED="$ac_path_SED" ++ ac_path_SED_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_SED_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_SED"; then ++ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_SED=$SED ++fi ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 ++$as_echo "$ac_cv_path_SED" >&6; } ++ SED="$ac_cv_path_SED" ++ rm -f conftest.sed ++ ++test -z "$SED" && SED=sed ++Xsed="$SED -e 1s/^X//" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 ++$as_echo_n "checking for fgrep... " >&6; } ++if ${ac_cv_path_FGREP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 ++ then ac_cv_path_FGREP="$GREP -F" ++ else ++ if test -z "$FGREP"; then ++ ac_path_FGREP_found=false ++ # Loop through the user's path and test for each of PROGNAME-LIST ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in fgrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" ++ as_fn_executable_p "$ac_path_FGREP" || continue ++# Check for GNU ac_path_FGREP and select it if it is found. ++ # Check for GNU $ac_path_FGREP ++case `"$ac_path_FGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; ++*) ++ ac_count=0 ++ $as_echo_n 0123456789 >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ $as_echo 'FGREP' >> "conftest.nl" ++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ as_fn_arith $ac_count + 1 && ac_count=$as_val ++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_FGREP="$ac_path_FGREP" ++ ac_path_FGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ $ac_path_FGREP_found && break 3 ++ done ++ done ++ done ++IFS=$as_save_IFS ++ if test -z "$ac_cv_path_FGREP"; then ++ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 ++ fi ++else ++ ac_cv_path_FGREP=$FGREP ++fi ++ ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 ++$as_echo "$ac_cv_path_FGREP" >&6; } ++ FGREP="$ac_cv_path_FGREP" ++ ++ ++test -z "$GREP" && GREP=grep ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-gnu-ld was given. ++if test "${with_gnu_ld+set}" = set; then : ++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++ ++ac_prog=ld ++if test "$GCC" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 ++$as_echo_n "checking for ld used by $CC... " >&6; } ++ case $host in ++ *-*-mingw*) ++ # gcc leaves a trailing carriage return which upsets mingw ++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; ++ *) ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; ++ esac ++ case $ac_prog in ++ # Accept absolute paths. ++ [\\/]* | ?:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the pathname of ld ++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` ++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we aren't using GCC. ++ ac_prog=ld ++ ;; ++ *) ++ # If it is relative, then search for the first ld in PATH. ++ with_gnu_ld=unknown ++ ;; ++ esac ++elif test "$with_gnu_ld" = yes; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 ++$as_echo_n "checking for GNU ld... " >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 ++$as_echo_n "checking for non-GNU ld... " >&6; } ++fi ++if ${lt_cv_path_LD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -z "$LD"; then ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ lt_cv_path_LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some variants of GNU ld only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ case `"$lt_cv_path_LD" -v 2>&1 &5 ++$as_echo "$LD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 ++$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } ++if ${lt_cv_prog_gnu_ld+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ # I'd rather use --version here, but apparently some GNU lds only accept -v. ++case `$LD -v 2>&1 &5 ++$as_echo "$lt_cv_prog_gnu_ld" >&6; } ++with_gnu_ld=$lt_cv_prog_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 ++$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } ++if ${lt_cv_path_NM+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NM"; then ++ # Let the user override the nm to test. ++ lt_nm_to_check="$NM" ++ else ++ lt_nm_to_check="${ac_tool_prefix}nm" ++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then ++ lt_nm_to_check="$lt_nm_to_check nm" ++ fi ++ fi ++ for lt_tmp_nm in "$lt_nm_to_check"; do ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ # Strip out any user-provided options from the nm to test twice, ++ # the first time to test to see if nm (rather than its options) has ++ # an explicit path, the second time to yield a file which can be ++ # nm'ed itself. ++ tmp_nm_path="`$ECHO "$lt_tmp_nm" | sed 's, -.*$,,'`" ++ case "$tmp_nm_path" in ++ */*|*\\*) tmp_nm="$lt_tmp_nm";; ++ *) tmp_nm="$ac_dir/$lt_tmp_nm";; ++ esac ++ tmp_nm_to_nm="`$ECHO "$tmp_nm" | sed 's, -.*$,,'`" ++ if test -f "$tmp_nm_to_nm" || test -f "$tmp_nm_to_nm$ac_exeext" ; then ++ # Check to see if the nm accepts a BSD-compat flag. ++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: ++ # nm: unknown option "B" ignored ++ case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in ++ *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B" ++ break ++ ;; ++ *) ++ case `"$tmp_nm" -p "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in ++ *$tmp_nm*) ++ lt_cv_path_NM="$tmp_nm -p" ++ break ++ ;; ++ *) ++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ done ++ IFS="$lt_save_ifs" ++ done ++ : ${lt_cv_path_NM=no} ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 ++$as_echo "$lt_cv_path_NM" >&6; } ++if test "$lt_cv_path_NM" != "no"; then ++ NM="$lt_cv_path_NM" ++else ++ # Didn't find any BSD compatible name lister, look for dumpbin. ++ if test -n "$DUMPBIN"; then : ++ # Let the user override the test. ++ else ++ if test -n "$ac_tool_prefix"; then ++ for ac_prog in dumpbin "link -dump" ++ do ++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_DUMPBIN+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$DUMPBIN"; then ++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++DUMPBIN=$ac_cv_prog_DUMPBIN ++if test -n "$DUMPBIN"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 ++$as_echo "$DUMPBIN" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$DUMPBIN" && break ++ done ++fi ++if test -z "$DUMPBIN"; then ++ ac_ct_DUMPBIN=$DUMPBIN ++ for ac_prog in dumpbin "link -dump" ++do ++ # Extract the first word of "$ac_prog", so it can be a program name with args. ++set dummy $ac_prog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_DUMPBIN"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN ++if test -n "$ac_ct_DUMPBIN"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 ++$as_echo "$ac_ct_DUMPBIN" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ test -n "$ac_ct_DUMPBIN" && break ++done ++ ++ if test "x$ac_ct_DUMPBIN" = x; then ++ DUMPBIN=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ DUMPBIN=$ac_ct_DUMPBIN ++ fi ++fi ++ ++ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in ++ *COFF*) ++ DUMPBIN="$DUMPBIN -symbols" ++ ;; ++ *) ++ DUMPBIN=: ++ ;; ++ esac ++ fi ++ ++ if test "$DUMPBIN" != ":"; then ++ NM="$DUMPBIN" ++ fi ++fi ++test -z "$NM" && NM=nm ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 ++$as_echo_n "checking the name lister ($NM) interface... " >&6; } ++if ${lt_cv_nm_interface+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_nm_interface="BSD nm" ++ echo "int some_variable = 0;" > conftest.$ac_ext ++ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) ++ (eval "$ac_compile" 2>conftest.err) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) ++ cat conftest.err >&5 ++ (eval echo "\"\$as_me:$LINENO: output\"" >&5) ++ cat conftest.out >&5 ++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then ++ lt_cv_nm_interface="MS dumpbin" ++ fi ++ rm -f conftest* ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 ++$as_echo "$lt_cv_nm_interface" >&6; } ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 ++$as_echo_n "checking whether ln -s works... " >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 ++$as_echo "no, using $LN_S" >&6; } ++fi ++ ++# find the maximum length of command line arguments ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 ++$as_echo_n "checking the maximum length of command line arguments... " >&6; } ++if ${lt_cv_sys_max_cmd_len+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ i=0 ++ teststring="ABCD" ++ ++ case $build_os in ++ msdosdjgpp*) ++ # On DJGPP, this test can blow up pretty badly due to problems in libc ++ # (any single argument exceeding 2000 bytes causes a buffer overrun ++ # during glob expansion). Even if it were fixed, the result of this ++ # check would be larger than it should be. ++ lt_cv_sys_max_cmd_len=12288; # 12K is about right ++ ;; ++ ++ gnu*) ++ # Under GNU Hurd, this test is not required because there is ++ # no limit to the length of command line arguments. ++ # Libtool will interpret -1 as no limit whatsoever ++ lt_cv_sys_max_cmd_len=-1; ++ ;; ++ ++ cygwin* | mingw* | cegcc*) ++ # On Win9x/ME, this test blows up -- it succeeds, but takes ++ # about 5 minutes as the teststring grows exponentially. ++ # Worse, since 9x/ME are not pre-emptively multitasking, ++ # you end up with a "frozen" computer, even though with patience ++ # the test eventually succeeds (with a max line length of 256k). ++ # Instead, let's just punt: use the minimum linelength reported by ++ # all of the supported platforms: 8192 (on NT/2K/XP). ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ mint*) ++ # On MiNT this can take a long time and run out of memory. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ amigaos*) ++ # On AmigaOS with pdksh, this test takes hours, literally. ++ # So we just punt and use a minimum line length of 8192. ++ lt_cv_sys_max_cmd_len=8192; ++ ;; ++ ++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) ++ # This has been around since 386BSD, at least. Likely further. ++ if test -x /sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` ++ elif test -x /usr/sbin/sysctl; then ++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` ++ else ++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs ++ fi ++ # And add a safety zone ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ ;; ++ ++ interix*) ++ # We know the value 262144 and hardcode it with a safety zone (like BSD) ++ lt_cv_sys_max_cmd_len=196608 ++ ;; ++ ++ osf*) ++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure ++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not ++ # nice to cause kernel panics so lets avoid the loop below. ++ # First set a reasonable default. ++ lt_cv_sys_max_cmd_len=16384 ++ # ++ if test -x /sbin/sysconfig; then ++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in ++ *1*) lt_cv_sys_max_cmd_len=-1 ;; ++ esac ++ fi ++ ;; ++ sco3.2v5*) ++ lt_cv_sys_max_cmd_len=102400 ++ ;; ++ sysv5* | sco5v6* | sysv4.2uw2*) ++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` ++ if test -n "$kargmax"; then ++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` ++ else ++ lt_cv_sys_max_cmd_len=32768 ++ fi ++ ;; ++ *) ++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` ++ if test -n "$lt_cv_sys_max_cmd_len"; then ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ++ else ++ # Make teststring a little bigger before we do anything with it. ++ # a 1K string should be a reasonable start. ++ for i in 1 2 3 4 5 6 7 8 ; do ++ teststring=$teststring$teststring ++ done ++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} ++ # If test is not a shell built-in, we'll probably end up computing a ++ # maximum length that is only half of the actual maximum length, but ++ # we can't tell. ++ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ ++ = "X$teststring$teststring"; } >/dev/null 2>&1 && ++ test $i != 17 # 1/2 MB should be enough ++ do ++ i=`expr $i + 1` ++ teststring=$teststring$teststring ++ done ++ # Only check the string length outside the loop. ++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` ++ teststring= ++ # Add a significant safety factor because C++ compilers can tack on ++ # massive amounts of additional arguments before passing them to the ++ # linker. It appears as though 1/2 is a usable value. ++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` ++ fi ++ ;; ++ esac ++ ++fi ++ ++if test -n $lt_cv_sys_max_cmd_len ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 ++$as_echo "$lt_cv_sys_max_cmd_len" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 ++$as_echo "none" >&6; } ++fi ++max_cmd_len=$lt_cv_sys_max_cmd_len ++ ++ ++ ++ ++ ++ ++: ${CP="cp -f"} ++: ${MV="mv -f"} ++: ${RM="rm -f"} ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 ++$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } ++# Try some XSI features ++xsi_shell=no ++( _lt_dummy="a/b/c" ++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ ++ = c,a/b,, \ ++ && eval 'test $(( 1 + 1 )) -eq 2 \ ++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ ++ && xsi_shell=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 ++$as_echo "$xsi_shell" >&6; } ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 ++$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } ++lt_shell_append=no ++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ ++ >/dev/null 2>&1 \ ++ && lt_shell_append=yes ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 ++$as_echo "$lt_shell_append" >&6; } ++ ++ ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ lt_unset=unset ++else ++ lt_unset=false ++fi ++ ++ ++ ++ ++ ++# test EBCDIC or ASCII ++case `echo X|tr X '\101'` in ++ A) # ASCII based system ++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr ++ lt_SP2NL='tr \040 \012' ++ lt_NL2SP='tr \015\012 \040\040' ++ ;; ++ *) # EBCDIC based system ++ lt_SP2NL='tr \100 \n' ++ lt_NL2SP='tr \r\n \100\100' ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 ++$as_echo_n "checking for $LD option to reload object files... " >&6; } ++if ${lt_cv_ld_reload_flag+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_reload_flag='-r' ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 ++$as_echo "$lt_cv_ld_reload_flag" >&6; } ++reload_flag=$lt_cv_ld_reload_flag ++case $reload_flag in ++"" | " "*) ;; ++*) reload_flag=" $reload_flag" ;; ++esac ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++case $host_os in ++ darwin*) ++ if test "$GCC" = yes; then ++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' ++ else ++ reload_cmds='$LD$reload_flag -o $output$reload_objs' ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. ++set dummy ${ac_tool_prefix}objdump; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OBJDUMP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OBJDUMP"; then ++ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OBJDUMP=$ac_cv_prog_OBJDUMP ++if test -n "$OBJDUMP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 ++$as_echo "$OBJDUMP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OBJDUMP"; then ++ ac_ct_OBJDUMP=$OBJDUMP ++ # Extract the first word of "objdump", so it can be a program name with args. ++set dummy objdump; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OBJDUMP"; then ++ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OBJDUMP="objdump" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP ++if test -n "$ac_ct_OBJDUMP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 ++$as_echo "$ac_ct_OBJDUMP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OBJDUMP" = x; then ++ OBJDUMP="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OBJDUMP=$ac_ct_OBJDUMP ++ fi ++else ++ OBJDUMP="$ac_cv_prog_OBJDUMP" ++fi ++ ++test -z "$OBJDUMP" && OBJDUMP=objdump ++ ++ ++ ++ ++ ++ ++ ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 ++$as_echo_n "checking how to recognize dependent libraries... " >&6; } ++if ${lt_cv_deplibs_check_method+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_file_magic_cmd='$MAGIC_CMD' ++lt_cv_file_magic_test_file= ++lt_cv_deplibs_check_method='unknown' ++# Need to set the preceding variable on all platforms that support ++# interlibrary dependencies. ++# 'none' -- dependencies not supported. ++# `unknown' -- same as none, but documents that we really don't know. ++# 'pass_all' -- all dependencies passed with no checks. ++# 'test_compile' -- check by making test program. ++# 'file_magic [[regex]]' -- check by looking for files in library path ++# which responds to the $file_magic_cmd with a given extended regex. ++# If you have `file' or equivalent on your system and you're not sure ++# whether `pass_all' will *always* work, you probably want this one. ++ ++case $host_os in ++aix[4-9]*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++beos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++bsdi[45]*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ lt_cv_file_magic_cmd='/usr/bin/file -L' ++ lt_cv_file_magic_test_file=/shlib/libc.so ++ ;; ++ ++cygwin*) ++ # func_win32_libid is a shell function defined in ltmain.sh ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ ;; ++ ++mingw* | pw32*) ++ # Base MSYS/MinGW do not provide the 'file' command needed by ++ # func_win32_libid shell function, so use a weaker test based on 'objdump', ++ # unless we find 'file', for example because we are cross-compiling. ++ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. ++ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then ++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' ++ lt_cv_file_magic_cmd='func_win32_libid' ++ else ++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ fi ++ ;; ++ ++cegcc*) ++ # use the weaker test based on 'objdump'. See mingw*. ++ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' ++ lt_cv_file_magic_cmd='$OBJDUMP -f' ++ ;; ++ ++darwin* | rhapsody*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++freebsd* | dragonfly*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ case $host_cpu in ++ i*86 ) ++ # Not sure whether the presence of OpenBSD here was a mistake. ++ # Let's accept both of them until this is cleared up. ++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ++ ;; ++ esac ++ else ++ lt_cv_deplibs_check_method=pass_all ++ fi ++ ;; ++ ++gnu*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++haiku*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++hpux10.20* | hpux11*) ++ lt_cv_file_magic_cmd=/usr/bin/file ++ case $host_cpu in ++ ia64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' ++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ++ ;; ++ hppa*64*) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' ++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ++ ;; ++ *) ++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' ++ lt_cv_file_magic_test_file=/usr/lib/libc.sl ++ ;; ++ esac ++ ;; ++ ++interix[3-9]*) ++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $LD in ++ *-32|*"-32 ") libmagic=32-bit;; ++ *-n32|*"-n32 ") libmagic=N32;; ++ *-64|*"-64 ") libmagic=64-bit;; ++ *) libmagic=never-match;; ++ esac ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++# This must be Linux ELF. ++linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' ++ fi ++ ;; ++ ++newos6*) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' ++ lt_cv_file_magic_cmd=/usr/bin/file ++ lt_cv_file_magic_test_file=/usr/lib/libnls.so ++ ;; ++ ++*nto* | *qnx*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++openbsd*) ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' ++ else ++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' ++ fi ++ ;; ++ ++osf3* | osf4* | osf5*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++rdos*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++solaris*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ ++sysv4 | sysv4.3*) ++ case $host_vendor in ++ motorola) ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' ++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ ncr) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ sequent) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ ;; ++ sni) ++ lt_cv_file_magic_cmd='/bin/file' ++ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" ++ lt_cv_file_magic_test_file=/lib/libc.so ++ ;; ++ siemens) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ pc) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ esac ++ ;; ++ ++tpf*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++vxworks*) ++ # Assume VxWorks cross toolchains are built on Linux, possibly ++ # as canadian for Windows hosts. ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++esac ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 ++$as_echo "$lt_cv_deplibs_check_method" >&6; } ++file_magic_cmd=$lt_cv_file_magic_cmd ++deplibs_check_method=$lt_cv_deplibs_check_method ++test -z "$deplibs_check_method" && deplibs_check_method=unknown ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++plugin_option= ++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll" ++for plugin in $plugin_names; do ++ plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin` ++ if test x$plugin_so = x$plugin; then ++ plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin` ++ fi ++ if test x$plugin_so != x$plugin; then ++ plugin_option="--plugin $plugin_so" ++ break ++ fi ++done ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$AR"; then ++ ac_cv_prog_AR="$AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_AR="${ac_tool_prefix}ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++AR=$ac_cv_prog_AR ++if test -n "$AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 ++$as_echo "$AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_AR"; then ++ ac_ct_AR=$AR ++ # Extract the first word of "ar", so it can be a program name with args. ++set dummy ar; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_AR+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_AR"; then ++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_AR="ar" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_AR=$ac_cv_prog_ac_ct_AR ++if test -n "$ac_ct_AR"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 ++$as_echo "$ac_ct_AR" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_AR" = x; then ++ AR="false" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ AR=$ac_ct_AR ++ fi ++else ++ AR="$ac_cv_prog_AR" ++fi ++ ++test -z "$AR" && AR=ar ++if test -n "$plugin_option"; then ++ if $AR --help 2>&1 | grep -q "\--plugin"; then ++ touch conftest.c ++ $AR $plugin_option rc conftest.a conftest.c ++ if test "$?" != 0; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 ++$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} ++ else ++ AR="$AR $plugin_option" ++ fi ++ rm -f conftest.* ++ fi ++fi ++test -z "$AR_FLAGS" && AR_FLAGS=cru ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ++set dummy ${ac_tool_prefix}strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$STRIP"; then ++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++STRIP=$ac_cv_prog_STRIP ++if test -n "$STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 ++$as_echo "$STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_STRIP"; then ++ ac_ct_STRIP=$STRIP ++ # Extract the first word of "strip", so it can be a program name with args. ++set dummy strip; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_STRIP"; then ++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_STRIP="strip" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ++if test -n "$ac_ct_STRIP"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 ++$as_echo "$ac_ct_STRIP" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_STRIP" = x; then ++ STRIP=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ STRIP=$ac_ct_STRIP ++ fi ++else ++ STRIP="$ac_cv_prog_STRIP" ++fi ++ ++test -z "$STRIP" && STRIP=: ++ ++ ++ ++ ++ ++ ++if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$RANLIB"; then ++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++RANLIB=$ac_cv_prog_RANLIB ++if test -n "$RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 ++$as_echo "$RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_RANLIB"; then ++ ac_ct_RANLIB=$RANLIB ++ # Extract the first word of "ranlib", so it can be a program name with args. ++set dummy ranlib; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_RANLIB"; then ++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_RANLIB="ranlib" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ++if test -n "$ac_ct_RANLIB"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 ++$as_echo "$ac_ct_RANLIB" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_RANLIB" = x; then ++ RANLIB=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ RANLIB=$ac_ct_RANLIB ++ fi ++else ++ RANLIB="$ac_cv_prog_RANLIB" ++fi ++ ++test -z "$RANLIB" && RANLIB=: ++if test -n "$plugin_option" && test "$RANLIB" != ":"; then ++ if $RANLIB --help 2>&1 | grep -q "\--plugin"; then ++ RANLIB="$RANLIB $plugin_option" ++ fi ++fi ++ ++ ++ ++ ++ ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++if test -n "$RANLIB"; then ++ case $host_os in ++ openbsd*) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ++ ;; ++ *) ++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ++ ;; ++ esac ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++fi ++ ++case $host_os in ++ darwin*) ++ lock_old_archive_extraction=yes ;; ++ *) ++ lock_old_archive_extraction=no ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 ++$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } ++if ${lt_cv_sys_global_symbol_pipe+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' ++ ++# Define system-specific variables. ++case $host_os in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw* | pw32* | cegcc*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) ++ if test "$host_cpu" = ia64; then ++ symcode='[ABCDEGRST]' ++ fi ++ ;; ++irix* | nonstopux*) ++ symcode='[BCDEGRST]' ++ ;; ++osf*) ++ symcode='[BCDEGQRST]' ++ ;; ++solaris*) ++ symcode='[BCDRT]' ++ ;; ++sco3.2v5*) ++ symcode='[DT]' ++ ;; ++sysv4.2uw2*) ++ symcode='[DT]' ++ ;; ++sysv5* | sco5v6* | unixware* | OpenUNIX*) ++ symcode='[ABDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++case `$NM -V 2>&1` in ++*GNU* | *'with BFD'*) ++ symcode='[ABCDGIRSTW]' ;; ++esac ++ ++# Transform an extracted symbol line into a proper C declaration. ++# Some systems (esp. on ia64) link data and code symbols differently, ++# so use this general approach. ++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ++ ++# Transform an extracted symbol line into symbol name and symbol address ++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" ++ ++# Handle CRLF in mingw tool chain ++opt_cr= ++case $build_os in ++mingw*) ++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ++ ;; ++esac ++ ++# Try without a prefix underscore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. ++ symxfrm="\\1 $ac_symprfx\\2 \\2" ++ ++ # Write the raw and C identifiers. ++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then ++ # Fake it for dumpbin and say T for any non-static function ++ # and D for any global variable. ++ # Also find C++ and __fastcall symbols from MSVC++, ++ # which start with @ or ?. ++ lt_cv_sys_global_symbol_pipe="$AWK '"\ ++" {last_section=section; section=\$ 3};"\ ++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ ++" \$ 0!~/External *\|/{next};"\ ++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ ++" {if(hide[section]) next};"\ ++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ ++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ ++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ ++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ ++" ' prfx=^$ac_symprfx" ++ else ++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" ++ fi ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ ++ rm -f conftest* ++ cat > conftest.$ac_ext <<_LT_EOF ++#ifdef __cplusplus ++extern "C" { ++#endif ++char nm_test_var; ++void nm_test_func(void); ++void nm_test_func(void){} ++#ifdef __cplusplus ++} ++#endif ++int main(){nm_test_var='a';nm_test_func();return(0);} ++_LT_EOF ++ ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 ++ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s "$nlist"; then ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then ++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then ++ cat <<_LT_EOF > conftest.$ac_ext ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++_LT_EOF ++ # Now generate the symbol file. ++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' ++ ++ cat <<_LT_EOF >> conftest.$ac_ext ++ ++/* The mapping between symbol names and symbols. */ ++const struct { ++ const char *name; ++ void *address; ++} ++lt__PROGRAM__LTX_preloaded_symbols[] = ++{ ++ { "@PROGRAM@", (void *) 0 }, ++_LT_EOF ++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext ++ cat <<\_LT_EOF >> conftest.$ac_ext ++ {0, (void *) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt__PROGRAM__LTX_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++_LT_EOF ++ # Now try linking the two files. ++ mv conftest.$ac_objext conftstm.$ac_objext ++ lt_save_LIBS="$LIBS" ++ lt_save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$ac_objext" ++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext}; then ++ pipe_works=yes ++ fi ++ LIBS="$lt_save_LIBS" ++ CFLAGS="$lt_save_CFLAGS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi ++ else ++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 ++ fi ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ fi ++ rm -rf conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ lt_cv_sys_global_symbol_pipe= ++ fi ++done ++ ++fi ++ ++if test -z "$lt_cv_sys_global_symbol_pipe"; then ++ lt_cv_sys_global_symbol_to_cdecl= ++fi ++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 ++$as_echo "failed" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 ++$as_echo "ok" >&6; } ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --enable-libtool-lock was given. ++if test "${enable_libtool_lock+set}" = set; then : ++ enableval=$enable_libtool_lock; ++fi ++ ++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes ++ ++# Some flags need to be propagated to the compiler or linker for good ++# libtool support. ++case $host in ++ia64-*-hpux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *ELF-32*) ++ HPUX_IA64_MODE="32" ++ ;; ++ *ELF-64*) ++ HPUX_IA64_MODE="64" ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++*-*-irix6*) ++ # Find out which ABI we are using. ++ echo '#line '$LINENO' "configure"' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -melf32bsmip" ++ ;; ++ *N32*) ++ LD="${LD-ld} -melf32bmipn32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -melf64bmip" ++ ;; ++ esac ++ else ++ case `/usr/bin/file conftest.$ac_objext` in ++ *32-bit*) ++ LD="${LD-ld} -32" ++ ;; ++ *N32*) ++ LD="${LD-ld} -n32" ++ ;; ++ *64-bit*) ++ LD="${LD-ld} -64" ++ ;; ++ esac ++ fi ++ fi ++ rm -rf conftest* ++ ;; ++ ++x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ ++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.o` in ++ *32-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_i386_fbsd" ++ ;; ++ x86_64-*linux*) ++ case `/usr/bin/file conftest.o` in ++ *x86-64*) ++ LD="${LD-ld} -m elf32_x86_64" ++ ;; ++ *) ++ LD="${LD-ld} -m elf_i386" ++ ;; ++ esac ++ ;; ++ powerpc64le-*linux*) ++ LD="${LD-ld} -m elf32lppclinux" ++ ;; ++ powerpc64-*linux*) ++ LD="${LD-ld} -m elf32ppclinux" ++ ;; ++ s390x-*linux*) ++ LD="${LD-ld} -m elf_s390" ++ ;; ++ sparc64-*linux*) ++ LD="${LD-ld} -m elf32_sparc" ++ ;; ++ esac ++ ;; ++ *64-bit*) ++ case $host in ++ x86_64-*kfreebsd*-gnu) ++ LD="${LD-ld} -m elf_x86_64_fbsd" ++ ;; ++ x86_64-*linux*) ++ LD="${LD-ld} -m elf_x86_64" ++ ;; ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) ++ LD="${LD-ld} -m elf64ppc" ++ ;; ++ s390*-*linux*|s390*-*tpf*) ++ LD="${LD-ld} -m elf64_s390" ++ ;; ++ sparc*-*linux*) ++ LD="${LD-ld} -m elf64_sparc" ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++ ++*-*-sco3.2v5*) ++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. ++ SAVE_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -belf" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 ++$as_echo_n "checking whether the C compiler needs -belf... " >&6; } ++if ${lt_cv_cc_needs_belf+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ lt_cv_cc_needs_belf=yes ++else ++ lt_cv_cc_needs_belf=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 ++$as_echo "$lt_cv_cc_needs_belf" >&6; } ++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then ++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf ++ CFLAGS="$SAVE_CFLAGS" ++ fi ++ ;; ++sparc*-*solaris*) ++ # Find out which ABI we are using. ++ echo 'int i;' > conftest.$ac_ext ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; then ++ case `/usr/bin/file conftest.o` in ++ *64-bit*) ++ case $lt_cv_prog_gnu_ld in ++ yes*) LD="${LD-ld} -m elf64_sparc" ;; ++ *) ++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then ++ LD="${LD-ld} -64" ++ fi ++ ;; ++ esac ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++need_locks="$enable_libtool_lock" ++ ++ ++ case $host_os in ++ rhapsody* | darwin*) ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. ++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_DSYMUTIL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$DSYMUTIL"; then ++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++DSYMUTIL=$ac_cv_prog_DSYMUTIL ++if test -n "$DSYMUTIL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 ++$as_echo "$DSYMUTIL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_DSYMUTIL"; then ++ ac_ct_DSYMUTIL=$DSYMUTIL ++ # Extract the first word of "dsymutil", so it can be a program name with args. ++set dummy dsymutil; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_DSYMUTIL"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL ++if test -n "$ac_ct_DSYMUTIL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 ++$as_echo "$ac_ct_DSYMUTIL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_DSYMUTIL" = x; then ++ DSYMUTIL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ DSYMUTIL=$ac_ct_DSYMUTIL ++ fi ++else ++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. ++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_NMEDIT+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$NMEDIT"; then ++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++NMEDIT=$ac_cv_prog_NMEDIT ++if test -n "$NMEDIT"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 ++$as_echo "$NMEDIT" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_NMEDIT"; then ++ ac_ct_NMEDIT=$NMEDIT ++ # Extract the first word of "nmedit", so it can be a program name with args. ++set dummy nmedit; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_NMEDIT"; then ++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_NMEDIT="nmedit" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT ++if test -n "$ac_ct_NMEDIT"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 ++$as_echo "$ac_ct_NMEDIT" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_NMEDIT" = x; then ++ NMEDIT=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ NMEDIT=$ac_ct_NMEDIT ++ fi ++else ++ NMEDIT="$ac_cv_prog_NMEDIT" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. ++set dummy ${ac_tool_prefix}lipo; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_LIPO+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$LIPO"; then ++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++LIPO=$ac_cv_prog_LIPO ++if test -n "$LIPO"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 ++$as_echo "$LIPO" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_LIPO"; then ++ ac_ct_LIPO=$LIPO ++ # Extract the first word of "lipo", so it can be a program name with args. ++set dummy lipo; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_LIPO+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_LIPO"; then ++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_LIPO="lipo" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO ++if test -n "$ac_ct_LIPO"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 ++$as_echo "$ac_ct_LIPO" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_LIPO" = x; then ++ LIPO=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ LIPO=$ac_ct_LIPO ++ fi ++else ++ LIPO="$ac_cv_prog_LIPO" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OTOOL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OTOOL"; then ++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL=$ac_cv_prog_OTOOL ++if test -n "$OTOOL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 ++$as_echo "$OTOOL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL"; then ++ ac_ct_OTOOL=$OTOOL ++ # Extract the first word of "otool", so it can be a program name with args. ++set dummy otool; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OTOOL"; then ++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OTOOL="otool" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL ++if test -n "$ac_ct_OTOOL"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 ++$as_echo "$ac_ct_OTOOL" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL" = x; then ++ OTOOL=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL=$ac_ct_OTOOL ++ fi ++else ++ OTOOL="$ac_cv_prog_OTOOL" ++fi ++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. ++set dummy ${ac_tool_prefix}otool64; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_OTOOL64+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$OTOOL64"; then ++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++OTOOL64=$ac_cv_prog_OTOOL64 ++if test -n "$OTOOL64"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 ++$as_echo "$OTOOL64" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++fi ++if test -z "$ac_cv_prog_OTOOL64"; then ++ ac_ct_OTOOL64=$OTOOL64 ++ # Extract the first word of "otool64", so it can be a program name with args. ++set dummy otool64; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$ac_ct_OTOOL64"; then ++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_ac_ct_OTOOL64="otool64" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++fi ++fi ++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 ++if test -n "$ac_ct_OTOOL64"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 ++$as_echo "$ac_ct_OTOOL64" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ if test "x$ac_ct_OTOOL64" = x; then ++ OTOOL64=":" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 ++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ++ac_tool_warned=yes ;; ++esac ++ OTOOL64=$ac_ct_OTOOL64 ++ fi ++else ++ OTOOL64="$ac_cv_prog_OTOOL64" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 ++$as_echo_n "checking for -single_module linker flag... " >&6; } ++if ${lt_cv_apple_cc_single_mod+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_apple_cc_single_mod=no ++ if test -z "${LT_MULTI_MODULE}"; then ++ # By default we will add the -single_module flag. You can override ++ # by either setting the environment variable LT_MULTI_MODULE ++ # non-empty at configure time, or by adding -multi_module to the ++ # link flags. ++ rm -rf libconftest.dylib* ++ echo "int foo(void){return 1;}" > conftest.c ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++-dynamiclib -Wl,-single_module conftest.c" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ ++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err ++ _lt_result=$? ++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then ++ lt_cv_apple_cc_single_mod=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -rf libconftest.dylib* ++ rm -f conftest.* ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 ++$as_echo "$lt_cv_apple_cc_single_mod" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 ++$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } ++if ${lt_cv_ld_exported_symbols_list+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_exported_symbols_list=no ++ save_LDFLAGS=$LDFLAGS ++ echo "_main" > conftest.sym ++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ lt_cv_ld_exported_symbols_list=yes ++else ++ lt_cv_ld_exported_symbols_list=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 ++$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 ++$as_echo_n "checking for -force_load linker flag... " >&6; } ++if ${lt_cv_ld_force_load+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_ld_force_load=no ++ cat > conftest.c << _LT_EOF ++int forced_loaded() { return 2;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 ++ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 ++ echo "$AR cru libconftest.a conftest.o" >&5 ++ $AR cru libconftest.a conftest.o 2>&5 ++ cat > conftest.c << _LT_EOF ++int main() { return 0;} ++_LT_EOF ++ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 ++ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err ++ _lt_result=$? ++ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then ++ lt_cv_ld_force_load=yes ++ else ++ cat conftest.err >&5 ++ fi ++ rm -f conftest.err libconftest.a conftest conftest.c ++ rm -rf conftest.dSYM ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 ++$as_echo "$lt_cv_ld_force_load" >&6; } ++ # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to ++ # build without first building modern cctools / linker. ++ case $host_cpu-$host_os in ++ *-rhapsody* | *-darwin1.[012]) ++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; ++ *-darwin1.*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; ++ *-darwin*) ++ # darwin 5.x (macOS 10.1) onwards we only need to adjust when the ++ # deployment target is forced to an earlier version. ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in ++ UNSET,*-darwin[89]*|UNSET,*-darwin[12][0-9]*) ++ ;; ++ 10.[012][,.]*) ++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ++ ;; ++ *) ++ ;; ++ esac ++ ;; ++ esac ++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then ++ _lt_dar_single_mod='$single_module' ++ fi ++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then ++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' ++ else ++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' ++ fi ++ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then ++ _lt_dsymutil='~$DSYMUTIL $lib || :' ++ else ++ _lt_dsymutil= ++ fi ++ ;; ++ esac ++ ++for ac_header in dlfcn.h ++do : ++ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default ++" ++if test "x$ac_cv_header_dlfcn_h" = xyes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_DLFCN_H 1 ++_ACEOF ++ ++fi ++ ++done ++ ++ ++ ++ ++ ++# Set options ++ ++ ++ ++ enable_dlopen=no ++ ++ ++ enable_win32_dll=no ++ ++ ++ # Check whether --enable-shared was given. ++if test "${enable_shared+set}" = set; then : ++ enableval=$enable_shared; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_shared=yes ;; ++ no) enable_shared=no ;; ++ *) ++ enable_shared=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_shared=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_shared=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-static was given. ++if test "${enable_static+set}" = set; then : ++ enableval=$enable_static; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_static=yes ;; ++ no) enable_static=no ;; ++ *) ++ enable_static=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_static=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_static=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# Check whether --with-pic was given. ++if test "${with_pic+set}" = set; then : ++ withval=$with_pic; pic_mode="$withval" ++else ++ pic_mode=default ++fi ++ ++ ++test -z "$pic_mode" && pic_mode=default ++ ++ ++ ++ ++ ++ ++ ++ # Check whether --enable-fast-install was given. ++if test "${enable_fast_install+set}" = set; then : ++ enableval=$enable_fast_install; p=${PACKAGE-default} ++ case $enableval in ++ yes) enable_fast_install=yes ;; ++ no) enable_fast_install=no ;; ++ *) ++ enable_fast_install=no ++ # Look at the argument we got. We use all the common list separators. ++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," ++ for pkg in $enableval; do ++ IFS="$lt_save_ifs" ++ if test "X$pkg" = "X$p"; then ++ enable_fast_install=yes ++ fi ++ done ++ IFS="$lt_save_ifs" ++ ;; ++ esac ++else ++ enable_fast_install=yes ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# This can be used to rebuild libtool when needed ++LIBTOOL_DEPS="$ltmain" ++ ++# Always use our own libtool. ++LIBTOOL='$(SHELL) $(top_builddir)/libtool' ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++test -z "$LN_S" && LN_S="ln -s" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 ++$as_echo_n "checking for objdir... " >&6; } ++if ${lt_cv_objdir+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ lt_cv_objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ lt_cv_objdir=_libs ++fi ++rmdir .libs 2>/dev/null ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 ++$as_echo "$lt_cv_objdir" >&6; } ++objdir=$lt_cv_objdir ++ ++ ++ ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define LT_OBJDIR "$lt_cv_objdir/" ++_ACEOF ++ ++ ++ ++ ++case $host_os in ++aix3*) ++ # AIX sometimes has problems with the GCC collect2 program. For some ++ # reason, if we set the COLLECT_NAMES environment variable, the problems ++ # vanish in a puff of smoke. ++ if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Global variables: ++ofile=libtool ++can_build_shared=yes ++ ++# All known linkers require a `.a' archive for static linking (except MSVC, ++# which needs '.lib'). ++libext=a ++ ++with_gnu_ld="$lt_cv_prog_gnu_ld" ++ ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++ ++# Set sane defaults for various variables ++test -z "$CC" && CC=cc ++test -z "$LTCC" && LTCC=$CC ++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS ++test -z "$LD" && LD=ld ++test -z "$ac_objext" && ac_objext=o ++ ++for cc_temp in $compiler""; do ++ case $cc_temp in ++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; ++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; ++ \-*) ;; ++ *) break;; ++ esac ++done ++cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ++ ++ ++# Only perform the check for file, if the check method requires it ++test -z "$MAGIC_CMD" && MAGIC_CMD=file ++case $deplibs_check_method in ++file_magic*) ++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 ++$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } ++if ${lt_cv_path_MAGIC_CMD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/${ac_tool_prefix}file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++$as_echo "$MAGIC_CMD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ ++ ++ ++if test -z "$lt_cv_path_MAGIC_CMD"; then ++ if test -n "$ac_tool_prefix"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 ++$as_echo_n "checking for file... " >&6; } ++if ${lt_cv_path_MAGIC_CMD+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ case $MAGIC_CMD in ++[\\/*] | ?:[\\/]*) ++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ++ ;; ++*) ++ lt_save_MAGIC_CMD="$MAGIC_CMD" ++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" ++ for ac_dir in $ac_dummy; do ++ IFS="$lt_save_ifs" ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/file; then ++ lt_cv_path_MAGIC_CMD="$ac_dir/file" ++ if test -n "$file_magic_test_file"; then ++ case $deplibs_check_method in ++ "file_magic "*) ++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` ++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ $EGREP "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++_LT_EOF ++ fi ;; ++ esac ++ fi ++ break ++ fi ++ done ++ IFS="$lt_save_ifs" ++ MAGIC_CMD="$lt_save_MAGIC_CMD" ++ ;; ++esac ++fi ++ ++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" ++if test -n "$MAGIC_CMD"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 ++$as_echo "$MAGIC_CMD" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ ++ else ++ MAGIC_CMD=: ++ fi ++fi ++ ++ fi ++ ;; ++esac ++ ++# Use C for the default configuration in the libtool script ++ ++lt_save_CC="$CC" ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Source file extension for C test sources. ++ac_ext=c ++ ++# Object file extension for compiled C test sources. ++objext=o ++objext=$objext ++ ++# Code to be used in simple compile tests ++lt_simple_compile_test_code="int some_variable = 0;" ++ ++# Code to be used in simple link tests ++lt_simple_link_test_code='int main(){return(0);}' ++ ++ ++ ++ ++ ++ ++ ++# If no C compiler was specified, use CC. ++LTCC=${LTCC-"$CC"} ++ ++# If no C compiler flags were specified, use CFLAGS. ++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} ++ ++# Allow CC to be a program name with arguments. ++compiler=$CC ++ ++# Save the default compiler, since it gets overwritten when the other ++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. ++compiler_DEFAULT=$CC ++ ++# save warnings/boilerplate of simple test code ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_compile_test_code" >conftest.$ac_ext ++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_compiler_boilerplate=`cat conftest.err` ++$RM conftest* ++ ++ac_outfile=conftest.$ac_objext ++echo "$lt_simple_link_test_code" >conftest.$ac_ext ++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err ++_lt_linker_boilerplate=`cat conftest.err` ++$RM -r conftest* ++ ++ ++## CAVEAT EMPTOR: ++## There is no encapsulation within the following macros, do not change ++## the running order or otherwise move them around unless you know exactly ++## what you are doing... ++if test -n "$compiler"; then ++ ++lt_prog_compiler_no_builtin_flag= ++ ++if test "$GCC" = yes; then ++ case $cc_basename in ++ nvcc*) ++ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; ++ *) ++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; ++ esac ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } ++if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_rtti_exceptions=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="-fno-rtti -fno-exceptions" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_rtti_exceptions=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 ++$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } ++ ++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then ++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" ++else ++ : ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++ lt_prog_compiler_wl= ++lt_prog_compiler_pic= ++lt_prog_compiler_static= ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 ++$as_echo_n "checking for $compiler option to produce PIC... " >&6; } ++ ++ if test "$GCC" = yes; then ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_static='-static' ++ ++ case $host_os in ++ aix*) ++ # All AIX code is PIC. ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ m68k) ++ # FIXME: we need at least 68020 code to build shared libraries, but ++ # adding the `-m68020' flag to GCC prevents building anything better, ++ # like `-m68040'. ++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ esac ++ ;; ++ ++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) ++ # PIC is the default for these OSes. ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2* | cegcc*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ # Although the cygwin gcc ignores -fPIC, still need this for old-style ++ # (--disable-auto-import) libraries ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ darwin* | rhapsody*) ++ # PIC is the default on this platform ++ # Common symbols not allowed in MH_DYLIB files ++ lt_prog_compiler_pic='-fno-common' ++ ;; ++ ++ haiku*) ++ # PIC is the default for Haiku. ++ # The "-static" flag exists, but is broken. ++ lt_prog_compiler_static= ++ ;; ++ ++ hpux*) ++ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit ++ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag ++ # sets the default TLS model and affects inlining. ++ case $host_cpu in ++ hppa*64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ;; ++ ++ interix[3-9]*) ++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. ++ # Instead, we relocate shared libraries at runtime. ++ ;; ++ ++ msdosdjgpp*) ++ # Just because we use GCC doesn't mean we suddenly get shared libraries ++ # on systems that don't support them. ++ lt_prog_compiler_can_build_shared=no ++ enable_shared=no ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ lt_prog_compiler_pic=-Kconform_pic ++ fi ++ ;; ++ ++ *) ++ lt_prog_compiler_pic='-fPIC' ++ ;; ++ esac ++ ++ case $cc_basename in ++ nvcc*) # Cuda Compiler Driver 2.2 ++ lt_prog_compiler_wl='-Xlinker ' ++ lt_prog_compiler_pic='-Xcompiler -fPIC' ++ ;; ++ esac ++ else ++ # PORTME Check for flag to pass linker flags through the system compiler. ++ case $host_os in ++ aix*) ++ lt_prog_compiler_wl='-Wl,' ++ if test "$host_cpu" = ia64; then ++ # AIX 5 now supports IA64 processor ++ lt_prog_compiler_static='-Bstatic' ++ else ++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' ++ fi ++ ;; ++ ++ mingw* | cygwin* | pw32* | os2* | cegcc*) ++ # This hack is so that the source file can tell whether it is being ++ # built for inclusion in a dll (and should export symbols for example). ++ lt_prog_compiler_pic='-DDLL_EXPORT' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but ++ # not for PA HP-UX. ++ case $host_cpu in ++ hppa*64*|ia64*) ++ # +Z the default ++ ;; ++ *) ++ lt_prog_compiler_pic='+Z' ++ ;; ++ esac ++ # Is there a better lt_prog_compiler_static that works with the bundled CC? ++ lt_prog_compiler_static='${wl}-a ${wl}archive' ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ lt_prog_compiler_wl='-Wl,' ++ # PIC (with -KPIC) is the default. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ linux* | k*bsd*-gnu | kopensolaris*-gnu) ++ case $cc_basename in ++ # old Intel for x86_64 which still supported -KPIC. ++ ecc*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ # icc used to be incompatible with GCC. ++ # ICC 10 doesn't accept -KPIC any more. ++ icc* | ifort*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fPIC' ++ lt_prog_compiler_static='-static' ++ ;; ++ # Lahey Fortran 8.1. ++ lf95*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='--shared' ++ lt_prog_compiler_static='--static' ++ ;; ++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group compilers (*not* the Pentium gcc compiler, ++ # which looks to be a dead project) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-fpic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ccc*) ++ lt_prog_compiler_wl='-Wl,' ++ # All Alpha code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ xl* | bgxl* | bgf* | mpixl*) ++ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-qpic' ++ lt_prog_compiler_static='-qstaticlink' ++ ;; ++ *) ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ F* | *Sun*Fortran*) ++ # Sun Fortran 8.3 passes all unrecognized flags to the linker ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='' ++ ;; ++ *Sun\ C*) ++ # Sun C 5.9 ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ lt_prog_compiler_wl='-Wl,' ++ ;; ++ esac ++ ;; ++ esac ++ ;; ++ ++ newsos6) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *nto* | *qnx*) ++ # QNX uses GNU C++, but need to define -shared option too, otherwise ++ # it will coredump. ++ lt_prog_compiler_pic='-fPIC -shared' ++ ;; ++ ++ osf3* | osf4* | osf5*) ++ lt_prog_compiler_wl='-Wl,' ++ # All OSF/1 code is PIC. ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ rdos*) ++ lt_prog_compiler_static='-non_shared' ++ ;; ++ ++ solaris*) ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ case $cc_basename in ++ f77* | f90* | f95*) ++ lt_prog_compiler_wl='-Qoption ld ';; ++ *) ++ lt_prog_compiler_wl='-Wl,';; ++ esac ++ ;; ++ ++ sunos4*) ++ lt_prog_compiler_wl='-Qoption ld ' ++ lt_prog_compiler_pic='-PIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ lt_prog_compiler_pic='-Kconform_pic' ++ lt_prog_compiler_static='-Bstatic' ++ fi ++ ;; ++ ++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_pic='-KPIC' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ unicos*) ++ lt_prog_compiler_wl='-Wl,' ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ ++ uts4*) ++ lt_prog_compiler_pic='-pic' ++ lt_prog_compiler_static='-Bstatic' ++ ;; ++ ++ *) ++ lt_prog_compiler_can_build_shared=no ++ ;; ++ esac ++ fi ++ ++case $host_os in ++ # For platforms which do not support PIC, -DPIC is meaningless: ++ *djgpp*) ++ lt_prog_compiler_pic= ++ ;; ++ *) ++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 ++$as_echo "$lt_prog_compiler_pic" >&6; } ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the PIC flag actually works. ++# ++if test -n "$lt_prog_compiler_pic"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 ++$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } ++if ${lt_cv_prog_compiler_pic_works+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_pic_works=no ++ ac_outfile=conftest.$ac_objext ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ # The option is referenced via a variable to avoid confusing sed. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>conftest.err) ++ ac_status=$? ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s "$ac_outfile"; then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings other than the usual output. ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_pic_works=yes ++ fi ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 ++$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then ++ case $lt_prog_compiler_pic in ++ "" | " "*) ;; ++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; ++ esac ++else ++ lt_prog_compiler_pic= ++ lt_prog_compiler_can_build_shared=no ++fi ++ ++fi ++ ++ ++ ++ ++ ++ ++# ++# Check to make sure the static flag actually works. ++# ++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 ++$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } ++if ${lt_cv_prog_compiler_static_works+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_static_works=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ else ++ lt_cv_prog_compiler_static_works=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 ++$as_echo "$lt_cv_prog_compiler_static_works" >&6; } ++ ++if test x"$lt_cv_prog_compiler_static_works" = xyes; then ++ : ++else ++ lt_prog_compiler_static= ++fi ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if ${lt_cv_prog_compiler_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 ++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } ++if ${lt_cv_prog_compiler_c_o+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler_c_o=no ++ $RM -r conftest 2>/dev/null ++ mkdir conftest ++ cd conftest ++ mkdir out ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ lt_compiler_flag="-o out/conftest2.$ac_objext" ++ # Insert the option either (1) after the last *FLAGS variable, or ++ # (2) before a word containing "conftest.", or (3) at the end. ++ # Note that $ac_compile itself does not contain backslashes and begins ++ # with a dollar sign (not a hyphen), so the echo should work correctly. ++ lt_compile=`echo "$ac_compile" | $SED \ ++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ ++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ ++ -e 's:$: $lt_compiler_flag:'` ++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) ++ (eval "$lt_compile" 2>out/conftest.err) ++ ac_status=$? ++ cat out/conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ if (exit $ac_status) && test -s out/conftest2.$ac_objext ++ then ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp ++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 ++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler_c_o=yes ++ fi ++ fi ++ chmod u+w . 2>&5 ++ $RM conftest* ++ # SGI C++ compiler will create directory out/ii_files/ for ++ # template instantiation ++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files ++ $RM out/* && rmdir out ++ cd .. ++ $RM -r conftest ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 ++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } ++ ++ ++ ++ ++hard_links="nottested" ++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 ++$as_echo_n "checking if we can lock with hard links... " >&6; } ++ hard_links=yes ++ $RM conftest* ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ touch conftest.a ++ ln conftest.a conftest.b 2>&5 || hard_links=no ++ ln conftest.a conftest.b 2>/dev/null && hard_links=no ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 ++$as_echo "$hard_links" >&6; } ++ if test "$hard_links" = no; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ++$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 ++$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ++ ++ runpath_var= ++ allow_undefined_flag= ++ always_export_symbols=no ++ archive_cmds= ++ archive_expsym_cmds= ++ compiler_needs_object=no ++ enable_shared_with_static_runtimes=no ++ export_dynamic_flag_spec= ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ++ hardcode_automatic=no ++ hardcode_direct=no ++ hardcode_direct_absolute=no ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld= ++ hardcode_libdir_separator= ++ hardcode_minus_L=no ++ hardcode_shlibpath_var=unsupported ++ inherit_rpath=no ++ link_all_deplibs=unknown ++ module_cmds= ++ module_expsym_cmds= ++ old_archive_from_new_cmds= ++ old_archive_from_expsyms_cmds= ++ thread_safe_flag_spec= ++ whole_archive_flag_spec= ++ # include_expsyms should be a list of space-separated symbols to be *always* ++ # included in the symbol list ++ include_expsyms= ++ # exclude_expsyms can be an extended regexp of symbols to exclude ++ # it will be wrapped by ` (' and `)$', so one must not match beginning or ++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', ++ # as well as any symbol that contains `d'. ++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' ++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out ++ # platforms (ab)use it in PIC code, but their linkers get confused if ++ # the symbol is explicitly referenced. Since portable code cannot ++ # rely on this symbol name, it's probably fine to never include it in ++ # preloaded symbol tables. ++ # Exclude shared library initialization/finalization symbols. ++ extract_expsyms_cmds= ++ ++ case $host_os in ++ cygwin* | mingw* | pw32* | cegcc*) ++ # FIXME: the MSVC++ port hasn't been tested in a loooong time ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ if test "$GCC" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ interix*) ++ # we just hope/assume this is gcc and not c89 (= MSVC++) ++ with_gnu_ld=yes ++ ;; ++ openbsd*) ++ with_gnu_ld=no ++ ;; ++ esac ++ ++ ld_shlibs=yes ++ ++ # On some targets, GNU ld is compatible enough with the native linker ++ # that we're better off using the native interface for both. ++ lt_use_gnu_ld_interface=no ++ if test "$with_gnu_ld" = yes; then ++ case $host_os in ++ aix*) ++ # The AIX port of GNU ld has always aspired to compatibility ++ # with the native linker. However, as the warning in the GNU ld ++ # block says, versions before 2.19.5* couldn't really create working ++ # shared libraries, regardless of the interface used. ++ case `$LD -v 2>&1` in ++ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; ++ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; ++ *\ \(GNU\ Binutils\)\ [3-9]*) ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ ;; ++ *) ++ lt_use_gnu_ld_interface=yes ++ ;; ++ esac ++ fi ++ ++ if test "$lt_use_gnu_ld_interface" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # Set some defaults for GNU ld with shared library support. These ++ # are reset later if shared libraries are not supported. Putting them ++ # here allows them to be overridden if necessary. ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ # ancient GNU ld didn't support --whole-archive et. al. ++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ else ++ whole_archive_flag_spec= ++ fi ++ supports_anon_versioning=no ++ case `$LD -v 2>&1` in ++ *GNU\ gold*) supports_anon_versioning=yes ;; ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 ++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... ++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... ++ *\ 2.11.*) ;; # other 2.11 versions ++ *) supports_anon_versioning=yes ;; ++ esac ++ ++ # See if GNU ld supports shared libraries. ++ case $host_os in ++ aix[3-9]*) ++ # On AIX/PPC, the GNU linker is very broken ++ if test "$host_cpu" != ia64; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: the GNU linker, at least up to release 2.19, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to install binutils ++*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. ++*** You will then need to restart the configuration process. ++ ++_LT_EOF ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw* | pw32* | cegcc*) ++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, ++ # as there is no search path for DLLs. ++ hardcode_libdir_flag_spec='-L$libdir' ++ export_dynamic_flag_spec='${wl}--export-all-symbols' ++ allow_undefined_flag=unsupported ++ always_export_symbols=no ++ enable_shared_with_static_runtimes=yes ++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' ++ ++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ # If the export-symbols file already is a .def file (1st line ++ # is EXPORTS), use it as is; otherwise, prepend... ++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then ++ cp $export_symbols $output_objdir/$soname.def; ++ else ++ echo EXPORTS > $output_objdir/$soname.def; ++ cat $export_symbols >> $output_objdir/$soname.def; ++ fi~ ++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ haiku*) ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ link_all_deplibs=yes ++ ;; ++ ++ interix[3-9]*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. ++ # Instead, shared libraries are loaded at an image base (0x10000000 by ++ # default) and relocated if they conflict, which is a slow very memory ++ # consuming and fragmenting process. To avoid this, we pick a random, ++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link ++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. ++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ++ ;; ++ ++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) ++ tmp_diet=no ++ if test "$host_os" = linux-dietlibc; then ++ case $cc_basename in ++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) ++ esac ++ fi ++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ ++ && test "$tmp_diet" = no ++ then ++ tmp_addflag=' $pic_flag' ++ tmp_sharedflag='-shared' ++ case $cc_basename,$host_cpu in ++ pgcc*) # Portland Group C compiler ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag' ++ ;; ++ pgf77* | pgf90* | pgf95* | pgfortran*) ++ # Portland Group f77 and f90 compilers ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ tmp_addflag=' $pic_flag -Mnomain' ;; ++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 ++ tmp_addflag=' -i_dynamic' ;; ++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 ++ tmp_addflag=' -i_dynamic -nofor_main' ;; ++ ifc* | ifort*) # Intel Fortran compiler ++ tmp_addflag=' -nofor_main' ;; ++ lf95*) # Lahey Fortran 8.1 ++ whole_archive_flag_spec= ++ tmp_sharedflag='--shared' ;; ++ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) ++ tmp_sharedflag='-qmkshrobj' ++ tmp_addflag= ;; ++ nvcc*) # Cuda Compiler Driver 2.2 ++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ ;; ++ esac ++ case `$CC -V 2>&1 | sed 5q` in ++ *Sun\ C*) # Sun C 5.9 ++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ++ compiler_needs_object=yes ++ tmp_sharedflag='-G' ;; ++ *Sun\ F*) # Sun Fortran 8.3 ++ tmp_sharedflag='-G' ;; ++ esac ++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' ++ fi ++ ++ case $cc_basename in ++ xlf* | bgf* | bgxlf* | mpixlf*) ++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself ++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' ++ hardcode_libdir_flag_spec= ++ hardcode_libdir_flag_spec_ld='-rpath $libdir' ++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' ++ if test "x$supports_anon_versioning" = xyes; then ++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ ++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ ++ echo "local: *; };" >> $output_objdir/$libname.ver~ ++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' ++ fi ++ ;; ++ esac ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' ++ wlarc= ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) ++ case `$LD -v 2>&1` in ++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ++ ld_shlibs=no ++ cat <<_LT_EOF 1>&2 ++ ++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not ++*** reliably create shared libraries on SCO systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++_LT_EOF ++ ;; ++ *) ++ # For security reasons, it is highly recommended that you always ++ # use absolute paths for naming shared libraries, and exclude the ++ # DT_RUNPATH tag from executables and libraries. But doing so ++ # requires that you compile everything twice, which is a pain. ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = no; then ++ runpath_var= ++ hardcode_libdir_flag_spec= ++ export_dynamic_flag_spec= ++ whole_archive_flag_spec= ++ fi ++ else ++ # PORTME fill in a description of your system's linker (not GNU ld) ++ case $host_os in ++ aix3*) ++ allow_undefined_flag=unsupported ++ always_export_symbols=yes ++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" = ia64; then ++ # On IA64, the linker does run time linking by default, so we don't ++ # have to do anything special. ++ aix_use_runtimelinking=no ++ exp_sym_flag='-Bexport' ++ no_entry_flag="" ++ else ++ # If we're using GNU nm, then we don't want the "-C" option. ++ # -C means demangle to AIX nm, but means don't demangle with GNU nm ++ # Also, AIX nm treats weak defined symbols like other global ++ # defined symbols, whereas GNU nm marks them as "W". ++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then ++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ else ++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' ++ fi ++ aix_use_runtimelinking=no ++ ++ # Test if we are trying to use run time linking or normal ++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we ++ # need to do runtime linking. ++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) ++ for ld_flag in $LDFLAGS; do ++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then ++ aix_use_runtimelinking=yes ++ break ++ fi ++ done ++ ;; ++ esac ++ ++ exp_sym_flag='-bexport' ++ no_entry_flag='-bnoentry' ++ fi ++ ++ # When large executables or shared objects are built, AIX ld can ++ # have problems creating the table of contents. If linking a library ++ # or program results in "error TOC overflow" add -mminimal-toc to ++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not ++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. ++ ++ archive_cmds='' ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ file_list_spec='${wl}-f,' ++ ++ if test "$GCC" = yes; then ++ case $host_os in aix4.[012]|aix4.[012].*) ++ # We only want to do this on AIX 4.2 and lower, the check ++ # below for broken collect2 doesn't work under 4.3+ ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && ++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ : ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ ;; ++ esac ++ shared_flag='-shared' ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag="$shared_flag "'${wl}-G' ++ fi ++ else ++ # not using gcc ++ if test "$host_cpu" = ia64; then ++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release ++ # chokes on -Wl,-G. The following line is correct: ++ shared_flag='-G' ++ else ++ if test "$aix_use_runtimelinking" = yes; then ++ shared_flag='${wl}-G' ++ else ++ shared_flag='${wl}-bM:SRE' ++ fi ++ fi ++ fi ++ ++ export_dynamic_flag_spec='${wl}-bexpall' ++ # It seems that -bexpall does not export symbols beginning with ++ # underscore (_), so it is better to generate a list of symbols to export. ++ always_export_symbols=yes ++ if test "$aix_use_runtimelinking" = yes; then ++ # Warning - without using the other runtime loading flags (-brtl), ++ # -berok will link without error, but may produce a broken library. ++ allow_undefined_flag='-berok' ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" ++ else ++ if test "$host_cpu" = ia64; then ++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' ++ allow_undefined_flag="-z nodefs" ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" ++ else ++ # Determine the default libpath from the value encoded in an ++ # empty executable. ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++lt_aix_libpath_sed=' ++ /Import File Strings/,/^$/ { ++ /^0/ { ++ s/^0 *\(.*\)$/\1/ ++ p ++ } ++ }' ++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++# Check for a 64-bit object if we didn't find anything. ++if test -z "$aix_libpath"; then ++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ++ ++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" ++ # Warning - without using the other run time loading flags, ++ # -berok will link without error, but may produce a broken library. ++ no_undefined_flag=' ${wl}-bernotok' ++ allow_undefined_flag=' ${wl}-berok' ++ if test "$with_gnu_ld" = yes; then ++ # We only use this code for GNU lds that support --whole-archive. ++ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ++ else ++ # Exported symbols can be pulled into shared objects from archives ++ whole_archive_flag_spec='$convenience' ++ fi ++ archive_cmds_need_lc=yes ++ # This is similar to how AIX traditionally builds its shared libraries. ++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' ++ fi ++ fi ++ ;; ++ ++ amigaos*) ++ case $host_cpu in ++ powerpc) ++ # see comment about AmigaOS4 .so support ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='' ++ ;; ++ m68k) ++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ;; ++ esac ++ ;; ++ ++ bsdi[45]*) ++ export_dynamic_flag_spec=-rdynamic ++ ;; ++ ++ cygwin* | mingw* | pw32* | cegcc*) ++ # When not using gcc, we currently assume that we are using ++ # Microsoft Visual C++. ++ # hardcode_libdir_flag_spec is actually meaningless, as there is ++ # no search path for DLLs. ++ hardcode_libdir_flag_spec=' ' ++ allow_undefined_flag=unsupported ++ # Tell ltmain to make .lib files, not .a files. ++ libext=lib ++ # Tell ltmain to make .dll files, not .so files. ++ shrext_cmds=".dll" ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' ++ fix_srcfile_path='`cygpath -w "$srcfile"`' ++ enable_shared_with_static_runtimes=yes ++ ;; ++ ++ darwin* | rhapsody*) ++ ++ ++ ++ # Publish an arg to allow the user to select that Darwin host (and target) ++ # libraries should be given install-names like @rpath/libfoo.dylib. This ++ # requires that the user of the library then adds an 'rpath' to the DSO that ++ # needs access. ++ # NOTE: there are defaults below, for systems that support rpaths. The person ++ # configuring can override the defaults for any system version that supports ++ # them - they are, however, forced off for system versions without support. ++ # Check whether --enable-darwin-at-rpath was given. ++if test "${enable_darwin_at_rpath+set}" = set; then : ++ enableval=$enable_darwin_at_rpath; if test "x$enable_darwin_at_rpath" = "xyes"; then ++ # This is not supported before macOS 10.5 / Darwin9. ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in ++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&5 ++$as_echo "$as_me: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&2;} ++ enable_darwin_at_rpath=no ++ ;; ++ esac ++ fi ++else ++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in ++ # As above, before 10.5 / Darwin9 this does not work. ++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) ++ enable_darwin_at_rpath=no ++ ;; ++ ++ # We cannot build and test reliably on macOS 10.11+ (Darwin15+) without use ++ # of rpaths, since runpaths set via DYLD_LIBRARY_PATH are elided by key ++ # system executables (e.g. /bin/sh). Force rpaths on for these systems. ++ UNSET,darwin1[5-9]*|UNSET,darwin2*|10.1[1-9][,.]*|1[1-9].*[,.]* ) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&5 ++$as_echo "$as_me: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&6;} ++ enable_darwin_at_rpath=yes ++ ;; ++ # NOTE: we are not (yet) doing anything for 10.5 .. 10.10, since they can ++ # work with either DYLD_LIBRARY_PATH or embedded rpaths. ++ ++ esac ++ ++fi ++ ++ ++ archive_cmds_need_lc=no ++ hardcode_direct=no ++ hardcode_automatic=yes ++ hardcode_shlibpath_var=unsupported ++ if test "$lt_cv_ld_force_load" = "yes"; then ++ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' ++ else ++ whole_archive_flag_spec='' ++ fi ++ link_all_deplibs=yes ++ allow_undefined_flag="$_lt_dar_allow_undefined" ++ case $cc_basename in ++ ifort*) _lt_dar_can_shared=yes ;; ++ *) _lt_dar_can_shared=$GCC ;; ++ esac ++ if test "$_lt_dar_can_shared" = "yes"; then ++ output_verbose_link_cmd=func_echo_all ++ _lt_install_name='\$rpath/\$soname' ++ if test "x$enable_darwin_at_rpath" = "xyes"; then ++ _lt_install_name='@rpath/\$soname' ++ fi ++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dsymutil}" ++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" ++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dar_export_syms}${_lt_dsymutil}" ++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" ++ ++ else ++ ld_shlibs=no ++ fi ++ ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. ++ freebsd2.*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd* | dragonfly*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9*) ++ if test "$GCC" = yes; then ++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ else ++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ hpux10*) ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_flag_spec_ld='+b $libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ fi ++ ;; ++ ++ hpux11*) ++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ esac ++ else ++ case $host_cpu in ++ hppa*64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ ia64*) ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ++ ;; ++ *) ++ ++ # Older versions of the 11.00 compiler do not understand -b yet ++ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 ++$as_echo_n "checking if $CC understands -b... " >&6; } ++if ${lt_cv_prog_compiler__b+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_prog_compiler__b=no ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -b" ++ echo "$lt_simple_link_test_code" > conftest.$ac_ext ++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then ++ # The linker can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp ++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 ++ if diff conftest.exp conftest.er2 >/dev/null; then ++ lt_cv_prog_compiler__b=yes ++ fi ++ else ++ lt_cv_prog_compiler__b=yes ++ fi ++ fi ++ $RM -r conftest* ++ LDFLAGS="$save_LDFLAGS" ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 ++$as_echo "$lt_cv_prog_compiler__b" >&6; } ++ ++if test x"$lt_cv_prog_compiler__b" = xyes; then ++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ++else ++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ++fi ++ ++ ;; ++ esac ++ fi ++ if test "$with_gnu_ld" = no; then ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ++ case $host_cpu in ++ hppa*64*|ia64*) ++ hardcode_direct=no ++ hardcode_shlibpath_var=no ++ ;; ++ *) ++ hardcode_direct=yes ++ hardcode_direct_absolute=yes ++ export_dynamic_flag_spec='${wl}-E' ++ ++ # hardcode_minus_L: Not really in the search PATH, ++ # but as the default location of the library. ++ hardcode_minus_L=yes ++ ;; ++ esac ++ fi ++ ;; ++ ++ irix5* | irix6* | nonstopux*) ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ # Try to use the -exported_symbol ld option, if it does not ++ # work, assume that -exports_file does not work either and ++ # implicitly export all symbols. ++ save_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++int foo(void) {} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ++ ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$save_LDFLAGS" ++ else ++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ inherit_rpath=yes ++ link_all_deplibs=yes ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ newsos6) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *nto* | *qnx*) ++ ;; ++ ++ openbsd*) ++ if test -f /usr/libexec/ld.so; then ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ hardcode_direct_absolute=yes ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ export_dynamic_flag_spec='${wl}-E' ++ else ++ case $host_os in ++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-R$libdir' ++ ;; ++ *) ++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ++ ;; ++ esac ++ fi ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ++ ;; ++ ++ osf3*) ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ osf4* | osf5*) # as osf3* with the addition of -msym flag ++ if test "$GCC" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' ++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ ++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' ++ ++ # Both c and cxx compiler support -rpath directly ++ hardcode_libdir_flag_spec='-rpath $libdir' ++ fi ++ archive_cmds_need_lc='no' ++ hardcode_libdir_separator=: ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z defs' ++ if test "$GCC" = yes; then ++ wlarc='${wl}' ++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ else ++ case `$CC -V 2>&1` in ++ *"Compilers 5.0"*) ++ wlarc='' ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ++ ;; ++ *) ++ wlarc='${wl}' ++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ ++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ++ ;; ++ esac ++ fi ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case $host_os in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) ++ # The compiler driver will combine and reorder linker options, ++ # but understands `-z linker_flag'. GCC discards it without `$wl', ++ # but is careful enough not to reorder. ++ # Supported since Solaris 2.6 (maybe 2.5.1?) ++ if test "$GCC" = yes; then ++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ++ else ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ++ fi ++ ;; ++ esac ++ link_all_deplibs=yes ++ ;; ++ ++ sunos4*) ++ if test "x$host_vendor" = xsequent; then ++ # Use $CC to link under sequent, because it throws in some extra .o ++ # files that make .init and .fini sections work. ++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' ++ fi ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ case $host_vendor in ++ sni) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=yes # is this really true??? ++ ;; ++ siemens) ++ ## LD is ld it makes a PLAMLIB ++ ## CC just makes a GrossModule. ++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' ++ reload_cmds='$CC -r -o $output$reload_objs' ++ hardcode_direct=no ++ ;; ++ motorola) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ esac ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ++ no_undefined_flag='${wl}-z,text' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ sysv5* | sco3.2v5* | sco5v6*) ++ # Note: We can NOT use -z defs as we might desire, because we do not ++ # link with -lc, and that would cause any symbols used from libc to ++ # always be unresolved, which means just about no library would ++ # ever link correctly. If we're not using GNU ld we use -z text ++ # though, which does catch some bad symbols but isn't as heavy-handed ++ # as -z defs. ++ no_undefined_flag='${wl}-z,text' ++ allow_undefined_flag='${wl}-z,nodefs' ++ archive_cmds_need_lc=no ++ hardcode_shlibpath_var=no ++ hardcode_libdir_flag_spec='${wl}-R,$libdir' ++ hardcode_libdir_separator=':' ++ link_all_deplibs=yes ++ export_dynamic_flag_spec='${wl}-Bexport' ++ runpath_var='LD_RUN_PATH' ++ ++ if test "$GCC" = yes; then ++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ else ++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ++ fi ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++ ++ if test x$host_vendor = xsni; then ++ case $host in ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ export_dynamic_flag_spec='${wl}-Blargedynsym' ++ ;; ++ esac ++ fi ++ fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 ++$as_echo "$ld_shlibs" >&6; } ++test "$ld_shlibs" = no && can_build_shared=no ++ ++with_gnu_ld=$with_gnu_ld ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++# ++# Do we need to explicitly link libc? ++# ++case "x$archive_cmds_need_lc" in ++x|xyes) ++ # Assume -lc should be added ++ archive_cmds_need_lc=yes ++ ++ if test "$enable_shared" = yes && test "$GCC" = yes; then ++ case $archive_cmds in ++ *'~'*) ++ # FIXME: we may have to deal with multi-command sequences. ++ ;; ++ '$CC '*) ++ # Test whether the compiler implicitly links with -lc since on some ++ # systems, -lgcc has to come before -lc. If gcc already passes -lc ++ # to ld, don't add -lc before -lgcc. ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 ++$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } ++if ${lt_cv_archive_cmds_need_lc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ $RM conftest* ++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext ++ ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 ++ (eval $ac_compile) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } 2>conftest.err; then ++ soname=conftest ++ lib=conftest ++ libobjs=conftest.$ac_objext ++ deplibs= ++ wl=$lt_prog_compiler_wl ++ pic_flag=$lt_prog_compiler_pic ++ compiler_flags=-v ++ linker_flags=-v ++ verstring= ++ output_objdir=. ++ libname=conftest ++ lt_save_allow_undefined_flag=$allow_undefined_flag ++ allow_undefined_flag= ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 ++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } ++ then ++ lt_cv_archive_cmds_need_lc=no ++ else ++ lt_cv_archive_cmds_need_lc=yes ++ fi ++ allow_undefined_flag=$lt_save_allow_undefined_flag ++ else ++ cat conftest.err 1>&5 ++ fi ++ $RM conftest* ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 ++$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } ++ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ++ ;; ++ esac ++ fi ++ ;; ++esac ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 ++$as_echo_n "checking dynamic linker characteristics... " >&6; } ++ ++if test "$GCC" = yes; then ++ case $host_os in ++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; ++ *) lt_awk_arg="/^libraries:/" ;; ++ esac ++ case $host_os in ++ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; ++ *) lt_sed_strip_eq="s,=/,/,g" ;; ++ esac ++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` ++ case $lt_search_path_spec in ++ *\;*) ++ # if the path contains ";" then we assume it to be the separator ++ # otherwise default to the standard path separator (i.e. ":") - it is ++ # assumed that no part of a normal pathname contains ";" but that should ++ # okay in the real world where ";" in dirpaths is itself problematic. ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ++ ;; ++ *) ++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ++ ;; ++ esac ++ # Ok, now we have the path, separated by spaces, we can step through it ++ # and add multilib dir if necessary. ++ lt_tmp_lt_search_path_spec= ++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` ++ for lt_sys_path in $lt_search_path_spec; do ++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" ++ else ++ test -d "$lt_sys_path" && \ ++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" ++ fi ++ done ++ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' ++BEGIN {RS=" "; FS="/|\n";} { ++ lt_foo=""; ++ lt_count=0; ++ for (lt_i = NF; lt_i > 0; lt_i--) { ++ if ($lt_i != "" && $lt_i != ".") { ++ if ($lt_i == "..") { ++ lt_count++; ++ } else { ++ if (lt_count == 0) { ++ lt_foo="/" $lt_i lt_foo; ++ } else { ++ lt_count--; ++ } ++ } ++ } ++ } ++ if (lt_foo != "") { lt_freq[lt_foo]++; } ++ if (lt_freq[lt_foo] == 1) { print lt_foo; } ++}'` ++ # AWK program above erroneously prepends '/' to C:/dos/paths ++ # for these hosts. ++ case $host_os in ++ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ ++ $SED 's,/\([A-Za-z]:\),\1,g'` ;; ++ esac ++ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` ++else ++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++fi ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++shrext_cmds=".so" ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++need_lib_prefix=unknown ++hardcode_into_libs=no ++ ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++need_version=unknown ++ ++case $host_os in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX 3 has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ ++aix[4-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ hardcode_into_libs=yes ++ if test "$host_cpu" = ia64; then ++ # AIX 5 supports IA64 ++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ else ++ # With GCC up to 2.95.x, collect2 would create an import file ++ # for dependence libraries. The import file would start with ++ # the line `#! .'. This would cause the generated library to ++ # depend on `.', always an invalid library. This was fixed in ++ # development snapshots of GCC prior to 3.0. ++ case $host_os in ++ aix4 | aix4.[01] | aix4.[01].*) ++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' ++ echo ' yes ' ++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then ++ : ++ else ++ can_build_shared=no ++ fi ++ ;; ++ esac ++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct ++ # soname into executable. Probably we can add versioning support to ++ # collect2, so additional links can be useful in future. ++ if test "$aix_use_runtimelinking" = yes; then ++ # If using run time linking (on AIX 4.2 or later) use lib.so ++ # instead of lib.a to let people know that these are not ++ # typical AIX shared libraries. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ else ++ # We preserve .a as extension for shared libraries through AIX4.2 ++ # and later when we are not doing run time linking. ++ library_names_spec='${libname}${release}.a $libname.a' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ fi ++ shlibpath_var=LIBPATH ++ fi ++ ;; ++ ++amigaos*) ++ case $host_cpu in ++ powerpc) ++ # Since July 2007 AmigaOS4 officially supports .so libraries. ++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ ;; ++ m68k) ++ library_names_spec='$libname.ixlibrary $libname.a' ++ # Create ${libname}_ixlibrary.a entries in /sys/libs. ++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ++ ;; ++ esac ++ ;; ++ ++beos*) ++ library_names_spec='${libname}${shared_ext}' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ ;; ++ ++bsdi[45]*) ++ version_type=linux ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" ++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" ++ # the default ld.so.conf also contains /usr/contrib/lib and ++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow ++ # libtool to hard-code these into programs ++ ;; ++ ++cygwin* | mingw* | pw32* | cegcc*) ++ version_type=windows ++ shrext_cmds=".dll" ++ need_version=no ++ need_lib_prefix=no ++ ++ case $GCC,$host_os in ++ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) ++ library_names_spec='$libname.dll.a' ++ # DLL is installed to $(libdir)/../bin by postinstall_cmds ++ postinstall_cmds='base_file=`basename \${file}`~ ++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ ++ dldir=$destdir/`dirname \$dlpath`~ ++ test -d \$dldir || mkdir -p \$dldir~ ++ $install_prog $dir/$dlname \$dldir/$dlname~ ++ chmod a+x \$dldir/$dlname~ ++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then ++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; ++ fi' ++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ ++ dlpath=$dir/\$dldll~ ++ $RM \$dlpath' ++ shlibpath_overrides_runpath=yes ++ ++ case $host_os in ++ cygwin*) ++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' ++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ++ ;; ++ mingw* | cegcc*) ++ # MinGW DLLs use traditional 'lib' prefix ++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ pw32*) ++ # pw32 DLLs use 'pw' prefix rather than 'lib' ++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ++ ;; ++ esac ++ ;; ++ ++ *) ++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ++ ;; ++ esac ++ dynamic_linker='Win32 ld.exe' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ ;; ++ ++darwin* | rhapsody*) ++ dynamic_linker="$host_os dyld" ++ version_type=darwin ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' ++ soname_spec='${libname}${release}${major}$shared_ext' ++ shlibpath_overrides_runpath=yes ++ shlibpath_var=DYLD_LIBRARY_PATH ++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' ++ ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" ++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++freebsd* | dragonfly*) ++ # DragonFly does not have aout. When/if they implement a new ++ # versioning mechanism, adjust this. ++ if test -x /usr/bin/objformat; then ++ objformat=`/usr/bin/objformat` ++ else ++ case $host_os in ++ freebsd[23].*) objformat=aout ;; ++ *) objformat=elf ;; ++ esac ++ fi ++ version_type=freebsd-$objformat ++ case $version_type in ++ freebsd-elf*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' ++ need_version=yes ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_os in ++ freebsd2.*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ freebsd3.[01]* | freebsdelf3.[01]*) ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ ++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ *) # from 4.6 on, and DragonFly ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ esac ++ ;; ++ ++haiku*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os runtime_loader" ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' ++ hardcode_into_libs=yes ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ case $host_cpu in ++ ia64*) ++ shrext_cmds='.so' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.so" ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ if test "X$HPUX_IA64_MODE" = X32; then ++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" ++ else ++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" ++ fi ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ hppa*64*) ++ shrext_cmds='.sl' ++ hardcode_into_libs=yes ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH ++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" ++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ++ ;; ++ *) ++ shrext_cmds='.sl' ++ dynamic_linker="$host_os dld.sl" ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ ;; ++ esac ++ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... ++ postinstall_cmds='chmod 555 $lib' ++ # or fails outright, so override atomically: ++ install_override_mode=555 ++ ;; ++ ++interix[3-9]*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++irix5* | irix6* | nonstopux*) ++ case $host_os in ++ nonstopux*) version_type=nonstopux ;; ++ *) ++ if test "$lt_cv_prog_gnu_ld" = yes; then ++ version_type=linux ++ else ++ version_type=irix ++ fi ;; ++ esac ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' ++ case $host_os in ++ irix5* | nonstopux*) ++ libsuff= shlibsuff= ++ ;; ++ *) ++ case $LD in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") ++ libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") ++ libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") ++ libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ ;; ++ esac ++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" ++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ++ hardcode_into_libs=yes ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux*oldld* | linux*aout* | linux*coff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++ ++# uclinux* changes (here and below) have been submitted to the libtool ++# project, but have not yet been accepted: they are GCC-local changes ++# for the time being. (See ++# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) ++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ ++ # Some binutils ld are patched to set DT_RUNPATH ++ if ${lt_cv_shlibpath_overrides_runpath+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ lt_cv_shlibpath_overrides_runpath=no ++ save_LDFLAGS=$LDFLAGS ++ save_libdir=$libdir ++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ ++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : ++ lt_cv_shlibpath_overrides_runpath=yes ++fi ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS=$save_LDFLAGS ++ libdir=$save_libdir ++ ++fi ++ ++ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath ++ ++ # This implies no fast_install, which is unacceptable. ++ # Some rework will be needed to allow for fast_install ++ # before this can be enabled. ++ hardcode_into_libs=yes ++ ++ # Append ld.so.conf contents to the search path ++ if test -f /etc/ld.so.conf; then ++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` ++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" ++ fi ++ ++ # We used to test for /lib/ld.so.1 and disable shared libraries on ++ # powerpc, because MkLinux only supported shared libraries with the ++ # GNU dynamic linker. Since this was broken with cross compilers, ++ # most powerpc-linux boxes support dynamic linking these days and ++ # people can always --disable-shared, the test was removed, and we ++ # assume the GNU/Linux dynamic linker is in use. ++ dynamic_linker='GNU/Linux ld.so' ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ ++newsos6) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ ;; ++ ++*nto* | *qnx*) ++ version_type=qnx ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='ldqnx.so' ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ sys_lib_dlsearch_path_spec="/usr/lib" ++ need_lib_prefix=no ++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. ++ case $host_os in ++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; ++ *) need_version=no ;; ++ esac ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then ++ case $host_os in ++ openbsd2.[89] | openbsd2.[89].*) ++ shlibpath_overrides_runpath=no ++ ;; ++ *) ++ shlibpath_overrides_runpath=yes ++ ;; ++ esac ++ else ++ shlibpath_overrides_runpath=yes ++ fi ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ shrext_cmds=".dll" ++ need_lib_prefix=no ++ library_names_spec='$libname${shared_ext} $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4* | osf5*) ++ version_type=osf ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}${shared_ext}$major' ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++rdos*) ++ dynamic_linker=no ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.3*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case $host_vendor in ++ sni) ++ shlibpath_overrides_runpath=no ++ need_lib_prefix=no ++ runpath_var=LD_RUN_PATH ++ ;; ++ siemens) ++ need_lib_prefix=no ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ ;; ++ esac ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' ++ soname_spec='$libname${shared_ext}.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) ++ version_type=freebsd-elf ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ if test "$with_gnu_ld" = yes; then ++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' ++ else ++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' ++ case $host_os in ++ sco3.2v5*) ++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ++ ;; ++ esac ++ fi ++ sys_lib_dlsearch_path_spec='/usr/lib' ++ ;; ++ ++tpf*) ++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++# Shared libraries for VwWorks, >= 7 only at this stage ++# and (fpic) still incompatible with "large" code models ++# in a few configurations. Only for RTP mode in any case, ++# and upon explicit request at configure time. ++vxworks7*) ++ dynamic_linker=no ++ case ${with_multisubdir}-${enable_shared} in ++ *large*) ++ ;; ++ *mrtp*-yes) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ dynamic_linker="$host_os module_loader" ++ ;; ++ esac ++ ;; ++*) ++ dynamic_linker=no ++ ;; ++esac ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 ++$as_echo "$dynamic_linker" >&6; } ++test "$dynamic_linker" = no && can_build_shared=no ++ ++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" ++if test "$GCC" = yes; then ++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" ++fi ++ ++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then ++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" ++fi ++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then ++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 ++$as_echo_n "checking how to hardcode library paths into programs... " >&6; } ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || ++ test -n "$runpath_var" || ++ test "X$hardcode_automatic" = "Xyes" ; then ++ ++ # We can hardcode non-existent directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && ++ test "$hardcode_minus_L" != no; then ++ # Linking always hardcodes the temporary library directory. ++ hardcode_action=relink ++ else ++ # We can link without hardcoding, and we can hardcode nonexisting dirs. ++ hardcode_action=immediate ++ fi ++else ++ # We cannot hardcode anything, or else we can only hardcode existing ++ # directories. ++ hardcode_action=unsupported ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 ++$as_echo "$hardcode_action" >&6; } ++ ++if test "$hardcode_action" = relink || ++ test "$inherit_rpath" = yes; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++ ++ ++ ++ ++ ++ if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++ lt_cv_dlopen=no ++ lt_cv_dlopen_libs= ++ ++ case $host_os in ++ beos*) ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++ mingw* | pw32* | cegcc*) ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ cygwin*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ ++ darwin*) ++ # if libdl is installed we need to link against it ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++$as_echo_n "checking for dlopen in -ldl... " >&6; } ++if ${ac_cv_lib_dl_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dl_dlopen=yes ++else ++ ac_cv_lib_dl_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ ++ lt_cv_dlopen="dyld" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ++fi ++ ++ ;; ++ ++ *) ++ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" ++if test "x$ac_cv_func_shl_load" = xyes; then : ++ lt_cv_dlopen="shl_load" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 ++$as_echo_n "checking for shl_load in -ldld... " >&6; } ++if ${ac_cv_lib_dld_shl_load+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char shl_load (); ++int ++main () ++{ ++return shl_load (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dld_shl_load=yes ++else ++ ac_cv_lib_dld_shl_load=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 ++$as_echo "$ac_cv_lib_dld_shl_load" >&6; } ++if test "x$ac_cv_lib_dld_shl_load" = xyes; then : ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" ++if test "x$ac_cv_func_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 ++$as_echo_n "checking for dlopen in -ldl... " >&6; } ++if ${ac_cv_lib_dl_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldl $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dl_dlopen=yes ++else ++ ac_cv_lib_dl_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 ++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } ++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 ++$as_echo_n "checking for dlopen in -lsvld... " >&6; } ++if ${ac_cv_lib_svld_dlopen+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lsvld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dlopen (); ++int ++main () ++{ ++return dlopen (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_svld_dlopen=yes ++else ++ ac_cv_lib_svld_dlopen=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 ++$as_echo "$ac_cv_lib_svld_dlopen" >&6; } ++if test "x$ac_cv_lib_svld_dlopen" = xyes; then : ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 ++$as_echo_n "checking for dld_link in -ldld... " >&6; } ++if ${ac_cv_lib_dld_dld_link+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-ldld $LIBS" ++if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char dld_link (); ++int ++main () ++{ ++return dld_link (); ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_lib_dld_dld_link=yes ++else ++ ac_cv_lib_dld_dld_link=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 ++$as_echo "$ac_cv_lib_dld_dld_link" >&6; } ++if test "x$ac_cv_lib_dld_dld_link" = xyes; then : ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ;; ++ esac ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ else ++ enable_dlopen=no ++ fi ++ ++ case $lt_cv_dlopen in ++ dlopen) ++ save_CPPFLAGS="$CPPFLAGS" ++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ ++ save_LDFLAGS="$LDFLAGS" ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ ++ save_LIBS="$LIBS" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 ++$as_echo_n "checking whether a program can dlopen itself... " >&6; } ++if ${lt_cv_dlopen_self+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 12207 "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ return status; ++} ++_LT_EOF ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 ++$as_echo "$lt_cv_dlopen_self" >&6; } ++ ++ if test "x$lt_cv_dlopen_self" = xyes; then ++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 ++$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } ++if ${lt_cv_dlopen_self_static+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test "$cross_compiling" = yes; then : ++ lt_cv_dlopen_self_static=cross ++else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++#line 12313 "configure" ++#include "confdefs.h" ++ ++#if HAVE_DLFCN_H ++#include ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LT_DLGLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LT_DLGLOBAL DL_GLOBAL ++# else ++# define LT_DLGLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LT_DLLAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LT_DLLAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LT_DLLAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LT_DLLAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LT_DLLAZY_OR_NOW DL_NOW ++# else ++# define LT_DLLAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++/* When -fvisbility=hidden is used, assume the code has been annotated ++ correspondingly for the symbols needed. */ ++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) ++void fnord () __attribute__((visibility("default"))); ++#endif ++ ++void fnord () { int i=42; } ++int main () ++{ ++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); ++ int status = $lt_dlunknown; ++ ++ if (self) ++ { ++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; ++ else ++ { ++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; ++ else puts (dlerror ()); ++ } ++ /* dlclose (self); */ ++ } ++ else ++ puts (dlerror ()); ++ ++ return status; ++} ++_LT_EOF ++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 ++ (eval $ac_link) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ (./conftest; exit; ) >&5 2>/dev/null ++ lt_status=$? ++ case x$lt_status in ++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; ++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; ++ esac ++ else : ++ # compilation failed ++ lt_cv_dlopen_self_static=no ++ fi ++fi ++rm -fr conftest* ++ ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 ++$as_echo "$lt_cv_dlopen_self_static" >&6; } ++ fi ++ ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ;; ++ esac ++ ++ case $lt_cv_dlopen_self in ++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; ++ *) enable_dlopen_self=unknown ;; ++ esac ++ ++ case $lt_cv_dlopen_self_static in ++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; ++ *) enable_dlopen_self_static=unknown ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++striplib= ++old_striplib= ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 ++$as_echo_n "checking whether stripping libraries is possible... " >&6; } ++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then ++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" ++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++else ++# FIXME - insert some real tests, host_os isn't really good enough ++ case $host_os in ++ darwin*) ++ if test -n "$STRIP" ; then ++ striplib="$STRIP -x" ++ old_striplib="$STRIP -S" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ fi ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ;; ++ esac ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ # Report which library types will actually be built ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 ++$as_echo_n "checking if libtool supports shared libraries... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 ++$as_echo "$can_build_shared" >&6; } ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 ++$as_echo_n "checking whether to build shared libraries... " >&6; } ++ test "$can_build_shared" = "no" && enable_shared=no ++ ++ # On AIX, shared libraries and static libraries use the same namespace, and ++ # are all built from PIC. ++ case $host_os in ++ aix3*) ++ test "$enable_shared" = yes && enable_static=no ++ if test -n "$RANLIB"; then ++ archive_cmds="$archive_cmds~\$RANLIB \$lib" ++ postinstall_cmds='$RANLIB $lib' ++ fi ++ ;; ++ ++ aix[4-9]*) ++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then ++ test "$enable_shared" = yes && enable_static=no ++ fi ++ ;; ++ esac ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 ++$as_echo "$enable_shared" >&6; } ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 ++$as_echo_n "checking whether to build static libraries... " >&6; } ++ # Make sure either enable_shared or enable_static is yes. ++ test "$enable_shared" = yes || enable_static=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 ++$as_echo "$enable_static" >&6; } ++ ++ ++ ++ ++fi ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++CC="$lt_save_CC" ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ac_config_commands="$ac_config_commands libtool" ++ ++ ++ ++ ++# Only expand once: ++ ++ ++ ++ if test x$enable_darwin_at_rpath = xyes; then ++ ENABLE_DARWIN_AT_RPATH_TRUE= ++ ENABLE_DARWIN_AT_RPATH_FALSE='#' ++else ++ ENABLE_DARWIN_AT_RPATH_TRUE='#' ++ ENABLE_DARWIN_AT_RPATH_FALSE= ++fi ++ ++ ++ ++ ++ ++# Do compilation tests using the C compiler and preprocessor. ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++# Allow the user to set CC_FOR_BUILD in the environment. ++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} ++ ++ ++# Search for needed functions in host libraries. ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing malloc" >&5 ++$as_echo_n "checking for library containing malloc... " >&6; } ++if ${ac_cv_search_malloc+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char malloc (); ++int ++main () ++{ ++return malloc (); ++ ; ++ return 0; ++} ++_ACEOF ++for ac_lib in '' c; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_search_malloc=$ac_res ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if ${ac_cv_search_malloc+:} false; then : ++ break ++fi ++done ++if ${ac_cv_search_malloc+:} false; then : ++ ++else ++ ac_cv_search_malloc=no ++fi ++rm conftest.$ac_ext ++LIBS=$ac_func_search_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_malloc" >&5 ++$as_echo "$ac_cv_search_malloc" >&6; } ++ac_res=$ac_cv_search_malloc ++if test "$ac_res" != no; then : ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++ ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cosf" >&5 ++$as_echo_n "checking for library containing cosf... " >&6; } ++if ${ac_cv_search_cosf+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ac_func_search_save_LIBS=$LIBS ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++char cosf (); ++int ++main () ++{ ++return cosf (); ++ ; ++ return 0; ++} ++_ACEOF ++for ac_lib in '' m; do ++ if test -z "$ac_lib"; then ++ ac_res="none required" ++ else ++ ac_res=-l$ac_lib ++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" ++ fi ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++if ac_fn_c_try_link "$LINENO"; then : ++ ac_cv_search_cosf=$ac_res ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext ++ if ${ac_cv_search_cosf+:} false; then : ++ break ++fi ++done ++if ${ac_cv_search_cosf+:} false; then : ++ ++else ++ ac_cv_search_cosf=no ++fi ++rm conftest.$ac_ext ++LIBS=$ac_func_search_save_LIBS ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cosf" >&5 ++$as_echo "$ac_cv_search_cosf" >&6; } ++ac_res=$ac_cv_search_cosf ++if test "$ac_res" != no; then : ++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" ++ ++fi ++ ++ ++# Determine what GCC version number to use in filesystem paths. ++ ++ get_gcc_base_ver="cat" ++ ++# Check whether --with-gcc-major-version-only was given. ++if test "${with_gcc_major_version_only+set}" = set; then : ++ withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then ++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" ++ fi ++ ++fi ++ ++ ++ ++ ++# Add dependencies for libga68.spec file ++SPEC_LIBGA68_DEPS="$LIBS" ++ ++ ++# libga68 soname version ++libga68_VERSION=1:0:0 ++ ++ ++# The Boehm GC ++ ++# Check whether --enable-algol68-gc was given. ++if test "${enable_algol68_gc+set}" = set; then : ++ enableval=$enable_algol68_gc; ++else ++ enable_algol68_gc=no ++fi ++ ++ ++# Check whether --with-target-bdw-gc was given. ++if test "${with_target_bdw_gc+set}" = set; then : ++ withval=$with_target_bdw_gc; ++fi ++ ++ ++# Check whether --with-target-bdw-gc-include was given. ++if test "${with_target_bdw_gc_include+set}" = set; then : ++ withval=$with_target_bdw_gc_include; ++fi ++ ++ ++# Check whether --with-target-bdw-gc-lib was given. ++if test "${with_target_bdw_gc_lib+set}" = set; then : ++ withval=$with_target_bdw_gc_lib; ++fi ++ ++ ++bdw_lib_dir= ++case "$enable_algol68_gc" in ++no) ++ use_bdw_gc=no ++ ;; ++*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 ++$as_echo_n "checking for bdw garbage collector... " >&6; } ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ BDW_GC_CFLAGS= ++ BDW_GC_LIBS="-lgc" ++ else ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 ++$as_echo "using paths configured with --with-target-bdw-gc options" >&6; } ++ fi ++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` ++ bdw_val= ++ if test "x$with_target_bdw_gc" != x; then ++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc" "$LINENO" 5 ++ fi ++ bdw_inc_dir="$bdw_val/include" ++ bdw_lib_dir="$bdw_val/lib" ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_include" != x; then ++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i; fallback=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then ++ bdw_inc_dir="$fallback" ++ elif test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 ++ else ++ bdw_inc_dir="$bdw_val" ++ fi ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_lib" != x; then ++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 ++ fi ++ bdw_lib_dir="$bdw_val" ++ fi ++ if test "x$bdw_inc_dir" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 ++ fi ++ if test "x$bdw_lib_dir" = x; then ++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 ++ fi ++ BDW_GC_CFLAGS="-I$bdw_inc_dir" ++ if test -f $bdw_lib_dir/libgc.la; then ++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" ++ else ++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 ++$as_echo "found" >&6; } ++ fi ++ ++ case "$BDW_GC_LIBS" in ++ *libgc.la) ++ use_bdw_gc=yes ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system boehm-gc" >&5 ++$as_echo_n "checking for system boehm-gc... " >&6; } ++ save_CFLAGS=$CFLAGS ++ save_LIBS=$LIBS ++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" ++ LIBS="$LIBS $BDW_GC_LIBS" ++ if test x$gcc_no_link = xyes; then ++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 ++fi ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++#include ++int ++main () ++{ ++GC_init() ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_link "$LINENO"; then : ++ ++ if test "$cross_compiling" = yes; then : ++ system_bdw_gc_found=no ++ ++else ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++ #include ++ int main() { ++ GC_init(); ++ return 0; ++ } ++ ++_ACEOF ++if ac_fn_c_try_run "$LINENO"; then : ++ system_bdw_gc_found=yes ++else ++ system_bdw_gc_found=no ++fi ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ ++ conftest.$ac_objext conftest.beam conftest.$ac_ext ++fi ++ ++ ++else ++ system_bdw_gc_found=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ CFLAGS=$save_CFLAGS ++ LIBS=$save_LIBS ++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: system bdw-gc not found, building libga68 with no GC support" >&5 ++$as_echo "$as_me: WARNING: system bdw-gc not found, building libga68 with no GC support" >&2;} ++ use_bdw_gc=no ++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then ++ as_fn_error $? "system bdw-gc required but not found" "$LINENO" 5 ++ else ++ use_bdw_gc=yes ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 ++$as_echo "found" >&6; } ++ fi ++ esac ++esac ++ ++if test "$use_bdw_gc" = no; then ++ LIBGA68_GCFLAGS='' ++ LIBGA68_BOEHM_GC_INCLUDES='' ++ LIBGA68_BOEHM_GC_LIBS='' ++else ++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' ++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS ++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS ++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" ++fi ++ ++extra_darwin_ldflags_libga68= ++case $host in ++ *-*-darwin*) ++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main ++ if test -f $bdw_lib_dir/libgc.a; then ++ # Darwin wants to link this statically into the library ++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" ++ # No spec entry. ++ BDW_GC_LIBS= ++ fi ++ ;; ++ *) ;; ++esac ++ ++ ++# Subst some variables used in Makefile.am ++ ++ ++ ++ ++# Output files and be done. ++ ++ac_config_files="$ac_config_files Makefile" ++ ++ac_config_files="$ac_config_files libga68.spec" ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: libga68 has been configured." >&5 ++$as_echo "$as_me: libga68 has been configured." >&6;} ++cat >confcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 ++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( ++ *) { eval $ac_var=; unset $ac_var;} ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes: double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \. ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ if test "x$cache_file" != "x/dev/null"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 ++$as_echo "$as_me: updating cache $cache_file" >&6;} ++ if test ! -f "$cache_file" || test -h "$cache_file"; then ++ cat confcache >"$cache_file" ++ else ++ case $cache_file in #( ++ */* | ?:*) ++ mv -f confcache "$cache_file"$$ && ++ mv -f "$cache_file"$$ "$cache_file" ;; #( ++ *) ++ mv -f confcache "$cache_file" ;; ++ esac ++ fi ++ fi ++ else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 ++$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi ++fi ++rm -f confcache ++ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++ ++DEFS=-DHAVE_CONFIG_H ++ ++ac_libobjs= ++ac_ltlibobjs= ++U= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 ++$as_echo_n "checking that generated files are newer than configure... " >&6; } ++ if test -n "$am_sleep_pid"; then ++ # Hide warnings about reused PIDs. ++ wait $am_sleep_pid 2>/dev/null ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 ++$as_echo "done" >&6; } ++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then ++ as_fn_error $? "conditional \"AMDEP\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then ++ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++ if test -n "$EXEEXT"; then ++ am__EXEEXT_TRUE= ++ am__EXEEXT_FALSE='#' ++else ++ am__EXEEXT_TRUE='#' ++ am__EXEEXT_FALSE= ++fi ++ ++if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then ++ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then ++ as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH_FALSE}"; then ++ as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi ++ ++: "${CONFIG_STATUS=./config.status}" ++ac_write_fail=0 ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 ++$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} ++as_write_fail=0 ++cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++ ++SHELL=\${CONFIG_SHELL-$SHELL} ++export SHELL ++_ASEOF ++cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ++## -------------------- ## ++## M4sh Initialization. ## ++## -------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : ++ emulate sh ++ NULLCMD=: ++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in #( ++ *posix*) : ++ set -o posix ;; #( ++ *) : ++ ;; ++esac ++fi ++ ++ ++as_nl=' ++' ++export as_nl ++# Printing a long string crashes Solaris 7 /usr/bin/printf. ++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo ++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo ++# Prefer a ksh shell builtin over an external printf program on Solaris, ++# but without wasting forks for bash or zsh. ++if test -z "$BASH_VERSION$ZSH_VERSION" \ ++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='print -r --' ++ as_echo_n='print -rn --' ++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then ++ as_echo='printf %s\n' ++ as_echo_n='printf %s' ++else ++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then ++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' ++ as_echo_n='/usr/ucb/echo -n' ++ else ++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' ++ as_echo_n_body='eval ++ arg=$1; ++ case $arg in #( ++ *"$as_nl"*) ++ expr "X$arg" : "X\\(.*\\)$as_nl"; ++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; ++ esac; ++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ++ ' ++ export as_echo_n_body ++ as_echo_n='sh -c $as_echo_n_body as_echo' ++ fi ++ export as_echo_body ++ as_echo='sh -c $as_echo_body as_echo' ++fi ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ PATH_SEPARATOR=: ++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { ++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || ++ PATH_SEPARATOR=';' ++ } ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++as_myself= ++case $0 in #(( ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++ done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ exit 1 ++fi ++ ++# Unset variables that we do not need and which cause bugs (e.g. in ++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" ++# suppresses any "Segmentation fault" message there. '((' could ++# trigger a bug in pdksh 5.2.14. ++for as_var in BASH_ENV ENV MAIL MAILPATH ++do eval test x\${$as_var+set} = xset \ ++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++LC_ALL=C ++export LC_ALL ++LANGUAGE=C ++export LANGUAGE ++ ++# CDPATH. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++ ++# as_fn_error STATUS ERROR [LINENO LOG_FD] ++# ---------------------------------------- ++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are ++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the ++# script with STATUS, using 1 if that was 0. ++as_fn_error () ++{ ++ as_status=$1; test $as_status -eq 0 && as_status=1 ++ if test "$4"; then ++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack ++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 ++ fi ++ $as_echo "$as_me: error: $2" >&2 ++ as_fn_exit $as_status ++} # as_fn_error ++ ++ ++# as_fn_set_status STATUS ++# ----------------------- ++# Set $? to STATUS, without forking. ++as_fn_set_status () ++{ ++ return $1 ++} # as_fn_set_status ++ ++# as_fn_exit STATUS ++# ----------------- ++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. ++as_fn_exit () ++{ ++ set +e ++ as_fn_set_status $1 ++ exit $1 ++} # as_fn_exit ++ ++# as_fn_unset VAR ++# --------------- ++# Portably unset VAR. ++as_fn_unset () ++{ ++ { eval $1=; unset $1;} ++} ++as_unset=as_fn_unset ++# as_fn_append VAR VALUE ++# ---------------------- ++# Append the text in VALUE to the end of the definition contained in VAR. Take ++# advantage of any shell optimizations that allow amortized linear growth over ++# repeated appends, instead of the typical quadratic growth present in naive ++# implementations. ++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : ++ eval 'as_fn_append () ++ { ++ eval $1+=\$2 ++ }' ++else ++ as_fn_append () ++ { ++ eval $1=\$$1\$2 ++ } ++fi # as_fn_append ++ ++# as_fn_arith ARG... ++# ------------------ ++# Perform arithmetic evaluation on the ARGs, and store the result in the ++# global $as_val. Take advantage of shells that can avoid forks. The arguments ++# must be portable across $(()) and expr. ++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : ++ eval 'as_fn_arith () ++ { ++ as_val=$(( $* )) ++ }' ++else ++ as_fn_arith () ++ { ++ as_val=`expr "$@" || test $? -eq 1` ++ } ++fi # as_fn_arith ++ ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in #((((( ++-n*) ++ case `echo 'xy\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ xy) ECHO_C='\c';; ++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ++ ECHO_T=' ';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir 2>/dev/null ++fi ++if (echo >conf$$.file) 2>/dev/null; then ++ if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -pR'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -pR' ++ elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++ else ++ as_ln_s='cp -pR' ++ fi ++else ++ as_ln_s='cp -pR' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++ ++# as_fn_mkdir_p ++# ------------- ++# Create "$as_dir" as a directory, including parents if necessary. ++as_fn_mkdir_p () ++{ ++ ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || eval $as_mkdir_p || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" ++ ++ ++} # as_fn_mkdir_p ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p='mkdir -p "$as_dir"' ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++ ++# as_fn_executable_p FILE ++# ----------------------- ++# Test if FILE is an executable regular file. ++as_fn_executable_p () ++{ ++ test -f "$1" && test -x "$1" ++} # as_fn_executable_p ++as_test_x='test -x' ++as_executable_p=as_fn_executable_p ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++## ----------------------------------- ## ++## Main body of $CONFIG_STATUS script. ## ++## ----------------------------------- ## ++_ASEOF ++test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# Save the log message, to keep $0 and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by package-unused $as_me version-unused, which was ++generated by GNU Autoconf 2.69. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++_ACEOF ++ ++case $ac_config_files in *" ++"*) set x $ac_config_files; shift; ac_config_files=$*;; ++esac ++ ++case $ac_config_headers in *" ++"*) set x $ac_config_headers; shift; ac_config_headers=$*;; ++esac ++ ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++# Files that config.status was made for. ++config_files="$ac_config_files" ++config_headers="$ac_config_headers" ++config_commands="$ac_config_commands" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ac_cs_usage="\ ++\`$as_me' instantiates files and other configuration actions ++from templates according to the current configuration. Unless the files ++and actions are specified as TAGs, all are instantiated by default. ++ ++Usage: $0 [OPTION]... [TAG]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ --config print configuration, then exit ++ -q, --quiet, --silent ++ do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ --header=FILE[:TEMPLATE] ++ instantiate the configuration header FILE ++ ++Configuration files: ++$config_files ++ ++Configuration headers: ++$config_headers ++ ++Configuration commands: ++$config_commands ++ ++Report bugs to the package provider." ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ++ac_cs_version="\\ ++package-unused config.status version-unused ++configured by $0, generated by GNU Autoconf 2.69, ++ with options \\"\$ac_cs_config\\" ++ ++Copyright (C) 2012 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++MKDIR_P='$MKDIR_P' ++AWK='$AWK' ++test -n "\$AWK" || AWK=awk ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# The default lists apply if the user does not specify any file. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=?*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ --*=) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg= ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ $as_echo "$ac_cs_version"; exit ;; ++ --config | --confi | --conf | --con | --co | --c ) ++ $as_echo "$ac_cs_config"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ '') as_fn_error $? "missing file argument" ;; ++ esac ++ as_fn_append CONFIG_FILES " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --header | --heade | --head | --hea ) ++ $ac_shift ++ case $ac_optarg in ++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ as_fn_append CONFIG_HEADERS " '$ac_optarg'" ++ ac_need_defaults=false;; ++ --he | --h) ++ # Conflict between --help and --header ++ as_fn_error $? "ambiguous option: \`$1' ++Try \`$0 --help' for more information.";; ++ --help | --hel | -h ) ++ $as_echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) as_fn_error $? "unrecognized option: \`$1' ++Try \`$0 --help' for more information." ;; ++ ++ *) as_fn_append ac_config_targets " $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++if \$ac_cs_recheck; then ++ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ shift ++ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 ++ CONFIG_SHELL='$SHELL' ++ export CONFIG_SHELL ++ exec "\$@" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ $as_echo "$ac_log" ++} >&5 ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++# ++# INIT-COMMANDS ++# ++ ++srcdir="$srcdir" ++host="$host" ++target="$target" ++with_multisubdir="$with_multisubdir" ++with_multisrctop="$with_multisrctop" ++with_target_subdir="$with_target_subdir" ++ac_configure_args="${multilib_arg} ${ac_configure_args}" ++multi_basedir="$multi_basedir" ++CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} ++CC="$CC" ++CXX="$CXX" ++GFORTRAN="$GFORTRAN" ++GDC="$GDC" ++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" ++ ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH ++ ++sed_quote_subst='$sed_quote_subst' ++double_quote_subst='$double_quote_subst' ++delay_variable_subst='$delay_variable_subst' ++macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' ++macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' ++enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' ++enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' ++pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' ++enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' ++SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ++ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' ++host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' ++host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' ++host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' ++build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' ++build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' ++build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' ++SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' ++Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' ++GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' ++EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' ++FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' ++LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' ++NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' ++LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' ++max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ++ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' ++exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' ++lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' ++lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' ++lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' ++reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' ++reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' ++OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' ++deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' ++file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' ++AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' ++AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' ++STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' ++RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' ++old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' ++lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' ++CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' ++CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' ++compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' ++GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' ++objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' ++MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' ++lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' ++lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' ++need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' ++DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' ++NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' ++LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' ++OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' ++OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' ++libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' ++shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' ++extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' ++enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' ++export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' ++whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' ++compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' ++old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' ++old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' ++archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' ++archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' ++module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' ++with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' ++allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' ++no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' ++hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' ++hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' ++hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' ++hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' ++hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' ++hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' ++inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' ++link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' ++fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' ++always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' ++export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' ++exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' ++include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' ++prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' ++file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' ++variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' ++need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' ++need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' ++version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' ++runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' ++shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' ++libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' ++library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' ++soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' ++install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' ++postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' ++postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' ++finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' ++finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' ++hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' ++sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' ++sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' ++hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' ++enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' ++enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' ++old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' ++striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' ++ ++LTCC='$LTCC' ++LTCFLAGS='$LTCFLAGS' ++compiler='$compiler_DEFAULT' ++ ++# A function that is used when there is no print builtin or printf. ++func_fallback_echo () ++{ ++ eval 'cat <<_LTECHO_EOF ++\$1 ++_LTECHO_EOF' ++} ++ ++# Quote evaled strings. ++for var in SHELL \ ++ECHO \ ++SED \ ++GREP \ ++EGREP \ ++FGREP \ ++LD \ ++NM \ ++LN_S \ ++lt_SP2NL \ ++lt_NL2SP \ ++reload_flag \ ++OBJDUMP \ ++deplibs_check_method \ ++file_magic_cmd \ ++AR \ ++AR_FLAGS \ ++STRIP \ ++RANLIB \ ++CC \ ++CFLAGS \ ++compiler \ ++lt_cv_sys_global_symbol_pipe \ ++lt_cv_sys_global_symbol_to_cdecl \ ++lt_cv_sys_global_symbol_to_c_name_address \ ++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ ++lt_prog_compiler_no_builtin_flag \ ++lt_prog_compiler_wl \ ++lt_prog_compiler_pic \ ++lt_prog_compiler_static \ ++lt_cv_prog_compiler_c_o \ ++need_locks \ ++DSYMUTIL \ ++NMEDIT \ ++LIPO \ ++OTOOL \ ++OTOOL64 \ ++shrext_cmds \ ++export_dynamic_flag_spec \ ++whole_archive_flag_spec \ ++compiler_needs_object \ ++with_gnu_ld \ ++allow_undefined_flag \ ++no_undefined_flag \ ++hardcode_libdir_flag_spec \ ++hardcode_libdir_flag_spec_ld \ ++hardcode_libdir_separator \ ++fix_srcfile_path \ ++exclude_expsyms \ ++include_expsyms \ ++file_list_spec \ ++variables_saved_for_relink \ ++libname_spec \ ++library_names_spec \ ++soname_spec \ ++install_override_mode \ ++finish_eval \ ++old_striplib \ ++striplib; do ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++# Double-quote double-evaled strings. ++for var in reload_cmds \ ++old_postinstall_cmds \ ++old_postuninstall_cmds \ ++old_archive_cmds \ ++extract_expsyms_cmds \ ++old_archive_from_new_cmds \ ++old_archive_from_expsyms_cmds \ ++archive_cmds \ ++archive_expsym_cmds \ ++module_cmds \ ++module_expsym_cmds \ ++export_symbols_cmds \ ++prelink_cmds \ ++postinstall_cmds \ ++postuninstall_cmds \ ++finish_cmds \ ++sys_lib_search_path_spec \ ++sys_lib_dlsearch_path_spec; do ++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in ++ *[\\\\\\\`\\"\\\$]*) ++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ++ ;; ++ *) ++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ++ ;; ++ esac ++done ++ ++ac_aux_dir='$ac_aux_dir' ++xsi_shell='$xsi_shell' ++lt_shell_append='$lt_shell_append' ++ ++# See if we are running on zsh, and set the options which allow our ++# commands through without removal of \ escapes INIT. ++if test -n "\${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++fi ++ ++ ++ PACKAGE='$PACKAGE' ++ VERSION='$VERSION' ++ TIMESTAMP='$TIMESTAMP' ++ RM='$RM' ++ ofile='$ofile' ++ ++ ++ ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ++ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; ++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ "libga68.spec") CONFIG_FILES="$CONFIG_FILES libga68.spec" ;; ++ ++ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ac_tmp= ++ trap 'exit_status=$? ++ : "${ac_tmp:=$tmp}" ++ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ++' 0 ++ trap 'as_fn_exit 1' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ++ac_tmp=$tmp ++ ++# Set up the scripts for CONFIG_FILES section. ++# No need to generate them if there are no CONFIG_FILES. ++# This happens for instance with `./config.status config.h'. ++if test -n "$CONFIG_FILES"; then ++ ++ ++ac_cr=`echo X | tr X '\015'` ++# On cygwin, bash can eat \r inside `` if the user requested igncr. ++# But we know of no other shell where ac_cr would be empty at this ++# point, so we can use a bashism as a fallback. ++if test "x$ac_cr" = x; then ++ eval ac_cr=\$\'\\r\' ++fi ++ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` ++if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ++ ac_cs_awk_cr='\\r' ++else ++ ac_cs_awk_cr=$ac_cr ++fi ++ ++echo 'BEGIN {' >"$ac_tmp/subs1.awk" && ++_ACEOF ++ ++ ++{ ++ echo "cat >conf$$subs.awk <<_ACEOF" && ++ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && ++ echo "_ACEOF" ++} >conf$$subs.sh || ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ . ./conf$$subs.sh || ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ ++ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` ++ if test $ac_delim_n = $ac_delim_num; then ++ break ++ elif $ac_last_try; then ++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++rm -f conf$$subs.sh ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && ++_ACEOF ++sed -n ' ++h ++s/^/S["/; s/!.*/"]=/ ++p ++g ++s/^[^!]*!// ++:repl ++t repl ++s/'"$ac_delim"'$// ++t delim ++:nl ++h ++s/\(.\{148\}\)..*/\1/ ++t more1 ++s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ ++p ++n ++b repl ++:more1 ++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ ++p ++g ++s/.\{148\}// ++t nl ++:delim ++h ++s/\(.\{148\}\)..*/\1/ ++t more2 ++s/["\\]/\\&/g; s/^/"/; s/$/"/ ++p ++b ++:more2 ++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ ++p ++g ++s/.\{148\}// ++t delim ++' >$CONFIG_STATUS || ac_write_fail=1 ++rm -f conf$$subs.awk ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++_ACAWK ++cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && ++ for (key in S) S_is_set[key] = 1 ++ FS = "" ++ ++} ++{ ++ line = $ 0 ++ nfields = split(line, field, "@") ++ substed = 0 ++ len = length(field[1]) ++ for (i = 2; i < nfields; i++) { ++ key = field[i] ++ keylen = length(key) ++ if (S_is_set[key]) { ++ value = S[key] ++ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) ++ len += length(value) + length(field[++i]) ++ substed = 1 ++ } else ++ len += 1 + keylen ++ } ++ ++ print line ++} ++ ++_ACAWK ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then ++ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" ++else ++ cat ++fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ ++ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 ++_ACEOF ++ ++# VPATH may cause trouble with some makes, so we remove sole $(srcdir), ++# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ ++h ++s/// ++s/^/:/ ++s/[ ]*$/:/ ++s/:\$(srcdir):/:/g ++s/:\${srcdir}:/:/g ++s/:@srcdir@:/:/g ++s/^:*// ++s/:*$// ++x ++s/\(=[ ]*\).*/\1/ ++G ++s/\n// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++fi # test -n "$CONFIG_FILES" ++ ++# Set up the scripts for CONFIG_HEADERS section. ++# No need to generate them if there are no CONFIG_HEADERS. ++# This happens for instance with `./config.status Makefile'. ++if test -n "$CONFIG_HEADERS"; then ++cat >"$ac_tmp/defines.awk" <<\_ACAWK || ++BEGIN { ++_ACEOF ++ ++# Transform confdefs.h into an awk script `defines.awk', embedded as ++# here-document in config.status, that substitutes the proper values into ++# config.h.in to produce config.h. ++ ++# Create a delimiter string that does not exist in confdefs.h, to ease ++# handling of long lines. ++ac_delim='%!_!# ' ++for ac_last_try in false false :; do ++ ac_tt=`sed -n "/$ac_delim/p" confdefs.h` ++ if test -z "$ac_tt"; then ++ break ++ elif $ac_last_try; then ++ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++# For the awk script, D is an array of macro values keyed by name, ++# likewise P contains macro parameters if any. Preserve backslash ++# newline sequences. ++ ++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* ++sed -n ' ++s/.\{148\}/&'"$ac_delim"'/g ++t rset ++:rset ++s/^[ ]*#[ ]*define[ ][ ]*/ / ++t def ++d ++:def ++s/\\$// ++t bsnl ++s/["\\]/\\&/g ++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ ++D["\1"]=" \3"/p ++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p ++d ++:bsnl ++s/["\\]/\\&/g ++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ ++D["\1"]=" \3\\\\\\n"\\/p ++t cont ++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p ++t cont ++d ++:cont ++n ++s/.\{148\}/&'"$ac_delim"'/g ++t clear ++:clear ++s/\\$// ++t bsnlc ++s/["\\]/\\&/g; s/^/"/; s/$/"/p ++d ++:bsnlc ++s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p ++b cont ++' >$CONFIG_STATUS || ac_write_fail=1 ++ ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ for (key in D) D_is_set[key] = 1 ++ FS = "" ++} ++/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { ++ line = \$ 0 ++ split(line, arg, " ") ++ if (arg[1] == "#") { ++ defundef = arg[2] ++ mac1 = arg[3] ++ } else { ++ defundef = substr(arg[1], 2) ++ mac1 = arg[2] ++ } ++ split(mac1, mac2, "(") #) ++ macro = mac2[1] ++ prefix = substr(line, 1, index(line, defundef) - 1) ++ if (D_is_set[macro]) { ++ # Preserve the white space surrounding the "#". ++ print prefix "define", macro P[macro] D[macro] ++ next ++ } else { ++ # Replace #undef with comments. This is necessary, for example, ++ # in the case of _POSIX_SOURCE, which is predefined and required ++ # on some systems where configure will not decide to define it. ++ if (defundef == "undef") { ++ print "/*", prefix defundef, macro, "*/" ++ next ++ } ++ } ++} ++{ print } ++_ACAWK ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 ++fi # test -n "$CONFIG_HEADERS" ++ ++ ++eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" ++shift ++for ac_tag ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$ac_tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; ++ esac ++ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ++ as_fn_append ac_file_inputs " '$ac_f'" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input='Generated from '` ++ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' ++ `' by configure.' ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 ++$as_echo "$as_me: creating $ac_file" >&6;} ++ fi ++ # Neutralize special characters interpreted by sed in replacement strings. ++ case $configure_input in #( ++ *\&* | *\|* | *\\* ) ++ ac_sed_conf_input=`$as_echo "$configure_input" | ++ sed 's/[\\\\&|]/\\\\&/g'`;; #( ++ *) ac_sed_conf_input=$configure_input;; ++ esac ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$ac_tmp/stdin" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir="$ac_dir"; as_fn_mkdir_p ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++ ac_MKDIR_P=$MKDIR_P ++ case $MKDIR_P in ++ [\\/$]* | ?:[\\/]* ) ;; ++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; ++ esac ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ac_sed_dataroot=' ++/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p' ++case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ++ac_sed_extra="$ac_vpsub ++$extrasub ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s|@configure_input@|$ac_sed_conf_input|;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@top_build_prefix@&$ac_top_build_prefix&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++s&@MKDIR_P@&$ac_MKDIR_P&;t t ++$ac_datarootdir_hack ++" ++eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ ++ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ ++ "$ac_tmp/out"`; test -z "$ac_out"; } && ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&5 ++$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined" >&2;} ++ ++ rm -f "$ac_tmp/stdin" ++ case $ac_file in ++ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; ++ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; ++ esac \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ ;; ++ :H) ++ # ++ # CONFIG_HEADER ++ # ++ if test x"$ac_file" != x-; then ++ { ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" ++ } >"$ac_tmp/config.h" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 ++$as_echo "$as_me: $ac_file is unchanged" >&6;} ++ else ++ rm -f "$ac_file" ++ mv "$ac_tmp/config.h" "$ac_file" \ ++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ++ fi ++ else ++ $as_echo "/* $configure_input */" \ ++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ ++ || as_fn_error $? "could not create -" "$LINENO" 5 ++ fi ++# Compute "$ac_file"'s index in $config_headers. ++_am_arg="$ac_file" ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || ++$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$_am_arg" : 'X\(//\)[^/]' \| \ ++ X"$_am_arg" : 'X\(//\)$' \| \ ++ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$_am_arg" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'`/stamp-h$_am_stamp_count ++ ;; ++ ++ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 ++$as_echo "$as_me: executing $ac_file commands" >&6;} ++ ;; ++ esac ++ ++ ++ case $ac_file$ac_mode in ++ "default-1":C) ++# Only add multilib support code if we just rebuilt the top-level ++# Makefile. ++case " $CONFIG_FILES " in ++ *" Makefile "*) ++ ac_file=Makefile . ${multi_basedir}/config-ml.in ++ ;; ++esac ;; ++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || { ++ # Older Autoconf quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named 'Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`$as_dirname -- "$mf" || ++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$mf" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running 'make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "$am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`$as_dirname -- "$file" || ++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| . 2>/dev/null || ++$as_echo X"$file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ as_dir=$dirpart/$fdir; as_fn_mkdir_p ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++ ;; ++ "libtool":C) ++ ++ # See if we are running on zsh, and set the options which allow our ++ # commands through without removal of \ escapes. ++ if test -n "${ZSH_VERSION+set}" ; then ++ setopt NO_GLOB_SUBST ++ fi ++ ++ cfgfile="${ofile}T" ++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 ++ $RM "$cfgfile" ++ ++ cat <<_LT_EOF >> "$cfgfile" ++#! $SHELL ++ ++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. ++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION ++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# NOTE: Changes made to this file will be lost: look at ltmain.sh. ++# ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, ++# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ++# Written by Gordon Matzigkeit, 1996 ++# ++# This file is part of GNU Libtool. ++# ++# GNU Libtool is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of ++# the License, or (at your option) any later version. ++# ++# As a special exception to the GNU General Public License, ++# if you distribute this file as part of a program or library that ++# is built using GNU Libtool, you may include this file under the ++# same distribution terms that you use for the rest of that program. ++# ++# GNU Libtool is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GNU Libtool; see the file COPYING. If not, a copy ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or ++# obtained by writing to the Free Software Foundation, Inc., ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ ++ ++# The names of the tagged configurations supported by this script. ++available_tags="" ++ ++# ### BEGIN LIBTOOL CONFIG ++ ++# Which release of libtool.m4 was used? ++macro_version=$macro_version ++macro_revision=$macro_revision ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=$enable_shared ++ ++# Whether or not to build static libraries. ++build_old_libs=$enable_static ++ ++# What type of objects to build. ++pic_mode=$pic_mode ++ ++# Whether or not to optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# Shell to use when invoking shell scripts. ++SHELL=$lt_SHELL ++ ++# An echo program that protects backslashes. ++ECHO=$lt_ECHO ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++host_os=$host_os ++ ++# The build system. ++build_alias=$build_alias ++build=$build ++build_os=$build_os ++ ++# A sed program that does not truncate output. ++SED=$lt_SED ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="\$SED -e 1s/^X//" ++ ++# A grep program that handles long lines. ++GREP=$lt_GREP ++ ++# An ERE matcher. ++EGREP=$lt_EGREP ++ ++# A literal string matcher. ++FGREP=$lt_FGREP ++ ++# A BSD- or MS-compatible name lister. ++NM=$lt_NM ++ ++# Whether we need soft or hard links. ++LN_S=$lt_LN_S ++ ++# What is the maximum length of a command? ++max_cmd_len=$max_cmd_len ++ ++# Object file suffix (normally "o"). ++objext=$ac_objext ++ ++# Executable file suffix (normally ""). ++exeext=$exeext ++ ++# whether the shell understands "unset". ++lt_unset=$lt_unset ++ ++# turn spaces into newlines. ++SP2NL=$lt_lt_SP2NL ++ ++# turn newlines into spaces. ++NL2SP=$lt_lt_NL2SP ++ ++# An object symbol dumper. ++OBJDUMP=$lt_OBJDUMP ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$lt_deplibs_check_method ++ ++# Command to use when deplibs_check_method == "file_magic". ++file_magic_cmd=$lt_file_magic_cmd ++ ++# The archiver. ++AR=$lt_AR ++AR_FLAGS=$lt_AR_FLAGS ++ ++# A symbol stripping program. ++STRIP=$lt_STRIP ++ ++# Commands used to install an old-style archive. ++RANLIB=$lt_RANLIB ++old_postinstall_cmds=$lt_old_postinstall_cmds ++old_postuninstall_cmds=$lt_old_postuninstall_cmds ++ ++# Whether to use a lock for old archive extraction. ++lock_old_archive_extraction=$lock_old_archive_extraction ++ ++# A C compiler. ++LTCC=$lt_CC ++ ++# LTCC compiler flags. ++LTCFLAGS=$lt_CFLAGS ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration. ++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl ++ ++# Transform the output of nm in a C name address pair. ++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address ++ ++# Transform the output of nm in a C name address pair when lib prefix is needed. ++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix ++ ++# The name of the directory that contains temporary libtool files. ++objdir=$objdir ++ ++# Used to examine libraries when file_magic_cmd begins with "file". ++MAGIC_CMD=$MAGIC_CMD ++ ++# Must we lock files when doing compilation? ++need_locks=$lt_need_locks ++ ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. ++DSYMUTIL=$lt_DSYMUTIL ++ ++# Tool to change global to local symbols on Mac OS X. ++NMEDIT=$lt_NMEDIT ++ ++# Tool to manipulate fat objects and archives on Mac OS X. ++LIPO=$lt_LIPO ++ ++# ldd/readelf like tool for Mach-O binaries on Mac OS X. ++OTOOL=$lt_OTOOL ++ ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. ++OTOOL64=$lt_OTOOL64 ++ ++# Old archive suffix (normally "a"). ++libext=$libext ++ ++# Shared library suffix (normally ".so"). ++shrext_cmds=$lt_shrext_cmds ++ ++# The commands to extract the exported symbol list from a shared archive. ++extract_expsyms_cmds=$lt_extract_expsyms_cmds ++ ++# Variables whose values should be saved in libtool wrapper scripts and ++# restored at link time. ++variables_saved_for_relink=$lt_variables_saved_for_relink ++ ++# Do we need the "lib" prefix for modules? ++need_lib_prefix=$need_lib_prefix ++ ++# Do we need a version for libraries? ++need_version=$need_version ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# Shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# Format of library name prefix. ++libname_spec=$lt_libname_spec ++ ++# List of archive names. First name is the real one, the rest are links. ++# The last name is the one that the linker finds with -lNAME ++library_names_spec=$lt_library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$lt_soname_spec ++ ++# Permission mode override for installation of shared libraries. ++install_override_mode=$lt_install_override_mode ++ ++# Command to use after installation of a shared archive. ++postinstall_cmds=$lt_postinstall_cmds ++ ++# Command to use after uninstallation of a shared archive. ++postuninstall_cmds=$lt_postuninstall_cmds ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$lt_finish_cmds ++ ++# As "finish_cmds", except a single script fragment to be evaled but ++# not shown. ++finish_eval=$lt_finish_eval ++ ++# Whether we should hardcode library paths into libraries. ++hardcode_into_libs=$hardcode_into_libs ++ ++# Compile-time system search path for libraries. ++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec ++ ++# Run-time system search path for libraries. ++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec ++ ++# Whether dlopen is supported. ++dlopen_support=$enable_dlopen ++ ++# Whether dlopen of programs is supported. ++dlopen_self=$enable_dlopen_self ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=$enable_dlopen_self_static ++ ++# Commands to strip libraries. ++old_striplib=$lt_old_striplib ++striplib=$lt_striplib ++ ++ ++# The linker used to build libraries. ++LD=$lt_LD ++ ++# How to create reloadable object files. ++reload_flag=$lt_reload_flag ++reload_cmds=$lt_reload_cmds ++ ++# Commands used to build an old-style archive. ++old_archive_cmds=$lt_old_archive_cmds ++ ++# A language specific compiler. ++CC=$lt_compiler ++ ++# Is the compiler the GNU compiler? ++with_gcc=$GCC ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag ++ ++# How to pass a linker flag through the compiler. ++wl=$lt_lt_prog_compiler_wl ++ ++# Additional compiler flags for building library objects. ++pic_flag=$lt_lt_prog_compiler_pic ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=$lt_lt_prog_compiler_static ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$lt_lt_cv_prog_compiler_c_o ++ ++# Whether or not to add -lc for building shared libraries. ++build_libtool_need_lc=$archive_cmds_need_lc ++ ++# Whether or not to disallow shared libs when runtime libs are static. ++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$lt_whole_archive_flag_spec ++ ++# Whether the compiler copes with passing no objects directly. ++compiler_needs_object=$lt_compiler_needs_object ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds ++ ++# Create a temporary old-style archive to link instead of a shared archive. ++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds ++ ++# Commands used to build a shared archive. ++archive_cmds=$lt_archive_cmds ++archive_expsym_cmds=$lt_archive_expsym_cmds ++ ++# Commands used to build a loadable module if different from building ++# a shared archive. ++module_cmds=$lt_module_cmds ++module_expsym_cmds=$lt_module_expsym_cmds ++ ++# Whether we are building with GNU ld or not. ++with_gnu_ld=$lt_with_gnu_ld ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$lt_allow_undefined_flag ++ ++# Flag that enforces no undefined symbols. ++no_undefined_flag=$lt_no_undefined_flag ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist ++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec ++ ++# If ld is used when linking, flag to hardcode \$libdir into a binary ++# during linking. This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld ++ ++# Whether we need a single "-rpath" flag with a separated argument. ++hardcode_libdir_separator=$lt_hardcode_libdir_separator ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes ++# DIR into the resulting binary and the resulting library dependency is ++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the ++# library is relocated. ++hardcode_direct_absolute=$hardcode_direct_absolute ++ ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR ++# into the resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR ++# into the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Set to "yes" if building a shared library automatically hardcodes DIR ++# into the library and all subsequent libraries and executables linked ++# against it. ++hardcode_automatic=$hardcode_automatic ++ ++# Set to yes if linker adds runtime paths of dependent libraries ++# to runtime path list. ++inherit_rpath=$inherit_rpath ++ ++# Whether libtool must link a program against all its dependency libraries. ++link_all_deplibs=$link_all_deplibs ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path=$lt_fix_srcfile_path ++ ++# Set to "yes" if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$lt_export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$lt_exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$lt_include_expsyms ++ ++# Commands necessary for linking programs (against libraries) with templates. ++prelink_cmds=$lt_prelink_cmds ++ ++# Specify filename containing input files. ++file_list_spec=$lt_file_list_spec ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# ### END LIBTOOL CONFIG ++ ++_LT_EOF ++ ++ case $host_os in ++ aix3*) ++ cat <<\_LT_EOF >> "$cfgfile" ++# AIX sometimes has problems with the GCC collect2 program. For some ++# reason, if we set the COLLECT_NAMES environment variable, the problems ++# vanish in a puff of smoke. ++if test "X${COLLECT_NAMES+set}" != Xset; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++_LT_EOF ++ ;; ++ esac ++ ++ ++ltmain="$ac_aux_dir/ltmain.sh" ++ ++ ++ # We use sed instead of cat because bash on DJGPP gets confused if ++ # if finds mixed CR/LF and LF-only lines. Since sed operates in ++ # text mode, it properly converts lines to CR/LF. This bash problem ++ # is reportedly fixed, but why not run on old versions too? ++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ case $xsi_shell in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result="${1##*/}" ++} ++ ++# func_dirname_and_basename file append nondir_replacement ++# perform func_basename and func_dirname in a single function ++# call: ++# dirname: Compute the dirname of FILE. If nonempty, ++# add APPEND to the result, otherwise set result ++# to NONDIR_REPLACEMENT. ++# value returned in "$func_dirname_result" ++# basename: Compute filename of FILE. ++# value retuned in "$func_basename_result" ++# Implementation must be kept synchronized with func_dirname ++# and func_basename. For efficiency, we do not delegate to ++# those functions but instead duplicate the functionality here. ++func_dirname_and_basename () ++{ ++ case ${1} in ++ */*) func_dirname_result="${1%/*}${2}" ;; ++ * ) func_dirname_result="${3}" ;; ++ esac ++ func_basename_result="${1##*/}" ++} ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++func_stripname () ++{ ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are ++ # positional parameters, so assign one to ordinary parameter first. ++ func_stripname_result=${3} ++ func_stripname_result=${func_stripname_result#"${1}"} ++ func_stripname_result=${func_stripname_result%"${2}"} ++} ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=${1%%=*} ++ func_opt_split_arg=${1#*=} ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ case ${1} in ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; ++ *) func_lo2o_result=${1} ;; ++ esac ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=${1%.*}.lo ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=$(( $* )) ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=${#1} ++} ++ ++_LT_EOF ++ ;; ++ *) # Bourne compatible functions. ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_dirname file append nondir_replacement ++# Compute the dirname of FILE. If nonempty, add APPEND to the result, ++# otherwise set result to NONDIR_REPLACEMENT. ++func_dirname () ++{ ++ # Extract subdirectory from the argument. ++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` ++ if test "X$func_dirname_result" = "X${1}"; then ++ func_dirname_result="${3}" ++ else ++ func_dirname_result="$func_dirname_result${2}" ++ fi ++} ++ ++# func_basename file ++func_basename () ++{ ++ func_basename_result=`$ECHO "${1}" | $SED "$basename"` ++} ++ ++ ++# func_stripname prefix suffix name ++# strip PREFIX and SUFFIX off of NAME. ++# PREFIX and SUFFIX must not contain globbing or regex special ++# characters, hashes, percent signs, but SUFFIX may contain a leading ++# dot (in which case that matches only a dot). ++# func_strip_suffix prefix name ++func_stripname () ++{ ++ case ${2} in ++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; ++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; ++ esac ++} ++ ++# sed scripts: ++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' ++my_sed_long_arg='1s/^-[^=]*=//' ++ ++# func_opt_split ++func_opt_split () ++{ ++ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` ++ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` ++} ++ ++# func_lo2o object ++func_lo2o () ++{ ++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` ++} ++ ++# func_xform libobj-or-source ++func_xform () ++{ ++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` ++} ++ ++# func_arith arithmetic-term... ++func_arith () ++{ ++ func_arith_result=`expr "$@"` ++} ++ ++# func_len string ++# STRING may not start with a hyphen. ++func_len () ++{ ++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` ++} ++ ++_LT_EOF ++esac ++ ++case $lt_shell_append in ++ yes) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1+=\$2" ++} ++_LT_EOF ++ ;; ++ *) ++ cat << \_LT_EOF >> "$cfgfile" ++ ++# func_append var value ++# Append VALUE to the end of shell variable VAR. ++func_append () ++{ ++ eval "$1=\$$1\$2" ++} ++ ++_LT_EOF ++ ;; ++ esac ++ ++ ++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ ++ || (rm -f "$cfgfile"; exit 1) ++ ++ mv -f "$cfgfile" "$ofile" || ++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") ++ chmod +x "$ofile" ++ ++ ;; ++ ++ esac ++done # for ac_tag ++ ++ ++as_fn_exit 0 ++_ACEOF ++ac_clean_files=$ac_clean_files_save ++ ++test $ac_write_fail = 0 || ++ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 ++ ++ ++# configure is writing to config.log, and then calls config.status. ++# config.status does its own redirection, appending to config.log. ++# Unfortunately, on DOS this fails, as config.log is still kept open ++# by configure, so config.status won't be able to write to it; its ++# output is simply discarded. So we exec the FD to /dev/null, ++# effectively closing config.log, so it can be properly (re)opened and ++# appended to by config.status. When coming back to configure, we ++# need to make the FD available again. ++if test "$no_create" != yes; then ++ ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" ++ exec 5>/dev/null ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ++ exec 5>>config.log ++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which ++ # would make configure fail if this is the last instruction. ++ $ac_cs_success || as_fn_exit 1 ++fi ++if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 ++$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} ++fi ++ +--- /dev/null ++++ b/src/libga68/configure.ac +@@ -0,0 +1,371 @@ ++# Configure script for libga68. ++# Copyright (C) 2025 Jose E. Marchesi. ++ ++# GCC is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3, or (at your option) ++# any later version. ++ ++# GCC is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# Process this file with autoreconf to produce a configure script. ++ ++AC_INIT(package-unused, version-unused,,libga68) ++AC_CONFIG_SRCDIR(Makefile.am) ++AC_CONFIG_HEADER(config.h) ++ ++# Add --enable-multilib to configure, which defaults to enable. ++AM_ENABLE_MULTILIB(, ..) ++ ++if test "${multilib}" = "yes"; then ++ multilib_arg="--enable-multilib" ++else ++ multilib_arg= ++fi ++ ++# Cope with compilers, in subsequent tests, that at this stage may not ++# be able to build executables. ++GCC_NO_EXECUTABLES ++ ++# Enable extensions to C or POSIX on hosts that normally disable the ++# extensions. This should be called before any macros that run the C ++# compiler. ++AC_USE_SYSTEM_EXTENSIONS ++ ++# Determine the system type and set output variabls to the names of ++# the canonical system types. ++# ++# Do not delete or change the following two lines. For why, and for ++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the ++# recommended AC_CANONICAL_HOST, see ++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html ++AC_CANONICAL_SYSTEM ++target_alias=${target_alias-$host_alias} ++AC_SUBST(target_alias) ++AC_CANONICAL_HOST ++ ++# These macro are for supporting canadian crosses, in which build /= ++# host /= target. ++ACX_NONCANONICAL_HOST ++ACX_NONCANONICAL_TARGET ++GCC_TOPLEV_SUBDIRS ++ ++# Initialize Automake with proper options. ++AM_INIT_AUTOMAKE([1.15.1 no-define foreign no-dist -Wall -Wno-portability]) ++ ++# Tell Autoheader to include templates for PACKAGE and VERSION in ++# config.h.in. ++AH_TEMPLATE(PACKAGE, [Name of package]) ++AH_TEMPLATE(VERSION, [Version number of package]) ++ ++# Command-line options. ++ ++# Enable large-file support. ++AC_SYS_LARGEFILE ++ ++AC_ARG_WITH(cross-host, ++[ --with-cross-host=HOST Configuring with a cross compiler]) ++ ++AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) ++AC_ARG_ENABLE(version-specific-runtime-libs, ++[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], ++[case "$enableval" in ++ yes) version_specific_libs=yes ;; ++ no) version_specific_libs=no ;; ++ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; ++ esac], ++[version_specific_libs=no]) ++AC_MSG_RESULT($version_specific_libs) ++ ++AC_ARG_WITH(slibdir, ++[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], ++slibdir="$with_slibdir", ++if test "${version_specific_libs}" = yes; then ++ slibdir='$(libsubdir)' ++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then ++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++else ++ slibdir='$(libdir)' ++fi) ++AC_SUBST(slibdir) ++ ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++toolexecdir=no ++toolexeclibdir=no ++case ${version_specific_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++ ++# Add support for --enable-maintainer-mode={yes,no} to configure. ++AM_MAINTAINER_MODE ++ ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++AM_PROG_AS ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++AC_SUBST(CFLAGS) ++ ++# In order to override CFLAGS_FOR_TARGET, all of our special flags go ++# in XCFLAGS. But we need them in CFLAGS during configury. So put them ++# in both places for now and restore CFLAGS at the end of config. ++save_CFLAGS="$CFLAGS" ++ ++# Find other programs we need. ++AC_CHECK_TOOL(AR, ar) ++AC_CHECK_TOOL(NM, nm) ++AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) ++AC_PROG_MAKE_SET ++AC_PROG_INSTALL ++ ++# Initialize libtool. ++LT_INIT ++ ++AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) ++ ++AC_SUBST(enable_shared) ++AC_SUBST(enable_static) ++ ++# Do compilation tests using the C compiler and preprocessor. ++AC_LANG_C([C]) ++ ++# Allow the user to set CC_FOR_BUILD in the environment. ++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} ++AC_SUBST(CC_FOR_BUILD) ++ ++# Search for needed functions in host libraries. ++AC_SEARCH_LIBS([malloc], [c]) ++AC_SEARCH_LIBS([cosf], [m]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Add dependencies for libga68.spec file ++SPEC_LIBGA68_DEPS="$LIBS" ++AC_SUBST(SPEC_LIBGA68_DEPS) ++ ++# libga68 soname version ++libga68_VERSION=1:0:0 ++AC_SUBST(libga68_VERSION) ++ ++# The Boehm GC ++ ++AC_ARG_ENABLE(algol68-gc, ++[AS_HELP_STRING([--enable-algol68-gc], ++ [enable use of Boehm's garbage collector with the ++ GNU Algol runtime])],,enable_algol68_gc=no) ++AC_ARG_WITH([target-bdw-gc], ++[AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], ++ [specify prefix directory for installed bdw-gc package. ++ Equivalent to --with-target-bdw-gc-include=PATH/include ++ plus --with-target-bdw-gc-lib=PATH/lib])]) ++AC_ARG_WITH([target-bdw-gc-include], ++[AS_HELP_STRING([--with-target-bdw-gc-include=PATHLIST], ++ [specify directories for installed bdw-gc include files])]) ++AC_ARG_WITH([target-bdw-gc-lib], ++[AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], ++ [specify directories for installed bdw-gc library])]) ++ ++bdw_lib_dir= ++case "$enable_algol68_gc" in ++no) ++ use_bdw_gc=no ++ ;; ++*) ++ AC_MSG_CHECKING([for bdw garbage collector]) ++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++ dnl no bdw-gw options, assuming bdw-gc in default locations ++ BDW_GC_CFLAGS= ++ BDW_GC_LIBS="-lgc" ++ else ++ dnl bdw-gw options passed by configure flags ++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) ++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) ++ else ++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) ++ fi ++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` ++ bdw_val= ++ if test "x$with_target_bdw_gc" != x; then ++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc]) ++ fi ++ bdw_inc_dir="$bdw_val/include" ++ bdw_lib_dir="$bdw_val/lib" ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_include" != x; then ++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i; fallback=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then ++ bdw_inc_dir="$fallback" ++ elif test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) ++ else ++ bdw_inc_dir="$bdw_val" ++ fi ++ fi ++ bdw_val= ++ if test "x$with_target_bdw_gc_lib" != x; then ++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do ++ case "$i" in ++ *=*) sd=${i%%=*}; d=${i#*=} ;; ++ *) sd=.; d=$i ;; ++ esac ++ if test "$mldir" = "$sd"; then ++ bdw_val=$d ++ fi ++ done ++ if test "x$bdw_val" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) ++ fi ++ bdw_lib_dir="$bdw_val" ++ fi ++ if test "x$bdw_inc_dir" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) ++ fi ++ if test "x$bdw_lib_dir" = x; then ++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) ++ fi ++ BDW_GC_CFLAGS="-I$bdw_inc_dir" ++ if test -f $bdw_lib_dir/libgc.la; then ++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" ++ else ++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" ++ fi ++ AC_MSG_RESULT([found]) ++ fi ++ ++ case "$BDW_GC_LIBS" in ++ *libgc.la) ++ use_bdw_gc=yes ++ ;; ++ *) ++ AC_MSG_CHECKING([for system boehm-gc]) ++ save_CFLAGS=$CFLAGS ++ save_LIBS=$LIBS ++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" ++ LIBS="$LIBS $BDW_GC_LIBS" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[GC_init()])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ GC_init(); ++ return 0; ++ } ++ ]])], ++ [system_bdw_gc_found=yes], ++ [system_bdw_gc_found=no], ++ dnl assume no system boehm-gc for cross builds ... ++ [system_bdw_gc_found=no] ++ ) ++ ], ++ [system_bdw_gc_found=no]) ++ CFLAGS=$save_CFLAGS ++ LIBS=$save_LIBS ++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then ++ AC_MSG_WARN([system bdw-gc not found, building libga68 with no GC support]) ++ use_bdw_gc=no ++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then ++ AC_MSG_ERROR([system bdw-gc required but not found]) ++ else ++ use_bdw_gc=yes ++ AC_MSG_RESULT([found]) ++ fi ++ esac ++esac ++ ++if test "$use_bdw_gc" = no; then ++ LIBGA68_GCFLAGS='' ++ LIBGA68_BOEHM_GC_INCLUDES='' ++ LIBGA68_BOEHM_GC_LIBS='' ++else ++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' ++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS ++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS ++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" ++fi ++ ++extra_darwin_ldflags_libga68= ++case $host in ++ *-*-darwin*) ++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main ++ if test -f $bdw_lib_dir/libgc.a; then ++ # Darwin wants to link this statically into the library ++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" ++ # No spec entry. ++ BDW_GC_LIBS= ++ fi ++ ;; ++ *) ;; ++esac ++AC_SUBST(extra_darwin_ldflags_libga68) ++ ++# Subst some variables used in Makefile.am ++AC_SUBST(LIBGA68_GCFLAGS) ++AC_SUBST(LIBGA68_BOEHM_GC_INCLUDES) ++AC_SUBST(LIBGA68_BOEHM_GC_LIBS) ++ ++# Output files and be done. ++AC_CONFIG_SRCDIR([Makefile.am]) ++AC_CONFIG_FILES([Makefile]) ++AC_CONFIG_FILES(libga68.spec) ++AC_MSG_NOTICE([libga68 has been configured.]) ++AC_OUTPUT +--- /dev/null ++++ b/src/libga68/ga68-alloc.c +@@ -0,0 +1,114 @@ ++/* Run-time routines for memory allocation. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include ++ ++#include "ga68.h" ++ ++/* Heap allocation routines. */ ++ ++void ++_libga68_free_internal (void *pt) ++{ ++ free (pt); ++} ++ ++void * ++_libga68_malloc_internal (size_t size) ++{ ++ void *res = (void *) malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#if LIBGA68_WITH_GC ++#include ++ ++void ++_libga68_init_heap (void) ++{ ++ if (!GC_is_init_called ()) ++ { ++ GC_INIT (); ++ /* GC_allow_register_threads (); */ ++ } ++} ++ ++void * ++_libga68_realloc (void *ptr, size_t size) ++{ ++ void *res = (void *) GC_realloc (ptr, size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++void * ++_libga68_realloc_unchecked (void *ptr, size_t size) ++{ ++ void *res = (void *) GC_realloc (ptr, size); ++ return res; ++} ++ ++void * ++_libga68_malloc (size_t size) ++{ ++ void *res = (void *) GC_malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#else ++ ++void ++_libga68_init_heap (void) ++{ ++} ++ ++void * ++_libga68_realloc (void *ptr, size_t size) ++{ ++ void *res = (void *) realloc (ptr, size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++void * ++_libga68_realloc_unchecked (void *ptr, size_t size) ++{ ++ void *res = (void *) realloc (ptr, size); ++ return res; ++} ++ ++void * ++_libga68_malloc (size_t size) ++{ ++ void *res = (void *) malloc (size); ++ if (!res) ++ _libga68_abort ("Virtual memory exhausted\n"); ++ return res; ++} ++ ++#endif /* !LIBGA68_WITH_GC */ +--- /dev/null ++++ b/src/libga68/ga68-error.c +@@ -0,0 +1,151 @@ ++/* Support run-time routines for error handling. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include ++#include /* For abort. */ ++ ++#include "ga68.h" ++ ++/* Run-time error handling. ++ ++ Please use the following format when outputing runtime error messages: ++ ++ FILE:LINE:[COLUMN:] TEXT ++ ++ This keeps the output aligned with other runtime libraries such as the ++ sanitizers. */ ++ ++/* Emit a formatted error message to the standard output and then terminate the ++ process with an error code. */ ++ ++void ++_libga68_abort (const char *fmt, ...) ++{ ++ va_list ap; ++ ++ va_start (ap, fmt); ++ vfprintf (stderr, fmt, ap); ++ abort (); ++ va_end (ap); ++} ++ ++/* Assertion failure. */ ++ ++void ++_libga68_assert (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: ASSERT failure\n", ++ filename, lineno); ++} ++ ++/* Attempt to dereference NIL failure. */ ++ ++void ++_libga68_derefnil (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: attempt to dereference NIL\n", ++ filename, lineno); ++} ++ ++/* Invalid character expression. */ ++ ++void ++_libga68_invalidcharerror (const char *filename, unsigned int lineno, ++ int c) ++{ ++ if (c < 0) ++ _libga68_abort ("%s:%u: runtime error: %d is not a valid character point\n", ++ filename, lineno, c); ++ _libga68_abort ("%s:%u: runtime error: U+%x is not a valid character point\n", ++ filename, lineno, c); ++} ++ ++/* Out of bounds error in bits ELEM operator. */ ++ ++void ++_libga68_bitsboundserror (const char *filename, unsigned int lineno, ++ ssize_t pos) ++{ ++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range in ELEM\n", ++ filename, lineno, pos); ++} ++ ++/* Unreachable error. */ ++ ++void ++_libga68_unreachable (const char *filename, unsigned int lineno) ++{ ++ _libga68_abort ("%s:%u: runtime error: unreachable reached\n", ++ filename, lineno); ++} ++ ++/* Lower bound failure. */ ++ ++void ++_libga68_lower_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: lower bound %zd must be >= %zd\n", ++ filename, lineno, index, lower_bound); ++} ++ ++/* Upper bound failure. */ ++ ++void ++_libga68_upper_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t upper_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: upper bound %zd must be <= %zd\n", ++ filename, lineno, index, upper_bound); ++} ++ ++/* Bounds failure. */ ++ ++void ++_libga68_bounds (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound) ++{ ++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range [%zd:%zd]\n", ++ filename, lineno, index, lower_bound, upper_bound); ++} ++ ++/* Dimension failure. */ ++ ++void ++_libga68_dim (const char *filename, unsigned int lineno, ++ size_t dim, size_t index) ++{ ++ _libga68_abort ("%s:%u: runtime error: invalid dimension %zd; shall be > 0 and <= %zu\n", ++ filename, lineno, index, dim); ++} ++ ++/* Multiples have different bounds in assignations. */ ++ ++void ++_libga68_bounds_mismatch (const char *filename, unsigned int lineno, ++ size_t dim, ssize_t lb1, ssize_t ub1, ++ ssize_t lb2, ssize_t ub2) ++{ ++ _libga68_abort ("%s:%u: runtime error: multiple bounds mismatch in \ ++assignation: dim %zu: [%zd:%zd] /= [%zd:%zd]\n", ++ filename, lineno, dim, lb1, ub1, lb2, ub2); ++} +--- /dev/null ++++ b/src/libga68/ga68-posix.c +@@ -0,0 +1,463 @@ ++/* Support run-time routines for the POSIX prelude. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include "ga68.h" ++ ++#include ++#include ++#include ++#include /* For open. */ ++#include /* For close and write. */ ++#include /* For errno. */ ++#include ++#include /* For struct stat */ ++#include ++#include /* For gethostbyname. */ ++#include /* For LLONG_MAX */ ++ ++#define EOF_PSEUDO_CHARACTER -1 ++ ++/* Some Unicode code points used in this file. */ ++ ++#define REPLACEMENT_CHARACTER 0xFFFD ++#define NEWLINE 0x000A ++ ++/* Errno. */ ++ ++static int _libga68_errno; ++ ++/* Simple I/O based on POSIX file descriptors. */ ++ ++int ++_libga68_posixerrno (void) ++{ ++ return _libga68_errno; ++} ++ ++void ++_libga68_posixperror (uint32_t *s, size_t len, size_t stride) ++{ ++ size_t u8len; ++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); ++ ++ const char *errstr = strerror (_libga68_errno); ++ (void) write (2, u8str, u8len); ++ (void) write (2, ": ", 2); ++ (void) write (2, errstr, strlen (errstr)); ++ (void) write (2, "\n", 1); ++} ++ ++uint32_t * ++_libga68_posixstrerror (int errnum, size_t *len) ++{ ++ const char *str = strerror (errnum); ++ return _libga68_u8_to_u32 ((const uint8_t *)str, strlen (str), NULL, len); ++} ++ ++/* Helper for _libga68_posixfopen. */ ++static int ++_libga68_open (const char *path, unsigned int flags) ++{ ++ int fd = open (path, flags); ++ _libga68_errno = errno; ++ return fd; ++} ++ ++#define FILE_O_DEFAULT 0x99999999 ++#define FILE_O_RDONLY 0x0 ++#define FILE_O_WRONLY 0x1 ++#define FILE_O_RDWR 0x2 ++#define FILE_O_TRUNC 0x8 ++ ++int ++_libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, ++ unsigned int flags) ++{ ++ int fd; ++ int openflags = 0; ++ size_t u8len; ++ const uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, ++ &u8len); ++ char *filepath = (char *) _libga68_malloc_internal (u8len + 1); ++ memcpy (filepath, u8pathname, u8len); ++ filepath[u8len] = '\0'; ++ ++ /* Default mode: try read-write initially. ++ If that fails, then try read-only. ++ If that fails, then try write-only. */ ++ if (flags == FILE_O_DEFAULT) ++ { ++ openflags = O_RDWR; ++ if ((fd = _libga68_open (filepath, openflags)) < 0) ++ { ++ openflags = O_RDONLY; ++ if ((fd = _libga68_open (filepath, openflags)) < 0) ++ { ++ openflags = O_WRONLY; ++ fd = _libga68_open (filepath, openflags); ++ _libga68_free_internal (filepath); ++ return fd; ++ } ++ } ++ _libga68_free_internal (filepath); ++ return fd; ++ } ++ ++ if (flags & FILE_O_RDONLY) ++ openflags |= O_RDONLY; ++ if (flags & FILE_O_WRONLY) ++ openflags |= O_WRONLY; ++ if (flags & FILE_O_RDWR) ++ openflags |= O_RDWR; ++ if (flags & FILE_O_TRUNC) ++ openflags |= O_TRUNC; ++ ++ fd = _libga68_open (filepath, openflags); ++ _libga68_free_internal (filepath); ++ return fd; ++} ++ ++int ++_libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, ++ uint32_t mode) ++{ ++ size_t u8len; ++ uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, &u8len); ++ u8pathname[u8len] = '\0'; ++ ++ int res = creat (u8pathname, mode); ++ _libga68_errno = errno; ++ return res; ++} ++ ++int ++_libga68_posixclose (int fd) ++{ ++ int res = close (fd); ++ _libga68_errno = errno; ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix argc'. */ ++ ++int ++_libga68_posixargc (void) ++{ ++ return _libga68_argc; ++} ++ ++/* Implementation of the posix prelude `posix argv'. */ ++ ++uint32_t * ++_libga68_posixargv (int n, size_t *len) ++{ ++ if (n < 0 || n > _libga68_argc) ++ { ++ /* Return an empty string. */ ++ *len = 0; ++ return NULL; ++ } ++ else ++ { ++ char *arg = _libga68_argv[n - 1]; ++ return _libga68_u8_to_u32 (arg, strlen (arg), NULL, len); ++ } ++} ++ ++/* Implementation of the posix prelude `posix getenv'. */ ++ ++void ++_libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, ++ uint32_t **r, size_t *rlen) ++{ ++ size_t varlen; ++ char *varname = _libga68_u32_to_u8 (s, len, stride, NULL, &varlen); ++ ++ char *var = _libga68_malloc_internal (varlen + 1); ++ memcpy (var, varname, varlen); ++ var[varlen] = '\0'; ++ char *val = getenv (var); ++ _libga68_free_internal (var); ++ ++ if (val == NULL) ++ { ++ /* Return an empty string. */ ++ *r = NULL; ++ *rlen = 0; ++ } ++ else ++ *r = _libga68_u8_to_u32 (val, strlen (val), NULL, rlen); ++} ++ ++/* Implementation of the posix prelude `posix puts'. */ ++ ++void ++_libga68_posixputs (uint32_t *s, size_t len, size_t stride) ++{ ++ (void) _libga68_posixfputs (1, s, len, stride); ++} ++ ++/* Implementation of the posix prelude `posix fputs'. */ ++ ++int ++_libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride) ++{ ++ size_t u8len; ++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); ++ ++ ssize_t ret = write (fd, u8str, u8len); ++ _libga68_errno = errno; ++ if (ret == -1) ++ return 0; ++ else ++ return u8len; ++} ++ ++/* Implementation of the posix prelude `posix putc'. */ ++ ++uint32_t ++_libga68_posixfputc (int fd, uint32_t c) ++{ ++ uint8_t u8[6]; ++ ++ int u8len = _libga68_u8_uctomb (u8, c, 6); ++ if (u8len < 0) ++ return EOF_PSEUDO_CHARACTER; ++ ++ ssize_t ret = write (fd, &u8, u8len); ++ if (ret == -1) ++ return EOF_PSEUDO_CHARACTER; ++ else ++ return c; ++} ++ ++/* Implementation of the posix prelude `posix putchar'. */ ++ ++uint32_t ++_libga68_posixputchar (uint32_t c) ++{ ++ return _libga68_posixfputc (1, c); ++} ++ ++/* Implementation of the posix prelude `posix fgetc'. */ ++ ++uint32_t ++_libga68_posixfgetc (int fd) ++{ ++ /* We need to read one char (byte) at a time from FD, until we complete a ++ full Unicode character. Then we convert to UCS-4. */ ++ ++ uint8_t c; ++ uint8_t u8c[6]; ++ size_t morechars = 0; ++ size_t i; ++ ++ /* Read first UTF-8 character. This gives us the total length of the ++ character. */ ++ if (read (fd, &c, 1) != 1) ++ return EOF_PSEUDO_CHARACTER; ++ ++ if (c < 128) ++ morechars = 0; ++ else if (c < 224) ++ morechars = 1; ++ else if (c < 240) ++ morechars = 2; ++ else ++ morechars = 3; ++ ++ u8c[0] = c; ++ for (i = 0; i < morechars; ++i) ++ { ++ if (read (fd, &c, 1) != 1) ++ return EOF_PSEUDO_CHARACTER; ++ u8c[i + 1] = c; ++ } ++ ++ uint32_t res; ++ int num_units = morechars + 1; ++ int length = _libga68_u8_mbtouc (&res, (const uint8_t *) &u8c, num_units); ++ if (res == REPLACEMENT_CHARACTER || length != num_units) ++ return REPLACEMENT_CHARACTER; ++ else ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix getchar'. */ ++ ++uint32_t ++_libga68_posixgetchar (void) ++{ ++ return _libga68_posixfgetc (0); ++} ++ ++/* Implementation of the posix prelude `posix fgets'. */ ++ ++uint32_t * ++_libga68_posixfgets (int fd, int nchars, size_t *len) ++{ ++ uint32_t *res = NULL; ++ int n = 0; ++ uint32_t uc; ++ ++ if (nchars > 0) ++ { ++ /* Read exactly nchar or until EOF. */ ++ res = _libga68_malloc (nchars * sizeof (uint32_t)); ++ do ++ { ++ uc = _libga68_posixfgetc (fd); ++ if (uc == EOF_PSEUDO_CHARACTER) ++ break; ++ res[n++] = uc; ++ } ++ while (n < nchars); ++ } ++ else ++ { ++ /* Read until newline or EOF. */ ++ size_t allocated = 80 * sizeof (uint32_t); ++ res = _libga68_malloc (allocated); ++ do ++ { ++ uc = _libga68_posixfgetc (fd); ++ if (uc != EOF_PSEUDO_CHARACTER) ++ { ++ if (n % 80 == 0) ++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t) + 80 * sizeof (uint32_t)); ++ res[n++] = uc; ++ } ++ } ++ while (uc != NEWLINE && uc != EOF_PSEUDO_CHARACTER); ++ if (n > 0) ++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t)); ++ } ++ ++ *len = n; ++ return res; ++} ++ ++/* Implementation of the posix prelude `posix gets'. */ ++ ++uint32_t * ++_libga68_posixgets (int nchars, size_t *len) ++{ ++ return _libga68_posixfgets (0, nchars, len); ++} ++ ++/* Implementation of the posix prelude `fconnect'. */ ++ ++int ++_libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, ++ int port) ++{ ++ size_t u8len; ++ uint8_t *u8host = _libga68_u32_to_u8 (str, len, stride, NULL, &u8len); ++ ++ /* Create a stream socket. */ ++ int fd = socket (AF_INET, SOCK_STREAM, 0); ++ _libga68_errno = errno; ++ if (fd < 0) ++ goto error; ++ ++ /* Lookup the specified host. */ ++ char *host = _libga68_malloc_internal (u8len + 1); ++ memcpy (host, u8host, u8len); ++ host[u8len] = '\0'; ++ struct hostent *server = gethostbyname (host); ++ if (server == NULL) ++ { ++ _libga68_errno = h_errno; ++ goto close_fd_and_error; ++ } ++ ++ /* Connect the socket to the server. */ ++ struct sockaddr_in serv_addr; ++ memset (&serv_addr, 0, sizeof (serv_addr)); ++ serv_addr.sin_family = AF_INET; ++ serv_addr.sin_port = htons (port); ++ memcpy (&serv_addr.sin_addr.s_addr, ++ server->h_addr, ++ server->h_length); ++ int res = connect (fd, (struct sockaddr *) &serv_addr, ++ sizeof (serv_addr)); ++ _libga68_errno = errno; ++ if (res == -1) ++ goto close_fd_and_error; ++ ++ _libga68_free_internal (host); ++ return fd; ++ ++ close_fd_and_error: ++ close (fd); ++ error: ++ _libga68_free_internal (host); ++ return -1; ++} ++ ++/* Implementation of the posix prelude `fsize'. */ ++ ++long long int ++_libga68_posixfsize (int fd) ++{ ++ struct stat stat; ++ ++ if (fstat (fd, &stat) == -1) ++ { ++ _libga68_errno = errno; ++ return -1; ++ } ++ ++ if (stat.st_size > LLONG_MAX) ++ { ++ _libga68_errno = EOVERFLOW; ++ return -1; ++ } ++ ++ return (long int) stat.st_size; ++} ++ ++/* Implementation of the posix prelude `lseek'. */ ++#define A68_SEEK_CUR 0 ++#define A68_SEEK_END 1 ++#define A68_SEEK_SET 2 ++ ++long long int ++_libga68_posixlseek (int fd, long long int offset, int whence) ++{ ++ switch (whence) ++ { ++ case A68_SEEK_CUR: ++ whence = SEEK_CUR; ++ break; ++ case A68_SEEK_END: ++ whence = SEEK_END; ++ break; ++ case A68_SEEK_SET: ++ whence = SEEK_SET; ++ break; ++ } ++ ++ long long int ret = (long long int) lseek(fd, offset, whence); ++ _libga68_errno = errno; ++ return ret; ++} +--- /dev/null ++++ b/src/libga68/ga68-standenv.c +@@ -0,0 +1,48 @@ ++/* Support run-time routines for the standard prelude. ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include /* For rand. */ ++ ++#include "ga68.h" ++ ++/* Implementation of the standard prelude `random' function. */ ++ ++float ++_libga68_random (void) ++{ ++ float res = (float) rand () / (float) (RAND_MAX); ++ return res; ++} ++ ++double ++_libga68_longrandom (void) ++{ ++ double res = (double) rand () / (float) (RAND_MAX); ++ return res; ++} ++ ++long double ++_libga68_longlongrandom (void) ++{ ++ long double res = (long double) rand () / (float) (RAND_MAX); ++ return res; ++} +--- /dev/null ++++ b/src/libga68/ga68-unistr.c +@@ -0,0 +1,615 @@ ++/* libga68 unicode support routines. ++ Copyright (C) 2009-2025 Free Software Foundation, Inc. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++/* The code in this file has been copied from the unistr gnulib module, written ++ by Bruno Haible, and adapted to support strides. */ ++ ++#include /* For ptrdiff_t */ ++#include ++#include ++#include ++#include ++ ++#include "ga68.h" ++ ++/* CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where ++ n1 and n2 are expressions without side effects, that evaluate to real ++ numbers (excluding NaN). ++ It returns ++ 1 if n1 > n2 ++ 0 if n1 == n2 ++ -1 if n1 < n2 ++ The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional ++ jump with nearly all GCC versions up to GCC 10. ++ This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many ++ GCC versions up to GCC 9. ++ The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 ++ avoids conditional jumps in all GCC versions >= 3.4. */ ++ ++#define CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) ++ ++/* MIN(a,b) returns the minimum of A and B. */ ++ ++#ifndef MIN ++# define MIN(a,b) ((a) < (b) ? (a) : (b)) ++#endif ++ ++/* Compare two UCS-4 strings of same lenght, lexicographically. ++ Return -1, 0 or 1. */ ++ ++int ++_libga68_u32_cmp (const uint32_t *s1, size_t stride1, ++ const uint32_t *s2, size_t stride2, ++ size_t n) ++{ ++ stride1 = stride1 / sizeof (uint32_t); ++ stride2 = stride2 / sizeof (uint32_t); ++ ++ for (; n > 0;) ++ { ++ uint32_t uc1 = *s1; ++ s1 += stride1; ++ uint32_t uc2 = *s2; ++ s2 += stride2; ++ if (uc1 == uc2) ++ { ++ n--; ++ continue; ++ } ++ /* Note that uc1 and uc2 each have at most 31 bits. */ ++ return (int)uc1 - (int)uc2; ++ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2. */ ++ } ++ return 0; ++} ++ ++/* Compare two UCS-4 strings of perhaps different lenghts, lexicographically. ++ Return -1, 0 or 1. */ ++ ++int ++_libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, ++ const uint32_t *s2, size_t n2, size_t stride2) ++{ ++ int cmp = _libga68_u32_cmp (s1, stride1, s2, stride2, MIN (n1, n2)); ++ ++ if (cmp == 0) ++ cmp = CMP (n1, n2); ++ ++ return cmp; ++} ++ ++/* Get the UCS code for the first character of a given UTF-8 string. */ ++ ++int ++_libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 3) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 4) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 3; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 2; ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++ } ++ else ++ { ++ *puc = 0xfffd; ++ if (n == 1) ++ { ++ /* incomplete multibyte character */ ++ return 1; ++ } ++ else ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n == 2) ++ { ++ /* incomplete multibyte character */ ++ return 2; ++ } ++ else ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ /* incomplete multibyte character */ ++ return 3; ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 2; ++ } ++ } ++ } ++ else ++ { ++ /* invalid multibyte character */ ++ return 1; ++ } ++ } ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return 1; ++} ++ ++/* Encode a given UCS code in UTF-8. */ ++ ++int ++_libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) ++{ ++ if (uc < 0x80) ++ { ++ if (n > 0) ++ { ++ s[0] = uc; ++ return 1; ++ } ++ /* else return -2, below. */ ++ } ++ else ++ { ++ int count; ++ ++ if (uc < 0x800) ++ count = 2; ++ else if (uc < 0x10000) ++ { ++ if (uc < 0xd800 || uc >= 0xe000) ++ count = 3; ++ else ++ return -1; ++ } ++ else if (uc < 0x110000) ++ count = 4; ++ else ++ return -1; ++ ++ if (n >= count) ++ { ++ switch (count) /* note: code falls through cases! */ ++ { ++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; ++ /* Fallthrough. */ ++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; ++ /* Fallthrough. */ ++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; ++ /*case 1:*/ s[0] = uc; ++ } ++ return count; ++ } ++ } ++ return -2; ++} ++ ++/* Convert UCS-4 to UTF-8 */ ++ ++uint8_t * ++_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, ++ uint8_t *resultbuf, size_t *lengthp) ++{ ++ const uint32_t *s_end; ++ /* Output string accumulator. */ ++ uint8_t *result; ++ size_t allocated; ++ size_t length; ++ ++ stride = stride / sizeof (uint32_t); ++ s_end = s + (n * stride); ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ uc = *s; ++ s += stride; ++ /* No need to call the safe variant u32_mbtouc, because ++ u8_uctomb will verify uc anyway. */ ++ ++ /* Store it in the output string. */ ++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); ++ if (count == -1) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ if (count == -2) ++ { ++ uint8_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 6 > allocated) ++ allocated = length + 6; ++ if (result == resultbuf || result == NULL) ++ memory = (uint8_t *) _libga68_malloc (allocated * sizeof (uint8_t)); ++ else ++ memory = ++ (uint8_t *) _libga68_realloc (result, allocated * sizeof (uint8_t)); ++ ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint8_t)); ++ result = memory; ++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); ++ if (count < 0) ++ abort (); ++ } ++ length += count; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint8_t *) _libga68_malloc (1); ++ if (result == NULL) ++ { ++ errno = ENOMEM; ++ return NULL; ++ } ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint8_t *memory; ++ ++ memory = (uint8_t *) _libga68_realloc_unchecked (result, length * sizeof (uint8_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} ++ ++/* Used by ga68_u8_to_u32 below. */ ++ ++static int ++_libga68_u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) ++{ ++ uint8_t c = *s; ++ ++ if (c < 0x80) ++ { ++ *puc = c; ++ return 1; ++ } ++ else if (c >= 0xc2) ++ { ++ if (c < 0xe0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x1f) << 6) ++ | (unsigned int) (s[1] ^ 0x80); ++ return 2; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c < 0xf0) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xe1 || s[1] >= 0xa0) ++ && (c != 0xed || s[1] < 0xa0)) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x0f) << 12) ++ | ((unsigned int) (s[1] ^ 0x80) << 6) ++ | (unsigned int) (s[2] ^ 0x80); ++ return 3; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ else if (c <= 0xf4) ++ { ++ if (n >= 2) ++ { ++ if ((s[1] ^ 0x80) < 0x40 ++ && (c >= 0xf1 || s[1] >= 0x90) ++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) ++ { ++ if (n >= 3) ++ { ++ if ((s[2] ^ 0x80) < 0x40) ++ { ++ if (n >= 4) ++ { ++ if ((s[3] ^ 0x80) < 0x40) ++ { ++ *puc = ((unsigned int) (c & 0x07) << 18) ++ | ((unsigned int) (s[1] ^ 0x80) << 12) ++ | ((unsigned int) (s[2] ^ 0x80) << 6) ++ | (unsigned int) (s[3] ^ 0x80); ++ return 4; ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ /* invalid multibyte character */ ++ } ++ else ++ { ++ /* incomplete multibyte character */ ++ *puc = 0xfffd; ++ return -2; ++ } ++ } ++ } ++ /* invalid multibyte character */ ++ *puc = 0xfffd; ++ return -1; ++} ++ ++/* Convert UTF-8 to UTF-32/UCS-4 */ ++ ++uint32_t * ++_libga68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) ++{ ++ const uint8_t *s_end = s + n; ++ /* Output string accumulator. */ ++ uint32_t *result; ++ size_t allocated; ++ size_t length; ++ ++ if (resultbuf != NULL) ++ { ++ result = resultbuf; ++ allocated = *lengthp; ++ } ++ else ++ { ++ result = NULL; ++ allocated = 0; ++ } ++ length = 0; ++ /* Invariants: ++ result is either == resultbuf or == NULL or malloc-allocated. ++ If length > 0, then result != NULL. */ ++ ++ while (s < s_end) ++ { ++ uint32_t uc; ++ int count; ++ ++ /* Fetch a Unicode character from the input string. */ ++ count = _libga68_u8_mbtoucr (&uc, s, s_end - s); ++ if (count < 0) ++ { ++ if (!(result == resultbuf || result == NULL)) ++ free (result); ++ errno = EILSEQ; ++ return NULL; ++ } ++ s += count; ++ ++ /* Store it in the output string. */ ++ if (length + 1 > allocated) ++ { ++ uint32_t *memory; ++ ++ allocated = (allocated > 0 ? 2 * allocated : 12); ++ if (length + 1 > allocated) ++ allocated = length + 1; ++ if (result == resultbuf || result == NULL) ++ memory = (uint32_t *) _libga68_malloc (allocated * sizeof (uint32_t)); ++ else ++ memory = ++ (uint32_t *) _libga68_realloc (result, allocated * sizeof (uint32_t)); ++ ++ if (result == resultbuf && length > 0) ++ memcpy ((char *) memory, (char *) result, ++ length * sizeof (uint32_t)); ++ result = memory; ++ } ++ result[length++] = uc; ++ } ++ ++ if (length == 0) ++ { ++ if (result == NULL) ++ { ++ /* Return a non-NULL value. NULL means error. */ ++ result = (uint32_t *) _libga68_malloc (1); ++ } ++ } ++ else if (result != resultbuf && length < allocated) ++ { ++ /* Shrink the allocated memory if possible. */ ++ uint32_t *memory; ++ ++ memory = (uint32_t *) _libga68_realloc_unchecked (result, length * sizeof (uint32_t)); ++ if (memory != NULL) ++ result = memory; ++ } ++ ++ *lengthp = length; ++ return result; ++} +--- /dev/null ++++ b/src/libga68/ga68.h +@@ -0,0 +1,126 @@ ++/* Definitions for libga68. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifndef GA68_H ++#define GA68_H ++ ++#include "config.h" ++ ++#include /* For size_t. */ ++#include ++#include ++#ifdef __has_include ++# if __has_include () ++# include /* For ssize_t. */ ++# endif ++#endif ++ ++/* ga68-error.c */ ++ ++void _libga68_abort (const char *fmt, ...) ++ __attribute__ ((__format__ (__printf__, 1, 2), __nonnull__ (1), ++ __noreturn__)); ++ ++void _libga68_assert (const char *filename, unsigned int lineno); ++void _libga68_derefnil (const char *filename, unsigned int lineno); ++void _libga68_invalidcharerror (const char *filename, unsigned int lineno, ++ int c); ++ ++void _libga68_bitsboundserror (const char *filename, unsigned int lineno, ++ ssize_t pos); ++void _libga68_unreachable (const char *filename, unsigned int lineno); ++void _libga68_lower_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound); ++void _libga68_upper_bound (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t upper_bound); ++void _libga68_bounds (const char *filename, unsigned int lineno, ++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound); ++void _libga68_dim (const char *filename, unsigned int lineno, ++ size_t dim, size_t index); ++void _libga68_bounds_mismatch (const char *filename, unsigned int lineno, ++ size_t dim, ssize_t lb1, ssize_t ub1, ++ ssize_t lb2, ssize_t ub2); ++ ++/* ga68-alloc.c */ ++ ++void _libga68_init_heap (void); ++void *_libga68_malloc (size_t size); ++void *_libga68_malloc_internal (size_t size); ++void *_libga68_realloc (void *ptr, size_t size); ++void *_libga68_realloc_unchecked (void *ptr, size_t size); ++void _libga68_free_internal (void *ptr); ++ ++/* ga68-standenv.c */ ++ ++float _libga68_random (void); ++double _libga68_longrandom (void); ++long double _libga68_longlongrandom (void); ++ ++/* ga68-posix.c */ ++ ++int _libga68_posixerrno (void); ++void _libga68_posixperror (uint32_t *s, size_t len, size_t stride); ++uint32_t *_libga68_posixstrerror (int errnum, size_t *len); ++long long int _libga68_posixfsize (int fd); ++int _libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, ++ unsigned int flags); ++int _libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, uint32_t mode); ++int _libga68_posixclose (int fd); ++int _libga68_posixargc (void); ++uint32_t *_libga68_posixargv (int n, size_t *len); ++void _libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, ++ uint32_t **r, size_t *rlen); ++void _libga68_posixputs (uint32_t *s, size_t len, size_t stride); ++uint32_t _libga68_posixputchar (uint32_t c); ++uint32_t _libga68_posixfputc (int fd, uint32_t c); ++int _libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride); ++ ++uint32_t _libga68_posixgetchar (void); ++uint32_t _libga68_posixfgetc (int fd); ++uint32_t *_libga68_posixfgets (int fd, int nchars, size_t *len); ++uint32_t *_libga68_posixgets (int nchars, size_t *len); ++ ++int _libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, ++ int port); ++long long int _libga68_posixlseek (int fd, long long int offset, int whence); ++ ++/* ga68-unistr.c */ ++ ++int _libga68_u32_cmp (const uint32_t *s1, size_t stride1, ++ const uint32_t *s2, size_t stride2, ++ size_t n); ++int _libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, ++ const uint32_t *s2, size_t n2, size_t stride2); ++int _libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); ++int _libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); ++uint8_t *_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, ++ uint8_t *resultbuf, size_t *lengthp); ++uint32_t *_libga68_u8_to_u32 (const uint8_t *s, size_t n, ++ uint32_t *resultbuf, size_t *lengthp); ++ ++/* libga68.c */ ++ ++extern int _libga68_argc; ++extern char **_libga68_argv; ++ ++void _libga68_set_exit_status (int status); ++ ++#endif /* ! GA68_H */ +--- /dev/null ++++ b/src/libga68/libga68.c +@@ -0,0 +1,52 @@ ++/* GNU Algol Compiler run-time. ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#include "ga68.h" ++ ++/* argc and argv are preserved in the following objects. */ ++ ++int _libga68_argc; ++char **_libga68_argv; ++ ++/* Exit status of the program reported to the OS upon exit. */ ++ ++static int exit_status; ++ ++void ++_libga68_set_exit_status (int status) ++{ ++ exit_status = status; ++} ++ ++/* Entry point for Algol 68 programs. */ ++ ++void __algol68_main (void); ++ ++int ++main (int argc, char **argv) ++{ ++ _libga68_argc = argc; ++ _libga68_argv = argv; ++ ++ _libga68_init_heap (); ++ __algol68_main (); ++ return exit_status; ++} +--- /dev/null ++++ b/src/libga68/libga68.spec.in +@@ -0,0 +1,11 @@ ++# ++# This spec file is read by ga68 when linking. ++# It is used to specify the libraries we need to link in, in the right ++# order. ++# ++ ++%rename link linkorig_ga68_renamed ++*link: %(linkorig_ga68_renamed) ++ ++%rename lib liborig_ga68_renamed ++*lib: %{noga68lib: ; :@SPEC_LIBGA68_DEPS@} %(liborig_ga68_renamed) +--- a/src/libiberty/simple-object-mach-o.c ++++ b/src/libiberty/simple-object-mach-o.c +@@ -669,12 +669,15 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, + } + } + ++ memset (namebuf, 0, sizeof (namebuf)); ++ /* Copy the section name so we can append a null to make it into a ++ c-string (Mach-o section names are not terminated). */ ++ memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); ++ namebuf[MACH_O_NAME_LEN] = '\0'; ++ name = &namebuf[0]; ++ /* Maybe override this if we have long section name extension. */ + if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0) + { +- memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); +- namebuf[MACH_O_NAME_LEN] = '\0'; +- +- name = &namebuf[0]; + if (strtab != NULL && name[0] == '_' && name[1] == '_') + { + unsigned long stringoffset; +@@ -696,19 +699,6 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, + } + } + } +- else +- { +- /* Otherwise, make a name like __segment,__section as per the +- convention in mach-o asm. */ +- name = &namebuf[0]; +- memcpy (namebuf, (char *) sechdr + segname_offset, MACH_O_NAME_LEN); +- namebuf[MACH_O_NAME_LEN] = '\0'; +- l = strlen (namebuf); +- namebuf[l] = ','; +- memcpy (namebuf + l + 1, (char *) sechdr + sectname_offset, +- MACH_O_NAME_LEN); +- namebuf[l + 1 + MACH_O_NAME_LEN] = '\0'; +- } + + simple_object_mach_o_section_info (omr->is_big_endian, is_32, sechdr, + &secoffset, &secsize); diff --git a/patches/alpha-ieee-doc.diff b/patches/alpha-ieee-doc.diff new file mode 100644 index 0000000..173bbec --- /dev/null +++ b/patches/alpha-ieee-doc.diff @@ -0,0 +1,24 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +--- + gcc/doc/invoke.texi | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -26304,6 +26304,13 @@ able to correctly support denormalized n + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @opindex mieee-with-inexact + @item -mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains diff --git a/patches/alpha-ieee.diff b/patches/alpha-ieee.diff new file mode 100644 index 0000000..f80ffa3 --- /dev/null +++ b/patches/alpha-ieee.diff @@ -0,0 +1,17 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +--- a/src/gcc/config/alpha/alpha.cc ++++ b/src/gcc/config/alpha/alpha.cc +@@ -384,6 +384,10 @@ alpha_option_override (void) + int line_size = 0, l1_size = 0, l2_size = 0; + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + #ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; + #endif diff --git a/patches/alpha-no-ev4-directive.diff b/patches/alpha-no-ev4-directive.diff new file mode 100644 index 0000000..deaa650 --- /dev/null +++ b/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,30 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +--- a/src/gcc/config/alpha/alpha.cc ++++ b/src/gcc/config/alpha/alpha.cc +@@ -10181,7 +10181,7 @@ alpha_file_start (void) + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -10191,10 +10191,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + diff --git a/patches/arc-stddef.diff b/patches/arc-stddef.diff new file mode 100644 index 0000000..af330f4 --- /dev/null +++ b/patches/arc-stddef.diff @@ -0,0 +1,29 @@ +--- a/src/gcc/config/arc/arc-arch.h ++++ b/src/gcc/config/arc/arc-arch.h +@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3. + #ifndef GCC_ARC_ARCH_H + #define GCC_ARC_ARCH_H + ++#include ++ + #ifndef IN_LIBGCC2 + /* Architecture selection types. */ + +@@ -116,7 +118,7 @@ typedef struct + + } arc_cpu_t; + +-const arc_arch_t arc_arch_types[] = ++static const arc_arch_t arc_arch_types[] = + { + {"none", BASE_ARCH_NONE, 0, 0}, + #define ARC_ARCH(NAME, ARCH, FLAGS, DFLAGS) \ +@@ -126,7 +128,7 @@ const arc_arch_t arc_arch_types[] = + {NULL, BASE_ARCH_END, 0, 0} + }; + +-const arc_cpu_t arc_cpu_types[] = ++static const arc_cpu_t arc_cpu_types[] = + { + {"none", NULL, PROCESSOR_NONE, 0, HAS_NONE, ARC_TUNE_NONE}, + #define ARC_CPU(NAME, ARCH, FLAGS, EXTRA, TUNE) \ diff --git a/patches/arm-multilib-defaults.diff b/patches/arm-multilib-defaults.diff new file mode 100644 index 0000000..88b0279 --- /dev/null +++ b/patches/arm-multilib-defaults.diff @@ -0,0 +1,88 @@ +# DP: Set MULTILIB_DEFAULTS for ARM multilib builds + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -4342,10 +4342,18 @@ case "${target}" in + done + + case "$with_float" in +- "" \ +- | soft | hard | softfp) ++ "") + # OK + ;; ++ soft) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0" ++ ;; ++ softfp) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1" ++ ;; ++ hard) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2" ++ ;; + *) + echo "Unknown floating point type used in --with-float=$with_float" 1>&2 + exit 1 +@@ -4380,6 +4388,9 @@ case "${target}" in + "" \ + | arm | thumb ) + #OK ++ if test "$with_mode" = thumb; then ++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" ++ fi + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -37,7 +37,21 @@ + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ + #undef TARGET_DEFAULT_FLOAT_ABI ++#ifdef TARGET_CONFIGURED_FLOAT_ABI ++#if TARGET_CONFIGURED_FLOAT_ABI == 2 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" ++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" ++#else ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif ++#else + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif + + /* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +@@ -91,6 +105,28 @@ + #define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC diff --git a/patches/arm-multilib-soft-float.diff b/patches/arm-multilib-soft-float.diff new file mode 100644 index 0000000..18f51fb --- /dev/null +++ b/patches/arm-multilib-soft-float.diff @@ -0,0 +1,26 @@ +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -24,6 +24,23 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) ++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . hf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float ++endif ++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . sf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float ++endif ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/bootstrap-no-unneeded-libs.diff b/patches/bootstrap-no-unneeded-libs.diff new file mode 100644 index 0000000..4939110 --- /dev/null +++ b/patches/bootstrap-no-unneeded-libs.diff @@ -0,0 +1,30 @@ +# DP: For bootstrap builds, don't build unneeded libstdc++ things +# DP: (debug library, PCH headers). + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -1060,7 +1060,9 @@ + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ +- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] ++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ ++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ ++ [+ ENDIF bootstrap_configure_flags +] + @endif [+prefix+][+module+]-bootstrap + [+ ENDFOR bootstrap_stage +] + [+ ENDIF bootstrap +] +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -117,7 +117,8 @@ + target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=src/.libs; +- raw_cxx=true; }; ++ raw_cxx=true; ++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; + target_modules = { module= libmudflap; lib_path=.libs; }; + target_modules = { module= libsanitizer; lib_path=.libs; }; + target_modules = { module= libssp; lib_path=.libs; }; diff --git a/patches/canonical-cpppath.diff b/patches/canonical-cpppath.diff new file mode 100644 index 0000000..39969b7 --- /dev/null +++ b/patches/canonical-cpppath.diff @@ -0,0 +1,34 @@ +# DP: Don't use any relative path names for the standard include paths. + +--- a/src/gcc/incpath.cc ++++ b/src/gcc/incpath.cc +@@ -177,6 +177,14 @@ add_standard_paths (const char *sysroot, + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } + } +@@ -252,6 +260,14 @@ add_standard_paths (const char *sysroot, + else + str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } diff --git a/patches/config-ml.diff b/patches/config-ml.diff new file mode 100644 index 0000000..7fcc7e7 --- /dev/null +++ b/patches/config-ml.diff @@ -0,0 +1,52 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -488,6 +488,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -903,9 +922,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then ++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then + true + else + exit 1 diff --git a/patches/cross-biarch.diff b/patches/cross-biarch.diff new file mode 100644 index 0000000..2453c5c --- /dev/null +++ b/patches/cross-biarch.diff @@ -0,0 +1,74 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -799,6 +799,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + GOC_=$GOC' ' + GDC_=$GDC' ' + else ++ if [ "${ml_dir}" = "." ]; then ++ FILTER_="s!X\\(.*\\)!\\1!p" ++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 ++ FILTER_="s!X\\(.*\\)/!\\132/!p" ++ elif [ "${ml_dir}" = "32" ] && [ "$(echo ${host} |grep '^mips')" ]; then # mips o32 -> libo32 ++ FILTER_="s!X\\(.*\\)/!\\1o32/!p" ++ else ++ FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p" ++ fi + # Create a regular expression that matches any string as long + # as ML_POPDIR. + popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'` +@@ -808,6 +817,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;; ++ -B*/lib/) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -822,6 +833,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -836,6 +849,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -850,6 +865,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -864,6 +881,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) +@@ -878,6 +897,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + -B*/lib/) diff --git a/patches/cross-fixes.diff b/patches/cross-fixes.diff new file mode 100644 index 0000000..8844eaa --- /dev/null +++ b/patches/cross-fixes.diff @@ -0,0 +1,57 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/ia64/fde-glibc.c | 3 +++ + gcc/config/ia64/unwind-ia64.c | 3 ++- + gcc/unwind-compat.c | 2 ++ + gcc/unwind-generic.h | 2 ++ + 6 files changed, 14 insertions(+), 1 deletions(-) + +--- a/src/libgcc/config/ia64/unwind-ia64.c ++++ b/src/libgcc/config/ia64/unwind-ia64.c +@@ -26,6 +26,7 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2467,3 +2468,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +--- a/src/libgcc/unwind-compat.c ++++ b/src/libgcc/unwind-compat.c +@@ -23,6 +23,7 @@ + . */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -207,3 +208,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +--- a/src/libgcc/unwind-generic.h ++++ b/src/libgcc/unwind-generic.h +@@ -221,6 +221,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + static inline _Unwind_Ptr + _Unwind_GetDataRelBase (struct _Unwind_Context *_C) + { +@@ -237,6 +238,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif /* inhibit_libc */ + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); diff --git a/patches/cross-install-location.diff b/patches/cross-install-location.diff new file mode 100644 index 0000000..7de7572 --- /dev/null +++ b/patches/cross-install-location.diff @@ -0,0 +1,497 @@ +--- a/src/fixincludes/Makefile.in ++++ b/src/fixincludes/Makefile.in +@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Where our executable files go + itoolsdir = $(libexecsubdir)/install-tools + # Where our data files go +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -967,7 +967,7 @@ gcc_version := $(shell @get_gcc_base_ver + extra_darwin_ldflags_libgfortran = @extra_ldflags_libgfortran@ \ + $(am__append_1) + gfor_c_HEADERS = ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) + +@@ -982,12 +982,12 @@ libgfortran_la_LDFLAGS = -version-info ` + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) +-@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + @IEEE_SUPPORT_TRUE@nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \ + -I$(srcdir)/$(MULTISRCTOP)../gcc/config $(LIBQUADINCLUDE) \ +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -43,7 +43,7 @@ extra_darwin_ldflags_libgfortran += -Wl, + endif + + gfor_c_HEADERS = ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) +@@ -59,14 +59,14 @@ libgfortran_la_LDFLAGS = -version-info ` + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) + + if IEEE_SUPPORT +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + endif + +--- a/src/lto-plugin/Makefile.in ++++ b/src/lto-plugin/Makefile.in +@@ -343,7 +343,7 @@ with_libiberty = @with_libiberty@ + ACLOCAL_AMFLAGS = -I .. -I ../config + AUTOMAKE_OPTIONS = no-dependencies + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' + AM_LDFLAGS = @ac_lto_plugin_ldflags@ @ac_lto_plugin_extra_ldflags@ +--- a/src/lto-plugin/Makefile.am ++++ b/src/lto-plugin/Makefile.am +@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies + + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + target_noncanonical := @target_noncanonical@ +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -458,7 +458,7 @@ SUBDIRS = testsuite + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + abi_version = -fabi-version=4 + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \ +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -12,7 +12,7 @@ abi_version = -fabi-version=4 + config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) + +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -4970,7 +4970,7 @@ process_command (unsigned int decoded_op + GCC_EXEC_PREFIX is typically a directory name with a trailing + / (which is ignored by make_relative_prefix), so append a + program name. */ +- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL); ++ char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL); + gcc_libexec_prefix = get_relative_prefix (tmp_prefix, + standard_exec_prefix, + standard_libexec_prefix); +@@ -4996,15 +4996,15 @@ process_command (unsigned int decoded_op + { + int len = strlen (gcc_exec_prefix); + +- if (len > (int) sizeof ("/lib/gcc/") - 1 ++ if (len > (int) sizeof ("/lib/gcc-cross/") - 1 + && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1]))) + { +- temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1; ++ temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1; + if (IS_DIR_SEPARATOR (*temp) + && filename_ncmp (temp + 1, "lib", 3) == 0 + && IS_DIR_SEPARATOR (temp[4]) +- && filename_ncmp (temp + 5, "gcc", 3) == 0) +- len -= sizeof ("/lib/gcc/") - 1; ++ && filename_ncmp (temp + 5, "gcc-cross", 3) == 0) ++ len -= sizeof ("/lib/gcc-cross/") - 1; + } + + set_std_prefix (gcc_exec_prefix, len); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -679,9 +679,9 @@ libexecdir = @libexecdir@ + # -------- + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libsubdir = $(libdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libexecsubdir = $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which all plugin resources are installed + plugin_resourcesdir = $(libsubdir)/plugin + # Directory in which plugin headers are installed +@@ -2588,8 +2588,8 @@ default-rust.o: config/default-rust.cc + + DRIVER_DEFINES = \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ +- -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ ++ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \ + -DDEFAULT_TARGET_VERSION=\"$(version)\" \ + -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ +@@ -3372,7 +3372,7 @@ PREPROCESSOR_DEFINES = \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \ + -DPREFIX=\"$(prefix)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + + CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +--- a/src/libssp/Makefile.in ++++ b/src/libssp/Makefile.in +@@ -366,7 +366,7 @@ gcc_version := $(shell @get_gcc_base_ver + @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun + AM_CFLAGS = -Wall $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + libssp_la_SOURCES = \ + ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ +--- a/src/libssp/Makefile.am ++++ b/src/libssp/Makefile.am +@@ -37,7 +37,7 @@ AM_CFLAGS += $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la + + target_noncanonical = @target_noncanonical@ +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + + libssp_la_SOURCES = \ +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -472,7 +472,7 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + @BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \ + @BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/acoshq.c math/fmodq.c \ + @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -45,7 +45,7 @@ libquadmath_la_LDFLAGS = -version-info ` + libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + + nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + libquadmath_la_SOURCES = \ + math/x2y2m1q.c math/acoshq.c math/fmodq.c \ +--- a/src/libobjc/Makefile.in ++++ b/src/libobjc/Makefile.in +@@ -48,7 +48,7 @@ extra_ldflags_libobjc = @extra_ldflags_l + top_builddir = . + + libdir = $(exec_prefix)/lib +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + # Multilib support variables. + MULTISRCTOP = +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -70,7 +70,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub + + target_noncanonical:=@target_noncanonical@ + version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) + + # exeext should not be used because it's the *host* exeext. We're building +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -517,8 +517,8 @@ gcc_version := $(shell @get_gcc_base_ver + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -11,8 +11,8 @@ config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/libgcc/Makefile.in ++++ b/src/libgcc/Makefile.in +@@ -201,7 +201,7 @@ STRIP = @STRIP@ + STRIP_FOR_TARGET = $(STRIP) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ ++libsubdir = $(libdir)/gcc-cross/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ + # Used to install the shared libgcc. + slibdir = @slibdir@ + # Maybe used for DLLs on Windows targets. +--- a/src/libffi/include/Makefile.am ++++ b/src/libffi/include/Makefile.am +@@ -8,6 +8,6 @@ EXTRA_DIST=ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + toollibffi_HEADERS = ffi.h ffitarget.h +--- a/src/libffi/include/Makefile.in ++++ b/src/libffi/include/Makefile.in +@@ -327,7 +327,7 @@ EXTRA_DIST = ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + toollibffi_HEADERS = ffi.h ffitarget.h + all: all-am + +--- a/src/libcc1/Makefile.am ++++ b/src/libcc1/Makefile.am +@@ -40,7 +40,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) + +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + + if ENABLE_PLUGIN +--- a/src/libcc1/Makefile.in ++++ b/src/libcc1/Makefile.in +@@ -396,7 +396,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la + @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la +--- a/src/libsanitizer/Makefile.am ++++ b/src/libsanitizer/Makefile.am +@@ -1,6 +1,6 @@ + ACLOCAL_AMFLAGS = -I .. -I ../config + +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + + nodist_saninclude_HEADERS = + +--- a/src/libsanitizer/Makefile.in ++++ b/src/libsanitizer/Makefile.in +@@ -362,7 +362,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + nodist_saninclude_HEADERS = $(am__append_1) + @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ + @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -261,6 +261,8 @@ AC_SUBST(SPEC_PHOBOS_DEPS) + libtool_VERSION=6:0:0 + AC_SUBST(libtool_VERSION) + ++# trigger rebuild of the configure file ++ + # Set default flags (after DRUNTIME_WERROR!) + if test -z "$GDCFLAGS"; then + GDCFLAGS="-g -O2" +--- a/src/libphobos/m4/druntime.m4 ++++ b/src/libphobos/m4/druntime.m4 +@@ -114,6 +114,7 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES], + + # Default case for install directory for D sources files. + gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d' ++ gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${gcc_version}/include/d + AC_SUBST(gdc_include_dir) + ]) + +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -933,7 +933,7 @@ toolexeclibdir = $(ADA_RTL_OBJ_DIR) + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib +-ADA_RTL_DSO_DIR = $(toolexeclibdir) ++ADA_RTL_DSO_DIR = $(subst /gcc/,/gcc-cross/,$(toolexeclibdir)) + + # Special flags + +--- a/src/c++tools/Makefile.in ++++ b/src/c++tools/Makefile.in +@@ -21,7 +21,7 @@ bindir := @bindir@ + libexecdir := @libexecdir@ + target_noncanonical := @target_noncanonical@ + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir := $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + INSTALL := @INSTALL@ + INSTALL_PROGRAM := @INSTALL_PROGRAM@ + INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s +--- a/src/libgm2/libm2cor/Makefile.am ++++ b/src/libgm2/libm2cor/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2cor/Makefile.in ++++ b/src/libgm2/libm2cor/Makefile.in +@@ -400,7 +400,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2iso/Makefile.am ++++ b/src/libgm2/libm2iso/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + # was slibdir = @slibdir@ + slibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +--- a/src/libgm2/libm2iso/Makefile.in ++++ b/src/libgm2/libm2iso/Makefile.in +@@ -426,7 +426,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2log/Makefile.am ++++ b/src/libgm2/libm2log/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2log/Makefile.in ++++ b/src/libgm2/libm2log/Makefile.in +@@ -389,7 +389,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2min/Makefile.am ++++ b/src/libgm2/libm2min/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2min/Makefile.in ++++ b/src/libgm2/libm2min/Makefile.in +@@ -379,7 +379,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) +--- a/src/libgm2/libm2pim/Makefile.am ++++ b/src/libgm2/libm2pim/Makefile.am +@@ -27,7 +27,7 @@ MAKEOVERRIDES= + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- a/src/libgm2/libm2pim/Makefile.in ++++ b/src/libgm2/libm2pim/Makefile.in +@@ -414,7 +414,7 @@ MAKEOVERRIDES = + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) diff --git a/patches/cross-no-locale-include.diff b/patches/cross-no-locale-include.diff new file mode 100644 index 0000000..c728316 --- /dev/null +++ b/patches/cross-no-locale-include.diff @@ -0,0 +1,17 @@ +# DP: Don't add /usr/local/include for cross compilers. Assume that +# DP: /usr/include is ready for multiarch, but not /usr/local/include. + +--- a/src/gcc/cppdefault.cc ++++ b/src/gcc/cppdefault.cc +@@ -66,8 +66,11 @@ + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++#if 0 ++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif ++#endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, + #endif diff --git a/patches/cuda-float128.diff b/patches/cuda-float128.diff new file mode 100644 index 0000000..655021f --- /dev/null +++ b/patches/cuda-float128.diff @@ -0,0 +1,46 @@ +# Mask __float128 types from CUDA compilers (LP: #1717257) + +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -514,7 +514,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + : public true_type { }; + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + template<> + struct __is_floating_point_helper<__float128> + : public true_type { }; +--- a/src/libstdc++-v3/include/bits/std_abs.h ++++ b/src/libstdc++-v3/include/bits/std_abs.h +@@ -137,7 +137,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { return __gnu_cxx::__bfloat16_t(__builtin_fabsf(__x)); } + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __extension__ inline _GLIBCXX_CONSTEXPR + __float128 + abs(__float128 __x) +--- a/src/libstdc++-v3/include/bits/stl_algobase.h ++++ b/src/libstdc++-v3/include/bits/stl_algobase.h +@@ -1058,7 +1058,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER + __size_to_integer(double __n) { return (long long)__n; } + inline _GLIBCXX_CONSTEXPR long long + __size_to_integer(long double __n) { return (long long)__n; } +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __extension__ inline _GLIBCXX_CONSTEXPR long long + __size_to_integer(__float128 __n) { return (long long)__n; } + #endif +--- a/src/libstdc++-v3/include/std/numbers ++++ b/src/libstdc++-v3/include/std/numbers +@@ -226,7 +226,7 @@ __glibcxx_numbers (_Float128, F128); + __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16); + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + __glibcxx_numbers (__float128, Q); + #endif // USE_FLOAT128 + diff --git a/patches/disable-gdc-tests.diff b/patches/disable-gdc-tests.diff new file mode 100644 index 0000000..99e7837 --- /dev/null +++ b/patches/disable-gdc-tests.diff @@ -0,0 +1,17 @@ +# DP: Disable D tests, hang on many buildds + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -306,9 +306,9 @@ d.srcman: doc/gdc.1 + # check targets. However, our DejaGNU framework requires 'check-gdc' as its + # entry point. We feed the former to the latter here. + check-d: check-gdc +-lang_checks += check-gdc +-lang_checks_parallelized += check-gdc +-check_gdc_parallelize = 128 ++#lang_checks += check-gdc ++#lang_checks_parallelized += check-gdc ++#check_gdc_parallelize = 128 + + # No D-specific selftests. + selftest-d: diff --git a/patches/dwarf5-revert-default-doc.diff b/patches/dwarf5-revert-default-doc.diff new file mode 100644 index 0000000..c8a6e4b --- /dev/null +++ b/patches/dwarf5-revert-default-doc.diff @@ -0,0 +1,14 @@ +# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -9630,6 +9630,9 @@ version for most targets is 5 (with the + Darwin/Mac OS X, which default to version 2, and AIX, which defaults + to version 4). + ++NOTE: On Ubuntu release, where GCC 11 is not used as the default (21.04 ++and earlier releases), it defaults to version 4. ++ + Note that with DWARF Version 2, some ports require and always + use some non-conflicting DWARF 3 extensions in the unwind tables. + diff --git a/patches/dwarf5-revert-default.diff b/patches/dwarf5-revert-default.diff new file mode 100644 index 0000000..5d596c2 --- /dev/null +++ b/patches/dwarf5-revert-default.diff @@ -0,0 +1,24 @@ +# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. + +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -3353,7 +3353,7 @@ Common Driver JoinedOrMissing RejectNega + Generate debug information in default version of DWARF format. + + gdwarf- +-Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative ++Common Driver Joined UInteger Var(dwarf_version) Init(4) RejectNegative + Generate debug information in DWARF v2 (or later) format. + + gdwarf32 +--- a/src/gcc/defaults.h ++++ b/src/gcc/defaults.h +@@ -1444,7 +1444,7 @@ see the files COPYING3 and COPYING.RUNTI + /* When generating dwarf info, the default standard version we'll honor + and advertise in absence of -gdwarf- on the command line. */ + #ifndef DWARF_VERSION_DEFAULT +-#define DWARF_VERSION_DEFAULT 5 ++#define DWARF_VERSION_DEFAULT 4 + #endif + + #ifndef USED_FOR_TARGET diff --git a/patches/g++-multiarch-incdir.diff b/patches/g++-multiarch-incdir.diff new file mode 100644 index 0000000..2914213 --- /dev/null +++ b/patches/g++-multiarch-incdir.diff @@ -0,0 +1,109 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -1048,7 +1048,7 @@ endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1379,7 +1379,7 @@ parallel_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1276,6 +1276,7 @@ FLAGS_TO_PASS = \ + "prefix=$(prefix)" \ + "local_prefix=$(local_prefix)" \ + "gxx_include_dir=$(gcc_gxx_include_dir)" \ ++ "gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ + "gxx_libcxx_include_dir=$(gcc_gxx_libcxx_include_dir)" \ + "build_tooldir=$(build_tooldir)" \ + "gcc_tooldir=$(gcc_tooldir)" \ +@@ -2015,6 +2016,14 @@ gnat_install_lib = @gnat_install_lib@ + # host overrides + -include $(xmake_file) + ++# Directory in which the compiler finds target-dependent g++ includes. ++ifneq ($(call if_multiarch,non-empty),) ++ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(version) ++else ++ gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) ++endif ++ ++ + # all-tree.def includes all the tree.def files. + all-tree.def: s-alltree; @true + s-alltree: Makefile +@@ -3407,7 +3416,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DGPLUSPLUS_LIBCXX_INCLUDE_DIR=\"$(gcc_gxx_libcxx_include_dir)\" \ + -DGPLUSPLUS_LIBCXX_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_libcxx_include_dir_add_sysroot) \ +--- a/src/gcc/cppdefault.cc ++++ b/src/gcc/cppdefault.cc +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +--- a/src/gcc/incpath.cc ++++ b/src/gcc/incpath.cc +@@ -164,6 +164,18 @@ add_standard_paths (const char *sysroot, + } + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); + } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } +@@ -229,7 +241,16 @@ add_standard_paths (const char *sysroot, + free (str); + continue; + } +- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); diff --git a/patches/ga68-texinfo.diff b/patches/ga68-texinfo.diff new file mode 100644 index 0000000..b02a3eb --- /dev/null +++ b/patches/ga68-texinfo.diff @@ -0,0 +1,28 @@ +--- a/src/gcc/algol68/ga68.texi ++++ b/src/gcc/algol68/ga68.texi +@@ -72,6 +72,25 @@ man page gfdl(7). + @versionsubtitle + @author Jose E. Marchesi + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @page + @vskip 0pt plus 1filll + @sp 1 diff --git a/patches/gcc-arm-disable-guality-tests.diff b/patches/gcc-arm-disable-guality-tests.diff new file mode 100644 index 0000000..b3c38be --- /dev/null +++ b/patches/gcc-arm-disable-guality-tests.diff @@ -0,0 +1,44 @@ +# DP: Don't run some tests from the guality test suite on armhf. These fail +# DP: on every target, but seem to hang on the buildds occasionally on armhf. + +--- a/src/gcc/testsuite/gcc.dg/guality/guality.exp ++++ b/src/gcc/testsuite/gcc.dg/guality/guality.exp +@@ -99,7 +99,37 @@ if {[check_guality " + } + } + +- gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" "" ++ # FIXME: these seem to hang on the buildds, and gdb always times out ++ # trying to run them. ++ if { [istarget arm-*-linux-gnueabi*] } { ++ set guality [list] ++ foreach file [lsort [glob $srcdir/$subdir/*.c]] { ++ switch -glob -- [file tail $file] { ++ pr36728-*.c - ++ pr41616-1.c - ++ pr43051-1.c - ++ pr54200.c - ++ pr54519-*.c - ++ pr54551.c - ++ pr54693-2.c - ++ pr54796.c - ++ pr56154-1.c - ++ pr58791-3.c - ++ pr58791-5.c - ++ pr68860-1.c - ++ pr68860-2.c - ++ pr78726.c - ++ pr89528.c - ++ pr90074.c - ++ pr90716.c { } ++ * { lappend guality $file } ++ } ++ } ++ } { ++ set guality [lsort [glob $srcdir/$subdir/*.c]] ++ } ++ ++ gcc-dg-runtest $guality "" "" + gcc-dg-runtest $general "" "-Wc++-compat" + set-torture-options \ + [list "-O0" "-Og"] \ diff --git a/patches/gcc-as-needed-gold.diff b/patches/gcc-as-needed-gold.diff new file mode 100644 index 0000000..dcc2aab --- /dev/null +++ b/patches/gcc-as-needed-gold.diff @@ -0,0 +1,85 @@ +# DP: Use --push-state/--pop-state for gold as well when linking libtsan. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -780,10 +780,10 @@ proper position among the other output f + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ +- " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libasan:--push-state --no-as-needed}" \ + " -lasan " \ + " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libasan:--pop-state}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -819,10 +819,10 @@ proper position among the other output f + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libtsan:--push-state --no-as-needed}" \ + " -ltsan " \ + " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libtsan:--pop-state}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -840,10 +840,10 @@ proper position among the other output f + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ +- " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-liblsan:--push-state --no-as-needed}" \ + " -llsan " \ + " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-liblsan:--pop-state}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -859,10 +859,10 @@ proper position among the other output f + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC + #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " %{!static-libubsan:--push-state --no-as-needed}" \ + " -lubsan " \ + " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libubsan:--pop-state}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI + #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libasan:--push-state --no-as-needed -lasan --pop-state}" + #undef LIBHWASAN_EARLY_SPEC + #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ + "%{static-libhwasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:--push-state --no-as-needed -lhwasan --pop-state}" + #undef LIBTSAN_EARLY_SPEC + #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:--push-state --no-as-needed -ltsan --pop-state}" + #undef LIBLSAN_EARLY_SPEC + #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ + "%{static-liblsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:--push-state --no-as-needed -llsan --pop-state}" + #endif + + #undef TARGET_F951_OPTIONS diff --git a/patches/gcc-as-needed.diff b/patches/gcc-as-needed.diff new file mode 100644 index 0000000..299b828 --- /dev/null +++ b/patches/gcc-as-needed.diff @@ -0,0 +1,284 @@ +# DP: On linux targets pass --as-needed by default to the linker, but always +# DP: link the sanitizer libraries with --no-as-needed. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -779,8 +779,11 @@ proper position among the other output f + #ifdef LIBASAN_EARLY_SPEC + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \ +- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -lasan " \ ++ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -815,8 +818,11 @@ proper position among the other output f + #ifdef LIBTSAN_EARLY_SPEC + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \ +- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -ltsan " \ ++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -833,8 +839,11 @@ proper position among the other output f + #ifdef LIBLSAN_EARLY_SPEC + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \ +- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -llsan " \ ++ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -849,8 +858,11 @@ proper position among the other output f + #define STATIC_LIBUBSAN_LIBS \ + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC +-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \ +- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ ++ " -lubsan " \ ++ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI + #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBHWASAN_EARLY_SPEC + #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ + "%{static-libhwasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBTSAN_EARLY_SPEC + #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBLSAN_EARLY_SPEC + #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ + "%{static-liblsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #endif + + #undef TARGET_F951_OPTIONS +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -40,6 +40,7 @@ + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC " --hash-style=gnu \ ++#define LINK_SPEC " --hash-style=gnu %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -378,13 +378,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{!fsanitize=*:--as-needed} %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -71,6 +71,7 @@ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + --hash-style=gnu \ ++ %{!fsanitize=*:--as-needed} \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/mips/gnu-user.h ++++ b/src/gcc/config/mips/gnu-user.h +@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC "\ + %{G*} %{EB} %{EL} %{mips*} %{shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -49,6 +49,7 @@ along with GCC; see the file COPYING3. + + #define LINK_SPEC "\ + -hash-style=gnu \ ++%{!fsanitize=*:--as-needed} \ + -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + -X \ +--- a/src/gcc/config/m68k/linux.h ++++ b/src/gcc/config/m68k/linux.h +@@ -78,6 +78,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC "-m m68kelf %{shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- a/src/gcc/config/sh/linux.h ++++ b/src/gcc/config/sh/linux.h +@@ -72,6 +72,7 @@ along with GCC; see the file COPYING3. + #undef SUBTARGET_LINK_SPEC + #define SUBTARGET_LINK_SPEC \ + "%{shared:-shared} \ ++ %{!fsanitize=*:--as-needed} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ +--- a/src/gcc/config/pa/pa-linux.h ++++ b/src/gcc/config/pa/pa-linux.h +@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC "\ ++ %{!fsanitize=*:--as-needed} \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/loongarch/gnu-user.h ++++ b/src/gcc/config/loongarch/gnu-user.h +@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC \ + "%{G*} %{shared} -m " GNU_USER_LINK_EMULATION \ ++ " %{!fsanitize=*:--as-needed} " \ + "%{!shared: %{static} " \ + "%{!static: %{!static-pie: %{rdynamic:-export-dynamic} " \ + "-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} " \ +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -90,7 +90,7 @@ along with GCC; see the file COPYING3. + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -98,7 +98,7 @@ along with GCC; see the file COPYING3. + %{static:-static}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ diff --git a/patches/gcc-auto-build.diff b/patches/gcc-auto-build.diff new file mode 100644 index 0000000..75c3d00 --- /dev/null +++ b/patches/gcc-auto-build.diff @@ -0,0 +1,13 @@ +# DP: Fix cross building a native compiler. + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2184,7 +2184,7 @@ else + # Clearing GMPINC is necessary to prevent host headers being + # used by the build compiler. Defining GENERATOR_FILE stops + # system.h from including gmp.h. +- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ ++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ + CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ + LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ + GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ diff --git a/patches/gcc-distro-specs-ubuntu-doc.diff b/patches/gcc-distro-specs-ubuntu-doc.diff new file mode 100644 index 0000000..b9936fc --- /dev/null +++ b/patches/gcc-distro-specs-ubuntu-doc.diff @@ -0,0 +1,101 @@ +# DP: Document distro specific compiler flags turned on by default + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -8868,6 +8868,10 @@ to turn on such checking by using @optio + and is equivalent to @option{-Wbidi-chars=unpaired,ucn}, if no previous + @option{-Wbidi-chars=any} was specified. + ++NOTE: In Ubuntu 25.10 and later versions, @option{-Wbidi-chars} is ++enabled by default for C, C++, ObjC, ObjC++, unless ++@option{-Wno-bidi-chars} or @option{-Wbidi-chars=none} is found. ++ + @opindex Wno-bool-compare + @opindex Wbool-compare + @item -Wbool-compare +@@ -12831,6 +12835,19 @@ also turns on the following optimization + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + ++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2}, ++in Ubuntu 24.04 and later versions, @option{-D_FORTIFY_SOURCE=3}, is ++set by default, and is activated when @option{-O} is set to 2 or higher. ++This enables additional compile-time and run-time checks for several libc ++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or ++@option{-D_FORTIFY_SOURCE=0}. ++ ++NOTE: In Debian 13 and Ubuntu 24.04 and later versions, ++@option{-D_TIME_BITS=64} together with @option{-D_FILE_OFFSET_BITS=64} is ++set by default on the 32bit architectures @samp{armel}, @samp{armhf}, ++@samp{hppa}, @samp{m68k}, @samp{mips}, @samp{mipsel}, @samp{powerpc} and ++@samp{sh4}. ++ + @opindex O3 + @item -O3 + Optimize yet more. @option{-O3} turns on all optimizations specified +@@ -16581,6 +16598,9 @@ value of a shared integer constant. + The minimum size of buffers (i.e.@: arrays) that receive stack smashing + protection when @option{-fstack-protector} is used. + ++This default before Ubuntu 10.10 was "8". Currently it is "4", to increase ++the number of functions protected by the stack protector. ++ + @item min-size-for-stack-sharing + The minimum size of variables taking part in stack slot sharing when not + optimizing. +@@ -18489,6 +18509,10 @@ Currently the x86 GNU/Linux target provi + on Intel Control-flow Enforcement Technology (CET) which works for + i686 processor or newer. + ++NOTE: In Ubuntu 19.10 and later versions, @option{-fcf-protection} ++is enabled by default for C, C++, ObjC, ObjC++, if none of ++@option{-fno-cf-protection} nor @option{-fcf-protection=*} are found. ++ + @opindex fharden-compares + @item -fharden-compares + For every logical test that survives gimple optimizations and is +@@ -18644,6 +18668,11 @@ references to local frame addresses. On + allocated on the stack are considered, optimized away variables or variables + allocated in registers don't count. + ++NOTE: In Ubuntu 14.10 and later versions, ++@option{-fstack-protector-strong} is enabled by default for C, ++C++, ObjC, ObjC++, if none of @option{-fno-stack-protector}, ++@option{-nostdlib}, nor @option{-ffreestanding} are found. ++ + @opindex fstack-protector-explicit + @item -fstack-protector-explicit + Like @option{-fstack-protector} but only protects those functions which +@@ -18707,6 +18736,10 @@ allocations. @option{-fstack-clash-prot + protection for static stack allocations if the target supports + @option{-fstack-check=specific}. + ++NOTE: In Ubuntu 19.10 and later versions, ++@option{-fstack-clash-protection} is enabled by default for C, ++C++, ObjC, ObjC++, unless @option{-fno-stack-clash-protection} is found. ++ + @opindex fstack-limit-register + @opindex fstack-limit-symbol + @opindex fno-stack-limit +@@ -19470,6 +19503,9 @@ For example, @option{-Wl,-Map,output.map + linker. When using the GNU linker, you can also get the same effect with + @option{-Wl,-Map=output.map}. + ++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option ++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. ++ + @opindex u + @item -u @var{symbol} + Pretend the symbol @var{symbol} is undefined, to force linking of +@@ -20323,6 +20359,11 @@ zero initialization of padding bits of o + the padding in between @code{b.a} and @code{b.b} (if any) and + tail padding in the structure (if any). + ++NOTE: In Ubuntu 25.10 and later versions, ++@option{-fzero-init-padding-bits=all} is enabled by default for C, ++C++, ObjC, ObjC++, unless @option{-fzero-init-padding-bits=standard} ++is found. ++ + @end table + + @node Developer Options diff --git a/patches/gcc-distro-specs.diff b/patches/gcc-distro-specs.diff new file mode 100644 index 0000000..447daef --- /dev/null +++ b/patches/gcc-distro-specs.diff @@ -0,0 +1,366 @@ +# DP: Add empty distro and hardening specs + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -27,6 +27,11 @@ CC recognizes how to compile each input + Once it knows which kind of compilation to perform, the procedure for + compilation is specified by a string called a "spec". */ + ++/* Inject some default compilation flags which are used as the default. ++ Done by the packaging build system. Should that be done in the headers ++ gcc/config//*.h instead? */ ++#include "distro-defaults.h" ++ + #define INCLUDE_STRING + #include "config.h" + #include "system.h" +@@ -991,6 +996,148 @@ proper position among the other output f + #define LINK_GCC_C_SEQUENCE_SPEC "%G %{!nolibc:%L %G}" + #endif + ++/* Generate full unwind information covering all program points. ++ Only needed for some architectures. */ ++#ifndef ASYNC_UNWIND_SPEC ++# ifdef DIST_DEFAULT_ASYNC_UNWIND ++# define ASYNC_UNWIND_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}" ++# else ++# define ASYNC_UNWIND_SPEC "" ++# endif ++#endif ++ ++/* Turn on stack protector. ++ */ ++#ifndef SSP_DEFAULT_SPEC ++# ifdef DIST_DEFAULT_SSP ++# ifdef DIST_DEFAULT_SSP_STRONG ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}}}" ++# else ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}}" ++# endif ++# else ++# define SSP_DEFAULT_SPEC "" ++# endif ++#endif ++ ++/* Turn on -Wformat -Wformat-security by default for C, C++, ++ ObjC, ObjC++. */ ++#ifndef FORMAT_SECURITY_SPEC ++# ifdef DIST_DEFAULT_FORMAT_SECURITY ++# define FORMAT_SECURITY_SPEC " %{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" ++# else ++# define FORMAT_SECURITY_SPEC "" ++# endif ++#endif ++ ++/* Enable -fstack-clash-protection by default. Only available ++ on some targets. */ ++#ifndef STACK_CLASH_SPEC ++# ifdef DIST_DEFAULT_STACK_CLASH ++# define STACK_CLASH_SPEC " %{!fno-stack-clash-protection:-fstack-clash-protection}" ++# else ++# define STACK_CLASH_SPEC "" ++# endif ++#endif ++ ++/* Enable code instrumentation of control-flow transfers. ++ Available on x86 and x86_64. */ ++#ifndef CF_PROTECTION_SPEC ++# ifdef DIST_DEFAULT_CF_PROTECTION ++# define CF_PROTECTION_SPEC " %{!m16:%{!m32:%{!fcf-protection*:%{!fno-cf-protection:-fcf-protection}}}}" ++# else ++# define CF_PROTECTION_SPEC "" ++# endif ++#endif ++ ++/* Enable -D_TIME_BITS=64, only available on some 32bit targets. */ ++#ifndef TIMET64_SPEC ++# ifdef DIST_DEFAULT_TIMET64 ++# define TIMET64_SPEC " %{!m16:%{!m64:%{!D_DISTRO_EVADE_TIME_BITS:%{!D_TIME_BITS=*:%{!U_TIME_BITS:-D_TIME_BITS=64%{!D_FILE_OFFSET_BITS=*:%{!U_FILE_OFFSET_BITS: -D_FILE_OFFSET_BITS=64}}}}}}}" ++# else ++# define TIMET64_SPEC "" ++# endif ++#endif ++ ++/* Enable -D_FORTIFY_SOURCE= */ ++#ifndef FORTIFY_SOURCE_SPEC ++# ifdef DIST_DEFAULT_FORTIFY_SOURCE ++# define FORTIFY_SOURCE_SPEC " %{!O0:%{O*:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=" DIST_DEFAULT_FORTIFY_SOURCE_S "}}}}" ++# else ++# define FORTIFY_SOURCE_SPEC "" ++# endif ++#endif ++ ++#ifndef BIND_NOW_SPEC ++# if defined(DIST_DEFAULT_BIND_NOW) && !defined(ACCEL_COMPILER) ++# define BIND_NOW_SPEC " -z now" ++# else ++# define BIND_NOW_SPEC "" ++# endif ++#endif ++ ++#ifndef RELRO_SPEC ++# ifdef DIST_DEFAULT_RELRO ++# define RELRO_SPEC " -z relro " ++# else ++# define RELRO_SPEC "" ++# endif ++#endif ++ ++/* Guarantee zero initialization of padding bits in automatic variable ++ initializers. */ ++#ifndef INIT_ZERO_ALL_SPEC ++# ifdef DIST_DEFAULT_INIT_ZERO_ALL ++# define INIT_ZERO_ALL_SPEC " %{!fzero-init-padding-bits*:-fzero-init-padding-bits=all}" ++# else ++# define INIT_ZERO_ALL_SPEC "" ++# endif ++#endif ++ ++/* Emit a warning on unicode bidi characters which can be used to hide ++ malicious code from human reviewers. */ ++#ifndef BIDI_WARNING_SPEC ++# ifdef DIST_DEFAULT_BIDI_WARNING ++# define BIDI_WARNING_SPEC " %{!Wno-bidi-chars:%{!Wbidi-chars*:-Wbidi-chars=any}}" ++# else ++# define BIDI_WARNING_SPEC "" ++# endif ++#endif ++ ++/* Enable sframe support by default. */ ++#ifndef SFRAME_SPEC ++# ifdef DIST_DEFAULT_SFRAME ++# define SFRAME_SPEC " %{!m16:%{!m32:%{!mx32:%{!ffreestanding:--gsframe}}}}" ++# else ++# define SFRAME_SPEC "" ++# endif ++#endif ++ ++/* Don't enable any of those for the offload compilers, ++ unsupported. */ ++#if !defined(DISTRO_DEFAULT_ASM_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_ASM_SPEC SFRAME_SPEC ++#else ++# define DISTRO_DEFAULT_ASM_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_CPP_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_CPP_SPEC TIMET64_SPEC FORTIFY_SOURCE_SPEC ++#else ++# define DISTRO_DEFAULT_CPP_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_SPEC ASYNC_UNWIND_SPEC SSP_DEFAULT_SPEC \ ++ FORMAT_SECURITY_SPEC STACK_CLASH_SPEC CF_PROTECTION_SPEC \ ++ INIT_ZERO_ALL_SPEC BIDI_WARNING_SPEC ++#else ++# define DISTRO_DEFAULT_SPEC "" ++#endif ++#if !defined(DISTRO_DEFAULT_LINK_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_LINK_SPEC RELRO_SPEC ++#else ++# define DISTRO_DEFAULT_LINK_SPEC "" ++#endif ++ + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ +@@ -1047,7 +1194,7 @@ proper position among the other output f + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #ifndef LD_PIE_SPEC +-#define LD_PIE_SPEC "-pie" ++#define LD_PIE_SPEC "-pie" BIND_NOW_SPEC + #endif + #else + #define LD_PIE_SPEC "" +@@ -1164,6 +1311,7 @@ proper position among the other output f + "%{flto|flto=*:% + + * gcc.c (offload_targets_default): New variable. + (process_command): Set it if -foffload is defaulted. + (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 + into environment if -foffload has been defaulted. + * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. + (compile_offload_image): If OFFLOAD_TARGET_DEFAULT + is in the environment, don't fail if corresponding mkoffload + can't be found. + (compile_images_for_offload_targets): Likewise. Free and clear + offload_names if no valid offload is found. +libgomp/ + * target.c (gomp_load_plugin_for_device): If a plugin can't be + dlopened, assume it has no devices silently. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -324,6 +324,10 @@ static const char *spec_host_machine = D + + static char *offload_targets = NULL; + ++/* Set to true if -foffload has not been used and offload_targets ++ is set to the configured in default. */ ++static bool offload_targets_default; ++ + /* Nonzero if cross-compiling. + When -b is used, the value comes from the `specs' file. */ + +@@ -5058,7 +5062,10 @@ process_command (unsigned int decoded_op + /* If the user didn't specify any, default to all configured offload + targets. */ + if (ENABLE_OFFLOADING && offload_targets == NULL) +- handle_foffload_option (OFFLOAD_TARGETS); ++ { ++ handle_foffload_option (OFFLOAD_TARGETS); ++ offload_targets_default = true; ++ } + + /* Handle -gtoggle as it would later in toplev.c:process_options to + make the debug-level-gt spec function work as expected. */ +@@ -8758,6 +8765,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () + obstack_grow (&collect_obstack, offload_targets, + strlen (offload_targets) + 1); + xputenv (XOBFINISH (&collect_obstack, char *)); ++ if (offload_targets_default) ++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); + } + + free (offload_targets); +--- a/src/gcc/lto-wrapper.c ++++ b/src/gcc/lto-wrapper.c +@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. + /* Environment variable, used for passing the names of offload targets from GCC + driver to lto-wrapper. */ + #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" ++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" + + /* By default there is no special suffix for target executables. */ + #ifdef TARGET_EXECUTABLE_SUFFIX +@@ -907,6 +908,12 @@ compile_offload_image (const char *targe + break; + } + ++ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV)) ++ { ++ free_array_of_ptrs ((void **) paths, n_paths); ++ return NULL; ++ } ++ + if (!compiler) + fatal_error (input_location, + "could not find %s in %s (consider using %<-B%>)", +@@ -976,6 +983,7 @@ compile_images_for_offload_targets (unsi + if (!target_names) + return; + unsigned num_targets = parse_env_var (target_names, &names, NULL); ++ int next_name_entry = 0; + + const char *compiler_path = getenv ("COMPILER_PATH"); + if (!compiler_path) +@@ -986,13 +994,19 @@ compile_images_for_offload_targets (unsi + offload_names = XCNEWVEC (char *, num_targets + 1); + for (unsigned i = 0; i < num_targets; i++) + { +- offload_names[i] ++ offload_names[next_name_entry] + = compile_offload_image (names[i], compiler_path, in_argc, in_argv, + compiler_opts, compiler_opt_count, + linker_opts, linker_opt_count); +- if (!offload_names[i]) +- fatal_error (input_location, +- "problem with building target image for %s", names[i]); ++ if (!offload_names[next_name_entry]) ++ continue; ++ next_name_entry++; ++ } ++ ++ if (next_name_entry == 0) ++ { ++ free (offload_names); ++ offload_names = NULL; + } + + out: +--- a/src/libgomp/target.c ++++ b/src/libgomp/target.c +@@ -3173,7 +3173,7 @@ gomp_load_plugin_for_device (struct gomp + + void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); + if (!plugin_handle) +- goto dl_fail; ++ return 0; + + /* Check if all required functions are available in the plugin and store + their handlers. None of the symbols can legitimately be NULL, diff --git a/patches/gcc-force-cross-layout.diff b/patches/gcc-force-cross-layout.diff new file mode 100644 index 0000000..34df429 --- /dev/null +++ b/patches/gcc-force-cross-layout.diff @@ -0,0 +1,49 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3687,7 +3687,7 @@ target_configargs="$target_configargs ${ + # native. However, it would be better to use other mechanisms to make the + # sorts of decisions they want to make on this basis. Please consider + # this option to be deprecated. FIXME. +-if test x${is_cross_compiler} = xyes ; then ++if test x${is_cross_compiler} = xyes || test x${FORCE_CROSS_LAYOUT} = xyes; then + target_configargs="--with-cross-host=${host_noncanonical} ${target_configargs}" + fi + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2537,14 +2537,14 @@ SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADE + BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR) + + if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x || +- test x$build != x$host || test "x$with_build_sysroot" != x; then ++ test x$build != x$host || test "x$with_build_sysroot" != x || test x$FORCE_CROSS_LAYOUT = xyes; then + if test "x$with_build_sysroot" != x; then + BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' + else + BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)' + fi + +- if test x$host != x$target ++ if test x$host != x$target || test x$FORCE_CROSS_LAYOUT = xyes + then + CROSS="-DCROSS_DIRECTORY_STRUCTURE" + ALL=all.cross +@@ -7577,14 +7577,14 @@ AC_SUBST_FILE(language_hooks) + + # Echo link setup. + if test x${build} = x${host} ; then +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build a native compiler for ${target}." 1>&2 + else + echo "Links are now set up to build a cross-compiler" 1>&2 + echo " from ${host} to ${target}." 1>&2 + fi + else +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 + echo " for ${target}." 1>&2 + else diff --git a/patches/gcc-gfdl-build.diff b/patches/gcc-gfdl-build.diff new file mode 100644 index 0000000..456f9a0 --- /dev/null +++ b/patches/gcc-gfdl-build.diff @@ -0,0 +1,39 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2949,32 +2949,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi + # \r is not portable to Solaris tr, therefore we have a special + # case for ASCII. We use \r for other encodings like EBCDIC. + s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in +- $(RUN_GEN) build/genhooks$(build_exeext) -d \ +- $(srcdir)/doc/tm.texi.in > tmp-tm.texi +- case `echo X|tr X '\101'` in \ +- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ +- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ +- esac +- mv tmp2-tm.texi tmp-tm.texi +- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi +- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ +- $(STAMP) $@; \ +- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ +- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ +- ); then \ +- echo >&2 ; \ +- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +- false; \ +- else \ +- echo >&2 ; \ +- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ +- echo new text in $(objdir)/tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ +- false; \ +- fi ++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++ $(STAMP) $@ + + $(GIMPLE_MATCH_PD_SEQ_SRC): s-gimple-match gimple-match-head.cc; @true + gimple-match-auto.h: s-gimple-match; @true diff --git a/patches/gcc-hash-style-gnu.diff b/patches/gcc-hash-style-gnu.diff new file mode 100644 index 0000000..f3a03aa --- /dev/null +++ b/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,164 @@ +# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64, +# DP: i386, powerpc, ppc64, riscv64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu. + +2018-03-02 Aurelien Jarno + + * config/riscv/linux.h (LINK_SPEC): Add --hash-style=gnu. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -378,13 +378,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -70,6 +70,7 @@ + %{rdynamic:-export-dynamic} \ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ ++ --hash-style=gnu \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -39,6 +39,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=gnu \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. + "%{mabi=ilp32:_ilp32}" + + #define LINK_SPEC "\ ++-hash-style=gnu \ + -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + -X \ diff --git a/patches/gcc-ice-apport.diff b/patches/gcc-ice-apport.diff new file mode 100644 index 0000000..aa6462c --- /dev/null +++ b/patches/gcc-ice-apport.diff @@ -0,0 +1,39 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -8171,13 +8171,16 @@ do_report_bug (const char **new_argv, co + if (status == ATTEMPT_STATUS_SUCCESS) + { + const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); ++ const bool gcc_apport ++ = !env.get ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK); + + if (gcc_dump) + fnotice (stderr, + "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", + *out_file); +- if (gcc_dump) ++ if (gcc_dump || gcc_apport) + { + char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); + +@@ -8191,6 +8194,15 @@ do_report_bug (const char **new_argv, co + fflush (stderr); + free (cmd); + } ++ if (gcc_apport) ++ { ++ char *cmd ++ = XNEWVEC (char, 50 + strlen (*out_file) + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", new_argv[0], ++ *out_file); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-ice-dump.diff b/patches/gcc-ice-dump.diff new file mode 100644 index 0000000..2bc029e --- /dev/null +++ b/patches/gcc-ice-dump.diff @@ -0,0 +1,111 @@ +# DP: For ICEs, dump the preprocessed source file to stderr +# DP: when in a distro build environment. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -3168,6 +3168,61 @@ access_check (const char *name, int mode + return access (name, mode); + } + ++/* Check whether options line contains the specified variable, and ++ optionally set to the supplied value */ ++ ++static bool ++check_options (const char *options, const char *var = nullptr, ++ const char *val = nullptr) ++{ ++ if (!var) ++ return false; ++ ++ const char *const var_found = strstr (options, var); ++ if (!var_found) ++ return false; ++ ++ if (val) ++ { ++ if (var_found[strlen (var)] != '=') ++ return false; ++ ++ const char *var_end = strchr (var_found, ' '); ++ if (!var_end) ++ var_end = strchr (var_found, '\0'); ++ ++ const char *const val_found = strstr (var_found, val); ++ if (!val_found || val_found > var_end) ++ return false; ++ ++ const char c0 = val_found[-1]; ++ const char c1 = val_found[strlen (val)]; ++ if ((c0 == '=' || c0 == ',') && (c1 == ',' || c1 == ' ' || c1 == '\0')) ++ return true; ++ } ++ else ++ { ++ const char c1 = var_found[strlen (var)]; ++ if (c1 == ' ' || c1 == '\0') ++ return true; ++ } ++ return false; ++} ++ ++/* Check whether DEB_BUILD_OPTIONS environment variable is set, and ++ that it does not contain the specified exclusion keyword. */ ++ ++static bool ++has_deb_build_options (const char *exclude_var = nullptr, ++ const char *exclude_val = nullptr) ++{ ++ const char *const deb_build_options = env.get ("DEB_BUILD_OPTIONS"); ++ if (!deb_build_options) ++ return false; ++ ++ return !check_options (deb_build_options, exclude_var, exclude_val); ++} ++ + /* Callback for find_a_file. Appends the file name to the directory + path. If the resulting file exists in the right mode, return the + full pathname to the file. */ +@@ -3694,9 +3749,10 @@ execute (void) + /* For ICEs in cc1, cc1obj, cc1plus see if it is + reproducible or not. */ + const char *p; +- if (flag_report_bug +- && WEXITSTATUS (status) == ICE_EXIT_CODE +- && i == 0 ++ const bool deb_build_options ++ = has_deb_build_options ("gcc-ice", "norepro"); ++ if ((flag_report_bug || deb_build_options) ++ && WEXITSTATUS (status) == ICE_EXIT_CODE && i == 0 + && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) + && startswith (p + 1, "cc1")) + try_generate_repro (commands[0].argv); +@@ -8114,8 +8170,27 @@ do_report_bug (const char **new_argv, co + + if (status == ATTEMPT_STATUS_SUCCESS) + { +- fnotice (stderr, "Preprocessed source stored into %s file," +- " please attach this to your bugreport.\n", *out_file); ++ const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); ++ ++ if (gcc_dump) ++ fnotice (stderr, ++ "Preprocessed source stored into %s file," ++ " please attach this to your bugreport.\n", ++ *out_file); ++ if (gcc_dump) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++ sprintf (cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid (), ++ *out_file); ++ fprintf (stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush (stderr); ++ system (cmd); ++ fflush (stderr); ++ fprintf (stderr, "=== END GCC DUMP ===\n"); ++ fflush (stderr); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-m68k-no-fold-mem-offsets-doc.diff b/patches/gcc-m68k-no-fold-mem-offsets-doc.diff new file mode 100644 index 0000000..b95bec2 --- /dev/null +++ b/patches/gcc-m68k-no-fold-mem-offsets-doc.diff @@ -0,0 +1,16 @@ +From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 +From: John Paul Adrian Glaubitz +Date: Sun, 8 Jun 2025 07:59:26 +0200 +Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -15255,6 +15255,8 @@ Try to eliminate add instructions by fol + + Enabled at levels @option{-O2}, @option{-O3}. + ++NOTE: On Debian/Ubuntu this is disabled by default on m68k-linux-gnu. ++ + @opindex fcprop-registers + @item -fcprop-registers + After register allocation and post-register allocation instruction splitting, diff --git a/patches/gcc-m68k-no-fold-mem-offsets.diff b/patches/gcc-m68k-no-fold-mem-offsets.diff new file mode 100644 index 0000000..56dffaf --- /dev/null +++ b/patches/gcc-m68k-no-fold-mem-offsets.diff @@ -0,0 +1,25 @@ +From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 +From: John Paul Adrian Glaubitz +Date: Sun, 8 Jun 2025 07:59:26 +0200 +Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k + +--- + gcc/common.opt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gcc/common.opt b/gcc/common.opt +index 0e50305dde8..e57dff18af7 100644 +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -1295,7 +1295,7 @@ Common Var(flag_cprop_registers) Optimization + Perform a register copy-propagation optimization pass. + + ffold-mem-offsets +-Common Var(flag_fold_mem_offsets) Init(1) Optimization ++Common Var(flag_fold_mem_offsets) Init(0) Optimization + Fold instructions calculating memory offsets to the memory access instruction if possible. + + fcrossjumping +-- +2.49.0 + diff --git a/patches/gcc-multiarch.diff b/patches/gcc-multiarch.diff new file mode 100644 index 0000000..7a9cc84 --- /dev/null +++ b/patches/gcc-multiarch.diff @@ -0,0 +1,189 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file; + set default ABI to N64 for mips64el. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + * src/gcc/config/mips/mips.h: (/usr)/lib as default path. + +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,3 +1,11 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES= ++ ++ifneq (,$(findstring sh4,$(target))) ++MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu) ++else ++MULTILIB_OSDIRNAMES = .:sh3-linux-gnu sh3_nofpu-linux-gnu:sh3-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh3-linux-gnu) ++endif + MULTILIB_EXCEPTIONS=m1 mb/m1 m2a +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.cc + $(COMPILE) $< + $(POSTCOMPILE) +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -18,24 +18,28 @@ + + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 + MULTILIB_DIRNAMES = n32 32 64 ++MIPS_R6 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),r6) ++MIPS_32 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),32) ++MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ + ifeq (yes,$(enable_multiarch)) + ifneq (,$(findstring gnuabi64,$(target))) + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + else ifneq (,$(findstring gnuabin32,$(target))) + MULTILIB_OSDIRNAMES = \ +- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + else + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + endif + else + MULTILIB_OSDIRNAMES = \ +@@ -43,3 +47,13 @@ else + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) + endif ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2683,7 +2683,8 @@ mips*-*-linux*) # Linux MIPS, either + extra_options="${extra_options} linux-android.opt" + case ${target} in + mipsisa32r6*) +- default_mips_arch=mips32r6 ++ with_arch_32="mips32r6" ++ with_arch_64="mips64r6" + ;; + mipsisa32r2*) + default_mips_arch=mips32r2 +@@ -2705,7 +2706,8 @@ mips*-*-linux*) # Linux MIPS, either + ;; + mipsisa64r6*-*-linux-gnuabi64) + default_mips_abi=64 +- default_mips_arch=mips64r6 ++ with_arch_32="mips32r6" ++ with_arch_64="mips64r6" + enable_mips_multilibs="yes" + ;; + mipsisa64r6*-*-linux*) +@@ -5971,7 +5973,7 @@ case ${target} in + ;; + i[34567]86-*-linux* | x86_64-*-linux*) + extra_objs="${extra_objs} gnu-property.o" +- tmake_file="$tmake_file i386/t-linux i386/t-gnu-property" ++ tmake_file="i386/t-linux $tmake_file i386/t-gnu-property" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -588,7 +588,7 @@ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_S + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +-LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ] ++LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h -o -f $(BUILD_SYSTEM_HEADER_DIR)/$(MULTIARCH_DIRNAME)/limits.h ] + + # Directory for prefix to system directories, for + # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + + MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) +--- a/src/gcc/config/arc/t-multilib-linux ++++ b/src/gcc/config/arc/t-multilib-linux +@@ -23,3 +23,6 @@ MULTILIB_DIRNAMES = hs archs hs38 hs38_l + # Aliases: + MULTILIB_MATCHES += mcpu?arc700=mA7 + MULTILIB_MATCHES += mcpu?arc700=mARC700 ++ ++MULTILIB_OSDIRNAMES = ++MULTIARCH_DIRNAME = $(call if_multiarch,arc-linux-gnu) diff --git a/patches/gcc-multilib-multiarch.diff b/patches/gcc-multilib-multiarch.diff new file mode 100644 index 0000000..b9e293b --- /dev/null +++ b/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,100 @@ +# DP: Don't auto-detect multilib osdirnames. + +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) + endif +--- a/src/gcc/config/loongarch/t-linux ++++ b/src/gcc/config/loongarch/t-linux +@@ -16,9 +16,9 @@ + # along with GCC; see the file COPYING3. If not see + # . + +-MULTIOSDIR_lp64d := ../lib64$(call if_multiarch,:loongarch64-linux-gnu) +-MULTIOSDIR_lp64f := ../lib64/f32$(call if_multiarch,:loongarch64-linux-gnuf32) +-MULTIOSDIR_lp64s := ../lib64/sf$(call if_multiarch,:loongarch64-linux-gnusf) ++MULTIOSDIR_lp64d := ../lib$(call if_multiarch,:loongarch64-linux-gnu) ++MULTIOSDIR_lp64f := ../lib/f32$(call if_multiarch,:loongarch64-linux-gnuf32) ++MULTIOSDIR_lp64s := ../lib/sf$(call if_multiarch,:loongarch64-linux-gnusf) + + # Don't define MULTILIB_OSDIRNAMES if multilib is disabled. + ifeq ($(filter LA_DISABLE_MULTILIB,$(tm_defines)),) diff --git a/patches/gcc-no-multilib-dejagnu.diff b/patches/gcc-no-multilib-dejagnu.diff new file mode 100644 index 0000000..7fd33e1 --- /dev/null +++ b/patches/gcc-no-multilib-dejagnu.diff @@ -0,0 +1,61 @@ +# DP: Don't run the gnat and gm2 tests for multilibs, which are not built + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4598,7 +4598,12 @@ $(filter-out $(lang_checks_parallelized) + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) ++ case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ $(RUNTEST) --tool $* $$rtflags) + + $(patsubst %,%-subtargets,$(lang_checks)): check-%-subtargets: + @echo check-$* +@@ -4632,12 +4637,17 @@ check_p_subdirs=$(wordlist 1,$(check_p_c + # testsuites like objc or go. + $(lang_checks_parallelized): check-% : site.exp + -rm -rf $(TESTSUITEDIR)/$*-parallel +- @if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ ++ @case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ + test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) || true; \ + test -d $(TESTSUITEDIR)/$*-parallel || mkdir $(TESTSUITEDIR)/$*-parallel || true; \ + GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/$(TESTSUITEDIR)/$(check_p_tool)-parallel ; \ + export GCC_RUNTEST_PARALLELIZE_DIR ; \ +- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ ++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ + EXPECT=$(EXPECT) \ + check-parallel-$* \ + $(patsubst %,check-parallel-$*_%, $(check_p_subdirs)); \ +@@ -4656,7 +4666,7 @@ $(lang_checks_parallelized): check-% : s + > $(TESTSUITEDIR)/$*/$*.log; \ + rm -rf $(TESTSUITEDIR)/$*-parallel || true; \ + else \ +- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ ++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ + EXPECT=$(EXPECT) \ + check_$*_parallelize= check-parallel-$*; \ + fi +@@ -4682,7 +4692,12 @@ check-parallel-% : site.exp + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; \ + fi ; \ +- $(RUNTEST) --tool $(check_p_tool) $(RUNTESTFLAGS); \ ++ case "$*" in \ ++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ ++ (*) rtflags=$(RUNTESTFLAGS);; \ ++ esac; \ ++ echo "CHECK TARGET: $* -> $$rtflags"; \ ++ $(RUNTEST) --tool $(check_p_tool) $$rtflags; \ + if [ -n "$$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ + touch $${rootme}/$(TESTSUITEDIR)/$(check_p_tool)-parallel/finished; \ + fi ; \ diff --git a/patches/gcc-riscv-extensions.diff b/patches/gcc-riscv-extensions.diff new file mode 100644 index 0000000..8408afc --- /dev/null +++ b/patches/gcc-riscv-extensions.diff @@ -0,0 +1,164 @@ +From fbde53989e4df052c68ddf83fe1a9ae4e093ba47 Mon Sep 17 00:00:00 2001 +From: Dongyan Chen +Date: Mon, 12 May 2025 17:19:24 +0800 +Subject: [PATCH 1/1] RISC-V: Minimal support for ssnpm, smnpm and smmpm + extensions. + +This patch support ssnpm, smnpm, smmpm, sspm and supm extensions[1]. +To enable GCC to recognize and process ssnpm, smnpm, smmpm, sspm and +supm extensions correctly at compile time. + +[1]https://github.com/riscv/riscv-j-extension/blob/master/zjpm/instructions.adoc + +Changes for v5: +- Fix the testsuite error in arch-50.c. +Changes for v4: +- Fix the code based on the commit id 9b13bea07706a7cae0185f8a860d67209308c050. +Changes for v3: +- Fix the error messages in gcc/testsuite/gcc.target/riscv/arch-46.c +Changes for v2: +- Add the sspm and supm extensions. +- Add the check_conflict_ext function to check the compatibility of ssnpm, smnpm, smmpm, sspm and supm extensions. +- Add the test cases for ssnpm, smnpm, smmpm, sspm and supm extensions. + +gcc/ChangeLog: + + * common/config/riscv/riscv-common.cc + (riscv_subset_list::check_conflict_ext): New extension. + * config/riscv/riscv.opt: Ditto. + +gcc/testsuite/ChangeLog: + + * gcc.target/riscv/arch-ss-1.c: New test. + * gcc.target/riscv/arch-ss-2.c: New test. + +Signed-off-by: Heinrich Schuchardt +--- + gcc/common/config/riscv/riscv-common.cc | 36 ++++++++++++++++++++++ + gcc/config/riscv/riscv.opt | 19 ++++++++++++ + gcc/testsuite/gcc.target/riscv/arch-ss-1.c | 5 +++ + gcc/testsuite/gcc.target/riscv/arch-ss-2.c | 15 +++++++++ + 4 files changed, 75 insertions(+) + create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-1.c + create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-2.c + +--- a/src/gcc/common/config/riscv/riscv-common.cc ++++ b/src/gcc/common/config/riscv/riscv-common.cc +@@ -227,6 +227,10 @@ static const riscv_implied_info_t riscv_implied_info[] = + {"ssstateen", "zicsr"}, + {"sstc", "zicsr"}, + ++ {"ssnpm", "zicsr"}, ++ {"smnpm", "zicsr"}, ++ {"smmpm", "zicsr"}, ++ + {"xsfvcp", "zve32x"}, + + {NULL, NULL} +@@ -409,6 +413,12 @@ static const struct riscv_ext_version riscv_ext_version_table[] = + {"ssstateen", ISA_SPEC_CLASS_NONE, 1, 0}, + {"sstc", ISA_SPEC_CLASS_NONE, 1, 0}, + ++ {"ssnpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"smnpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"smmpm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"sspm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"supm", ISA_SPEC_CLASS_NONE, 1, 0}, ++ + {"svinval", ISA_SPEC_CLASS_NONE, 1, 0}, + {"svnapot", ISA_SPEC_CLASS_NONE, 1, 0}, + {"svpbmt", ISA_SPEC_CLASS_NONE, 1, 0}, +@@ -1309,6 +1319,26 @@ riscv_subset_list::check_conflict_ext () + error_at (m_loc, "%<-march=%s%>: zcf extension supports in rv32 only", + m_arch); + ++ if (lookup ("ssnpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: ssnpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("smnpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: smnpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("smmpm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: smmpm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("sspm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: sspm extension supports in rv64 only", ++ m_arch); ++ ++ if (lookup ("supm") && m_xlen == 32) ++ error_at (m_loc, "%<-march=%s%>: supm extension supports in rv64 only", ++ m_arch); ++ + if (lookup ("zfinx") && lookup ("f")) + error_at (m_loc, + "%<-march=%s%>: z*inx conflicts with floating-point " +@@ -1736,6 +1766,12 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = + RISCV_EXT_FLAG_ENTRY ("svnapot", x_riscv_sv_subext, MASK_SVNAPOT), + RISCV_EXT_FLAG_ENTRY ("svvptc", x_riscv_sv_subext, MASK_SVVPTC), + ++ RISCV_EXT_FLAG_ENTRY ("ssnpm", x_riscv_ss_subext, MASK_SSNPM), ++ RISCV_EXT_FLAG_ENTRY ("smnpm", x_riscv_sm_subext, MASK_SMNPM), ++ RISCV_EXT_FLAG_ENTRY ("smmpm", x_riscv_sm_subext, MASK_SMMPM), ++ RISCV_EXT_FLAG_ENTRY ("sspm", x_riscv_ss_subext, MASK_SSPM), ++ RISCV_EXT_FLAG_ENTRY ("supm", x_riscv_su_subext, MASK_SUPM), ++ + RISCV_EXT_FLAG_ENTRY ("ztso", x_riscv_ztso_subext, MASK_ZTSO), + + RISCV_EXT_FLAG_ENTRY ("xcvmac", x_riscv_xcv_subext, MASK_XCVMAC), +--- a/src/gcc/config/riscv/riscv.opt ++++ b/src/gcc/config/riscv/riscv.opt +@@ -472,6 +472,25 @@ Mask(SVNAPOT) Var(riscv_sv_subext) + + Mask(SVVPTC) Var(riscv_sv_subext) + ++TargetVariable ++int riscv_ss_subext ++ ++Mask(SSNPM) Var(riscv_ss_subext) ++ ++Mask(SSPM) Var(riscv_ss_subext) ++ ++TargetVariable ++int riscv_sm_subext ++ ++Mask(SMNPM) Var(riscv_sm_subext) ++ ++Mask(SMMPM) Var(riscv_sm_subext) ++ ++TargetVariable ++int riscv_su_subext ++ ++Mask(SUPM) Var(riscv_su_subext) ++ + TargetVariable + int riscv_ztso_subext + +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-1.c +@@ -0,0 +1,5 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=lp64" } */ ++int foo() ++{ ++} +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-2.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=ilp32d" } */ ++int foo() ++{ ++} ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ ++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ diff --git a/patches/gcc-search-prefixed-as-ld.diff b/patches/gcc-search-prefixed-as-ld.diff new file mode 100644 index 0000000..c2a7f0f --- /dev/null +++ b/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,128 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -1734,6 +1734,9 @@ struct path_prefix + + static struct path_prefix exec_prefixes = { 0, 0, "exec" }; + ++/* Copied from collect2.cc, a prefix list from the PATH variable. */ ++static struct path_prefix path_prefixes; ++ + /* List of prefixes to try when looking for startup (crt0) files. */ + + static struct path_prefix startfile_prefixes = { 0, 0, "startfile" }; +@@ -3252,6 +3255,8 @@ find_a_file (const struct path_prefix *p + static char* + find_a_program (const char *name) + { ++ char *progname; ++ + /* Do not search if default matches query. */ + + #ifdef DEFAULT_ASSEMBLER +@@ -3269,7 +3274,37 @@ find_a_program (const char *name) + return xstrdup (DEFAULT_DSYMUTIL); + #endif + +- return find_a_file (&exec_prefixes, name, X_OK, false); ++ progname = find_a_file (&exec_prefixes, name, X_OK, false); ++ if (progname) ++ { ++#if 0 ++ fprintf (stderr, "find_a_program: %s --> %s\n", name, progname); ++#endif ++ return progname; ++ } ++ ++#ifndef ACCEL_COMPILER ++#ifndef CROSS_DIRECTORY_STRUCTURE ++ /* Search for the -as / -ld instead of as / ld in PATH. ++ Doing that after the as / ld lookups, because these are used unversioned ++ during the build. */ ++ if (! strcmp (name, "as") || ! strcmp (name, "ld")) ++ { ++ char *prefixed_name = XNEWVEC (char, strlen("as") + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, name); ++ /* Lookup in PATH, not exec_prefixes. */ ++ progname = find_a_file (&path_prefixes, prefixed_name, X_OK, false); ++#if 0 ++ fprintf (stderr, "find_a_program: %s --> %s --> %s\n", ++ name, prefixed_name, progname); ++#endif ++ } ++#endif ++#endif ++ return progname; + } + + /* Ranking of prefixes in the sort list. -B prefixes are put before +@@ -3400,6 +3435,56 @@ add_sysrooted_hdrs_prefix (struct path_p + require_machine_suffix, os_multilib); + } + ++/* Next two functions copied from file-find.cc, which defines its own ++ find_a_file function. */ ++ ++/* Take the value of the environment variable ENV, break it into a path, and ++ add of the entries to PPREFIX. */ ++ ++static void ++prefix_from_string (const char *p, struct path_prefix *pprefix) ++{ ++ const char *startp, *endp; ++ char *nstore = XNEWVEC (char, strlen (p) + 3); ++ ++ startp = endp = p; ++ while (1) ++ { ++ if (*endp == PATH_SEPARATOR || *endp == 0) ++ { ++ strncpy (nstore, startp, endp-startp); ++ if (endp == startp) ++ { ++ strcpy (nstore, "./"); ++ } ++ else if (! IS_DIR_SEPARATOR (endp[-1])) ++ { ++ nstore[endp-startp] = DIR_SEPARATOR; ++ nstore[endp-startp+1] = 0; ++ } ++ else ++ nstore[endp-startp] = 0; ++ ++ add_prefix (pprefix, nstore, "path", PREFIX_PRIORITY_LAST, 0, 0); ++ if (*endp == 0) ++ break; ++ endp = startp = endp + 1; ++ } ++ else ++ endp++; ++ } ++ free (nstore); ++} ++ ++static void ++prefix_from_env (const char *e, struct path_prefix *pprefix) ++{ ++ const char *const p = env.get (e); ++ ++ if (p) ++ prefix_from_string (p, pprefix); ++} ++ + + /* Execute the command specified by the arguments on the current line of spec. + When using pipes, this includes several piped-together commands +@@ -8436,6 +8521,8 @@ driver::main (int argc, char **argv) + bool early_exit; + + set_progname (argv[0]); ++ /* Extract PATH into our path_prefixes list. */ ++ prefix_from_env ("PATH", &path_prefixes); + expand_at_files (&argc, &argv); + decode_argv (argc, const_cast (argv)); + global_initializations (); diff --git a/patches/gcc-target-include-asm.diff b/patches/gcc-target-include-asm.diff new file mode 100644 index 0000000..b761e30 --- /dev/null +++ b/patches/gcc-target-include-asm.diff @@ -0,0 +1,13 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3828,7 +3828,7 @@ fi + # being built; programs in there won't even run. + if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then + # Search for pre-installed headers if nothing else fits. +- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' ++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' + fi + + if test "x${use_gnu_ld}" = x && diff --git a/patches/gcc-textdomain.diff b/patches/gcc-textdomain.diff new file mode 100644 index 0000000..79b4341 --- /dev/null +++ b/patches/gcc-textdomain.diff @@ -0,0 +1,86 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +--- a/src/gcc/intl.cc ++++ b/src/gcc/intl.cc +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-15", LOCALEDIR); ++ (void) textdomain ("gcc-15"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4774,8 +4774,8 @@ install-po: + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- a/src/libcpp/init.cc ++++ b/src/libcpp/init.cc +@@ -210,7 +210,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -284,7 +284,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -15 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -73,11 +74,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + + ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ +- $(CET_HOST_FLAGS) ++ $(CET_HOST_FLAGS) $(DEBCPPFLAGS) + ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ +- $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) ++ $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) $(DEBCPPFLAGS) + + # The name of the compiler to use. + COMPILER = $(CXX) +@@ -166,8 +168,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: diff --git a/patches/gcc-verbose-lto-link.diff b/patches/gcc-verbose-lto-link.diff new file mode 100644 index 0000000..eb8d14c --- /dev/null +++ b/patches/gcc-verbose-lto-link.diff @@ -0,0 +1,13 @@ +# DP: Prefix LLINKER with /usr/bin/time -v + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -314,7 +314,7 @@ LINKER += $(LD_PICFLAG) + ifeq (@DO_LINK_MUTEX@,true) + LLINKER = $(SHELL) $(srcdir)/lock-and-run.sh linkfe.lck $(LINKER) + else +-LLINKER = $(LINKER) ++LLINKER = /usr/bin/time -v $(LINKER) + endif + + THIN_ARCHIVE_SUPPORT = @thin_archive_support@ diff --git a/patches/gcc-vhdl.diff b/patches/gcc-vhdl.diff new file mode 100644 index 0000000..feac12b --- /dev/null +++ b/patches/gcc-vhdl.diff @@ -0,0 +1,15 @@ +# DP: Make vhdl known to the PPC backend. See +# DP: https://github.com/ghdl/ghdl/blob/master/doc/development/building/GCC.rst + +--- a/src/gcc/config/rs6000/rs6000-logue.cc ++++ b/src/gcc/config/rs6000/rs6000-logue.cc +@@ -5344,7 +5344,8 @@ rs6000_output_function_epilogue (FILE *f + || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "GNU Rust") + || ! strcmp (language_string, "GNU Algol 68") +- || ! strcmp (language_string, "libgccjit")) ++ || ! strcmp (language_string, "libgccjit") ++ || ! strcmp (language_string, "vhdl")) + i = 0; + else if (! strcmp (language_string, "GNU F77") + || lang_GNU_Fortran ()) diff --git a/patches/gccrs-bootstrap-mipsel.diff b/patches/gccrs-bootstrap-mipsel.diff new file mode 100644 index 0000000..a26e861 --- /dev/null +++ b/patches/gccrs-bootstrap-mipsel.diff @@ -0,0 +1,12 @@ +# DP: Ignore gccrs bootstrap comparison failures on mipsel. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -4219,6 +4219,7 @@ compare_exclusions="$compare_exclusions + compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" + case "$target" in + hppa*64*-*-hpux*) ;; ++ mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; + powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;; + esac + AC_SUBST(compare_exclusions) diff --git a/patches/gdc-dynamic-link-phobos.diff b/patches/gdc-dynamic-link-phobos.diff new file mode 100644 index 0000000..71e7c58 --- /dev/null +++ b/patches/gdc-dynamic-link-phobos.diff @@ -0,0 +1,17 @@ +# DP: Dynamically link the phobos library. + +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -430,9 +430,9 @@ lang_specific_driver (cl_decoded_option + /* Add `-lgphobos' if we haven't already done so. */ + if (phobos_library != PHOBOS_NOLINK) + { +- /* Default to static linking. */ +- if (phobos_library != PHOBOS_DYNAMIC) +- phobos_library = PHOBOS_STATIC; ++ /* Default to dynamic linking. */ ++ if (phobos_library != PHOBOS_STATIC) ++ phobos_library = PHOBOS_DYNAMIC; + + #ifdef HAVE_LD_STATIC_DYNAMIC + if (phobos_library == PHOBOS_STATIC && !static_link) diff --git a/patches/gdc-multiarch.diff b/patches/gdc-multiarch.diff new file mode 100644 index 0000000..1925e1a --- /dev/null +++ b/patches/gdc-multiarch.diff @@ -0,0 +1,17 @@ +# DP: Set the D target include directory to a multiarch location. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -61,7 +61,11 @@ + $(D_DMD_H) + + +-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++ifneq (,$(MULTIARCH_DIRNAME)) ++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) ++else ++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++endif + + # Name of phobos library + D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" diff --git a/patches/gdc-texinfo.diff b/patches/gdc-texinfo.diff new file mode 100644 index 0000000..a024daf --- /dev/null +++ b/patches/gdc-texinfo.diff @@ -0,0 +1,53 @@ +# DP: Add macros for the gdc texinfo documentation. + +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -45,6 +45,22 @@ man page gfdl(7). + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -123,6 +139,25 @@ This manual only documents the options s + * Developer Options:: Options useful for developers of gdc + @end menu + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS + + @node Input and Output files diff --git a/patches/git-doc-updates.diff b/patches/git-doc-updates.diff new file mode 100644 index 0000000..3c39950 --- /dev/null +++ b/patches/git-doc-updates.diff @@ -0,0 +1,196 @@ +# DP: updates from the 15 branch upto 20260915 (documentation). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 4db0e8df15bef836558857c291c323add11d035c 7287b1f75dab3a7ac1e335cb259c2611fced2098 \ + | awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \ + | grep -v -E '^(diff|index)' + +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -23198,6 +23198,29 @@ defined, then the @code{__builtin_set_fpscr_rn} built-in returns the FPSCR + fields. If not defined, the @code{__builtin_set_fpscr_rn} does not return a + value. If the @option{-msoft-float} option is used, the + @code{__builtin_set_fpscr_rn} built-in will not return a value. ++@defbuiltin{bool __builtin_ppc_atomic_cas_local (@var{type} *@var{ptr}, @var{type} *@var{expected}, @var{type} *@var{desired}, bool @var{weak}, int @var{success_memorder}, int @var{failure_memorder})} ++This built-in function implements a PowerPC-specific atomic compare and ++exchange operation. It behaves identically to the generic ++@code{__atomic_compare_exchange} built-in function, with one key difference: ++it uses an EH (Extended Hint) value of 1 in the @code{lbarx}, @code{lharx}, ++@code{lwarx}, or @code{ldarx} instruction (load-and-reserve indexed). ++ ++The EH bit provides a hint to the processor that the program will perform a ++subsequent store to the specified location. This hint helps optimize lock ++contention on PowerPC systems by keeping the lock cacheline in the local ++processor longer, reducing performance penalties from cache coherence protocol ++traffic. ++ ++For details on the behavior and semantics of the arguments, refer to the ++@code{__atomic_compare_exchange} documentation. ++ ++The first three pointer arguments (@var{ptr}, @var{expected}, and ++@var{desired}) must point to complete types, and the size of the types they ++point to must be the same and known at compile time. The types themselves may ++differ. The supported type sizes are 1, 2, 4, 8, or 16 bytes. ++ ++@enddefbuiltin ++ + + @node Basic PowerPC Built-in Functions Available on ISA 2.05 + @subsubsection Basic PowerPC Built-in Functions Available on ISA 2.05 +@@ -28291,6 +28314,18 @@ AMD Family 19h Zen version 4. + + @item znver5 + AMD Family 1ah Zen version 5. ++ ++@item hygonfam18h ++HYGON Family 18h CPU. ++ ++@item c86-4g-m4 ++HYGON Family 18h model 4 dharma CPU. ++ ++@item c86-4g-m6 ++HYGON Family 18h model 6 shanghai CPU. ++ ++@item c86-4g-m7 ++HYGON Family 18h model 7 chengdu CPU. + @end table + + Here is an example: +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -7918,6 +7918,7 @@ Warn about uses of pointers to dynamically allocated objects that have + been rendered indeterminate by a call to a deallocation function. + The warning is enabled at all optimization levels but may yield different + results with optimization than without. ++@option{-Wuse-after-free} is equivalent to @option{-Wuse-after-free=1}. + + @table @gcctabopt + @item -Wuse-after-free=1 +@@ -22007,8 +22008,8 @@ performance of the code. Permissible values for this option are: + @samp{oryon-1}, + @samp{neoverse-512tvb}, @samp{neoverse-e1}, @samp{neoverse-n1}, + @samp{neoverse-n2}, @samp{neoverse-v1}, @samp{neoverse-v2}, @samp{grace}, +-@samp{neoverse-v3}, @samp{neoverse-v3ae}, @samp{neoverse-n3}, @samp{olympus}, +-@samp{cortex-a725}, @samp{cortex-x925}, ++@samp{neoverse-v3}, @samp{neoverse-v3ae}, @samp{armagicpu}, @samp{neoverse-n3}, ++@samp{olympus}, @samp{cortex-a725}, @samp{cortex-x925}, + @samp{qdf24xx}, @samp{saphira}, @samp{phecda}, @samp{xgene1}, @samp{vulcan}, + @samp{octeontx}, @samp{octeontx81}, @samp{octeontx83}, + @samp{octeontx2}, @samp{octeontx2t98}, @samp{octeontx2t96} +@@ -31615,8 +31616,8 @@ Permissible values for this option are: @samp{sifive-e20}, @samp{sifive-e21}, + @samp{sifive-e24}, @samp{sifive-e31}, @samp{sifive-e34}, @samp{sifive-e76}, + @samp{sifive-s21}, @samp{sifive-s51}, @samp{sifive-s54}, @samp{sifive-s76}, + @samp{sifive-u54}, @samp{sifive-u74}, @samp{sifive-x280}, @samp{sifive-xp450}, +-@samp{sifive-x670}, @samp{thead-c906}, @samp{tt-ascalon-d8}, +-@samp{xiangshan-nanhu}. ++@samp{sifive-x670}, @samp{thead-c906}, @samp{tt-ascalon-x}, @samp{tt-ascalon-d8}, ++@samp{tt-ascalon-xg}, @samp{xiangshan-nanhu}. + + Note that @option{-mcpu} does not override @option{-march} or @option{-mtune}. + +@@ -35240,7 +35241,7 @@ MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, + UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, + PREFETCHI, AMX-COMPLEX, AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16, + AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512, APX_F, AMX-AVX512, +-AMX-FP8, AMX-TF32, MOVRS and AMX-MOVRS instruction set support. ++AMX-FP8, MOVRS and AMX-MOVRS instruction set support. + + @item bonnell + @itemx atom +@@ -35502,6 +35503,27 @@ instruction set support. + + @item geode + AMD Geode embedded processor with MMX and 3DNow!@: instruction set support. ++ ++@item c86-4g-m4 ++HYGON c86-4g-m4 CPU with x86-64, MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM, SSSE3, ++SSE4.1, SSE4.2, AES, PCLMUL, AVX, AVX2, BMI, BMI2, F16C, FMA, PRFCHW, FXSR, SHA, ++XSAVE, XSAVEOPT, XSAVEC, FSGSBASE, RDRND, MOVBE, MWAITX, ADX, RDSEED, CLZERO, ++CLFLUSHOPT, XSAVES, LZCNT, POPCNT instruction set support. ++ ++@item c86-4g-m6 ++HYGON c86-4g-m6 CPU with x86-64, MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM, SSSE3, ++SSE4.1, SSE4.2, AES, PCLMUL, AVX, AVX2, BMI, BMI2, F16C, FMA, PRFCHW, FXSR, SHA, ++XSAVE, XSAVEOPT, XSAVEC, FSGSBASE, RDRND, MOVBE, MWAITX, ADX, RDSEED, CLZERO, ++CLFLUSHOPT, XSAVES, LZCNT, POPCNT instruction set support. ++ ++@item c86-4g-m7 ++HYGON c86-4g-m7 CPU with x86-64, MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM, SSSE3, ++SSE4.1, SSE4.2, AES, PCLMUL, AVX, AVX2, BMI, BMI2, F16C, FMA, PRFCHW, FXSR, SHA, ++XSAVE, XSAVEOPT, XSAVEC, FSGSBASE, RDRND, MOVBE, MWAITX, ADX, RDSEED, CLZERO, ++CLFLUSHOPT, XSAVES, LZCNT, POPCNT, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, ++AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, GFNI, AVX512VNNI, VAES, ++AVX512BITALG, AVX512VPOPCNTDQ, AVX512VP2INTERSECT, AVXVNNI, VPCLMULQDQ, ++WBNOINVD instruction set support. + @end table + + @opindex mtune +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -2095,12 +2095,17 @@ options, including @code{-mfp16-format=ieee} if necessary to obtain the + + @item arm_neon_fp16_hw + Test system supports executing Neon half-precision float instructions. +-(Implies previous.) ++(Implies @code{arm_neon_fp16_ok}.) + + @item arm_fp16_alternative_ok + ARM target supports the ARM FP16 alternative format. Some multilibs + may be incompatible with the options needed. + ++@item arm_fp16_alternative_hw ++Test system supports executing VFP half-precision floating-point ++instructions in the ARM FP16 alternative format. (Implies ++@code{arm_fp16_alternative_ok}.) ++ + @item arm_fp16_none_ok + ARM target supports specifying none as the ARM FP16 format. + +@@ -2213,6 +2218,11 @@ ARM target supports options to generate instructions from ARMv8.1-M with + the M-Profile Vector Extension (MVE). Some multilibs may be incompatible + with these options. + ++@item arm_v8_1m_mve_link ++ARM target supports linking programs using the options selected by ++@code{arm_v8_1m_mve_ok}. Some multilibs may be incompatible with these ++options. ++ + @item arm_v8_1m_mve_fp_ok + ARM target supports options to generate instructions from ARMv8.1-M with + the Half-precision floating-point instructions (HP), Floating-point Extension +@@ -2342,6 +2352,11 @@ ARM target supporting @code{-mbranch-protection=standard}. + @item arm_pacbti_hw + Test system supports for executing non nop pacbti instructions. + ++@item arm_mixed_fp ++On Arm targets, true when the target uses hardware instructions for ++single-precision floatint-point values, but software emulation for ++double-precision values. ++ + @end table + + @subsubsection AArch64-specific attributes +@@ -2707,6 +2722,10 @@ Target supports the execution of @code{amx-transpose} instructions. + @item amx_fp8 + Target supports the execution of @code{amx-fp8} instructions. + ++@item can_deref_null ++Target runtime permits dereferencing a null pointer without trapping, for ++example because address zero is mapped and readable. ++ + @item cell_hw + Test system can execute AltiVec and Cell PPU instructions. + +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -10637,8 +10637,8 @@ mode or ``no mode'', depending on context. + + @deftypefn {Target Hook} void TARGET_MODE_EMIT (int @var{entity}, int @var{mode}, int @var{prev_mode}, HARD_REG_SET @var{regs_live}) + Generate one or more insns to set @var{entity} to @var{mode}. +-@var{hard_reg_live} is the set of hard registers live at the point where +-the insn(s) are to be inserted. @var{prev_moxde} indicates the mode ++@var{regs_live} is the set of hard registers live at the point where ++the insn(s) are to be inserted. @var{prev_mode} indicates the mode + to switch from, or is the number of modes if the previous mode is not + known. Sets of a lower numbered entity will be emitted before + sets of a higher numbered entity to a mode of the same or lower priority. diff --git a/patches/git-updates.diff b/patches/git-updates.diff new file mode 100644 index 0000000..3753665 --- /dev/null +++ b/patches/git-updates.diff @@ -0,0 +1,26636 @@ +# DP: updates from the 15 branch upto 20260915 (7287b1f75da). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 4db0e8df15bef836558857c291c323add11d035c 7287b1f75dab3a7ac1e335cb259c2611fced2098 \ + | awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \ + | grep -v -E '^(diff|index)' + +--- a/src/ChangeLog ++++ b/src/ChangeLog +@@ -1,3 +1,8 @@ ++2026-08-27 Michael Meissner ++ ++ * MAINTAINERS: Update Michael Meissner's information. ++ Backported from master from 2026-08-07. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/MAINTAINERS ++++ b/src/MAINTAINERS +@@ -36,7 +36,7 @@ Richard Earnshaw + Jakub Jelinek + Richard Kenner + Jeff Law +-Michael Meissner ++Michael Meissner + Jason Merrill + David S. Miller + Joseph Myers +@@ -198,7 +198,6 @@ libphobos Iain Buclaw + line map Dodji Seketeli + soft-fp Joseph Myers + scheduler (+ haifa) Jim Wilson +-scheduler (+ haifa) Michael Meissner + scheduler (+ haifa) Jeff Law + scheduler (+ haifa) Vladimir Makarov + modulo-scheduler Roman Zhuykov +@@ -668,7 +667,7 @@ Roland McGrath roland + Bryce McKinlay bryce + Adam Megacz - + Bingfeng Mei meibf +-Michael Meissner meissner ++Michael Meissner meissner + Josef Melcr - + Jason Merrill jason + Jim Meyering - +--- a/src/gcc/ChangeLog ++++ b/src/gcc/ChangeLog +@@ -1,3 +1,1715 @@ ++2026-09-13 Jeff Law ++ ++ Backported from master: ++ 2026-09-13 Jeff Law ++ ++ PR target/127318 ++ * config/riscv/riscv.cc (riscv_v_adjust_scalable_frame): Attach ++ REG_CFA_DEF_CFA note to the copy from the stack pointer. ++ ++2026-09-12 Zhongyao Chen ++ ++ Backported from master: ++ 2026-09-08 Zhongyao Chen ++ ++ PR target/126932 ++ * config/riscv/autovec.md: Rewrite vector FMA patterns. ++ * config/riscv/autovec-opt.md: Likewise and add new patterns. ++ ++2026-09-11 Richard Earnshaw ++ ++ Backported from master: ++ 2026-09-04 Richard Earnshaw ++ ++ PR target/126463 ++ * config/aarch64/aarch64.cc (aarch64_select_cc_mode): Correctly ++ match overflow detection idioms using MINUS and NEG. ++ * config/aarch64/aarch64.md (subv4): Re-order the ++ compare into canonical form. ++ (subv4_insn): Likewise. ++ (negv4): Likewise. ++ (negv_insn): Likewise. Fix typo in output template. ++ ++2026-09-08 Jin Ma ++ ++ Backported from master: ++ 2026-09-05 Jin Ma ++ ++ PR target/126196 ++ * config/riscv/vector-crypto.md (vv_ins_con): New int attribute. ++ (vv_ins1_con): Likewise. ++ (vi_ins1_con): Likewise. ++ (@pred_v): Use vv_ins1_con. ++ (@pred_crypto_vv): Use vv_ins_con. ++ (@pred_vi_nomaskedoff_scalar): Use vi_ins1_con. ++ (@pred_vsm3me): Mark the destination as early-clobber. ++ ++2026-09-07 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-07-01 Stefan Schulze Frielinghaus ++ ++ PR target/126054 ++ * config/s390/s390.md: Fix ++ extzv__{srl,sll} by adjusting the ++ bitmasks in the output templates. ++ ++2026-09-06 Rohith Kapelli ++ ++ Backported from master: ++ 2026-08-13 Rohith Kapelli ++ ++ PR rtl-optimization/125683 ++ * simplify-rtx.cc (simplify_context::simplify_ternary_operation): ++ When folding an IF_THEN_ELSE of two equal MEM operands with ++ different memory attributes, return a copy whose attributes are ++ widened to what both operands allow. ++ ++2026-09-05 Pietro Monteiro ++ ++ Backported from master: ++ 2026-08-15 Pietro Monteiro ++ ++ * config/t-openbsd (USER_H): Add $(srcdir)/ginclude/stdatomic.h. ++ ++2026-09-04 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-09-04 Georg-Johann Lay ++ ++ PR target/127188 ++ * config/avr/avr-passes.cc (avr_pass_2moves) : ++ Use next_nondebug_insn_bb to traverse the insns. ++ : Ignore degug insns when traversing ++ DF_REG_USE_CHAIN. ++ ++2026-09-01 Peter Bergner ++ ++ Backported from master: ++ 2026-08-24 Peter Bergner ++ ++ * config/riscv/riscv-cores.def (RISCV_TUNE): Add tt-ascalon-xg. ++ (RISCV_CORE): Likewise. ++ * doc/invoke.texi: Document it. ++ ++2026-09-01 Peter Bergner ++ ++ Backported from master: ++ 2026-06-25 Peter Bergner ++ ++ * config/riscv/riscv-cores.def (RISCV_TUNE): Add tt-ascalon-x. ++ (RISCV_CORE): Likewise. ++ * doc/invoke.texi: Document it. ++ ++2026-09-01 Peter Bergner ++ ++ Backported from master: ++ 2026-01-23 Peter Bergner ++ ++ PR target/123492 ++ * config/riscv/riscv-cores.def (RISCV_CORE): Add zvfbfmin to ++ tt-ascalon-d8. ++ ++2026-09-01 Peter Bergner ++ ++ Backported from master: ++ 2026-01-09 Peter Bergner ++ ++ PR target/123492 ++ * config/riscv/riscv-cores.def (RISCV_CORE): Add missing ++ extensions from the rva23s64 profile and adding zkr. ++ ++2026-09-01 Anton Blanchard ++ ++ Backported from master: ++ 2025-09-08 Anton Blanchard ++ ++ * config/riscv/riscv.cc (tt_ascalon_d8_tune_info): Increase branch_cost ++ from 3 to 4. ++ ++2026-08-29 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-08-29 Georg-Johann Lay ++ ++ PR middle-end/127098 ++ * config/avr/avr.md (MPUSH): Add TImode to mode iterator. ++ * config/avr/avr.h (PUSH_ROUNDING): Adjust comment. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/120681 ++ * config/rs6000/linux64.h (PCREL_SUPPORTED_BY_OS): Allow large ++ code model as well as medium code model. ++ * config/rs6000/rs6000.cc (rs6000_option_override_internal): ++ Likewise. ++ (rs6000_elf_declare_function_name): Don't create the ++ local/non-local labels for large code model if we are using ++ PC-relative addressing. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/120528 ++ * config/rs6000/rs6000.md (zero_extend??ti2 peephole2): Add a ++ peephole2 to simplify zero extending a QI/HI/SI/DImode value in ++ memory to a TImode target in a vector register to use the ++ LXVR{B,H,W,D}X instructins. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/99293 ++ * config/rs6000/vsx.md (vsx_splat_extract_): New insn. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/117487 ++ * config/rs6000/vsx.md (SFmode logical peephoole): Update comments in ++ the original code that supports power8. ++ (SFBOOL2_*): New constants. ++ (power9/power10 define_peephol2): Add a new define_peephole2 to optimize ++ float and logical operations on power9/power10/power11 similar to the ++ optimiztion that is done on power8. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-07 Jakub Jelinek ++ ++ PR tree-optimization/126534 ++ * gimple-range-op.cc (cfn_sqrt::op1_range): Widen lb or ub ++ by further 0.5ulp or 1ulp before squaring it. ++ * range-op-float.cc (float_widen_lhs_range): No longer static. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-07 Jakub Jelinek ++ ++ PR target/126667 ++ * config/s390/s390.md (usubc5): If operands[4] is ++ an immediate operand other than const0_rtx, force it into reg ++ before using it in xor3 insn. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-04 Jakub Jelinek ++ ++ PR tree-optimization/126601 ++ * tree-ssa-math-opts.cc (maybe_optimize_guarding_check): Use safe_push ++ on mul_stmts rather than quick_push. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-04 Jakub Jelinek ++ ++ PR tree-optimization/126564 ++ * tree-ssa-phiopt.cc (spaceship_replacement): Fix up condition ++ when to punt because of redundant cmp1 with cmp2, xor in ++ lhs1 == lhs2 with difference of cmp2 from cmp1 (ignoring ++ LT_EXPR vs. LE_EXPR and GT_EXPR vs. GE_EXPR differences) and ++ 1 if cond2_phi_edge is EDGE_FALSE_VALUE. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-03 Jakub Jelinek ++ ++ PR target/126484 ++ * config/mips/mips-ftypes.def (MIPS_SI_FTYPE_VOID, ++ MIPS_USI_FTYPE_VOID): Use DEF_MIPS_FTYPE with 0 as ++ first argument rather than 1 and leave out ", VOID" from ++ second argument. ++ * config/mips/mips.cc (MIPS_FTYPE_NAME0): Define. ++ (MIPS_FTYPE_ATYPES0): Define. ++ ++2026-08-26 Eric Botcazou ++ ++ PR ada/125984 ++ * tree-dfa.cc (get_ref_base_and_extent) : Use the range ++ of the difference between the index expression and the low bound, ++ instead of that of the index expression itself, to constrain the ++ maximum size of the access. ++ ++2026-08-24 Jin Ma ++ ++ Backported from master: ++ 2026-08-21 Jin Ma ++ ++ PR target/126873 ++ * config/riscv/autovec.md (vec_set): Zero-extend a ++ sub-Pmode index to Pmode. ++ (vec_extract): Likewise. ++ ++2026-08-24 Jeff Law ++ ++ Backported from master: ++ 2026-08-14 Jeff Law ++ ++ PR rtl-optimization/126426 ++ * ext-dce.cc (carry_backpropagate): Return a conservatively ++ correct mask when presented with vector modes. ++ (ext_dce_process_uses): Don't use GET_MODE_INNER, we need to ++ know the full extent of the bits for vector and complex modes. ++ ++2026-08-24 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-08-23 Georg-Johann Lay ++ ++ PR target/127004 ++ * config/avr/avr-passes.cc (rtl-iter.h): Include. ++ (insninfo_t::scratch_mask): New method. ++ (optimize_data_t::try_split_ldi): Use it for ignore_mask. ++ (optimize_data_t::try_split_any): Same. ++ (optimize_data_t::emit_sequence): Dump ignore_mask prior to ++ calling fatal_insn. ++ ++2026-08-20 Hongyu Wang ++ ++ Backported from master: ++ 2026-08-12 Hongyu Wang ++ ++ PR target/126787 ++ * config/i386/sse.md (*fma_fmadd_): Use the "jm" to replace ++ "m" constraint and set addr attribute to "gpr16" for vex only ++ alternatives. ++ (*fma_fmsub_): Likewise. ++ (*fma_fnmadd_): Likewise. ++ (*fma_fnmsub_): Likewise. ++ (*fma_fmaddsub_): Likewise. ++ (*fma_fmsubadd_): Likewise. ++ (xop_p): Likewise. ++ (xop_pdql): Likewise. ++ (xop_pdqh): Likewise. ++ (xop_pwd): Likewise. ++ (xop_pwd): Likewise. ++ (xop_pcmov_): Likewise. ++ (xop_phaddbw): Likewise. ++ (xop_phaddbd): Likewise. ++ (xop_phaddbq): Likewise. ++ (xop_phaddwd): Likewise. ++ (xop_phaddwq): Likewise. ++ (xop_phadddq): Likewise. ++ (xop_phsubbw): Likewise. ++ (xop_phsubwd): Likewise. ++ (xop_phsubdq): Likewise. ++ (xop_pperm): Likewise. ++ (xop_pperm_pack_v2di_v4si): Likewise. ++ (xop_pperm_pack_v4si_v8hi): Likewise. ++ (xop_pperm_pack_v8hi_v16qi): Likewise. ++ (xop_rotl3): Likewise. ++ (xop_rotr3): Likewise. ++ (xop_vrotl3): Likewise. ++ (xop_sha3): Likewise. ++ (xop_shl3): Likewise. ++ (xop_frcz2): Likewise. ++ (*xop_vmfrcz2): Likewise. ++ (xop_maskcmp3): Likewise. ++ (xop_maskcmp_uns3): Likewise. ++ (xop_maskcmp_uns23): Likewise. ++ (xop_pcom_tf3): Likewise. ++ (xop_vpermil23): Likewise. ++ ++2026-08-20 Avinash Jayakar ++ ++ Backported from master: ++ 2026-08-10 Avinash Jayakar ++ ++ PR target/126513 ++ * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Allocate reg ++ if target is null or const0_rtx. ++ * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin): Add ++ error handling for c1, c2 and c3 described in this commit. ++ ++2026-08-19 Alice Carlotti ++ ++ PR target/124629 ++ * config/aarch64/driver-aarch64.cc (AARCH64_ARCH): ++ Don't skip first character of #ARCH_IDENT. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-08-05 Richard Biener ++ ++ PR tree-optimization/126650 ++ * tree-affine.cc (get_inner_reference_aff): Fixup rounding ++ of size. ++ ++2026-08-19 H.J. Lu ++ ++ Backported from master: ++ 2026-07-28 H.J. Lu ++ Richard Biener ++ ++ PR middle-end/126410 ++ * tree-vect-stmts.cc (vectorizable_store): Only commit to ++ recorded base alignment when transforming. ++ (vectorizable_load): Likewise. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-15 Richard Biener ++ ++ PR tree-optimization/125786 ++ * tree-ssa-reassoc.cc (optimize_vec_cond_expr): Create a new ++ stmt instead of rewriting an existing possibly multi-use one. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-02 Richard Biener ++ ++ PR tree-optimization/125545 ++ * tree-ssa-reassoc.cc (insert_stmt_after): Allow asm goto ++ with a single successor. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-03 Richard Biener ++ ++ PR tree-optimization/125477 ++ * tree-vect-loop-manip.cc (vect_loop_versioning): Verify we ++ can duplicate an outer loop before considering to version it. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-05-04 Richard Biener ++ ++ PR middle-end/125156 ++ * tree-cfgcleanup.cc (cleanup_control_expr_graph): Clear ++ EDGE_TRUE_VALUE and EDGE_FALSE_VALUE edge flags only. ++ ++2026-08-19 vekumar ++ ++ Backported from master: ++ 2026-06-26 vekumar ++ ++ PR target/125949 ++ * config/i386/i386.md ("isa"): Add avxvnniint8. ++ ("enabled"): Adjust for avxvnniint8. ++ * config/i386/sse.md (vpdp_): Adjust for ++ AVXVNNIINT8. ++ ++2026-08-14 Tamar Christina ++ ++ * config/aarch64/aarch64-cores.def (armagicpu): New. ++ * config/aarch64/aarch64-tune.md: Renegerate ++ * doc/invoke.texi: Document it. ++ ++2026-08-13 Uros Bizjak ++ ++ Backported from master: ++ 2026-08-12 Uros Bizjak ++ ++ * config/i386/i386.md (*bt): Change operand 1 constraint ++ from "q," to "r,". ++ (*bt_mask): Remove constraints from operand 0. ++ ++2026-08-11 Robin Dapp ++ ++ Backported from master: ++ 2026-07-25 Robin Dapp ++ ++ PR target/126334 ++ * config/riscv/riscv-v.cc (get_gather_scatter_code): Use ordered ++ indexed stores. ++ ++2026-08-11 Jeff Law ++ ++ PR target/126550 ++ * config/riscv/riscv-v.cc (expand_const_vector): Fix typo in manually ++ merged patch. ++ ++2026-08-11 Robin Dapp ++ ++ Backported from master: ++ 2026-08-04 Robin Dapp ++ ++ PR target/126550 ++ * config/riscv/riscv-v.cc (expand_const_vector_single_step_npatterns): ++ User global builder's npatterns. ++ ++2026-08-04 Jin Ma ++ ++ Backported from master: ++ 2026-07-16 Jin Ma ++ ++ * config/riscv/riscv.cc (riscv_regno_to_class): Map t1 to ++ JALR_REGS. ++ * config/riscv/riscv.h (RISCV_PROLOGUE_TEMP_REGNUM): Document ++ the SIBCALL_REGS restriction. ++ (REG_CLASS_CONTENTS): Remove t1 from SIBCALL_REGS. ++ ++2026-08-03 Hu, Lin1 ++ ++ PR target/126581 ++ * config/i386/avx10_2satcvtintrin.h ++ (_mm_cvtts_sd_epi32): New alias of _mm_cvtts_sd_i32. ++ (_mm_cvtts_sd_epu32): New alias of _mm_cvtts_sd_u32. ++ (_mm_cvtts_ss_epi32): New alias of _mm_cvtts_ss_i32. ++ (_mm_cvtts_ss_epu32): New alias of _mm_cvtts_ss_u32. ++ (_mm_cvtts_roundsd_epi32): New alias of _mm_cvtts_roundsd_i32. ++ (_mm_cvtts_roundsd_epu32): New alias of _mm_cvtts_roundsd_u32. ++ (_mm_cvtts_roundss_epi32): New alias of _mm_cvtts_roundss_i32. ++ (_mm_cvtts_roundss_epu32): New alias of _mm_cvtts_roundss_u32. ++ (_mm_cvtts_sd_epi64): New alias of _mm_cvtts_sd_i64. ++ (_mm_cvtts_sd_epu64): New alias of _mm_cvtts_sd_u64. ++ (_mm_cvtts_ss_epi64): New alias of _mm_cvtts_ss_i64. ++ (_mm_cvtts_ss_epu64): New alias of _mm_cvtts_ss_u64. ++ (_mm_cvtts_roundsd_epi64): New alias of _mm_cvtts_roundsd_i64. ++ (_mm_cvtts_roundsd_epu64): New alias of _mm_cvtts_roundsd_u64. ++ (_mm_cvtts_roundss_epi64): New alias of _mm_cvtts_roundss_i64. ++ (_mm_cvtts_roundss_epu64): New alias of _mm_cvtts_roundss_u64. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126504 ++ * match.pd ((CST1 << A) == CST2 -> A == ctz (CST2) - ctz (CST1)): ++ If cand isn't representable in TREE_TYPE (@1), simplify to ++ cmp == NE_EXPR. ++ (((1 << n) & M) != 0 -> n == log2 (M)): Don't simplify if ++ log2 doesn't fit into TREE_TYPE (@0). ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126503 ++ * gimple-lower-bitint.cc (bitint_large_huge::handle_plus_minus): If ++ IFN_ADDC/IFN_SUBC can't be used and rhs1_type is not the limb type ++ and is signed, perform both additions or both subtractions in ++ unsigned type for the rhs1_type and cast to rhs1_type at the end. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR middle-end/126497 ++ * gimplify.cc (recalculate_side_effects): Return for ++ tcc_declaration. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126490 ++ * match.pd ((a & b) == (a ^ b) -> !(a | b)): If @0 has ++ integral one bit precision type, use (convert:type ...) around the ++ bit_not just in case the comparison has a different result type ++ from the type of its operands. Otherwise do that too but with ++ bit_not replaced with bit_xor with one of the appropriate type. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126464 ++ * range-op-float.cc (float_widen_lhs_range): Remove also_inf ++ argument, replace its uses as if it was always true. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126476 ++ * match.pd (((C << A) & D) != 0 -> A == 0, ++ ((C << A) & D) == 0 -> A != 0): Fold to false/true if ++ c1 - c2 resp. c2 - c1 doesn't fit into TREE_TYPE (@0). ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-30 Jakub Jelinek ++ ++ PR tree-optimization/126464 ++ * range-op-float.cc (float_widen_lhs_range): Add also_inf argument ++ defaulted to false, if true, extend even lb of +inf and ub of -inf. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-30 Jakub Jelinek ++ ++ PR middle-end/126084 ++ * asan.cc (maybe_instrument_call): Don't instrument ++ BUILT_IN_ASAN_REPORT_{LOAD,STORE}{1,2,4,8,16,_N} builtins. ++ (initialize_sanitizer_builtins): Use ++ (*lang_hooks.types.type_for_mode) (ptr_mode, 0) instead of ++ pointer_sized_int_mode for PTRMODE arguments. ++ (asan_expand_poison_ifn): Likewise. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-30 Jakub Jelinek ++ ++ PR tree-optimization/126471 ++ * match.pd (parity(~X) is parity(X)): Only optimize this way ++ if element_precision is even, otherwise optimize into parity(X) ^ 1. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-29 Jakub Jelinek ++ ++ PR target/126446 ++ * gimple-isel.cc (gimple_expand_vec_set_extract_expr): Punt if ++ idx doesn't fit into poly_uint64 but is poly_int_tree_p. Use ++ known_ge rather than known_gt for out of bounds check. Formatting ++ fixes. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-29 Jakub Jelinek ++ ++ PR target/126446 ++ * config/i386/i386-expand.cc (ix86_expand_vector_set): If elt is ++ out of bounds, emit a no-op move. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-29 Jakub Jelinek ++ ++ PR middle-end/126447 ++ * gimple-lower-bitint.cc (gimple_lower_bitint): For ++ ifn calls with large/huge _BitInt (ab) SSA_NAME lhs if they ++ have such (ab) argument too, force it into temporary SSA_NAME ++ for IFN_UBSAN_CHECK_MUL. ++ ++2026-07-28 Haochen Jiang ++ ++ Backported from master: ++ 2026-07-28 Haochen Jiang ++ ++ PR target/126429 ++ * config/i386/sse.md (avx512fmaskhalfmode): Removed. ++ (avx512f_dpbf16ps__maskz): Use avx512fmaskmode instead of ++ avx512fmaskhalfmode. ++ (avx512f_dpbf16ps__mask): Ditto. ++ (avx512f_dpbf16ps_): Rename to ... ++ (avx512f_dpbf16ps_): ... this. Use ++ corresponding sd_mask_op4. ++ * config/i386/subst.md (maskz_half): Remove not used pattern. ++ ++2026-07-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-27 Jakub Jelinek ++ ++ * doc/sourcebuild.texi (arm_neon_fp16_hw, arm_fp16_alternative_hw): ++ Use @code{...} instead of @code(...). ++ ++2026-07-27 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-27 Torbjörn SVENSSON ++ ++ * doc/sourcebuild.texi (arm_fp16_alternative_hw): Document. ++ (arm_neon_fp16_hw): Add reference to arm_neon_fp16_ok. ++ ++2026-07-24 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-21 Torbjörn SVENSSON ++ ++ PR tree-optimization/124663 ++ * match.pd: Fold constant conditional selects. ++ ++2026-07-23 Hu, Lin1 ++ ++ * config/i386/avx10_2satcvtintrin.h ++ (_mm_cvtts_sd_i32): Renamed from _mm_cvtts_sd_epi32. ++ (_mm_cvtts_sd_si32): New alias of _mm_cvtts_sd_i32. ++ (_mm_cvtts_sd_u32): Renamed from _mm_cvtts_sd_epu32. ++ (_mm_cvtts_ss_i32): Renamed from _mm_cvtts_ss_epi32. ++ (_mm_cvtts_ss_si32): New alias of _mm_cvtts_ss_i32. ++ (_mm_cvtts_ss_u32): Renamed from _mm_cvtts_ss_epu32. ++ (_mm_cvtts_roundsd_i32): Renamed from _mm_cvtts_roundsd_epi32. ++ (_mm_cvtts_roundsd_si32): New alias of _mm_cvtts_roundsd_i32. ++ (_mm_cvtts_roundsd_u32): Renamed from _mm_cvtts_roundsd_epu32. ++ (_mm_cvtts_roundss_i32): Renamed from _mm_cvtts_roundss_epi32. ++ (_mm_cvtts_roundss_si32): New alias of _mm_cvtts_roundss_i32. ++ (_mm_cvtts_roundss_u32): Renamed from _mm_cvtts_roundss_epu32. ++ (_mm_cvtts_sd_i64): Renamed from _mm_cvtts_sd_epi64. ++ (_mm_cvtts_sd_si64): New alias of _mm_cvtts_sd_i64. ++ (_mm_cvtts_sd_u64): Renamed from _mm_cvtts_sd_epu64. ++ (_mm_cvtts_ss_i64): Renamed from _mm_cvtts_ss_epi64. ++ (_mm_cvtts_ss_si64): New alias of _mm_cvtts_ss_i64. ++ (_mm_cvtts_ss_u64): Renamed from _mm_cvtts_ss_epu64. ++ (_mm_cvtts_roundsd_i64): Renamed from _mm_cvtts_roundsd_epi64. ++ (_mm_cvtts_roundsd_si64): New alias of _mm_cvtts_roundsd_i64. ++ (_mm_cvtts_roundsd_u64): Renamed from _mm_cvtts_roundsd_epu64. ++ (_mm_cvtts_roundss_i64): Renamed from _mm_cvtts_roundss_epi64. ++ (_mm_cvtts_roundss_si64): New alias of _mm_cvtts_roundss_i64. ++ (_mm_cvtts_roundss_u64): Renamed from _mm_cvtts_roundss_epu64. ++ ++2026-07-22 Martin Jambor ++ ++ Backported from master: ++ 2026-06-18 Martin Jambor ++ ++ PR ipa/124128 ++ * ipa-cp.cc (ipa_vr_intersect_with_arith_jfunc): Move the check if ++ the final type conversion needs to happen before the conversion. ++ ++2026-07-21 Alice Carlotti ++ ++ * config/aarch64/aarch64.cc (aarch64_start_call_args): Extend ++ comment. ++ ++2026-07-21 Alice Carlotti ++ ++ * config/aarch64/aarch64.cc (aarch64_mode_confluence): Fix ++ comment typo. ++ * target.def (mode_switching): Fix incorrect variable names in ++ documentation. ++ * doc/tm.texi: Regenerate. ++ ++2026-07-21 Alice Carlotti ++ ++ PR target/119210 ++ * config/aarch64/aarch64.cc (aarch64_mode_emit_local_sme_state): ++ Add PSTATE.ZA enablement, and zero it if already enabled. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR testsuite/126261 ++ * doc/sourcebuild.texi (can_deref_null): Document. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-06-25 Richard Biener ++ ++ PR tree-optimization/125953 ++ * gimple-range.cc (gimple_ranger::range_of_expr): Document. ++ Fall back to global ranges if 'stmt' is not in the IL. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-06-02 Richard Biener ++ ++ PR tree-optimization/125502 ++ * tree-ssa-forwprop.cc (optimize_vector_load): Do not ++ move defs of abnormals. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-07-14 Richard Biener ++ ++ PR tree-optimization/126194 ++ * tree-ssa-structalias.cc (find_func_aliases_for_call): ++ Only ignore calls to delete if DECL_IS_REPLACEABLE_OPERATOR. ++ ++2026-07-20 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-06-29 Kyrylo Tkachov ++ ++ PR target/105116 ++ * lra-constraints.cc (simplify_operand_subreg): Reload a ++ non-representable narrowing subreg of a hard register through ++ memory instead of resolving it lossily. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-13 Torbjörn SVENSSON ++ ++ PR driver/124058 ++ * common.opt (Wuse-after-free): Make an alias for ++ -Wuse-after-free=1. ++ * doc/invoke.texi: Document alias. ++ * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer): ++ Use OPT_Wuse_after_free_. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-16 Jakub Jelinek ++ ++ PR tree-optimization/126262 ++ * gimple-lower-bitint.cc (build_bitint_stmt_ssa_conflicts): Treat ++ IFN_MUL_OVERFLOW and IFN_UBSAN_CHECK_MUL like IFN_BSWAP, regardless ++ of bitint_big_endian. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-15 Jakub Jelinek ++ ++ PR tree-optimization/126257 ++ * match.pd (x+x -> x*2): Only optimize if 2 is representable in the ++ type. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-14 Jakub Jelinek ++ ++ PR middle-end/126084 ++ * gimple-lower-bitint.cc: Include "attribs.h" and "asan.h". ++ (gimple_lower_bitint): Use asan_expand_poison_ifn to lower ++ .ASAN_POISON calls with large/huge _BitInt lhs. ++ * asan.cc (report_error_func): Set *nargs and use _n builtin ++ even if size is not a power of two or larger than 16. ++ (asan_expand_poison_ifn): Handle nargs == 2. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-14 Jakub Jelinek ++ H.J. Lu ++ ++ PR tree-optimization/120201 ++ * cfgexpand.cc (expand_used_vars): Set data.asan_alignb to ++ maximum of itself and crtl->stack_alignment_needed ++ / BITS_PER_UNIT. ++ ++2026-07-16 Jeevitha ++ ++ Backported from master: ++ 2026-06-22 Jeevitha Palanisamy ++ ++ PR target/106895 ++ * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add ++ RS6000_BTI_INTPTI and RS6000_BTI_UINTPTI. ++ (intPTI_type_internal_node, uintPTI_type_internal_node): New ++ PTImode type macros. ++ * config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Register ++ signed and unsigned PTImode internal builtin types. ++ * config/rs6000/sync.md (trunctipti2): New splitter. ++ (extendptiti2): Likewise. ++ (zero_extendptiti2): Likewise. ++ ++2026-07-14 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-14 Torbjörn SVENSSON ++ ++ * doc/sourcebuild.texi (arm_v8_1m_mve_link): Document. ++ ++2026-07-09 Uros Bizjak ++ ++ Backported from master: ++ 2026-07-08 Uros Bizjak ++ ++ PR target/126148 ++ * config/i386/i386-expand.cc (ix86_gen_ccmp_first): Restrict ++ floating-point modes accepted for ccmp according to the ++ available floating-point instruction set. ++ ++2026-07-07 Icenowy Zheng ++ ++ Backported from master: ++ 2026-07-01 Icenowy Zheng ++ ++ PR target/126049 ++ * config/riscv/autovec.md: Change fmin/fmax reduction initial ++ value from inf/-inf to NaN for proper semantics of corresponding ++ C funtion. ++ ++2026-07-05 Oleg Endo ++ ++ PR target/67459 ++ PR target/122948 ++ * config/sh/sh.md (addc): Fix T bit set expression. ++ (subc): Likewise. ++ ++2026-07-01 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-06-26 Stefan Schulze Frielinghaus ++ ++ PR target/125972 ++ * config/s390/s390.cc (s390_rtx_costs): Deal with non-compare ++ conditions during costing. Also fix some indentation. ++ ++2026-07-01 Eric Botcazou ++ ++ * tree-ssa-structalias.cc (set_uids_in_ptset): If ANYTHING is ++ present in the ESCAPED_RETURN solution, record that the global ++ solution has an escaped heap if FROM contains a heap variable. ++ ++2026-07-01 Avinash Jayakar ++ ++ Backported from master: ++ 2026-06-30 Avinash Jayakar ++ Surya Kumari Jangala ++ ++ * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Add logic to ++ handle __builtin_ppc_atomic_cas_local. ++ * config/rs6000/rs6000-builtins.def: New builtins for ++ __builtin_ppc_atomic_cas_local with types. ++ * config/rs6000/rs6000-c.cc (altivec_build_resolved_builtin): Handle ++ builtins with up to 6 arguments. ++ * config/rs6000/rs6000-overload.def: Overload builtin for signed/unsiged ++ char, short, int, long, __int128. ++ * config/rs6000/rs6000-protos.h (rs6000_expand_atomic_compare_and_swap): Add ++ additional parameter 'local' to the prototype. ++ * config/rs6000/rs6000.cc (emit_load_locked): Add new parameter. Pass new ++ parameter to generate load-locked instruction. ++ (rs6000_expand_atomic_compare_and_swap): Add new parameter. Call ++ emit_load_locked() with additional parameter value of EH bit. ++ (rs6000_expand_atomic_exchange): Pass EH value 0 to emit_load_locked(). ++ (rs6000_expand_atomic_op): Likewise. ++ * config/rs6000/sync.md (load_locked): Add new operand in RTL template. ++ Specify EH bit in the larx instruction. ++ (load_locked_si): Likewise. ++ (load_lockedpti): Likewise. ++ (load_lockedti): Add new operand in RTL template. Pass EH bit to ++ gen_load_lockedpti(). ++ (atomic_compare_and_swap): Pass new parameter 'false' to ++ rs6000_expand_atomic_compare_and_swap. ++ (atomic_compare_and_swap_local): New define_expand. ++ * doc/extend.texi: Add documentation for new builtin. ++ ++2026-07-01 Haochen Jiang ++ ++ * config/i386/i386.h (PTA_DIAMONDRAPIDS): Remove PTA_AMX_TF32. ++ * doc/invoke.texi: Correct documentation. ++ ++2026-06-30 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-06-12 Stefan Schulze Frielinghaus ++ ++ PR rtl-optimization/125173 ++ * ira.cc (combine_and_move_insns): Allow multiple uses within ++ an insn. ++ ++2026-06-30 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-04-22 Kyrylo Tkachov ++ ++ PR target/124908 ++ * config/aarch64/aarch64-sve-builtins-base.cc ++ (svld1rq_impl::fold): When the SVE vector length equals the ++ quadword width, emit VIEW_CONVERT_EXPR instead of VEC_PERM_EXPR. ++ ++2026-06-29 Alex Coplan ++ ++ Backported from master: ++ 2026-06-23 Alex Coplan ++ ++ PR target/125818 ++ * config/aarch64/aarch64-sve-builtins-base.cc (svset_impl::fold): Fix ++ unsharing to ensure the returned stmt has the exact same lhs as the ++ original. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-29 Jakub Jelinek ++ ++ PR target/125469 ++ * config/i386/i386.md (*add_1): Revert 2026-05-28 ++ changes. ++ (define_split from *add_1_nf to *lea): Set INSN_CODE ++ to -1 if and are the same. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-05-28 Jakub Jelinek ++ ++ PR target/125469 ++ * config/i386/i386.md (*add_1): Don't return "#" for ++ the lea non-TARGET_APX_NDD case, instead emit a lea directly. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-27 Jakub Jelinek ++ ++ PR target/125992 ++ * config/s390/s390.md (*brx_stage1_): Add CC_REGNUM clobber. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-06 Jakub Jelinek ++ ++ PR target/125611 ++ * config/i386/sse.md (_pmulhrsw3, smulhrs3): ++ Use vector_operand instead of nonimmediate_operand. ++ ++2026-06-22 Robin Dapp ++ ++ Backported from master: ++ 2026-06-17 Robin Dapp ++ ++ PR target/125478 ++ * config/riscv/vector.md: Set widen-alu mode_idx to 3. ++ ++2026-06-22 Robin Dapp ++ ++ Backported from master: ++ 2026-06-16 Robin Dapp ++ ++ PR target/125670 ++ * config/riscv/autovec-opt.md: Use avl_type operand number. ++ ++2026-06-22 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-06-11 Torbjörn SVENSSON ++ ++ PR testsuite/113276 ++ * doc/sourcebuild.texi (arm_mixed_fp): Document. ++ ++2026-06-18 Kewen Lin ++ ++ Backported from master: ++ 2026-05-28 Kewen Lin ++ Xin Liu ++ ++ * config/i386/c86-4g-m7.md (c86_4g_m7_fpu): Remove automaton. ++ (c86_4g_m7_fpu02): New automaton. ++ (c86_4g_m7_fpu13): Ditto. ++ (c86-4g-m7-fpu0): Move to c86_4g_m7_fpu02 automaton. ++ (c86-4g-m7-fpu1): Move to c86_4g_m7_fpu13 automaton. ++ (c86-4g-m7-fpu2): Move to c86_4g_m7_fpu02 automaton. ++ (c86-4g-m7-fpu3): Move to c86_4g_m7_fpu13 automaton. ++ (c86-4g-m7-fdiv): Remove cpu unit. ++ (c86-4g-m7-fdiv1): New cpu unit. ++ (c86-4g-m7-fdiv3): Ditto. ++ (c86-4g-m7-fpu_0_3): New reservation. ++ (c86-4g-m7-fpu_1_3x2): Ditto. ++ (c86-4g-m7-fpu_1_3x3): Ditto. ++ (c86-4g-m7-fpu_1_3x6): Ditto. ++ (c86-4g-m7-fpux2): Ditto. ++ (c86-4g-m7-fpux4): Ditto. ++ (c86-4g-m7-fpux6): Ditto. ++ (c86-4g-m7-fpux8): Ditto. ++ (c86-4g-m7-fpux16): Ditto. ++ (c86-4g-m7-fp1fdiv1x4): Ditto. ++ (c86-4g-m7-fp3fdiv3x4): Ditto. ++ (c86-4g-m7-fdiv13): Ditto. ++ (c86-4g-m7-fp13div13): Ditto. ++ (c86-4g-m7-fp13div13x4): Ditto. ++ (c86-4g-m7-fp1div1_fp3div3_x4x8): Ditto. ++ (c86-4g-m7-fp1div1_fp3div3_x4x9): Ditto. ++ (c86-4g-m7-fp1div1_fp3div3_x4x11): Ditto. ++ (c86-4g-m7-fp1div1_fp3div3_x4x15): Ditto. ++ (c86-4g-m7-fp1div1_fp3div3_x4x18): Ditto. ++ (c86_4g_m7_idiv): New reservation. ++ (c86_4g_m7_idiv_QI): Adjust reservation latency and unit occupancy. ++ (c86_4g_m7_idiv_load): New reservation. ++ (c86_4g_m7_idiv_QI_load): Adjust reservation latency and unit ++ occupancy. ++ (c86_4g_m7_idiv_DI): Remove reservation. ++ (c86_4g_m7_idiv_SI): Ditto. ++ (c86_4g_m7_idiv_HI): Ditto. ++ (c86_4g_m7_idiv_DI_load): Ditto. ++ (c86_4g_m7_idiv_SI_load): Ditto. ++ (c86_4g_m7_idiv_HI_load): Ditto. ++ (c86_4g_m7_sse_insertimm): Adjust reservation units and unit ++ occupancy. ++ (c86_4g_m7_sse_insert): Ditto. ++ (c86_4g_m7_fp_sqrt): Adjust reservation. ++ (c86_4g_m7_fp_div): Ditto. ++ (c86_4g_m7_fp_div_load): Ditto. ++ (c86_4g_m7_fp_idiv_load): Ditto. ++ (c86_4g_m7_sse_pinsr_reg): Adjust reservation units and unit ++ occupancy. ++ (c86_4g_m7_sse_pinsr_reg_load): Ditto. ++ (c86_4g_m7_avx_vpinsr_reg): Ditto. ++ (c86_4g_m7_avx_vpinsr_reg_load): Ditto. ++ (c86_4g_m7_avx512_perm_xmm): Delete the prefix condition. ++ (c86_4g_m7_avx512_perm_xmm_opload): Ditto. ++ (c86_4g_m7_avx512_permi2_ymm): Adjust reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_permi2_zmm): Ditto. ++ (c86_4g_m7_avx512_permi2_ymm_load): Ditto. ++ (c86_4g_m7_avx512_permi2_zmm_load): Ditto. ++ (c86_4g_m7_avx512_perm_zmm_imm): Ditto. ++ (c86_4g_m7_avx512_perm_zmm_imm_load): Ditto. ++ (c86_4g_m7_avx512_perm_zmm_noimm): Ditto. ++ (c86_4g_m7_sse_perm_zmm_noimm_load): Ditto. ++ (c86_4g_m7_avx_perm_ymm): Remove. ++ (c86_4g_m7_avx_perm_ymem): Ditto. ++ (c86_4g_m7_avx512_shuf_zmm): Adjust reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_shuf_zmem): Ditto. ++ (c86_4g_m7_avx512_cmpestr): Ditto. ++ (c86_4g_m7_avx512_cmpestr_load): Ditto. ++ (c86_4g_m7_avx512_vdbpsadbw_zmm): Ditto. ++ (c86_4g_m7_avx512_vdbpsadbw_zmem): Ditto. ++ (c86_4g_m7_avx_ssecomi_comi): Ditto. ++ (c86_4g_m7_avx_ssecomi_comi_load): Ditto. ++ (c86_4g_m7_avx512_expand): Ditto. ++ (c86_4g_m7_avx512_expand_load): Ditto. ++ (c86_4g_m7_avx512_expand_z): Ditto. ++ (c86_4g_m7_avx512_expand_z_load): Ditto. ++ (c86_4g_m7_sse_movnt_xy): Rename to c86_4g_m7_sse_movnt. ++ (c86_4g_m7_avx512_sseadd_xy): Adjust reservation units. ++ (c86_4g_m7_avx512_sseadd_xy_load): Ditto. ++ (c86_4g_m7_sse_sseiadd_hplus): Adjust reservation units and unit ++ occupancy. ++ (c86_4g_m7_sse_sseiadd_hplus_load): Ditto. ++ (c86_4g_m7_avx512_ssemul): Adjust reservation units. ++ (c86_4g_m7_avx512_ssemul_load): Ditto. ++ (c86_4g_m7_avx512_ssediv): Remove. ++ (c86_4g_m7_avx512_ssediv_mem): Remove. ++ (c86_4g_m7_avx512_ssediv_x): New. ++ (c86_4g_m7_avx512_ssediv_xmem): New. ++ (c86_4g_m7_avx512_ssediv_y): New. ++ (c86_4g_m7_avx512_ssediv_ymem): New. ++ (c86_4g_m7_avx512_ssediv_z): Adjust reservation units. ++ (c86_4g_m7_avx512_ssediv_zmem): Ditto. ++ (c86_4g_m7_avx512_ssecmp_z): Add reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_ssecmp_z_load): Ditto. ++ (c86_4g_m7_avx512_ssecmp_vp_z): New reservation. ++ (c86_4g_m7_avx512_ssecmp_vp_z_load): Ditto. ++ (c86_4g_m7_avx512_ssecmp_test_z): Remove reservation. ++ (c86_4g_m7_avx512_ssecmp_test_z_load): Ditto. ++ (c86_4g_m7_avx512_muladd): Broaden matching condition. ++ (c86_4g_m7_avx512_muladd_load): Ditto. ++ (c86_4g_m7_fma_muladd): Remove reservation. ++ (c86_4g_m7_fma_muladd_load): Ditto. ++ (c86_4g_m7_avx512_sse_conflict_x): Add reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_sse_conflict_x_load): Ditto. ++ (c86_4g_m7_avx512_sse_conflict_y): Ditto. ++ (c86_4g_m7_avx512_sse_conflict_y_load): Ditto. ++ (c86_4g_m7_avx512_sse_conflict_z): Ditto. ++ (c86_4g_m7_avx512_sse_conflict_z_load): Ditto. ++ (c86_4g_m7_avx512_sse_class_z): Add reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_sse_class_z_load): Ditto. ++ (c86_4g_m7_avx512_sse_sqrt): Remove. ++ (c86_4g_m7_avx512_sse_sqrt_load): Remove. ++ (c86_4g_m7_avx512_sse_sqrt_sf_x): New. ++ (c86_4g_m7_avx512_sse_sqrt_sf_xload): New. ++ (c86_4g_m7_avx512_sse_sqrt_sf_y): New. ++ (c86_4g_m7_avx512_sse_sqrt_sf_yload): New. ++ (c86_4g_m7_avx512_sse_sqrt_sf_z): New. ++ (c86_4g_m7_avx512_sse_sqrt_sf_zload): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_x): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_xload): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_y): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_yload): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_z): New. ++ (c86_4g_m7_avx512_sse_sqrt_df_zload): New. ++ (c86_4g_m7_avx512_msklog_vector): Add reservation units and unit ++ occupancy. ++ (c86_4g_m7_avx512_mskmov_z_k): Ditto. ++ (c86_4g_m7_avx512_mskmov_k_reg): Ditto. ++ * config/i386/c86-4g.md (c86_4g_fp): Remove automaton. ++ (c86_4g_fp024): New automaton. ++ (c86_4g_fp1): Ditto. ++ (c86-4g-fp0): Move to c86_4g_fp024 automaton. ++ (c86-4g-fp1): Move to c86_4g_fp1 automaton. ++ (c86-4g-fp2): Move to c86_4g_fp024 automaton. ++ (c86-4g-fp3): Ditto. ++ (c86-4g-fp1fdivx4): New reservation. ++ (c86_4g_fp_sqrt): Adjust reservation. ++ (c86_4g_sse_sqrt_sf): Ditto. ++ (c86_4g_sse_sqrt_sf_mem): Ditto. ++ (c86_4g_sse_sqrt_df): Ditto. ++ (c86_4g_sse_sqrt_df_mem): Ditto. ++ (c86_4g_fp_op_div): Ditto. ++ (c86_4g_fp_op_div_load): Ditto. ++ (c86_4g_fp_op_idiv_load): Adjust reservation latency. ++ (c86_4g_ssediv_ss_ps): Adjust reservation. ++ (c86_4g_ssediv_ss_ps_load): Ditto. ++ (c86_4g_ssediv_sd_pd): Ditto. ++ (c86_4g_ssediv_sd_pd_load): Ditto. ++ (c86_4g_ssediv_avx256_ps): Ditto. ++ (c86_4g_ssediv_avx256_ps_load): Ditto. ++ (c86_4g_ssediv_avx256_pd): Ditto. ++ (c86_4g_ssediv_avx256_pd_load): Ditto. ++ ++2026-06-18 Kewen Lin ++ ++ Backported from master: ++ 2026-05-01 Kewen Lin ++ ++ * config/i386/c86-4g-m7.md (c86_4g_m7_idiv): New automaton. ++ (c86_4g_m7_fdiv): Ditto. ++ (c86-4g-m7-idiv): New unit. ++ (c86-4g-m7-fdiv): Ditto. ++ (c86_4g_m7_idiv_DI): Adjust unit in the reservation. ++ (c86_4g_m7_idiv_SI): Ditto. ++ (c86_4g_m7_idiv_HI): Ditto. ++ (c86_4g_m7_idiv_QI): Ditto. ++ (c86_4g_m7_idiv_DI_load): Ditto. ++ (c86_4g_m7_idiv_SI_load): Ditto. ++ (c86_4g_m7_idiv_HI_load): Ditto. ++ (c86_4g_m7_idiv_QI_load): Ditto. ++ (c86_4g_m7_fp_div): Ditto. ++ (c86_4g_m7_fp_div_load): Ditto. ++ (c86_4g_m7_fp_idiv_load): Ditto. ++ (c86_4g_m7_avx512_ssediv): Ditto. ++ (c86_4g_m7_avx512_ssediv_mem): Ditto. ++ (c86_4g_m7_avx512_ssediv_z): Ditto. ++ (c86_4g_m7_avx512_ssediv_zmem): Ditto. ++ (c86_4g_m7_avx512_sse_sqrt): Ditto. ++ (c86_4g_m7_avx512_sse_sqrt_load): Ditto. ++ (c86_4g_m7_fp_sqrt): Ditto. Rename from ... ++ (c86_4g_m7fp_sqrt): ... here. ++ * config/i386/c86-4g.md (c86_4g_idiv): New automaton. ++ (c86_4g_fdiv): Ditto. ++ (c86-4g-idiv): New unit. ++ (c86-4g-fdiv): Ditto. ++ (c86_4g_idiv_DI): Ditto. ++ (c86_4g_idiv_SI): Ditto. ++ (c86_4g_idiv_HI): Ditto. ++ (c86_4g_idiv_QI): Ditto. ++ (c86_4g_idiv_mem_DI): Ditto. ++ (c86_4g_idiv_mem_SI): Ditto. ++ (c86_4g_idiv_mem_HI): Ditto. ++ (c86_4g_idiv_mem_QI): Ditto. ++ (c86_4g_fp_sqrt): Ditto. ++ (c86_4g_sse_sqrt_sf): Ditto. ++ (c86_4g_sse_sqrt_sf_mem): Ditto. ++ (c86_4g_sse_sqrt_df): Ditto. ++ (c86_4g_sse_sqrt_df_mem): Ditto. ++ (c86_4g_fp_op_div): Ditto. ++ (c86_4g_fp_op_div_load): Ditto. ++ (c86_4g_fp_op_idiv_load): Ditto. ++ (c86_4g_ssediv_ss_ps): Ditto. ++ (c86_4g_ssediv_ss_ps_load): Ditto. ++ (c86_4g_ssediv_ss_pd): Ditto. ++ (c86_4g_ssediv_ss_pd_load): Ditto. ++ (c86_4g_ssediv_avx256_ps): Ditto. ++ (c86_4g_ssediv_avx256_ps_load): Ditto. ++ (c86_4g_ssediv_avx256_pd): Ditto. ++ (c86_4g_ssediv_avx256_pd_load): Ditto. ++ ++2026-06-18 Xin Liu ++ ++ Backported from master: ++ 2026-04-29 Xin Liu ++ Zhaoling Bao ++ ++ * common/config/i386/cpuinfo.h (get_hygon_cpu): Detect the specific ++ type of HYGON CPU and return HYGON CPU name. ++ (cpu_indicator_init): Handle HYGON CPU. ++ * common/config/i386/i386-common.cc (processor_names): Add HYGON ++ C86-4G processors c86-4g-m{4,6,7}. ++ (processor_alias_table): Add hygon, hygonfam18h and c86-4g-m{4,6,7} ++ entries. ++ (ARRAY_SIZE): Update as new entries added. ++ * common/config/i386/i386-cpuinfo.h (enum processor_vendor): Add ++ VENDOR_HYGON. ++ (enum processor_types): Add HYGONFAM18H. ++ (enum processor_subtypes): Add HYGONFAM18H_C86_4G_M{4,6,7}. ++ * config.gcc: Add support for c86_4g_m{4,6,7}. ++ * config/i386/cpuid.h (signature_HYGON_ebx): Add signature for HYGON. ++ (signature_HYGON_ecx): Ditto. ++ (signature_HYGON_edx): Ditto. ++ * config/i386/driver-i386.cc (host_detect_local_cpu): Support HYGON ++ c86-4g-m4{4,6,7} processors. ++ * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto. ++ * config/i386/i386-options.cc (m_C86_4G_M4): New definition. ++ (m_C86_4G_M6): Ditto. ++ (m_C86_4G_M7): Ditto. ++ (m_C86_4G): Ditto. ++ (processor_cost_table): Add cost entries for c86-4g-m4{4,6,7}. ++ * config/i386/i386.cc (ix86_reassociation_width): Add handlings for ++ PROCESSOR_C86_4G_M{4,6,7}. ++ * config/i386/i386.h (enum processor_type): Define ++ PROCESSOR_C86_4G_M{4,6,7}. ++ (PTA_C86_4G_M4): New define. ++ (PTA_C86_4G_M6): Ditto. ++ (PTA_C86_4G_M7): Ditto. ++ * config/i386/x86-tune-costs.h (c86_4g_m4_memcpy): New stringop_algs. ++ (c86_4g_m4_cost): New processor_costs. ++ (c86_4g_m6_cost): Ditto. ++ (c86_4g_m7_cost): Ditto. ++ * config/i386/x86-tune-sched.cc (ix86_issue_rate): Handle ++ PROCESSOR_C86_4G_M{4,6,7}. ++ (ix86_adjust_cost): Ditto. ++ * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Handle m_C86_4G. ++ (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto. ++ (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto. ++ (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto. ++ (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto. ++ (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto. ++ (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto. ++ (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto. ++ (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto. ++ (X86_TUNE_USE_LEAVE): Ditto. ++ (X86_TUNE_PUSH_MEMORY): Ditto. ++ (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto. ++ (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto. ++ (X86_TUNE_USE_SAHF): Ditto. ++ (X86_TUNE_USE_BT): Ditto. ++ (X86_TUNE_AVOID_MFENCE): Ditto. ++ (X86_TUNE_USE_FFREEP): Ditto. ++ (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto. ++ (X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL): Ditto. ++ (X86_TUNE_SSE_TYPELESS_STORES): Ditto. ++ (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto. ++ (X86_TUNE_USE_GATHER_2PARTS): Ditto. ++ (X86_TUNE_USE_GATHER_4PARTS): Ditto. ++ (X86_TUNE_USE_GATHER_8PARTS): Ditto. ++ (X86_TUNE_AVOID_128FMA_CHAINS): Ditto. ++ (X86_TUNE_AVOID_256FMA_CHAINS): Ditto. ++ (X86_TUNE_USE_RCR): Ditto. ++ (X86_TUNE_AVX256_MOVE_BY_PIECES): Handle m_C86_4G_M{4,6}. ++ (X86_TUNE_USE_SCATTER_2PARTS): Handle m_C86_4G_M7. ++ (X86_TUNE_USE_SCATTER_4PARTS): Ditto. ++ (X86_TUNE_USE_SCATTER_8PARTS): Ditto. ++ (X86_TUNE_AVX512_SPLIT_REGS): Ditto. ++ (X86_TUNE_AVX256_MOVE_BY_PIECES): Ditto. ++ (X86_TUNE_AVX256_STORE_BY_PIECES): Ditto. ++ (X86_TUNE_AVX512_MOVE_BY_PIECES): Ditto. ++ (X86_TUNE_AVX512_STORE_BY_PIECES): Ditto. ++ * doc/extend.texi: Document about hygonfam18h and c86-4g-m{4,6,7}. ++ * doc/invoke.texi: Document about c86-4g-m{4,6,7}. ++ * config/i386/c86-4g-m7.md: New file for c86-4g-m7 scheduling model ++ information. ++ * config/i386/c86-4g.md: New file for c86-4g-m{4,6} scheduling model ++ information. ++ * config/i386/i386.md (cpu attr): Add c86_4g_m{4,6,7}. ++ (c86-4g.md): New include. ++ (c86-4g-m7.md): Ditto. ++ (*cmpixf_i387): Set attr c86_decode. ++ (*cmpi): Ditto. ++ (swap): Ditto. ++ (*swap): Ditto. ++ (extendhisi2): Ditto. ++ (floathi2): Ditto. ++ (floatxf2): Ditto. ++ (*float2): Ditto. ++ (*floatdi2_i387): Ditto. ++ (*anddi_1_bt): Ditto. ++ (*iordi_1_bts): Ditto. ++ (*xordi_1_btc): Ditto. ++ (*): Ditto. ++ (*btr): Ditto. ++ (*btsq_imm): Ditto. ++ (*btrq_imm): Ditto. ++ (*btcq_imm): Ditto. ++ (*tzcnt_1): Ditto. ++ (*tzcnt_1_falsedep): Ditto. ++ (*bsf_1): Ditto. ++ (*ctz2_falsedep): Ditto. ++ (*ctzsi2_zext): Ditto. ++ (*ctzsi2_zext_falsedep): Ditto. ++ (bsr_rex64): Ditto. ++ (bsr_rex64_1): Ditto. ++ (bsr_rex64_1_zext): Ditto. ++ (bsr): Ditto. ++ (bsr_1): Ditto. ++ (bsr_zext_1): Ditto. ++ (*bswaphi2_movbe): Ditto. ++ (*bswaphi2): Ditto. ++ (bswaphisi2_lowpart): Ditto. ++ (fpremxf4_i387): Ditto. ++ (fprem1xf4_i387): Ditto. ++ (xf2): Ditto. ++ (sincosxf3): Ditto. ++ (fptanxf4_i387): Ditto. ++ (atan2xf3): Ditto. ++ (fyl2xxf3_i387): Ditto. ++ (fyl2xp1xf3_i387): Ditto. ++ (fxtractxf3_i387): Ditto. ++ (*f2xm1xf2_i387): Ditto. ++ (fscalexf4_i387): Ditto. ++ (rintxf2): Ditto. ++ (*movxi_internal_avx512f): Set attr c86_attr. ++ (*movoi_internal_avx): Ditto. ++ (*movti_internal): Ditto. ++ (*movdi_internal): Ditto. ++ (*movsi_internal): Ditto. ++ (*movhi_internal): Ditto. ++ (*movtf_internal): Ditto. ++ (*movdf_internal): Ditto. ++ (*movsf_internal): Ditto. ++ (*zero_extendsidi2): Ditto. ++ (sqrtxf2): Ditto. ++ (3): Ditto. ++ (*ieee_s3): Ditto. ++ * config/i386/mmx.md (*mmx_maskmovq): Set attr c86_decode. ++ (*mmx_maskmovq): Ditto. ++ (sse_movntq): Set attr c86_attr. ++ (*mmx_blendps): Ditto. ++ (mmx_blendvps): Ditto. ++ (*mmx_pmaddwd): Ditto. ++ (mmx_pblendvb_v8qi): Ditto. ++ (mmx_pblendvb_): Ditto. ++ (sse4_1_v4qiv4hi2): Ditto. ++ (sse4_1_v2hiv2si2): Ditto. ++ (sse4_1_v2qiv2si2): Ditto. ++ (sse4_1_v2qiv2hi2): Ditto. ++ (*mmx_pinsrd): Ditto. ++ (*mmx_pinsrw): Ditto. ++ (*mmx_pinsrb): Ditto. ++ (*mmx_pextrw): Ditto. ++ (*mmx_pextrw): Ditto. ++ (*mmx_pextrw_zext): Ditto. ++ (*mmx_pextrb): Ditto. ++ (*mmx_pextrb_zext): Ditto. ++ (*mmx_pblendw64): Ditto. ++ (*mmx_pblendw32): Ditto. ++ (*vec_extractv2si_1): Ditto. ++ (*vec_extractv2si_1_zext): Ditto. ++ (*pinsrw): Ditto. ++ (*pinsrb): Ditto. ++ (*pextrw): Ditto. ++ (*pextrw): Ditto. ++ (*pextrw_zext): Ditto. ++ (*pextrb): Ditto. ++ (*pextrb_zext): Ditto. ++ (*mmx_psadbw): Ditto. ++ * config/i386/sse.md (ktest): Set attr c86_decode. ++ (*kortest): Ditto. ++ (sse_cvtsi2ss): Ditto. ++ (sse2_cvtsi2sd): Ditto. ++ (sse2_maskmovdqu): Ditto. ++ (*_dp): Ditto. ++ (*_mpsadbw): Ditto. ++ (pclmulqdq): Ditto. ++ (conflict): Ditto. ++ (_blendm): Set attr c86_attr. ++ (sse2_movnti): Ditto. ++ (_movnt): Ditto. ++ (_movnt): Ditto. ++ (_rcp2): Ditto. ++ (sse_vmrcpv4sf2): Ditto. ++ (rcp14): Ditto. ++ (srcp14): Ditto. ++ (srcp14_mask): Ditto. ++ (_sqrt2): Ditto. ++ (_vmsqrt2): Ditto. ++ (*_vmsqrt2): Ditto. ++ (rsqrt14): Ditto. ++ (rsqrt14): Ditto. ++ (rsqrt14__mask"): Ditto. ++ (*3): Ditto. ++ (ieee_3): Ditto. ++ (*_vm3): ++ Ditto. ++ (_ieee_vm3 ++ ): Ditto. ++ (*ieee_3): Ditto. ++ (avx_hv4df3): Ditto. ++ (*sse3_haddv2df3): Ditto. ++ (sse3_hsubv2df3): Ditto. ++ (*sse3_haddv2df3_low): Ditto. ++ (*sse3_hsubv2df3_low): Ditto. ++ (avx_hv8sf3): Ditto. ++ (sse3_hv4sf3): Ditto. ++ (*reducep): Ditto. ++ (reduces): Ditto. ++ (*_eq3_1): Ditto. ++ (_andnot3): Ditto. ++ (*3): Ditto. ++ (*andnot3): Ditto. ++ (3): Ditto. ++ (*tf3): Ditto. ++ (vec_set_0): Ditto. ++ (@vec_set_0): Ditto. ++ (*sse4_1_extractps): Ditto. ++ (vec_extract): Ditto. ++ (_align): Ditto. ++ (avx512bw_pmaddwd512): Ditto. ++ (*avx2_pmaddw): Ditto. ++ (*sse2_pmaddwd): Ditto. ++ (*avx2_3): Ditto. ++ (*avx512f_3): Ditto. ++ (*avx512bw_3): Ditto. ++ (*sse4_1_3): Ditto. ++ (*v8hi3): Ditto. ++ (*v16qi3): Ditto. ++ (*andnot3_mask): Ditto. ++ (*3): Ditto. ++ (v1ti3): Ditto. ++ (_pinsr): Ditto. ++ (*_vinsert_0): Ditto. ++ (_vinsert ++ _1): Ditto. ++ (vec_set_lo_): Ditto. ++ (vec_set_hi_): Ditto. ++ (avx512dq_shuf_64x2_1): Ditto. ++ (avx512f_shuf_64x2_1): Ditto. ++ (*avx512f_shuf_64x2_1_1): Ditto. ++ (avx512vl_shuf_32x4_1): Ditto. ++ (avx512f_shuf_32x4_1): Ditto. ++ (*avx512f_shuf_32x4_1_1): Ditto. ++ (*vec_extract): Ditto. ++ (*vec_extract_zext): Ditto. ++ (*vec_extractv16qi_zext): Ditto. ++ (*vec_extractv4si): Ditto. ++ (*vec_extractv4si_zext): Ditto. ++ (*vec_extractv2di_1): Ditto. ++ (*vec_concatv2si_sse4_1): Ditto. ++ (vec_concatv2di): Ditto. ++ (*_uavg3): Ditto. ++ (*_psadbw): Ditto. ++ (_movmsk): Ditto. ++ (*_movmsk_ext): Ditto. ++ (_pmovmskb): Ditto. ++ (*_pmovmskb_zext): Ditto. ++ (*sse2_maskmovdqu): Ditto. ++ (avx2_phwv16hi3): Ditto. ++ (ssse3_phwv8hi3): Ditto. ++ (ssse3_phdv4si3): Ditto. ++ (avx2_phdv8si3): Ditto. ++ (avx2_pmaddubsw256): Ditto. ++ (avx512bw_pmaddubsw512): Ditto. ++ (ssse3_pmaddubsw128): Ditto. ++ (_psign3): Ditto. ++ (ssse3_psign3): Ditto. ++ (*abs2): Ditto. ++ (abs2_mask): Ditto. ++ (abs2_mask): Ditto. ++ (sse4a_movnt): Ditto. ++ (sse4a_vmmovnt): Ditto. ++ (_blend): Ditto. ++ (_blendv): Ditto. ++ (sse4_1_blendv): Ditto. ++ (_movntdqa): Ditto. ++ (_pblendvb): Ditto. ++ (sse4_1_pblend): Ditto. ++ (*avx2_pblend): Ditto. ++ (avx2_pblendd): Ditto. ++ (avx2_v16qiv16hi2): Ditto. ++ (avx512bw_v32qiv32hi2): Ditto. ++ (sse4_1_v8qiv8hi2): Ditto. ++ (*sse4_1_v8qiv8hi2_1): Ditto. ++ (avx512f_v16qiv16si2): Ditto. ++ (avx2_v8qiv8si2): Ditto. ++ (*avx2_v8qiv8si2_1): Ditto. ++ (sse4_1_v4qiv4si2): Ditto. ++ (*sse4_1_v4qiv4si2_1): Ditto. ++ (avx512f_v16hiv16si2): Ditto. ++ (avx2_v8hiv8si2): Ditto. ++ (sse4_1_v4hiv4si2): Ditto. ++ (*sse4_1_v4hiv4si2_1): Ditto. ++ (avx512f_v8qiv8di2): Ditto. ++ (*avx512f_v8qiv8di2_1): Ditto. ++ (avx2_v4qiv4di2): Ditto. ++ (*avx2_v4qiv4di2_1): Ditto. ++ (sse4_1_v2qiv2di2): Ditto. ++ (*sse4_1_v2qiv2di2_1): Ditto. ++ (avx512f_v8hiv8di2): Ditto. ++ (avx2_v4hiv4di2): Ditto. ++ (*avx2_v4hiv4di2_1): Ditto. ++ (sse4_1_v2hiv2di2): Ditto. ++ (*sse4_1_v2hiv2di2_1): Ditto. ++ (avx512f_v8siv8di2): Ditto. ++ (avx2_v4siv4di2): Ditto. ++ (sse4_1_v2siv2di2): Ditto. ++ (*sse4_1_v2siv2di2_1): Ditto. ++ (sse4_1_round): Ditto. ++ (*sse4_1_round"): Ditto. ++ (sse4_2_pcmpestri): Ditto. ++ (sse4_2_pcmpestrm): Ditto. ++ (sse4_2_pcmpestr_cconly): Ditto. ++ (sse4_2_pcmpistri): Ditto. ++ (sse4_2_pcmpistrm): Ditto. ++ (sse4_2_pcmpistr_cconly): Ditto. ++ (xop_phaddbw): Ditto. ++ (xop_phaddbd): Ditto. ++ (xop_phaddbq): Ditto. ++ (xop_phaddwd): Ditto. ++ (xop_phaddwq): Ditto. ++ (xop_phadddq): Ditto. ++ (xop_phsubbw): Ditto. ++ (xop_phsubwd): Ditto. ++ (xop_phsubdq): Ditto. ++ (aesenc): Ditto. ++ (aesenclast): Ditto. ++ (aesdec): Ditto. ++ (aesdeclast): Ditto. ++ (aesimc): Ditto. ++ (aeskeygenassist): Ditto. ++ (_permvar): Ditto. ++ (avx2_perm_1): Ditto. ++ (_permvar): Ditto. ++ (avx512f_perm_1): Ditto. ++ (avx512f_broadcast): Ditto. ++ (avx_vbroadcastf128_): Ditto. ++ (avx512vl_broadcast_1): Ditto. ++ (avx512dq_broadcast_1): Ditto. ++ (*_vpermi2var3_mask): Ditto. ++ (_vpermt2var3): Ditto. ++ (_vpermt2var3_mask): Ditto. ++ (*avx_vperm2f128_nozero): Ditto. ++ (vec_set_lo_): Ditto. ++ (vec_set_hi_): Ditto. ++ (vec_set_lo_): Ditto. ++ (vec_set_hi_): Ditto. ++ (vec_set_lo_v32qi): Ditto. ++ (_maskload): Ditto. ++ (_maskstore): Ditto. ++ (avx_vec_concat): Ditto. ++ (_compress_mask): Ditto. ++ (compress_mask): Ditto. ++ (_compressstore_mask): Ditto. ++ (compressstore_mask): Ditto. ++ (expand_mask): Ditto. ++ (avx512bw_dbpsadbw): Ditto. ++ (clz2): Ditto. ++ (vpmadd52v8di): Ditto. ++ (vpmadd52): Ditto. ++ (vpmadd52_maskz_1): Ditto. ++ (vpmadd52_mask): Ditto. ++ (vaesdec_): Ditto. ++ (vaesdeclast_): Ditto. ++ (vaesenc_): Ditto. ++ (vaesenclast_): Ditto. ++ ++2026-06-17 Zhongyao Chen ++ ++ PR target/125215 ++ * config/riscv/riscv-v.cc (expand_const_vector_interleaved_stepped_npatterns): ++ Remove hi/lo optimization and always use the merge fallback. ++ ++2026-06-17 Alex Coplan ++ ++ Backported from master: ++ 2026-06-09 Alex Coplan ++ ++ PR middle-end/125621 ++ * expmed.cc (make_tree): Fix CONST_POLY_INT case to pass type ++ instead of t, move it to its own switch case. ++ ++2026-06-17 Kishan Parmar ++ ++ Backported from master: ++ 2026-05-22 Steve Markgraf ++ ++ * config/rs6000/rs6000.h (TARGET_NO_LWSYNC): Add PROCESSOR_MPCCORE. ++ ++2026-06-17 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-06-15 Kyrylo Tkachov ++ ++ PR target/125795 ++ * config/aarch64/aarch64-early-ra.cc (early_ra::allocate_colors): ++ Compute the allocated-FPR mask as ++ ((1ULL << color->group->size) - 1) << best. ++ ++2026-06-17 Carter Rennick ++ ++ Backported from master: ++ 2026-04-24 Carter Rennick ++ ++ PR target/120144 ++ * config/mips/mips.h (MAX_FIXED_MODE_SIZE): Remove. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-06-10 Andrew Pinski ++ ++ PR ipa/125699 ++ * ipa-param-manipulation.cc (ipa_param_body_adjustments::prepare_debug_expressions): Fix ++ lifetime issue with m_dead_ssa_debug_equiv usage. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-06-13 Andrew Pinski ++ ++ PR tree-optimization/125776 ++ * tree-ssa-phiopt.cc (is_factor_profitable): An ++ usage in a debug stmt should be ignored. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-06-14 Andrew Pinski ++ ++ PR tree-optimization/125774 ++ * gimple-range-fold.cc (fold_using_range::relation_fold_and_or): Use ++ relation_swap rather than relation_negate when the operands are exchanged. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-03-12 Andrew Pinski ++ ++ PR rtl-optimization/123822 ++ * simplify-rtx.cc (simplify_context::simplify_subreg): Check the ++ mode of the part to be non-VOIDmode before calling gen_rtx_SUBREG. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-03-13 Andrew Pinski ++ ++ PR rtl-optimization/124454 ++ * regcprop.cc (pass_cprop_hardreg::execute): If something ++ changed and non-call exceptions is on, call purge_all_dead_edges ++ and cleanup_cfg. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-02-18 Andrew Pinski ++ ++ PR rtl-optimization/116053 ++ * regcprop.cc (copyprop_hardreg_forward_1): Use delete_insn_and_edges ++ instead of delete_insn. ++ ++2026-06-17 Andrew MacLeod ++ ++ PR tree-optimization/125501 ++ * tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges): Abort ++ if there are 2 SSA_NAMES on the branch condition. ++ ++2026-06-16 Martin Jambor ++ ++ Backported from master: ++ 2026-05-12 Martin Jambor ++ ++ PR tree-optimization/124151 ++ * tree-sra.cc (build_user_friendly_ref_for_offset): Added parameters ++ CUR_SIZE and EXP_SIZE. Added code passing the correct CUR_SIZE and ++ checking it against EXP_SIZE. Removed unused code for the case when ++ EXP_TYPE was NULL_TREE. ++ (create_artificial_child_access): Adjusted the call to ++ build_user_friendly_ref_for_offset. ++ (propagate_subaccesses_from_rhs): Likewise. ++ (propagate_subaccesses_from_rhs): Removed a check that the size of ++ lchild is a multiple of BITS_PER_UNIT. ++ (propagate_subaccesses_from_lhs): Likewise. ++ ++2026-06-12 Ramin Moussavi ++ ++ * config/microblaze/microblaze.h (DWARF_ALT_FRAME_RETURN_COLUMN): ++ Define. ++ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125751 ++ * config/avr/avr.cc (avr_out_fract): Fix too small sequence ++ lengths in avr_asm_len calls. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/DATESTAMP ++++ b/src/gcc/DATESTAMP +@@ -1 +1 @@ +-20260612 ++20260915 +--- a/src/gcc/ada/ChangeLog ++++ b/src/gcc/ada/ChangeLog +@@ -1,3 +1,47 @@ ++2026-08-26 Eric Botcazou ++ ++ PR ada/127026 ++ * exp_aggr.adb (Must_Slide): Check for the unconstrained case only ++ after all the negative tests. ++ ++2026-08-24 Eric Botcazou ++ ++ PR ada/127026 ++ * exp_aggr.adb (Must_Slide): Reorder parameters, rename Obj_Type to ++ Ob_Typ and add Assign boolean parameter. Return Assign's value in ++ the case where Obj_Typ is unconstrained. ++ (Build_Array_Aggr_Code): Adjust call to Must_Slide. ++ (In_Place_Assign_OK): Likewise. ++ (Expand_Array_Aggregate): Likewise. ++ ++2026-08-02 Eric Botcazou ++ ++ PR ada/126553 ++ * exp_attr.adb (Build_Record_VS_Func.Validate_Field): Do nothing ++ if the field is of an Unchecked_Union type. ++ ++2026-08-02 Eric Botcazou ++ ++ PR ada/126379 ++ * exp_ch6.adb (Insert_Post_Call_Actions): Also deal with attribute ++ references as parent node. ++ ++2026-08-02 Eric Botcazou ++ ++ PR ada/126482 ++ * sem_attr.adb (Analyze_Attribute): Treat Unrestricted_Access like ++ [Unchecked_]Access when it comes to the overloading of the prefix. ++ ++2026-06-29 Eric Botcazou ++ ++ * exp_util.ads (Find_Optional_Prim_Op): Add Controlled_Op parameter ++ defaulting to False. ++ * exp_util.adb (Find_Optional_Prim_Op): Likewise. When it is set to ++ True, test whether the primitive has the signature of the controlled ++ primitives. ++ * sem_ch13.adb (Resolve_Finalization_Procedure): Reset Is_Overloaded ++ once an interpretation has been selected among the set. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/ada/exp_aggr.adb ++++ b/src/gcc/ada/exp_aggr.adb +@@ -141,19 +141,22 @@ package body Exp_Aggr is + -- constants that are done in place. + + function Must_Slide +- (Aggr : Node_Id; +- Obj_Type : Entity_Id; +- Typ : Entity_Id) return Boolean; ++ (Aggr : Node_Id; ++ Typ : Entity_Id; ++ Obj_Typ : Entity_Id; ++ Assign : Boolean) return Boolean; ++ -- Return whether an array aggregate Aggr whose subtype is Typ must slide ++ -- when assigned to an object whose (nominal) subtype is Obj_Typ. Assign ++ -- is True when the context is an assignment statement and False when it ++ -- is an object declaration or an allocator. ++ + -- A static array aggregate in an object declaration can in most cases be + -- expanded in place. The one exception is when the aggregate is given + -- with component associations that specify different bounds from those of + -- the type definition in the object declaration. In this pathological + -- case the aggregate must slide, and we must introduce an intermediate +- -- temporary to hold it. +- -- +- -- The same holds in an assignment to multi-dimensional arrays, when +- -- components may be given with bounds that differ from those of the +- -- component type. ++ -- temporary to hold it. The same holds in an assignment, when components ++ -- may be given with bounds that differ from those of the target. + + function Number_Of_Choices (N : Node_Id) return Nat; + -- Returns the number of discrete choices (not including the others choice +@@ -1424,7 +1427,8 @@ package body Exp_Aggr is + if Nkind (Parent (N)) = N_Assignment_Statement + and then Is_Array_Type (Comp_Typ) + and then Present (Component_Associations (Expr_Q)) +- and then Must_Slide (N, Comp_Typ, Etype (Expr_Q)) ++ and then ++ Must_Slide (N, Etype (Expr_Q), Comp_Typ, Assign => True) + then + Set_Expansion_Delayed (Expr_Q, False); + Set_Analyzed (Expr_Q, False); +@@ -4145,7 +4149,8 @@ package body Exp_Aggr is + -- statically equal to those of the target. + + if Is_Array +- and then Must_Slide (N, Etype (Name (Parent_Node)), Etype (N)) ++ and then ++ Must_Slide (N, Etype (N), Etype (Name (Parent_Node)), Assign => True) + then + return False; + end if; +@@ -6171,8 +6176,9 @@ package body Exp_Aggr is + or else Needs_Finalization (Typ) + or else not Must_Slide + (N, ++ Typ, + Designated_Type (Etype (Parent_Node)), +- Typ))) ++ Assign => False))) + + -- Object declaration (see Convert_Aggr_In_Object_Decl). Sliding + -- cannot be done in place for the time being. +@@ -6186,9 +6192,10 @@ package body Exp_Aggr is + (Defining_Identifier (Parent_Node)) + or else not Must_Slide + (N, ++ Typ, + Etype + (Defining_Identifier (Parent_Node)), +- Typ))) ++ Assign => False))) + + -- Safe assignment (see Convert_Aggr_In_Assignment). So far only the + -- assignments in init procs are taken into account, as well those +@@ -9377,34 +9384,35 @@ package body Exp_Aggr is + ---------------- + + function Must_Slide +- (Aggr : Node_Id; +- Obj_Type : Entity_Id; +- Typ : Entity_Id) return Boolean ++ (Aggr : Node_Id; ++ Typ : Entity_Id; ++ Obj_Typ : Entity_Id; ++ Assign : Boolean) return Boolean + is + begin +- -- No sliding if the type of the object is not established yet, if it is +- -- an unconstrained type whose actual subtype comes from the aggregate, +- -- or if the two types are identical. If the aggregate contains only +- -- an Others_Clause it gets its type from the context and no sliding +- -- is involved either. ++ -- No sliding if the type of the object is not established yet, or if ++ -- the two types are identical. And if the aggregate contains only an ++ -- Others_Clause, it gets its type from the context and no sliding is ++ -- involved either. When the type of the object is unconstrained, no ++ -- sliding either if its actual subtype comes from the aggregate. + +- if not Is_Array_Type (Obj_Type) then ++ if not Is_Array_Type (Obj_Typ) then + return False; + +- elsif not Is_Constrained (Obj_Type) then +- return False; +- +- elsif Typ = Obj_Type then ++ elsif Typ = Obj_Typ then + return False; + + elsif Is_Others_Aggregate (Aggr) then + return False; + ++ elsif not Is_Constrained (Obj_Typ) then ++ return Assign; ++ + -- Check if sliding is required + + else + declare +- Obj_Index : Node_Id := First_Index (Obj_Type); ++ Obj_Index : Node_Id := First_Index (Obj_Typ); + Obj_Bounds : Range_Nodes; + Typ_Index : Node_Id := First_Index (Typ); + Typ_Bounds : Range_Nodes; +--- a/src/gcc/ada/exp_attr.adb ++++ b/src/gcc/ada/exp_attr.adb +@@ -656,9 +656,12 @@ package body Exp_Attr is + if Field_Nam in Name_uObject | Name_uParent | Name_uTag then + null; + +- -- Do not process fields without any scalar components ++ -- Do not process fields without any scalar components, or whose type ++ -- is an unchecked union since we cannot know where they are. + +- elsif not Scalar_Part_Present (Field_Typ) then ++ elsif not Scalar_Part_Present (Field_Typ) ++ or else Is_Unchecked_Union (Field_Typ) ++ then + null; + + -- Otherwise the field needs to be validated. Use Make_Identifier +--- a/src/gcc/ada/exp_ch6.adb ++++ b/src/gcc/ada/exp_ch6.adb +@@ -7389,13 +7389,14 @@ package body Exp_Ch6 is + return; + end if; + +- -- Cases where the call is not a member of a statement list. This also +- -- includes the cases where the call is an actual in another function +- -- call, or is an index, or is an operand of an if-expression, i.e. is +- -- in an expression context. ++ -- Cases where the call is not a member of a statement list, or cases ++ -- where the call is an actual in an attribute reference, or in another ++ -- function call, or is an index, or is an operand of an if-expression, ++ -- i.e. is in an expression context. + + if not Is_List_Member (N) +- or else Nkind (Context) in N_Function_Call ++ or else Nkind (Context) in N_Attribute_Reference ++ | N_Function_Call + | N_If_Expression + | N_Indexed_Component + then +--- a/src/gcc/ada/exp_util.adb ++++ b/src/gcc/ada/exp_util.adb +@@ -6124,7 +6124,7 @@ package body Exp_Util is + return Empty; + end if; + +- return Find_Optional_Prim_Op (T, Op_Name); ++ return Find_Optional_Prim_Op (T, Op_Name, Controlled_Op => True); + end Find_Controlled_Prim_Op; + + ------------------------ +@@ -6631,11 +6631,13 @@ package body Exp_Util is + --------------------------- + + function Find_Optional_Prim_Op +- (T : Entity_Id; Name : Name_Id) return Entity_Id ++ (T : Entity_Id; ++ Name : Name_Id; ++ Controlled_Op : Boolean := False) return Entity_Id + is ++ Op : Entity_Id; + Prim : Elmt_Id; + Typ : Entity_Id := T; +- Op : Entity_Id; + + begin + if Is_Class_Wide_Type (Typ) then +@@ -6657,14 +6659,23 @@ package body Exp_Util is + Op := Node (Prim); + + -- We can retrieve primitive operations by name if it is an internal +- -- name. For equality we must check that both of its operands have +- -- the same type, to avoid confusion with user-defined equalities +- -- than may have a asymmetric signature. ++ -- name. For equality, we must check that both of its operands have ++ -- the same type, to avoid confusion with user-defined equalities, ++ -- which may have an asymmetric signature. For controlled operations, ++ -- we check that the primitive is a procedure with a single In Out ++ -- parameter of a non-access type. + + exit when Chars (Op) = Name + and then + (Name /= Name_Op_Eq +- or else Etype (First_Formal (Op)) = Etype (Last_Formal (Op))); ++ or else Etype (First_Formal (Op)) = Etype (Last_Formal (Op))) ++ and then ++ (not Controlled_Op ++ or else ++ (Ekind (Op) = E_Procedure ++ and then Ekind (First_Formal (Op)) = E_In_Out_Parameter ++ and then not Is_Access_Type (Etype (First_Formal (Op))) ++ and then No (Next_Formal (First_Formal (Op))))); + + Next_Elmt (Prim); + end loop; +--- a/src/gcc/ada/exp_util.ads ++++ b/src/gcc/ada/exp_util.ads +@@ -645,7 +645,13 @@ package Exp_Util is + -- and returns Empty if not found. + + function Find_Optional_Prim_Op +- (T : Entity_Id; Name : Name_Id) return Entity_Id; ++ (T : Entity_Id; ++ Name : Name_Id; ++ Controlled_Op : Boolean := False) return Entity_Id; ++ -- Same as Find_Prim_Op but, if Controlled_Op is True, returns a primitive ++ -- only if it has the signature of the three primitives of controlled types ++ -- Initialize/Adjust/Finalize, and returns Empty if not found. ++ + function Find_Optional_Prim_Op + (T : Entity_Id; + Name : TSS_Name_Type) return Entity_Id; +--- a/src/gcc/ada/sem_attr.adb ++++ b/src/gcc/ada/sem_attr.adb +@@ -3359,6 +3359,7 @@ package body Sem_Attr is + and then Aname /= Name_Code_Address + and then Aname /= Name_Result + and then Aname /= Name_Unchecked_Access ++ and then Aname /= Name_Unrestricted_Access + then + -- The prefix must be resolvable by itself, without reference to the + -- attribute. One case that requires special handling is a prefix +--- a/src/gcc/ada/sem_ch13.adb ++++ b/src/gcc/ada/sem_ch13.adb +@@ -16930,6 +16930,7 @@ package body Sem_Ch13 is + while Present (It.Typ) loop + if Is_Finalizable_Primitive (It.Nam) then + Set_Entity (N, It.Nam); ++ Set_Is_Overloaded (N, False); + return; + end if; + +--- a/src/gcc/asan.cc ++++ b/src/gcc/asan.cc +@@ -2446,8 +2446,13 @@ report_error_func (bool is_store, bool recover_p, HOST_WIDE_INT size_in_bytes, + *nargs = 2; + return builtin_decl_implicit (report[recover_p][is_store][5]); + } +- *nargs = 1; + int size_log2 = exact_log2 (size_in_bytes); ++ if (size_log2 == -1 || size_log2 >= 5) ++ { ++ *nargs = 2; ++ return builtin_decl_implicit (report[recover_p][is_store][5]); ++ } ++ *nargs = 1; + return builtin_decl_implicit (report[recover_p][is_store][size_log2]); + } + +@@ -3089,6 +3094,18 @@ maybe_instrument_call (gimple_stmt_iterator *iter) + case BUILT_IN_UNREACHABLE: + case BUILT_IN_UNREACHABLE_TRAP: + case BUILT_IN_TRAP: ++ case BUILT_IN_ASAN_REPORT_LOAD1: ++ case BUILT_IN_ASAN_REPORT_LOAD2: ++ case BUILT_IN_ASAN_REPORT_LOAD4: ++ case BUILT_IN_ASAN_REPORT_LOAD8: ++ case BUILT_IN_ASAN_REPORT_LOAD16: ++ case BUILT_IN_ASAN_REPORT_LOAD_N: ++ case BUILT_IN_ASAN_REPORT_STORE1: ++ case BUILT_IN_ASAN_REPORT_STORE2: ++ case BUILT_IN_ASAN_REPORT_STORE4: ++ case BUILT_IN_ASAN_REPORT_STORE8: ++ case BUILT_IN_ASAN_REPORT_STORE16: ++ case BUILT_IN_ASAN_REPORT_STORE_N: + /* Don't instrument these. */ + return false; + default: +@@ -3489,6 +3506,7 @@ initialize_sanitizer_builtins (void) + if (builtin_decl_implicit_p (BUILT_IN_ASAN_INIT)) + return; + ++ tree ptrmode_type = (*lang_hooks.types.type_for_mode) (ptr_mode, 0); + tree BT_FN_VOID = build_function_type_list (void_type_node, NULL_TREE); + tree BT_FN_VOID_PTR + = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE); +@@ -3502,7 +3520,7 @@ initialize_sanitizer_builtins (void) + ptr_type_node, ptr_type_node, NULL_TREE); + tree BT_FN_VOID_PTR_PTRMODE + = build_function_type_list (void_type_node, ptr_type_node, +- pointer_sized_int_node, NULL_TREE); ++ ptrmode_type, NULL_TREE); + tree BT_FN_VOID_INT + = build_function_type_list (void_type_node, integer_type_node, NULL_TREE); + tree BT_FN_SIZE_CONST_PTR_INT +@@ -3537,7 +3555,7 @@ initialize_sanitizer_builtins (void) + tree BT_FN_VOID_PTR_UINT8_PTRMODE + = build_function_type_list (void_type_node, ptr_type_node, + unsigned_char_type_node, +- pointer_sized_int_node, NULL_TREE); ++ ptrmode_type, NULL_TREE); + + tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5]; + tree BT_FN_IX_CONST_VPTR_INT[5]; +@@ -4289,8 +4307,14 @@ asan_expand_poison_ifn (gimple_stmt_iterator *iter, + { + tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size), + &nargs); +- call = gimple_build_call (fun, 1, +- build_fold_addr_expr (shadow_var)); ++ tree ptrmode_type ++ = (nargs == 2 ? (*lang_hooks.types.type_for_mode) (ptr_mode, 0) ++ : NULL_TREE); ++ call = gimple_build_call (fun, nargs, ++ build_fold_addr_expr (shadow_var), ++ nargs == 2 ++ ? fold_convert (ptrmode_type, size) ++ : NULL_TREE); + } + gimple_set_location (call, gimple_location (use)); + gimple *call_to_insert = call; +--- a/src/gcc/c-family/ChangeLog ++++ b/src/gcc/c-family/ChangeLog +@@ -1,3 +1,12 @@ ++2026-09-13 Zhou Qiankang ++ ++ Backported from master: ++ 2026-06-08 Zhou Qiankang ++ ++ PR c++/125642 ++ * c-cppbuiltin.cc (c_cpp_builtins): Don't define __FRACT_FBIT__ ++ in C++. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/c-family/c-cppbuiltin.cc ++++ b/src/gcc/c-family/c-cppbuiltin.cc +@@ -1324,7 +1324,7 @@ c_cpp_builtins (cpp_reader *pfile) + } + + /* For fixed-point fibt, ibit, max, min, and epsilon. */ +- if (targetm.fixed_point_supported_p ()) ++ if (!c_dialect_cxx () && targetm.fixed_point_supported_p ()) + { + builtin_define_fixed_point_constants ("SFRACT", "HR", + short_fract_type_node); +--- a/src/gcc/cfgexpand.cc ++++ b/src/gcc/cfgexpand.cc +@@ -2668,6 +2668,9 @@ expand_used_vars (bitmap forced_stack_vars) + HOST_WIDE_INT offset, sz, redzonesz; + redzonesz = ASAN_RED_ZONE_SIZE; + sz = data.asan_vec[0] - prev_offset; ++ data.asan_alignb = MAX (data.asan_alignb, ++ crtl->stack_alignment_needed ++ / BITS_PER_UNIT); + if (data.asan_alignb > ASAN_RED_ZONE_SIZE + && data.asan_alignb <= 4096 + && sz + ASAN_RED_ZONE_SIZE >= (int) data.asan_alignb) +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -552,8 +552,7 @@ Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRang + Warn if an array is accessed out of bounds. + + Wuse-after-free +-Common Var(warn_use_after_free) Warning +-Warn for uses of pointers to deallocated storage. ++Common Alias(Wuse-after-free=, 1, 0) Warning + + Wuse-after-free= + Common Joined RejectNegative UInteger Var(warn_use_after_free) Warning IntegerRange(0, 3) +--- a/src/gcc/common/config/i386/cpuinfo.h ++++ b/src/gcc/common/config/i386/cpuinfo.h +@@ -333,6 +333,48 @@ get_amd_cpu (struct __processor_model *cpu_model, + return cpu; + } + ++/* Get the specific type of HYGON CPU and return HYGON CPU name. Return ++ NULL for unknown HYGON CPU. */ ++ ++static inline const char * ++get_hygon_cpu (struct __processor_model *cpu_model, ++ struct __processor_model2 *cpu_model2, ++ unsigned int *cpu_features2 __attribute__((unused))) ++{ ++ const char *cpu = NULL; ++ unsigned int family = cpu_model2->__cpu_family; ++ unsigned int model = cpu_model2->__cpu_model; ++ ++ switch (family) ++ { ++ case 0x18: ++ cpu_model->__cpu_type = HYGONFAM18H; ++ if (model == 0x4) ++ { ++ cpu = "c86-4g-m4"; ++ CHECK___builtin_cpu_is ("c86-4g-m4"); ++ cpu_model->__cpu_subtype = HYGONFAM18H_C86_4G_M4; ++ } ++ else if (model == 0x6) ++ { ++ cpu = "c86-4g-m6"; ++ CHECK___builtin_cpu_is ("c86-4g-m6"); ++ cpu_model->__cpu_subtype = HYGONFAM18H_C86_4G_M6; ++ } ++ else if (model == 0x7) ++ { ++ cpu = "c86-4g-m7"; ++ CHECK___builtin_cpu_is ("c86-4g-m7"); ++ cpu_model->__cpu_subtype = HYGONFAM18H_C86_4G_M7; ++ } ++ break; ++ default: ++ break; ++ } ++ ++ return cpu; ++} ++ + /* Get the specific type of Intel CPU and return Intel CPU name. Return + NULL for unknown Intel CPU. */ + +@@ -1210,6 +1252,21 @@ cpu_indicator_init (struct __processor_model *cpu_model, + cpu_model->__cpu_vendor = VENDOR_CYRIX; + else if (vendor == signature_NSC_ebx) + cpu_model->__cpu_vendor = VENDOR_NSC; ++ else if (vendor == signature_HYGON_ebx) ++ { ++ /* Adjust model and family for HYGON CPUS. */ ++ if (family == 0x0f) ++ { ++ family += extended_family; ++ model += extended_model; ++ } ++ cpu_model2->__cpu_family = family; ++ cpu_model2->__cpu_model = model; ++ ++ /* Get CPU type. */ ++ get_hygon_cpu (cpu_model, cpu_model2, cpu_features2); ++ cpu_model->__cpu_vendor = VENDOR_HYGON; ++ } + else + cpu_model->__cpu_vendor = VENDOR_OTHER; + +--- a/src/gcc/common/config/i386/i386-common.cc ++++ b/src/gcc/common/config/i386/i386-common.cc +@@ -2206,7 +2206,10 @@ const char *const processor_names[] = + "znver2", + "znver3", + "znver4", +- "znver5" ++ "znver5", ++ "c86-4g-m4", ++ "c86-4g-m6", ++ "c86-4g-m7" + }; + + /* Guarantee that the array is aligned with enum processor_type. */ +@@ -2467,6 +2470,15 @@ const pta processor_alias_table[] = + {"btver2", PROCESSOR_BTVER2, CPU_BTVER2, + PTA_BTVER2, + M_CPU_TYPE (AMD_BTVER2), P_PROC_BMI}, ++ {"c86-4g-m4", PROCESSOR_C86_4G_M4, CPU_C86_4G_M4, ++ PTA_C86_4G_M4, ++ M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M4), P_PROC_AVX2}, ++ {"c86-4g-m6", PROCESSOR_C86_4G_M6, CPU_C86_4G_M6, ++ PTA_C86_4G_M6, ++ M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M6), P_PROC_AVX2}, ++ {"c86-4g-m7", PROCESSOR_C86_4G_M7, CPU_C86_4G_M7, ++ PTA_C86_4G_M7, ++ M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M7), P_PROC_AVX512F}, + + {"generic", PROCESSOR_GENERIC, CPU_GENERIC, + PTA_64BIT +@@ -2487,10 +2499,14 @@ const pta processor_alias_table[] = + M_CPU_SUBTYPE (AMDFAM10H_SHANGHAI), P_NONE}, + {"istanbul", PROCESSOR_GENERIC, CPU_GENERIC, 0, + M_CPU_SUBTYPE (AMDFAM10H_ISTANBUL), P_NONE}, ++ {"hygon", PROCESSOR_GENERIC, CPU_GENERIC, 0, ++ M_VENDOR (VENDOR_HYGON), P_NONE}, ++ {"hygonfam18h", PROCESSOR_GENERIC, CPU_GENERIC, 0, ++ M_CPU_TYPE (HYGONFAM18H), P_NONE}, + }; + + /* NB: processor_alias_table stops at the "generic" entry. */ +-unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 7; ++unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 9; + unsigned int const num_arch_names = ARRAY_SIZE (processor_alias_table); + + /* Provide valid option values for -march and -mtune options. */ +--- a/src/gcc/common/config/i386/i386-cpuinfo.h ++++ b/src/gcc/common/config/i386/i386-cpuinfo.h +@@ -30,6 +30,7 @@ enum processor_vendor + VENDOR_INTEL = 1, + VENDOR_AMD, + VENDOR_ZHAOXIN, ++ VENDOR_HYGON, + VENDOR_OTHER, + VENDOR_CENTAUR, + VENDOR_CYRIX, +@@ -62,6 +63,7 @@ enum processor_types + INTEL_GRANDRIDGE, + INTEL_CLEARWATERFOREST, + AMDFAM1AH, ++ HYGONFAM18H, + CPU_TYPE_MAX, + BUILTIN_CPU_TYPE_MAX = CPU_TYPE_MAX + }; +@@ -106,6 +108,9 @@ enum processor_subtypes + AMDFAM1AH_ZNVER5, + ZHAOXIN_FAM7H_SHIJIDADAO, + INTEL_COREI7_DIAMONDRAPIDS, ++ HYGONFAM18H_C86_4G_M4, ++ HYGONFAM18H_C86_4G_M6, ++ HYGONFAM18H_C86_4G_M7, + CPU_SUBTYPE_MAX + }; + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -715,7 +715,8 @@ skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \ + sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \ + nano-x2 eden-x4 nano-x4 lujiazui yongfeng shijidadao x86-64 x86-64-v2 \ + x86-64-v3 x86-64-v4 sierraforest graniterapids graniterapids-d grandridge \ +-arrowlake arrowlake-s clearwaterforest pantherlake diamondrapids native" ++arrowlake arrowlake-s clearwaterforest pantherlake diamondrapids \ ++c86-4g-m4 c86-4g-m6 c86-4g-m7 native" + + # Additional x86 processors supported by --with-cpu=. Each processor + # MUST be separated by exactly one space. +@@ -3909,6 +3910,18 @@ case ${target} in + cpu=pentiumpro + arch_without_sse2=yes + ;; ++ c86_4g_m4-*) ++ arch=c86-4g-m4 ++ cpu=c86-4g-m4 ++ ;; ++ c86_4g_m6-*) ++ arch=c86-4g-m6 ++ cpu=c86-4g-m6 ++ ;; ++ c86_4g_m7-*) ++ arch=c86-4g-m7 ++ cpu=c86-4g-m7 ++ ;; + *) + arch=pentiumpro + cpu=generic +@@ -4007,6 +4020,18 @@ case ${target} in + arch=corei7 + cpu=corei7 + ;; ++ c86_4g_m4-*) ++ arch=c86-4g-m4 ++ cpu=c86-4g-m4 ++ ;; ++ c86_4g_m6-*) ++ arch=c86-4g-m6 ++ cpu=c86-4g-m6 ++ ;; ++ c86_4g_m7-*) ++ arch=c86-4g-m7 ++ cpu=c86-4g-m7 ++ ;; + *) + arch=x86-64 + cpu=generic +--- a/src/gcc/config/aarch64/aarch64-cores.def ++++ b/src/gcc/config/aarch64/aarch64-cores.def +@@ -221,6 +221,7 @@ AARCH64_CORE("neoverse-v2", neoversev2, cortexa57, V9A, (I8MM, BF16, SVE2_BITPER + AARCH64_CORE("grace", grace, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, SVE2_AES, SVE2_SHA3, SVE2_SM4, PROFILE), neoversev2, 0x41, 0xd4f, -1) + AARCH64_CORE("neoverse-v3", neoversev3, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE), neoversev3, 0x41, 0xd84, -1) + AARCH64_CORE("neoverse-v3ae", neoversev3ae, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE), neoversev3ae, 0x41, 0xd83, -1) ++AARCH64_CORE("armagicpu", armagicpu, cortexa57, V9_2A, (SVE2_BITPERM, RNG, LS64, MEMTAG, PROFILE), neoversev3ae, 0x41, 0xd83, -1) + + AARCH64_CORE("demeter", demeter, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversev2, 0x41, 0xd4f, -1) + +--- a/src/gcc/config/aarch64/aarch64-early-ra.cc ++++ b/src/gcc/config/aarch64/aarch64-early-ra.cc +@@ -3038,7 +3038,13 @@ early_ra::allocate_colors () + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, " Allocating [v%d:v%d] to color %d\n", + best, best + color->group->size - 1, color->id); +- m_allocated_fprs |= ((1U << color->group->size) - 1) << best; ++ // Mark the COLOR's FPRs as allocated. A full-width color can have ++ // size == 32, so shift a wide enough value: "1U << 32" is undefined, ++ // as is "1UL << 32" on hosts with 32-bit long. unsigned long long is ++ // at least 64 bits everywhere. best + size <= 32 (from the candidate ++ // search) keeps the result within the 32-bit mask. ++ gcc_assert (best + color->group->size <= 32); ++ m_allocated_fprs |= ((1ULL << color->group->size) - 1) << best; + } + } + +--- a/src/gcc/config/aarch64/aarch64-sve-builtins-base.cc ++++ b/src/gcc/config/aarch64/aarch64-sve-builtins-base.cc +@@ -1830,6 +1830,20 @@ public: + gimple_seq_add_stmt_without_update (&stmts, mem_ref_stmt); + + int source_nelts = TYPE_VECTOR_SUBPARTS (access_type).to_constant (); ++ ++ /* When the SVE vector has the same number of elements as the ++ 128-bit quadword (i.e. VL == 128), the load fills the entire ++ register and no replication is needed. Just convert the ++ loaded value from the Advanced SIMD type to the SVE type. */ ++ if (known_eq (lhs_len, (unsigned int) source_nelts)) ++ { ++ gimple *g ++ = gimple_build_assign (lhs, build1 (VIEW_CONVERT_EXPR, ++ lhs_type, mem_ref_lhs)); ++ gimple_seq_add_stmt_without_update (&stmts, g); ++ gsi_replace_with_seq_vops (f.gsi, stmts); ++ return g; ++ } + vec_perm_builder sel (lhs_len, source_nelts, 1); + for (int i = 0; i < source_nelts; i++) + sel.quick_push (i); +@@ -2937,12 +2951,12 @@ public: + The fold routines expect the replacement statement to have the + same lhs as the original call, so return the copy statement + rather than the field update. */ +- gassign *copy = gimple_build_assign (unshare_expr (f.lhs), rhs_tuple); ++ gassign *copy = gimple_build_assign (f.lhs, rhs_tuple); + + /* Get a reference to the individual vector. */ + tree field = tuple_type_field (TREE_TYPE (f.lhs)); + tree lhs_array = build3 (COMPONENT_REF, TREE_TYPE (field), +- f.lhs, field, NULL_TREE); ++ unshare_expr (f.lhs), field, NULL_TREE); + tree lhs_vector = build4 (ARRAY_REF, TREE_TYPE (rhs_vector), + lhs_array, index, NULL_TREE, NULL_TREE); + gassign *update = gimple_build_assign (lhs_vector, rhs_vector); +--- a/src/gcc/config/aarch64/aarch64-tune.md ++++ b/src/gcc/config/aarch64/aarch64-tune.md +@@ -1,5 +1,5 @@ + ;; -*- buffer-read-only: t -*- + ;; Generated automatically by gentune.sh from aarch64-cores.def + (define_attr "tune" +- "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,hip12,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a" ++ "cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88,thunderxt88p1,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,ampere1b,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,neoversen1,ares,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,fujitsu_monaka,hip12,tsv110,thunderx3t110,neoversev1,zeus,neoverse512tvb,saphira,oryon1,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexr82ae,applea12,applem1_0,applem1_1,applem1_2,applem1_3,applem2_0,applem2_1,applem2_2,applem2_3,applem3_0,cortexa510,cortexa520,cortexa520ae,cortexa710,cortexa715,cortexa720,cortexa720ae,cortexa725,cortexx2,cortexx3,cortexx4,cortexx925,neoversen2,cobalt100,neoversen3,neoversev2,grace,neoversev3,neoversev3ae,armagicpu,demeter,olympus,gb10,generic,generic_armv8_a,generic_armv9_a" + (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) +--- a/src/gcc/config/aarch64/aarch64.cc ++++ b/src/gcc/config/aarch64/aarch64.cc +@@ -11636,7 +11636,8 @@ aarch64_start_call_args (cumulative_args_t ca_v) + emit_insn (gen_aarch64_start_private_za_call ()); + + /* If this is a call to a shared-ZA function that doesn't share ZT0, +- save and restore ZT0 around the call. */ ++ save and restore ZT0 around the call. If ZA is not shared, then the ++ save/restore is instead emitted by aarch64_mode_emit_local_sme_state. */ + if (aarch64_cfun_has_state ("zt0") + && (ca->isa_mode & AARCH64_ISA_MODE_ZA_ON) + && ca->shared_zt0_flags == 0) +@@ -11994,11 +11995,13 @@ aarch64_select_cc_mode (RTX_CODE code, rtx x, rtx y) + << (GET_MODE_BITSIZE (mode_x).to_constant () / 2)))) + return CC_ADCmode; + +- /* A test for signed overflow. */ ++ /* Tests for signed overflow. */ + if ((mode_x == DImode || mode_x == TImode) +- && code == NE +- && code_x == PLUS +- && GET_CODE (y) == SIGN_EXTEND) ++ && (code == NE || code == EQ) ++ && (code_x == PLUS || code_x == MINUS || code_x == NEG) ++ && GET_CODE (XEXP (x, 0)) == SIGN_EXTEND ++ && GET_CODE (y) == SIGN_EXTEND ++ && GET_CODE (XEXP (y, 0)) == code_x) + return CC_Vmode; + + /* For everything else, return CCmode. */ +@@ -30457,7 +30460,8 @@ aarch64_mode_emit_local_sme_state (aarch64_local_sme_state mode, + emit_insn (gen_aarch64_tpidr2_save ()); + emit_insn (gen_aarch64_clear_tpidr2 ()); + if (mode == aarch64_local_sme_state::ACTIVE_LIVE +- || mode == aarch64_local_sme_state::ACTIVE_DEAD) ++ || mode == aarch64_local_sme_state::ACTIVE_DEAD ++ || mode == aarch64_local_sme_state::INACTIVE_LOCAL) + { + if (aarch64_cfun_has_state ("za")) + emit_insn (gen_aarch64_initial_zero_za ()); +@@ -30539,6 +30543,16 @@ aarch64_mode_emit_local_sme_state (aarch64_local_sme_state mode, + + if (mode == aarch64_local_sme_state::INACTIVE_LOCAL) + { ++ if (prev_mode == aarch64_local_sme_state::INACTIVE_CALLER) ++ /* Enable ZA (if it wasn't already enabled on entry). Enabling ZA has ++ the side-effect of zeroing ZA. ++ ++ A functionally correct alternative would be to leave TPIDR2_EL0 null ++ and zero the save buffer. However, zeroing the save buffer would require ++ more code and would optimize for the case in which a callee also ++ initialises private ZA state (which should be a rare event). */ ++ emit_insn (gen_aarch64_smstart_za ()); ++ + if (prev_mode == aarch64_local_sme_state::ACTIVE_LIVE + || prev_mode == aarch64_local_sme_state::ACTIVE_DEAD + || prev_mode == aarch64_local_sme_state::INACTIVE_CALLER) +@@ -30869,7 +30883,7 @@ aarch64_mode_confluence (int entity, int mode1, int mode2) + } + + /* Implement TARGET_MODE_BACKPROP for an entity that either stays +- NO throughput, or makes one transition from NO to YES. */ ++ NO throughout, or makes one transition from NO to YES. */ + + static aarch64_tristate_mode + aarch64_one_shot_backprop (aarch64_tristate_mode mode1, +--- a/src/gcc/config/aarch64/aarch64.md ++++ b/src/gcc/config/aarch64/aarch64.md +@@ -3333,12 +3333,11 @@ (define_expand "subv4" + (define_insn "subv_insn" + [(set (reg:CC_V CC_REGNUM) + (compare:CC_V ++ (minus: ++ (sign_extend: (match_operand:GPI 1 "register_operand" "rk")) ++ (sign_extend: (match_operand:GPI 2 "register_operand" "r"))) + (sign_extend: +- (minus:GPI +- (match_operand:GPI 1 "register_operand" "rk") +- (match_operand:GPI 2 "register_operand" "r"))) +- (minus: (sign_extend: (match_dup 1)) +- (sign_extend: (match_dup 2))))) ++ (minus:GPI (match_dup 1) (match_dup 2))))) + (set (match_operand:GPI 0 "register_operand" "=r") + (minus:GPI (match_dup 1) (match_dup 2)))] + "" +@@ -3349,12 +3348,11 @@ (define_insn "subv_insn" + (define_insn "subv_imm" + [(set (reg:CC_V CC_REGNUM) + (compare:CC_V ++ (minus: ++ (sign_extend: (match_operand:GPI 1 "register_operand")) ++ (match_operand:GPI 2 "aarch64_plus_immediate")) + (sign_extend: +- (minus:GPI +- (match_operand:GPI 1 "register_operand") +- (match_operand:GPI 2 "aarch64_plus_immediate"))) +- (minus: (sign_extend: (match_dup 1)) +- (match_dup 2)))) ++ (minus:GPI (match_dup 1) (match_dup 2))))) + (set (match_operand:GPI 0 "register_operand") + (minus:GPI (match_dup 1) (match_dup 2)))] + "" +@@ -3381,9 +3379,10 @@ (define_expand "negv3" + (define_insn "negv_insn" + [(set (reg:CC_V CC_REGNUM) + (compare:CC_V ++ (neg: ++ (sign_extend: (match_operand:GPI 1 "register_operand" "r"))) + (sign_extend: +- (neg:GPI (match_operand:GPI 1 "register_operand" "r"))) +- (neg: (sign_extend: (match_dup 1))))) ++ (neg:GPI (match_dup 1))))) + (set (match_operand:GPI 0 "register_operand" "=r") + (neg:GPI (match_dup 1)))] + "" +@@ -3394,22 +3393,23 @@ (define_insn "negv_insn" + (define_insn "negv_cmp_only" + [(set (reg:CC_V CC_REGNUM) + (compare:CC_V ++ (neg: ++ (sign_extend: (match_operand:GPI 0 "register_operand" "r"))) + (sign_extend: +- (neg:GPI (match_operand:GPI 0 "register_operand" "r"))) +- (neg: (sign_extend: (match_dup 0)))))] ++ (neg:GPI (match_dup 0)))))] + "" +- "negs\\t%zr, %0" ++ "negs\\tzr, %0" + [(set_attr "type" "alus_sreg")] + ) + + (define_insn "*cmpv_insn" + [(set (reg:CC_V CC_REGNUM) + (compare:CC_V ++ (minus: ++ (sign_extend: (match_operand:GPI 0 "register_operand")) ++ (sign_extend: (match_operand:GPI 1 "aarch64_plus_operand"))) + (sign_extend: +- (minus:GPI (match_operand:GPI 0 "register_operand") +- (match_operand:GPI 1 "aarch64_plus_operand"))) +- (minus: (sign_extend: (match_dup 0)) +- (sign_extend: (match_dup 1)))))] ++ (minus:GPI (match_dup 0) (match_dup 1)))))] + "" + {@ [ cons: 0 , 1 ] + [ r , r ] cmp\t%0, %1 +--- a/src/gcc/config/aarch64/driver-aarch64.cc ++++ b/src/gcc/config/aarch64/driver-aarch64.cc +@@ -79,9 +79,8 @@ struct aarch64_arch_driver_info + aarch64_feature_flags flags; + }; + +-/* Skip the leading "V" in the architecture name. */ + #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \ +- { #ARCH_IDENT + 1, NAME, feature_deps::ARCH_IDENT ().enable }, ++ { #ARCH_IDENT, NAME, feature_deps::ARCH_IDENT ().enable }, + + static CONSTEXPR const aarch64_arch_driver_info aarch64_arches[] = + { +--- a/src/gcc/config/avr/avr-passes.cc ++++ b/src/gcc/config/avr/avr-passes.cc +@@ -28,6 +28,7 @@ + #include "backend.h" + #include "target.h" + #include "rtl.h" ++#include "rtl-iter.h" + #include "tree.h" + #include "diagnostic-core.h" + #include "cfghooks.h" +@@ -83,8 +84,7 @@ namespace + { + + ///////////////////////////////////////////////////////////////////////////// +-// Before we start with the very code, introduce some helpers that are +-// quite generic, though up to now only avr-fuse-add makes use of them. ++// Before we start with the very code, introduce some generic helpers. + + /* Get the next / previous NONDEBUG_INSN_P after INSN in basic block BB. + This assumes we are in CFG layout mode so that BLOCK_FOR_INSN() +@@ -1053,6 +1053,28 @@ struct insninfo_t + else + gcc_unreachable (); + } ++ ++ gprmask_t scratch_mask () const ++ { ++ gprmask_t mask = m_scratch ++ ? regmask (m_scratch, 1) ++ : 0; ++ ++ if (m_insn) ++ { ++ subrtx_iterator::array_type array; ++ FOR_EACH_SUBRTX (iter, array, PATTERN (m_insn), NONCONST) ++ { ++ rtx scratch_reg; ++ if (GET_CODE (*iter) == CLOBBER ++ && REG_P (scratch_reg = XEXP (*iter, 0)) ++ && END_REGNO (scratch_reg) <= REG_32) ++ mask |= regmask (scratch_reg); ++ } ++ } ++ ++ return mask; ++ } + }; // insninfo_t + + +@@ -1186,6 +1208,7 @@ optimize_data_t::emit_sequence (basic_block bb, rtx_insn *insns) + avr_dump ("INCOMPLETE APPLICATION:\n"); + m2.dump ("regs old route=%s\n\n"); + n2.dump ("regs new route=%s\n\n"); ++ avr_dump ("ignore_mask = %08x\n\n", (unsigned) ignore_mask); + avr_dump ("The new insns are:\n%L", insns); + + fatal_insn ("incomplete application of insn", insns); +@@ -2714,8 +2737,7 @@ optimize_data_t::try_split_ldi (bbinfo_t *bbi) + + n_new_insns = bbinfo_t::fpd->solution.emit_insns (curr.ii, curr.regs); + +- if (curr.ii.m_scratch) +- ignore_mask = regmask (curr.ii.m_scratch, 1); ++ ignore_mask = curr.ii.scratch_mask (); + } + + return found; +@@ -3056,8 +3078,7 @@ optimize_data_t::try_split_any (bbinfo_t *) + return fail ("too expensive"); + } + +- if (ii.m_scratch) +- ignore_mask = regmask (ii.m_scratch, 1); ++ ignore_mask = ii.scratch_mask (); + + return true; + } +@@ -4903,18 +4924,19 @@ bool + avr_pass_2moves::optimize_2moves_bb (basic_block bb) + { + bool changed = false; +- rtx_insn *insn1 = nullptr; +- rtx_insn *insn2 = nullptr; +- rtx_insn *curr; ++ rtx_insn *insn1 = next_nondebug_insn_bb (bb, BB_HEAD (bb)); + +- FOR_BB_INSNS (bb, curr) ++ while (insn1) + { +- if (insn1 && INSN_P (insn1) +- && insn2 && INSN_P (insn2)) +- changed |= optimize_2moves (insn1, insn2); ++ rtx_insn *insn2 = next_nondebug_insn_bb (bb, insn1); ++ if (!insn2) ++ break; ++ ++ rtx_insn *next = next_nondebug_insn_bb (bb, insn2); + +- insn1 = insn2; +- insn2 = curr; ++ bool change = optimize_2moves (insn1, insn2); ++ changed |= change; ++ insn1 = change ? next : insn2; + } + + return changed; +@@ -4954,7 +4976,10 @@ avr_pass_2moves::optimize_2moves (rtx_insn *insn1, rtx_insn *insn2) + for (; use; use = DF_REF_NEXT_REG (use)) + { + rtx_insn *user = DF_REF_INSN (use); +- avr_dump (" %d", INSN_UID (user)); ++ bool debug_p = DEBUG_INSN_P (user); ++ avr_dump (" %d%s", INSN_UID (user), debug_p ? "=debug_insn" : ""); ++ if (debug_p) ++ continue; + good |= INSN_UID (user) == INSN_UID (insn2); + bad |= INSN_UID (user) != INSN_UID (insn2); + } +--- a/src/gcc/config/avr/avr.cc ++++ b/src/gcc/config/avr/avr.cc +@@ -10536,7 +10536,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + { + avr_asm_len ("clr __tmp_reg__" CR_TAB + "sbrc %1,0" CR_TAB +- "dec __tmp_reg__", xop, plen, 1); ++ "dec __tmp_reg__", xop, plen, 3); + sn = src.regno; + if (sn < s0) + { +@@ -10551,7 +10551,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + avr_asm_len ("clt" CR_TAB + "bld __tmp_reg__,7" CR_TAB + "adc %0,__tmp_reg__", +- &all_regs_rtx[s0], plen, 1); ++ &all_regs_rtx[s0], plen, 3); + else + avr_asm_len ("lsr __tmp_reg" CR_TAB + "add %0,__tmp_reg__", +@@ -10750,8 +10750,8 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) + xop[2] = all_regs_rtx[s0]; + if (!lsb_in_tmp_reg && !MAY_CLOBBER (s0)) + avr_asm_len ("mov __tmp_reg__,%2", xop, plen, 1); +- avr_asm_len ("tst %0" CR_TAB "brpl 0f", +- &all_regs_rtx[src.regno_msb], plen, 2); ++ avr_asm_len ("tst %0" CR_TAB ++ "brpl 0f", &all_regs_rtx[src.regno_msb], plen, 2); + if (!lsb_in_tmp_reg) + { + unsigned sn = src.regno; +--- a/src/gcc/config/avr/avr.h ++++ b/src/gcc/config/avr/avr.h +@@ -327,10 +327,6 @@ enum reg_class { + + #define RETURN_ADDR_RTX(count, tem) avr_return_addr_rtx (count, tem) + +-/* Don't use Push rounding. expr.cc: emit_single_push_insn is broken +- for POST_DEC targets (PR27386). */ +-/*#define PUSH_ROUNDING(NPUSHED) (NPUSHED)*/ +- + typedef struct avr_args + { + /* # Registers available for passing */ +@@ -621,7 +617,11 @@ struct GTY(()) machine_function + }; + + /* AVR does not round pushes, but the existence of this macro is +- required in order for pushes to be generated. */ ++ required in order for pushes to be generated. ++ This macro was removed for PR27386 and then later re-added when ++ push insns were introduced. Push insns can work around broken ++ argument setup in expr.cc that doesn't work properly for ++ STACK_GROWS_DOWNWARDS + POST_DEC push, see PR127098. */ + #define PUSH_ROUNDING(X) (X) + + /* Define prototype here to avoid build warning. Some files using +--- a/src/gcc/config/avr/avr.md ++++ b/src/gcc/config/avr/avr.md +@@ -477,7 +477,7 @@ (define_mode_iterator MPUSH + HI CHI HA UHA HQ UHQ + SI CSI SA USA SQ USQ + DI CDI DA UDA DQ UDQ +- TA UTA ++ TA UTA TI + SF DF SC DC + PSI]) + +--- a/src/gcc/config/i386/avx10_2satcvtintrin.h ++++ b/src/gcc/config/i386/avx10_2satcvtintrin.h +@@ -1236,7 +1236,15 @@ _mm256_maskz_cvtts_ps_epu64 (__mmask8 __U, __m128 __A) + + extern __inline int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_sd_epi32 (__m128d __A) ++_mm_cvtts_sd_i32 (__m128d __A) ++{ ++ return (int) __builtin_ia32_cvttsd2sis32_round ((__v2df) __A, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_si32 (__m128d __A) + { + return (int) __builtin_ia32_cvttsd2sis32_round ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1244,7 +1252,7 @@ _mm_cvtts_sd_epi32 (__m128d __A) + + extern __inline unsigned int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_sd_epu32 (__m128d __A) ++_mm_cvtts_sd_u32 (__m128d __A) + { + return (unsigned int) __builtin_ia32_cvttsd2usis32_round ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1252,7 +1260,15 @@ _mm_cvtts_sd_epu32 (__m128d __A) + + extern __inline int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_ss_epi32 (__m128 __A) ++_mm_cvtts_ss_i32 (__m128 __A) ++{ ++ return (int) __builtin_ia32_cvttss2sis32_round ((__v4sf) __A, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_si32 (__m128 __A) + { + return (int) __builtin_ia32_cvttss2sis32_round ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1260,7 +1276,7 @@ _mm_cvtts_ss_epi32 (__m128 __A) + + extern __inline unsigned int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_ss_epu32 (__m128 __A) ++_mm_cvtts_ss_u32 (__m128 __A) + { + return (unsigned int) __builtin_ia32_cvttss2usis32_round ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1269,7 +1285,15 @@ _mm_cvtts_ss_epu32 (__m128 __A) + #ifdef __OPTIMIZE__ + extern __inline int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundsd_epi32 (__m128d __A, const int __R) ++_mm_cvtts_roundsd_i32 (__m128d __A, const int __R) ++{ ++ return (int) __builtin_ia32_cvttsd2sis32_round ((__v2df) __A, ++ __R); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_si32 (__m128d __A, const int __R) + { + return (int) __builtin_ia32_cvttsd2sis32_round ((__v2df) __A, + __R); +@@ -1277,7 +1301,7 @@ _mm_cvtts_roundsd_epi32 (__m128d __A, const int __R) + + extern __inline unsigned int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundsd_epu32 (__m128d __A, const int __R) ++_mm_cvtts_roundsd_u32 (__m128d __A, const int __R) + { + return (unsigned int) __builtin_ia32_cvttsd2usis32_round ((__v2df) __A, + __R); +@@ -1285,7 +1309,15 @@ _mm_cvtts_roundsd_epu32 (__m128d __A, const int __R) + + extern __inline int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundss_epi32 (__m128 __A, const int __R) ++_mm_cvtts_roundss_i32 (__m128 __A, const int __R) ++{ ++ return (int) __builtin_ia32_cvttss2sis32_round ((__v4sf) __A, ++ __R); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_si32 (__m128 __A, const int __R) + { + return (int) __builtin_ia32_cvttss2sis32_round ((__v4sf) __A, + __R); +@@ -1293,25 +1325,33 @@ _mm_cvtts_roundss_epi32 (__m128 __A, const int __R) + + extern __inline unsigned int + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundss_epu32 (__m128 __A, const int __R) ++_mm_cvtts_roundss_u32 (__m128 __A, const int __R) + { + return (unsigned int) __builtin_ia32_cvttss2usis32_round ((__v4sf) __A, + __R); + } + #else +-#define _mm_cvtts_roundsd_epi32(A, R) \ ++#define _mm_cvtts_roundsd_i32(A, R) \ + ((int) __builtin_ia32_cvttsd2sis32_round ((__v2df) (A), \ + (R))) + +-#define _mm_cvtts_roundsd_epu32(A, R) \ ++#define _mm_cvtts_roundsd_si32(A, R) \ ++ ((int) __builtin_ia32_cvttsd2sis32_round ((__v2df) (A), \ ++ (R))) ++ ++#define _mm_cvtts_roundsd_u32(A, R) \ + ((unsigned int) __builtin_ia32_cvttsd2usis32_round ((__v2df) (A), \ + (R))) + +-#define _mm_cvtts_roundss_epi32(A, R) \ ++#define _mm_cvtts_roundss_i32(A, R) \ ++ ((int) __builtin_ia32_cvttss2sis32_round ((__v4sf) (A), \ ++ (R))) ++ ++#define _mm_cvtts_roundss_si32(A, R) \ + ((int) __builtin_ia32_cvttss2sis32_round ((__v4sf) (A), \ + (R))) + +-#define _mm_cvtts_roundss_epu32(A, R) \ ++#define _mm_cvtts_roundss_u32(A, R) \ + ((unsigned int) __builtin_ia32_cvttss2usis32_round ((__v4sf) (A), \ + (R))) + #endif +@@ -1319,7 +1359,15 @@ _mm_cvtts_roundss_epu32 (__m128 __A, const int __R) + #ifdef __x86_64__ + extern __inline long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_sd_epi64 (__m128d __A) ++_mm_cvtts_sd_i64 (__m128d __A) ++{ ++ return (long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) __A, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_si64 (__m128d __A) + { + return (long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1327,7 +1375,7 @@ _mm_cvtts_sd_epi64 (__m128d __A) + + extern __inline unsigned long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_sd_epu64 (__m128d __A) ++_mm_cvtts_sd_u64 (__m128d __A) + { + return (unsigned long long) __builtin_ia32_cvttsd2usis64_round ((__v2df) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1335,16 +1383,23 @@ _mm_cvtts_sd_epu64 (__m128d __A) + + extern __inline long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_ss_epi64 (__m128 __A) ++_mm_cvtts_ss_i64 (__m128 __A) + { + return (long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); + } + ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_si64 (__m128 __A) ++{ ++ return (long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) __A, ++ _MM_FROUND_CUR_DIRECTION); ++} + + extern __inline unsigned long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_ss_epu64 (__m128 __A) ++_mm_cvtts_ss_u64 (__m128 __A) + { + return (unsigned long long) __builtin_ia32_cvttss2usis64_round ((__v4sf) __A, + _MM_FROUND_CUR_DIRECTION); +@@ -1353,7 +1408,15 @@ _mm_cvtts_ss_epu64 (__m128 __A) + #ifdef __OPTIMIZE__ + extern __inline long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundsd_epi64 (__m128d __A, const int __R) ++_mm_cvtts_roundsd_i64 (__m128d __A, const int __R) ++{ ++ return (long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) __A, ++ __R); ++} ++ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_si64 (__m128d __A, const int __R) + { + return (long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) __A, + __R); +@@ -1361,7 +1424,7 @@ _mm_cvtts_roundsd_epi64 (__m128d __A, const int __R) + + extern __inline unsigned long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundsd_epu64 (__m128d __A, const int __R) ++_mm_cvtts_roundsd_u64 (__m128d __A, const int __R) + { + return (unsigned long long) __builtin_ia32_cvttsd2usis64_round ((__v2df) __A, + __R); +@@ -1369,7 +1432,15 @@ _mm_cvtts_roundsd_epu64 (__m128d __A, const int __R) + + extern __inline long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundss_epi64 (__m128 __A, const int __R) ++_mm_cvtts_roundss_i64 (__m128 __A, const int __R) ++{ ++ return (long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) __A, ++ __R); ++} ++ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_si64 (__m128 __A, const int __R) + { + return (long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) __A, + __R); +@@ -1377,30 +1448,169 @@ _mm_cvtts_roundss_epi64 (__m128 __A, const int __R) + + extern __inline unsigned long long + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cvtts_roundss_epu64 (__m128 __A, const int __R) ++_mm_cvtts_roundss_u64 (__m128 __A, const int __R) + { + return (unsigned long long) __builtin_ia32_cvttss2usis64_round ((__v4sf) __A, + __R); + } + #else +-#define _mm_cvtts_roundsd_epi64(A, R) \ ++#define _mm_cvtts_roundsd_i64(A, R) \ + ((long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) (A), \ + (R))) + +-#define _mm_cvtts_roundsd_epu64(A, R) \ ++#define _mm_cvtts_roundsd_si64(A, R) \ ++ ((long long) __builtin_ia32_cvttsd2sis64_round ((__v2df) (A), \ ++ (R))) ++ ++#define _mm_cvtts_roundsd_u64(A, R) \ + ((unsigned long long) __builtin_ia32_cvttsd2usis64_round ((__v2df) (A), \ + (R))) + +-#define _mm_cvtts_roundss_epi64(A, R) \ ++#define _mm_cvtts_roundss_i64(A, R) \ ++ ((long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) (A), \ ++ (R))) ++ ++#define _mm_cvtts_roundss_si64(A, R) \ + ((long long) __builtin_ia32_cvttss2sis64_round ((__v4sf) (A), \ + (R))) + +-#define _mm_cvtts_roundss_epu64(A, R) \ ++#define _mm_cvtts_roundss_u64(A, R) \ + ((unsigned long long) __builtin_ia32_cvttss2usis64_round ((__v4sf) (A), \ + (R))) + #endif + #endif /* __x86_64__ */ + ++/* The scalar SAT CVT intrinsics were originally named with an _ep[i|u]{32,64} ++ suffix, which is reserved for packed elements. Keep the original names as ++ aliases. */ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_epi32 (__m128d __A) ++{ ++ return _mm_cvtts_sd_i32 (__A); ++} ++ ++extern __inline unsigned int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_epu32 (__m128d __A) ++{ ++ return _mm_cvtts_sd_u32 (__A); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_epi32 (__m128 __A) ++{ ++ return _mm_cvtts_ss_i32 (__A); ++} ++ ++extern __inline unsigned int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_epu32 (__m128 __A) ++{ ++ return _mm_cvtts_ss_u32 (__A); ++} ++ ++#ifdef __OPTIMIZE__ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_epi32 (__m128d __A, const int __R) ++{ ++ return _mm_cvtts_roundsd_i32 (__A, __R); ++} ++ ++extern __inline unsigned int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_epu32 (__m128d __A, const int __R) ++{ ++ return _mm_cvtts_roundsd_u32 (__A, __R); ++} ++ ++extern __inline int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_epi32 (__m128 __A, const int __R) ++{ ++ return _mm_cvtts_roundss_i32 (__A, __R); ++} ++ ++extern __inline unsigned int ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_epu32 (__m128 __A, const int __R) ++{ ++ return _mm_cvtts_roundss_u32 (__A, __R); ++} ++#else ++#define _mm_cvtts_roundsd_epi32(A, R) _mm_cvtts_roundsd_i32 ((A), (R)) ++#define _mm_cvtts_roundsd_epu32(A, R) _mm_cvtts_roundsd_u32 ((A), (R)) ++#define _mm_cvtts_roundss_epi32(A, R) _mm_cvtts_roundss_i32 ((A), (R)) ++#define _mm_cvtts_roundss_epu32(A, R) _mm_cvtts_roundss_u32 ((A), (R)) ++#endif ++ ++#ifdef __x86_64__ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_epi64 (__m128d __A) ++{ ++ return _mm_cvtts_sd_i64 (__A); ++} ++ ++extern __inline unsigned long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_sd_epu64 (__m128d __A) ++{ ++ return _mm_cvtts_sd_u64 (__A); ++} ++ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_epi64 (__m128 __A) ++{ ++ return _mm_cvtts_ss_i64 (__A); ++} ++ ++extern __inline unsigned long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_ss_epu64 (__m128 __A) ++{ ++ return _mm_cvtts_ss_u64 (__A); ++} ++ ++#ifdef __OPTIMIZE__ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_epi64 (__m128d __A, const int __R) ++{ ++ return _mm_cvtts_roundsd_i64 (__A, __R); ++} ++ ++extern __inline unsigned long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundsd_epu64 (__m128d __A, const int __R) ++{ ++ return _mm_cvtts_roundsd_u64 (__A, __R); ++} ++ ++extern __inline long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_epi64 (__m128 __A, const int __R) ++{ ++ return _mm_cvtts_roundss_i64 (__A, __R); ++} ++ ++extern __inline unsigned long long ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cvtts_roundss_epu64 (__m128 __A, const int __R) ++{ ++ return _mm_cvtts_roundss_u64 (__A, __R); ++} ++#else ++#define _mm_cvtts_roundsd_epi64(A, R) _mm_cvtts_roundsd_i64 ((A), (R)) ++#define _mm_cvtts_roundsd_epu64(A, R) _mm_cvtts_roundsd_u64 ((A), (R)) ++#define _mm_cvtts_roundss_epi64(A, R) _mm_cvtts_roundss_i64 ((A), (R)) ++#define _mm_cvtts_roundss_epu64(A, R) _mm_cvtts_roundss_u64 ((A), (R)) ++#endif ++#endif /* __x86_64__ */ ++ + #ifdef __DISABLE_AVX10_2__ + #undef __DISABLE_AVX10_2__ + #pragma GCC pop_options +new file mode 100644 +--- /dev/null ++++ b/src/gcc/config/i386/c86-4g-m7.md +@@ -0,0 +1,2063 @@ ++;; Copyright (C) 2026 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify ++;; it under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, ++;; but WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++;; GNU General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++;; ++ ++;; HYGON c86-4g-m7 Scheduling ++;; Modeling automatons for decoders, integer execution pipes, ++;; AGU pipes, branch, floating point execution, fp store units, ++;; integer and floating point dividers. Split fpu1 and fpu3 ++;; into their own automata to keep these units independent ++;; without increasing the main c86_4g_m7_fpu state space. ++(define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu02, c86_4g_m7_fpu13, c86_4g_m7_idiv, c86_4g_m7_fdiv") ++ ++;; Decoders unit has 4 decoders and all of them can decode fast path ++;; and vector type instructions. ++(define_cpu_unit "c86-4g-m7-decode0" "c86_4g_m7") ++(define_cpu_unit "c86-4g-m7-decode1" "c86_4g_m7") ++(define_cpu_unit "c86-4g-m7-decode2" "c86_4g_m7") ++(define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7") ++ ++;; Currently blocking all decoders for vector path instructions as ++;; they are dispatched separetely as microcode sequence. ++(define_reservation "c86-4g-m7-vector" "c86-4g-m7-decode0+c86-4g-m7-decode1+c86-4g-m7-decode2+c86-4g-m7-decode3") ++ ++;; Direct instructions can be issued to any of the four decoders. ++(define_reservation "c86-4g-m7-direct" "c86-4g-m7-decode0|c86-4g-m7-decode1|c86-4g-m7-decode2|c86-4g-m7-decode3") ++ ++;; Fix me: Need to revisit this later to simulate fast path double behavior. ++(define_reservation "c86-4g-m7-double" "c86-4g-m7-direct") ++ ++;; Integer unit 4 ALU pipes. ++(define_cpu_unit "c86-4g-m7-ieu0" "c86_4g_m7_ieu") ++(define_cpu_unit "c86-4g-m7-ieu1" "c86_4g_m7_ieu") ++(define_cpu_unit "c86-4g-m7-ieu2" "c86_4g_m7_ieu") ++(define_cpu_unit "c86-4g-m7-ieu3" "c86_4g_m7_ieu") ++ ++;; One separated integer divider. ++(define_cpu_unit "c86-4g-m7-idiv" "c86_4g_m7_idiv") ++ ++;; c86-4g-m7 has an additional branch unit. ++(define_cpu_unit "c86-4g-m7-bru0" "c86_4g_m7_ieu") ++(define_reservation "c86-4g-m7-ieu" "c86-4g-m7-ieu0|c86-4g-m7-ieu1|c86-4g-m7-ieu2|c86-4g-m7-ieu3") ++ ++;; 3 AGU pipes in c86-4g-m7 ++(define_cpu_unit "c86-4g-m7-agu0" "c86_4g_m7_agu") ++(define_cpu_unit "c86-4g-m7-agu1" "c86_4g_m7_agu") ++(define_cpu_unit "c86-4g-m7-agu2" "c86_4g_m7_agu") ++(define_reservation "c86-4g-m7-agu-reserve" "c86-4g-m7-agu0|c86-4g-m7-agu1|c86-4g-m7-agu2") ++ ++;; Load is 4 cycles. We do not model reservation of load unit. ++(define_reservation "c86-4g-m7-load" "c86-4g-m7-agu-reserve") ++(define_reservation "c86-4g-m7-store" "c86-4g-m7-agu-reserve") ++ ++;; vectorpath (microcoded) instructions are single issue instructions. ++;; So, they occupy all the integer units. ++(define_reservation "c86-4g-m7-ivector" "c86-4g-m7-ieu0+c86-4g-m7-ieu1 ++ +c86-4g-m7-ieu2+c86-4g-m7-ieu3+c86-4g-m7-bru0 ++ +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2") ++ ++;; Floating point unit 4 FP pipes. ++(define_cpu_unit "c86-4g-m7-fpu0" "c86_4g_m7_fpu02") ++(define_cpu_unit "c86-4g-m7-fpu1" "c86_4g_m7_fpu13") ++(define_cpu_unit "c86-4g-m7-fpu2" "c86_4g_m7_fpu02") ++(define_cpu_unit "c86-4g-m7-fpu3" "c86_4g_m7_fpu13") ++ ++(define_reservation "c86-4g-m7-fpu" "c86-4g-m7-fpu0|c86-4g-m7-fpu1|c86-4g-m7-fpu2|c86-4g-m7-fpu3") ++(define_reservation "c86-4g-m7-fpu_0_1" "c86-4g-m7-fpu0|c86-4g-m7-fpu1") ++(define_reservation "c86-4g-m7-fpu_0_2" "c86-4g-m7-fpu0|c86-4g-m7-fpu2") ++(define_reservation "c86-4g-m7-fpu_0_2x2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu2*2") ++(define_reservation "c86-4g-m7-fpu_0_2x4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu2*4") ++(define_reservation "c86-4g-m7-fpu_0_3" "c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++(define_reservation "c86-4g-m7-fpu_1_3" "c86-4g-m7-fpu1|c86-4g-m7-fpu3") ++(define_reservation "c86-4g-m7-fpu_1_3x2" "c86-4g-m7-fpu1*2|c86-4g-m7-fpu3*2") ++(define_reservation "c86-4g-m7-fpu_1_3x3" "c86-4g-m7-fpu1*3|c86-4g-m7-fpu3*3") ++(define_reservation "c86-4g-m7-fpu_1_3x6" "c86-4g-m7-fpu1*6|c86-4g-m7-fpu3*6") ++(define_reservation "c86-4g-m7-fpux2" "c86-4g-m7-fpu0*2|c86-4g-m7-fpu1*2|c86-4g-m7-fpu2*2|c86-4g-m7-fpu3*2") ++(define_reservation "c86-4g-m7-fpux4" "c86-4g-m7-fpu0*4|c86-4g-m7-fpu1*4|c86-4g-m7-fpu2*4|c86-4g-m7-fpu3*4") ++(define_reservation "c86-4g-m7-fpux8" "c86-4g-m7-fpu0*8|c86-4g-m7-fpu1*8|c86-4g-m7-fpu2*8|c86-4g-m7-fpu3*8") ++(define_reservation "c86-4g-m7-fpux6" "c86-4g-m7-fpu0*6|c86-4g-m7-fpu1*6|c86-4g-m7-fpu2*6|c86-4g-m7-fpu3*6") ++(define_reservation "c86-4g-m7-fpux16" "c86-4g-m7-fpu0*16|c86-4g-m7-fpu1*16|c86-4g-m7-fpu2*16|c86-4g-m7-fpu3*16") ++(define_reservation "c86-4g-m7-fvector" "c86-4g-m7-fpu0+c86-4g-m7-fpu1 ++ +c86-4g-m7-fpu2+c86-4g-m7-fpu3 ++ +c86-4g-m7-agu0+c86-4g-m7-agu1+c86-4g-m7-agu2") ++ ++;; Two FP dividers. ++(define_cpu_unit "c86-4g-m7-fdiv1" "c86_4g_m7_fdiv") ++(define_cpu_unit "c86-4g-m7-fdiv3" "c86_4g_m7_fdiv") ++ ++(define_reservation "c86-4g-m7-fp1fdiv1x4" "(c86-4g-m7-fpu1+c86-4g-m7-fdiv1)*4") ++(define_reservation "c86-4g-m7-fp3fdiv3x4" "(c86-4g-m7-fpu3+c86-4g-m7-fdiv3)*4") ++(define_reservation "c86-4g-m7-fdiv13" "(c86-4g-m7-fdiv1+c86-4g-m7-fdiv3)") ++(define_reservation "c86-4g-m7-fp13div13" "(c86-4g-m7-fpu1+c86-4g-m7-fpu3+c86-4g-m7-fdiv1+c86-4g-m7-fdiv3)") ++(define_reservation "c86-4g-m7-fp13div13x4" "c86-4g-m7-fp13div13*4") ++(define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x8" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*8)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*8)") ++(define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x9" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*9)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*9)") ++(define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x11" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*11)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*11)") ++(define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x15" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*15)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*15)") ++(define_reservation "c86-4g-m7-fp1div1_fp3div3_x4x18" "(c86-4g-m7-fp1fdiv1x4,c86-4g-m7-fdiv1*18)|(c86-4g-m7-fp3fdiv3x4,c86-4g-m7-fdiv3*18)") ++ ++;; IMOV/IMOVX ++(define_insn_reservation "c86_4g_m7_imov_xchg" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imov") ++ (and (eq_attr "c86_decode" "vector") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct") ++ ++(define_insn_reservation "c86_4g_m7_imov_xchg_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imov") ++ (and (eq_attr "c86_decode" "vector") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-direct,c86-4g-m7-load") ++ ++(define_insn_reservation "c86_4g_m7_imovx_cwde" 2 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "c86_decode" "double") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_imov" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imov,imovx") ++ (and (eq_attr "c86_decode" "direct") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_imov_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imov,imovx") ++ (and (eq_attr "c86_decode" "!vector") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_imov_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imov,imovx") ++ (and (eq_attr "c86_decode" "!vector") ++ (eq_attr "memory" "store")))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-ieu") ++ ++;; PUSH ++(define_insn_reservation "c86_4g_m7_push" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "push,sse") ++ (eq_attr "memory" "store"))) ++ "c86-4g-m7-direct,c86-4g-m7-store") ++ ++(define_insn_reservation "c86_4g_m7_push_mem" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "push") ++ (eq_attr "memory" "both"))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-store") ++ ++;; POP ++(define_insn_reservation "c86_4g_m7_pop" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "pop") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load") ++ ++(define_insn_reservation "c86_4g_m7_pop_mem" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "pop") ++ (eq_attr "memory" "both"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-store") ++ ++;; IMUL/IMULX ++(define_insn_reservation "c86_4g_m7_imul" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imul,imulx") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu1") ++ ++(define_insn_reservation "c86_4g_m7_imul_load" 7 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "imul") ++ (eq_attr "memory" "!none"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu1") ++ ++;; IDIV ++(define_insn_reservation "c86_4g_m7_idiv" 7 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "!QI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*7") ++ ++(define_insn_reservation "c86_4g_m7_idiv_QI" 6 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "QI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*6") ++ ++(define_insn_reservation "c86_4g_m7_idiv_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "!QI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*7") ++ ++(define_insn_reservation "c86_4g_m7_idiv_QI_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "QI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*6") ++ ++;; Integer/genaral Instructions ++(define_insn_reservation "c86_4g_m7_insn" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu,negnot,rotate1,ishift1,test,incdec,icmp, ++ rotate,rotatex,ishift,ishiftx,icmov") ++ (eq_attr "memory" "none,unknown"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_insn_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu,incdec,icmp,test,ishift, ++ ishiftx,icmov,rotate,rotatex") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_insn_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ishift1,rotate1,rotate,incdec, ++ alu,icmov,ishift,negnot,alu1") ++ (eq_attr "memory" "store"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu,c86-4g-m7-store") ++ ++(define_insn_reservation "c86_4g_m7_insn2_store" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "icmp") ++ (eq_attr "memory" "store"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu,c86-4g-m7-store") ++ ++(define_insn_reservation "c86_4g_m7_insn_both" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu,negnot,rotate1,ishift1,incdec,rotate, ++ rotatex,ishift,ishiftx,icmov") ++ (eq_attr "memory" "both"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu,c86-4g-m7-store") ++ ++(define_insn_reservation "c86_4g_m7_setcc" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "none,unknown"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu0|c86-4g-m7-ieu3") ++ ++(define_insn_reservation "c86_4g_m7_setcc_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu0|c86-4g-m7-ieu3") ++ ++(define_insn_reservation "c86_4g_m7_setcc_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "store"))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-ieu0|c86-4g-m7-ieu3") ++ ++;; ALU1 ++(define_insn_reservation "c86_4g_m7_alu1_double" 2 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "double") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-m7-double,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_alu1_double_load" 6 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "double") ++ (eq_attr "memory" "both")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_alu1_vector" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "vector") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-m7-vector,c86-4g-m7-ivector*3") ++ ++(define_insn_reservation "c86_4g_m7_alu1_vector_load" 7 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "vector") ++ (eq_attr "memory" "both")))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ivector*3") ++ ++(define_insn_reservation "c86_4g_m7_alu1_direct" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "direct") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu") ++ ++(define_insn_reservation "c86_4g_m7_alu1_direct_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "alu1") ++ (and (eq_attr "c86_decode" "direct") ++ (eq_attr "memory" "both")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-store,c86-4g-m7-ieu") ++ ++;; CALL/CALLV ++(define_insn_reservation "c86_4g_m7_call" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "call,callv")) ++ "c86-4g-m7-double,c86-4g-m7-ieu0|c86-4g-m7-bru0,c86-4g-m7-store") ++ ++;; IBR ++(define_insn_reservation "c86_4g_m7_branch" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-ieu0|c86-4g-m7-bru0") ++ ++(define_insn_reservation "c86_4g_m7_branch_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu0|c86-4g-m7-bru0") ++ ++;; LEA ++(define_insn_reservation "c86_4g_m7_lea" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "lea")) ++ "c86-4g-m7-direct,c86-4g-m7-ieu") ++ ++;; LEAVE ++(define_insn_reservation "c86_4g_m7_leave" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "leave")) ++ "c86-4g-m7-double,c86-4g-m7-ieu,c86-4g-m7-store") ++ ++;; STR ++(define_insn_reservation "c86_4g_m7_str" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "str") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-vector,c86-4g-m7-ivector*3") ++ ++(define_insn_reservation "c86_4g_m7_str_load" 7 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "str") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-ivector*3") ++ ++ ++(define_insn_reservation "c86_4g_m7_ieu_vector" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "other,multi") ++ (and (eq_attr "unit" "!i387") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-m7-vector,c86-4g-m7-ivector*5") ++ ++(define_insn_reservation "c86_4g_m7_ieu_vector_load" 9 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "other,multi") ++ (and (eq_attr "unit" "!i387") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-ivector*5") ++ ++;; SSEINS ++(define_insn_reservation "c86_4g_m7_sse_insertimm" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseins") ++ (and (eq_attr "memory" "none") ++ (eq_attr "length_immediate" "2")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_0_3,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_sse_insert" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseins") ++ (and (eq_attr "memory" "none") ++ (eq_attr "length_immediate" "!2")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1*2") ++ ++;; FCMOV ++(define_insn_reservation "c86_4g_m7_fp_cmov" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "fcmov")) ++ "c86-4g-m7-vector,c86-4g-m7-fvector*3") ++ ++;; FLD ++(define_insn_reservation "c86_4g_m7_fp_mov_direct_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1") ++ ++;; FST ++(define_insn_reservation "c86_4g_m7_fp_mov_direct_store" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "store")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-store") ++ ++;; FILD ++(define_insn_reservation "c86_4g_m7_fp_mov_double_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1") ++ ++;; FIST ++(define_insn_reservation "c86_4g_m7_fp_mov_double_store" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "store")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-store") ++ ++(define_insn_reservation "c86_4g_m7_fp_mov_direct" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1") ++ ++;; FSQRT ++(define_insn_reservation "c86_4g_m7_fp_sqrt" 22 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fpspc") ++ (eq_attr "c86_attr" "sqrt"))) ++ "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x18") ++ ++;; FPSPC ++(define_insn_reservation "c86_4g_m7_fp_spc_direct" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fpspc") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "store"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_fp_spc" 6 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fpspc") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-vector,c86-4g-m7-fvector*6") ++ ++(define_insn_reservation "c86_4g_m7_fp_op_mul" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fop,fmul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_fp_op_mul_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fop,fmul") ++ (and (eq_attr "fp_int_src" "false") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_fp_op_imul_load" 16 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fmul") ++ (and (eq_attr "fp_int_src" "true") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu0,c86-4g-m7-fpu_0_2") ++ ++;; FDIV ++(define_insn_reservation "c86_4g_m7_fp_div" 15 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fdiv") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x11") ++ ++(define_insn_reservation "c86_4g_m7_fp_div_load" 22 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fdiv") ++ (and (eq_attr "fp_int_src" "false") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x11") ++ ++(define_insn_reservation "c86_4g_m7_fp_idiv_load" 26 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fdiv") ++ (and (eq_attr "fp_int_src" "true") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1*4,c86-4g-m7-fp1div1_fp3div3_x4x11") ++ ++(define_insn_reservation "c86_4g_m7_fp_fsgn" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "fsgn")) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++;; FCMP ++(define_insn_reservation "c86_4g_m7_fp_fcmp" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fcmp") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-double,c86-4g-m7-fpu0,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_fp_fcmp_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "fcmp") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu0,c86-4g-m7-fpu1") ++ ++;; MMX ++(define_insn_reservation "c86_4g_m7_fp_mmx" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (eq_attr "type" "mmx")) ++ "c86-4g-m7-direct") ++ ++(define_insn_reservation "c86_4g_m7_mmx_add_cmp" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxadd,mmxcmp") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_mmx_add_cmp_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxadd,mmxcmp") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_mmx_cvt" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxcvt") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_cvt_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxcvt") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_shift" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_shift_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_shift_avg" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "avg") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_mmx_shift_avg_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "avg") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++;; SADBW ++(define_insn_reservation "c86_4g_m7_mmx_shift_sadbw" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "sadbw") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0") ++ ++(define_insn_reservation "c86_4g_m7_mmx_shift_sadbw_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxshft") ++ (and (eq_attr "c86_attr" "sadbw") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0") ++ ++(define_insn_reservation "c86_4g_m7_mmx_mov" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxmov") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_mov_store" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxmov") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "store")))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_mov_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxmov") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_mmx_mul" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxmul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0") ++ ++(define_insn_reservation "c86_4g_m7_mmx_mul_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mmxmul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0") ++ ++;; PINSR ++(define_insn_reservation "c86_4g_m7_sse_pinsr_reg" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,mmxcvt") ++ (and (eq_attr "c86_attr" "insr") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-ieu2,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_sse_pinsr_reg_load" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,mmxcvt") ++ (and (eq_attr "c86_attr" "insr") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx_vpinsr_reg" 2 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insr") ++ (and (eq_attr "prefix" "!orig") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx_vpinsr_reg_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insr") ++ (and (eq_attr "prefix" "!orig") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++;; PERM ++(define_insn_reservation "c86_4g_m7_avx512_perm_xmm" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (ior (and (eq_attr "c86_attr" "perm2") ++ (eq_attr "mode" "V4SF,V2DF,TI")) ++ (and (eq_attr "c86_attr" "perm") ++ (eq_attr "mode" "V8SF,V4DF,TI,OI"))) ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_perm_xmm_opload" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (ior (and (eq_attr "c86_attr" "perm2") ++ (eq_attr "mode" "V4SF,V2DF,TI")) ++ (and (eq_attr "c86_attr" "perm") ++ (eq_attr "mode" "V8SF,V4DF,TI,OI"))) ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_permi2_ymm" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm2") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpux4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_permi2_zmm" 16 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm2") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpux16") ++ ++(define_insn_reservation "c86_4g_m7_avx512_permi2_ymm_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm2") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_permi2_zmm_load" 23 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm2") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux16") ++ ++(define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_operand 2 "immediate_operand") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpux4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_perm_zmm_imm_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_operand 2 "immediate_operand") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpux4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_perm_zmm_noimm" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_operand 2 "nonimmediate_operand") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpux8") ++ ++(define_insn_reservation "c86_4g_m7_sse_perm_zmm_noimm_load" 15 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "perm") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_operand 2 "nonimmediate_operand") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux8") ++ ++;; VINSERT ++(define_insn_reservation "c86_4g_m7_avx512_insertx_ymm" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_insertx_ymem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load,both")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_insertx_zxmm" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==16") ++ (match_operand 2 "register_operand")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_0_2x4,c86-4g-m7-fpu_0_2x4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_insertx_zxmem" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==16") ++ (match_operand 2 "memory_operand")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4,c86-4g-m7-fpu_0_2x4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_insertx_zymm" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==32") ++ (match_operand 2 "register_operand")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_insertx_zymem" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (match_test "GET_MODE_SIZE (GET_MODE (operands[2]))==32") ++ (match_operand 2 "memory_operand")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx_insertx_ymm" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0*2") ++ ++(define_insn_reservation "c86_4g_m7_avx_insertx_ymem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "insertx") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0*2") ++ ++;; SHUF/MULTISHIFTQB ++(define_insn_reservation "c86_4g_m7_avx512_shuf_xymm" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "shufx") ++ (and (not (eq_attr "mode" "V8DF,V16SF,XI")) ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_shuf_zmm" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "shufx") ++ (and (eq_attr "mode" "V8DF,V16SF,XI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_0_2x4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_shuf_xymem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "shufx") ++ (and (not (eq_attr "mode" "V8DF,V16SF,XI")) ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_shuf_zmem" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "shufx") ++ (and (eq_attr "mode" "V8DF,V16SF,XI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4") ++ ++;; SSELOGIC ++(define_insn_reservation "c86_4g_m7_sselogic_xymm" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "sselogic") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_sselogic_xymm_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1") ++ (and (eq_attr "c86_attr" "sselogic") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++;; CMPESTR ++(define_insn_reservation "c86_4g_m7_avx512_cmpestr" 6 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "cmpestr") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-vector,c86-4g-m7-fpux6") ++ ++(define_insn_reservation "c86_4g_m7_avx512_cmpestr_load" 13 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "cmpestr") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux6") ++ ++;; SSELOG ++(define_insn_reservation "c86_4g_m7_avx512_log" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_log_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog,sselog1,sseshuf,sseshuf1") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++;; SSELOG1 ++;; VDBPSADBW ++(define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_xymm" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "mode" "OI,TI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_xymem" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "mode" "OI,TI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmm" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vdbpsadbw_zmem" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2") ++ ++;; ABS ++(define_insn_reservation "c86_4g_m7_avx512_abs" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,sse") ++ (and (eq_attr "c86_attr" "abs") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx512_abs_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,sse") ++ (and (eq_attr "c86_attr" "abs") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load,both"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++;; SIGN ++(define_insn_reservation "c86_4g_m7_avx_sign" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sign") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_avx_sign_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sign") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++;; BLEND/ABS/AES ++(define_insn_reservation "c86_4g_m7_avx_blend" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "abs,blend,aes") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx_blend_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "abs,blend,aes") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx512_aes" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,ssecvt,sse") ++ (and (eq_attr "c86_attr" "aes") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_aes_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,ssecvt,sse") ++ (and (eq_attr "c86_attr" "aes") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx_aes" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "aes") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_avx_aes_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "aes") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu1") ++ ++;; EXTR ++(define_insn_reservation "c86_4g_m7_extr" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,sselog,mmxcvt") ++ (and (eq_attr "c86_attr" "extr") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_extr_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sselog1,sselog,mmxcvt") ++ (and (eq_attr "c86_attr" "extr") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-double,c86-4g-m7-store,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1") ++ ++;; SSECOMI ++(define_insn_reservation "c86_4g_m7_avx_ssecomi_comi" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecomi") ++ (and (eq_attr "prefix_extra" "0") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecomi_comi_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecomi") ++ (and (eq_attr "prefix_extra" "0") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecomi_test" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecomi") ++ (and (eq_attr "prefix_extra" "1") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu2") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecomi_test_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecomi") ++ (and (eq_attr "prefix_extra" "1") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2") ++ ++;; SSEIMUL ++(define_insn_reservation "c86_4g_m7_avx512_imul" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseimul") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_imul_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseimul") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx_imul" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseimul") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_avx_imul_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseimul") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++;; SSEMOV ++(define_insn_reservation "c86_4g_m7_avx512_mov_vmov" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov,sseiadd") ++ (and (eq_attr "c86_attr" "other,blend,maxmin") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mov_vmov_store" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "store")))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mov_vmov_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov,sseiadd") ++ (and (eq_attr "c86_attr" "other,blend,maxmin") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_y" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "OI,V8SF,V4DF") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_y_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov,sselog1") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "OI,V8SF,V4DF") ++ (eq_attr "memory" "load,both")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_z" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2x4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_z_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2x4") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_x" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "TI,SI") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_vpmovx_x_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "TI,SI") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx_vpmovx_xx" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu2") ++ ++(define_insn_reservation "c86_4g_m7_avx_vpmovx_xx_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "vpmovx") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load,both"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu2") ++ ++;; EXPAND ++(define_insn_reservation "c86_4g_m7_avx512_expand" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "expand,compress") ++ (and (not (eq_attr "mode" "XI,V16SF,V8DF")) ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_expand_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "expand,compress") ++ (and (not (eq_attr "mode" "XI,V16SF,V8DF")) ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_expand_z" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "expand,compress") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_expand_z_load" 17 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "expand,compress") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fpu_0_3") ++ ++;; MOVNT ++(define_insn_reservation "c86_4g_m7_avx512_movnt_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-double,c86-4g-m7-load") ++ ++(define_insn_reservation "c86_4g_m7_avx512_movnt_store" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "store"))))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1*2") ++ ++(define_insn_reservation "c86_4g_m7_sse_movnt_store" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov,mmxmov") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (not (eq_attr "mode" "XI,V16SF,V8DF")) ++ (eq_attr "memory" "!none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-store,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_sse_movnt" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (not (eq_attr "mode" "XI,V16SF,V8DF")) ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++;; BLENDV ++(define_insn_reservation "c86_4g_m7_avx512_blendv" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "blendv") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx512_blendv_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "c86_attr" "blendv") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++;; SSEMOV2 ++(define_insn_reservation "c86_4g_m7_sse_mov2" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov2") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_sse_mov2_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemov2") ++ (eq_attr "memory" "!none"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++;; SSEISHFT ++(define_insn_reservation "c86_4g_m7_avx512_sseishft_aligr" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseishft_aligr_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseishft_vshift" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "prefix_extra" "!1") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseishft_vshift_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "prefix_extra" "!1") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++ ++;; SSEADD ++(define_insn_reservation "c86_4g_m7_avx512_sseadd_maxmin_xy" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "memory" "none") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseadd_maxmin_xy_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "evex") ++ (ior (eq_attr "memory" "load") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "vex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseadd_maxmin_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "vex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseadd_maxmin_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sse") ++ (and (eq_attr "c86_attr" "maxmin") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3") ++ ++;; SUB/ADD ++(define_insn_reservation "c86_4g_m7_avx512_sseadd_xy" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseadd_xy_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++;; HADD/HSUB ++(define_insn_reservation "c86_4g_m7_avx_sseadd_hplus" 7 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sseadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-vector") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseadd_hplus_load" 14 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseadd,sseadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-vector,c86-4g-m7-load") ++ ++;; SSEIADD ++(define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw,madd") ++ (and (ior (eq_attr "prefix" "evex") ++ (eq_attr "mode" "XI")) ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseiadd_madd_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw,madd") ++ (and (ior (eq_attr "prefix" "evex") ++ (eq_attr "mode" "XI")) ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "prefix" "vex,maybe_evex") ++ (and (eq_attr "mode" "TI,OI") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseiadd_sadbw_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "prefix" "vex,maybe_evex") ++ (and (eq_attr "mode" "TI,OI") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_sadbw_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "sadbw") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_madd" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "madd") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu0") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_madd_mem" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "madd") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu0") ++ ++;; AVG ++(define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "avg") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sseiadd_avg_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "avg") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd,sseiadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (and (eq_attr "prefix" "vex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector") ++ ++(define_insn_reservation "c86_4g_m7_avx_sseiadd_hplus_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd,sseiadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (and (eq_attr "prefix" "vex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd,sseiadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpux2") ++ ++(define_insn_reservation "c86_4g_m7_sse_sseiadd_hplus_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sseiadd,sseiadd1") ++ (and (eq_attr "c86_attr" "hplus") ++ (and (eq_attr "prefix" "orig") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpux2") ++ ++;; SSEMUL ++(define_insn_reservation "c86_4g_m7_avx512_ssemul" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssemul_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++;; SSEDIV ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_x" 13 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "SF,DF,V4SF,V2DF") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x8") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_xmem" 20 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "SF,DF,V4SF,V2DF") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x8") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_y" 13 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "V8SF,V4DF") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_ymem" 20 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "V8SF,V4DF") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*8") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "V16SF,V8DF") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssediv") ++ (and (eq_attr "mode" "V16SF,V8DF") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*20") ++ ++;; SSECMP ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "V2DF,V4DF,V8SF,V4SF,SF,DF") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_z" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_z_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "mode" "V16SF,V8DF,XI") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_0_2,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "TI,OI") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "TI,OI") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "XI") ++ (and (eq_attr "c86_attr" "other,ptest") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_vp_z_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "XI") ++ (and (eq_attr "c86_attr" "other,ptest") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecmp_vp" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecmp_vp_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu") ++ ++;; VPTEST ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_test" 6 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "mode" "TI,OI") ++ (and (eq_attr "c86_attr" "ptest") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecmp_test_load" 13 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecmp") ++ (and (eq_attr "mode" "TI,OI") ++ (and (eq_attr "c86_attr" "ptest") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3") ++ ++;; SSECVT ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF") ++ (and (not (ior (match_operand:V8DI 1 "register_operand") ++ (match_operand:V8DF 1 "register_operand"))) ++ (eq_attr "memory" "none"))))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_xy_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "mode" "TI,V4SF,V2DF,OI,V8SF,V4DF") ++ (and (not (ior (match_operand:V8DI 1 "register_operand") ++ (match_operand:V8DF 1 "register_operand"))) ++ (eq_attr "memory" "!none"))))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "mode" "OI,V8SF,V4DF") ++ (and (eq_attr "c86_attr" "other") ++ (and (ior (match_operand:V8DI 1 "register_operand") ++ (match_operand:V8DF 1 "register_operand")) ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_y_z_load" 15 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "mode" "OI,V8SF,V4DF") ++ (and (eq_attr "c86_attr" "other") ++ (and (ior (match_operand:V8DI 1 "memory_operand") ++ (match_operand:V8DF 1 "memory_operand")) ++ (eq_attr "memory" "!none")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_z" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_ssecvt_z_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "mode" "XI,V16SF,V8DF") ++ (eq_attr "memory" "!none"))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecvt" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "prefix" "!evex") ++ (and (eq_attr "mmx_isa" "base") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu2|c86-4g-m7-fpu3") ++ ++(define_insn_reservation "c86_4g_m7_avx_ssecvt_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "prefix" "!evex") ++ (and (eq_attr "mmx_isa" "base") ++ (eq_attr "memory" "!none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu2|c86-4g-m7-fpu3") ++ ++;; CVTPI ++(define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "mode" "SF,DI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_sse_ssecvt_pspi_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "mode" "SF,DI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1") ++ ++(define_insn_reservation "c86_4g_m7_sse_ssecvt_pi" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (not (eq_attr "mode" "SF,DI")) ++ (and (eq_attr "mmx_isa" "native") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_sse_ssecvt_pi_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssecvt") ++ (and (not (eq_attr "mode" "SF,DI")) ++ (and (eq_attr "mmx_isa" "native") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fpu_0_1") ++ ++;; SSEMULADD ++(define_insn_reservation "c86_4g_m7_avx512_muladd" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemuladd") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_muladd_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemuladd") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_muladd_madd" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemuladd,sse") ++ (and (eq_attr "c86_attr" "madd,rcp") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_muladd_madd_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "ssemuladd,sse") ++ (and (eq_attr "c86_attr" "madd,rcp") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++;; SSE ++(define_insn_reservation "c86_4g_m7_avx512_sse_range" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "!1") ++ (and (eq_attr "prefix" "evex") ++ (and (eq_attr "c86_decode" "direct") ++ (eq_attr "memory" "none"))))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_range_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "!1") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "prefix" "evex") ++ (eq_attr "memory" "load"))))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x" 2 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "TI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_x_load" 9 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "TI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x2") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "OI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_y_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "OI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_1_3x6") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_conflict_z_load" 15 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "mode" "XI") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3x6") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_class" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "1") ++ (and (not (eq_attr "mode" "V32HF,V16SF,V8DF")) ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-double,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_class_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "1") ++ (and (not (eq_attr "mode" "V32HF,V16SF,V8DF")) ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_class_z" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "1") ++ (and (eq_attr "mode" "V32HF,V16SF,V8DF") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_class_z_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "other") ++ (and (eq_attr "length_immediate" "1") ++ (and (eq_attr "mode" "V32HF,V16SF,V8DF") ++ (eq_attr "memory" "load")))))) ++ "c86-4g-m7-vector,c86-4g-m7-load,c86-4g-m7-fpu_1_3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx_sse" 5 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "rcp,other") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_0_1") ++ ++(define_insn_reservation "c86_4g_m7_avx_sse_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "c86_attr" "rcp,other") ++ (and (eq_attr "prefix" "!evex") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu_0_1") ++ ++;; SSE SQRT ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_x" 14 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "SF,V4SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x9") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_xload" 21 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "SF,V4SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x9") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_y" 14 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V8SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_yload" 21 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V8SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*9") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_z" 26 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V16SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_sf_zload" 33 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V16SF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*22") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_x" 20 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "DF,V2DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp1div1_fp3div3_x4x15") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_xload" 27 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "DF,V2DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp1div1_fp3div3_x4x15") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_y" 20 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V4DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_yload" 27 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V4DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*15") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_z" 38 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V8DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-m7-direct,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34") ++ ++(define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_df_zload" 45 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "mode" "V8DF") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fp13div13x4,c86-4g-m7-fdiv13*34") ++ ++;; MSKLOG/MSKMOV ++(define_insn_reservation "c86_4g_m7_avx512_msklog" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "msklog") ++ (eq_attr "c86_decode" "direct"))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_msklog_vector" 4 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "msklog") ++ (eq_attr "c86_decode" "vector"))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_reg_k" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (and (match_operand 0 "register_operand" "r") ++ (eq_attr "memory" "none")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_xy_k" 2 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (ior (match_operand:V2DI 0 "register_operand" "v") ++ (match_operand:V4DI 0 "register_operand" "v")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_z_k" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (match_operand:V8DI 0 "register_operand" "v"))) ++ "c86-4g-m7-vector,c86-4g-m7-fpu3,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_k_k" 1 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (and (match_operand 0 "register_operand" "k") ++ (match_operand 1 "register_operand" "k")))) ++ "c86-4g-m7-direct,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_k_reg" 3 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (and (match_operand 0 "register_operand" "k") ++ (match_operand 1 "register_operand" "r")))) ++ "c86-4g-m7-double,c86-4g-m7-fpu1,c86-4g-m7-fpu_1_3") ++ ++(define_insn_reservation "c86_4g_m7_avx512_mskmov_k_m" 8 ++ (and (eq_attr "cpu" "c86_4g_m7") ++ (and (eq_attr "type" "mskmov") ++ (and (match_operand 0 "register_operand" "k") ++ (match_operand 1 "memory_operand")))) ++ "c86-4g-m7-direct,c86-4g-m7-load") +new file mode 100644 +--- /dev/null ++++ b/src/gcc/config/i386/c86-4g.md +@@ -0,0 +1,1214 @@ ++;; Copyright (C) 2026 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC is free software; you can redistribute it and/or modify ++;; it under the terms of the GNU General Public License as published by ++;; the Free Software Foundation; either version 3, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, ++;; but WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++;; GNU General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING3. If not see ++;; . ++;; ++ ++ ++(define_attr "c86_decode" "direct,vector,double" ++ (const_string "direct")) ++ ++(define_attr "c86_attr" "other,abs,sqrt,maxmin,blend,blendv,rcp,movnt,avg, ++ sign,sadbw,insr,perm2,perm,insertx,shufx,madd, ++ compress,sselogic,cmpestr,extr,vpmovx,expand,aes, ++ hplus,ptest" ++ (const_string "other")) ++ ++;; HYGON Scheduling ++;; Modeling automatons for decoders, integer execution pipes, ++;; AGU pipes, floating point execution units, integer and ++;; floating point dividers. Split fp1 into its own automaton ++;; to keep this unit independent without increasing the main ++;; c86_4g_fp state space. ++(define_automaton "c86_4g, c86_4g_ieu, c86_4g_fp024, c86_4g_fp1, c86_4g_agu, c86_4g_idiv, c86_4g_fdiv") ++ ++;; Decoders unit has 4 decoders and all of them can decode fast path ++;; and vector type instructions. ++(define_cpu_unit "c86-4g-decode0" "c86_4g") ++(define_cpu_unit "c86-4g-decode1" "c86_4g") ++(define_cpu_unit "c86-4g-decode2" "c86_4g") ++(define_cpu_unit "c86-4g-decode3" "c86_4g") ++ ++;; Currently blocking all decoders for vector path instructions as ++;; they are dispatched separetely as microcode sequence. ++;; Fix me: Need to revisit this. ++(define_reservation "c86-4g-vector" "c86-4g-decode0+c86-4g-decode1+c86-4g-decode2+c86-4g-decode3") ++ ++;; Direct instructions can be issued to any of the four decoders. ++(define_reservation "c86-4g-direct" "c86-4g-decode0|c86-4g-decode1|c86-4g-decode2|c86-4g-decode3") ++ ++;; Fix me: Need to revisit this later to simulate fast path double behavior. ++(define_reservation "c86-4g-double" "c86-4g-direct") ++ ++;; Integer unit 4 ALU pipes. ++(define_cpu_unit "c86-4g-ieu0" "c86_4g_ieu") ++(define_cpu_unit "c86-4g-ieu1" "c86_4g_ieu") ++(define_cpu_unit "c86-4g-ieu2" "c86_4g_ieu") ++(define_cpu_unit "c86-4g-ieu3" "c86_4g_ieu") ++(define_reservation "c86-4g-ieu" "c86-4g-ieu0|c86-4g-ieu1|c86-4g-ieu2|c86-4g-ieu3") ++ ++;; One separated integer divider. ++(define_cpu_unit "c86-4g-idiv" "c86_4g_idiv") ++ ++;; 2 AGU pipes in c86_4g ++;; According to CPU diagram last AGU unit is used only for stores. ++(define_cpu_unit "c86-4g-agu0" "c86_4g_agu") ++(define_cpu_unit "c86-4g-agu1" "c86_4g_agu") ++(define_reservation "c86-4g-agu-reserve" "c86-4g-agu0|c86-4g-agu1") ++ ++;; Load is 4 cycles. We do not model reservation of load unit. ++;;(define_reservation "c86-4g-load" "c86-4g-agu-reserve, nothing, nothing, nothing") ++(define_reservation "c86-4g-load" "c86-4g-agu-reserve") ++(define_reservation "c86-4g-store" "c86-4g-agu-reserve") ++ ++;; vectorpath (microcoded) instructions are single issue instructions. ++;; So, they occupy all the integer units. ++(define_reservation "c86-4g-ivector" "c86-4g-ieu0+c86-4g-ieu1 ++ +c86-4g-ieu2+c86-4g-ieu3 ++ +c86-4g-agu0+c86-4g-agu1") ++ ++;; Floating point unit 4 FP pipes. ++(define_cpu_unit "c86-4g-fp0" "c86_4g_fp024") ++(define_cpu_unit "c86-4g-fp1" "c86_4g_fp1") ++(define_cpu_unit "c86-4g-fp2" "c86_4g_fp024") ++(define_cpu_unit "c86-4g-fp3" "c86_4g_fp024") ++ ++(define_reservation "c86-4g-fpu" "c86-4g-fp0|c86-4g-fp1|c86-4g-fp2|c86-4g-fp3") ++ ++(define_reservation "c86-4g-fvector" "c86-4g-fp0+c86-4g-fp1 ++ +c86-4g-fp2+c86-4g-fp3 ++ +c86-4g-agu0+c86-4g-agu1") ++ ++;; One separated FP divider. ++(define_cpu_unit "c86-4g-fdiv" "c86_4g_fdiv") ++ ++(define_reservation "c86-4g-fp1fdivx4" "(c86-4g-fp1+c86-4g-fdiv)*4") ++ ++;; Call instruction ++(define_insn_reservation "c86_4g_call" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "call,callv")) ++ "c86-4g-double,c86-4g-store,c86-4g-ieu0+c86-4g-ieu3") ++ ++;; General instructions ++(define_insn_reservation "c86_4g_push" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "push") ++ (eq_attr "memory" "store"))) ++ "c86-4g-direct,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_push_load" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "push") ++ (eq_attr "memory" "both"))) ++ "c86-4g-direct,c86-4g-load+c86-4g-store") ++ ++(define_insn_reservation "c86_4g_pop" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "pop") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load") ++ ++(define_insn_reservation "c86_4g_pop_mem" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "pop") ++ (eq_attr "memory" "both"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-store") ++ ++;; Leave ++(define_insn_reservation "c86_4g_leave" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "leave")) ++ "c86-4g-double,c86-4g-ieu+c86-4g-store") ++ ++;; Integer Instructions or General instructions ++;; Multiplications ++;; Reg operands ++(define_insn_reservation "c86_4g_imul" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "imul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-ieu1") ++ ++(define_insn_reservation "c86_4g_imul_mem" 7 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "imul") ++ (eq_attr "memory" "!none"))) ++ "c86-4g-direct,c86-4g-load, c86-4g-ieu1") ++ ++;; Divisions ++;; Reg operands ++(define_insn_reservation "c86_4g_idiv_DI" 41 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "DI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*41") ++ ++(define_insn_reservation "c86_4g_idiv_SI" 25 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "SI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*25") ++ ++(define_insn_reservation "c86_4g_idiv_HI" 17 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "HI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*17") ++ ++(define_insn_reservation "c86_4g_idiv_QI" 15 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "QI") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-ieu2,c86-4g-idiv*15") ++ ++;; Mem operands ++(define_insn_reservation "c86_4g_idiv_mem_DI" 45 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "DI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*41") ++ ++(define_insn_reservation "c86_4g_idiv_mem_SI" 29 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "SI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*25") ++ ++(define_insn_reservation "c86_4g_idiv_mem_HI" 21 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "HI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*17") ++ ++(define_insn_reservation "c86_4g_idiv_mem_QI" 19 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "idiv") ++ (and (eq_attr "mode" "QI") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*15") ++ ++;; STR ISHIFT which are micro coded. ++;; Fix me: Latency need to be rechecked. ++(define_insn_reservation "c86_4g_str_ishift" 6 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "str,ishift") ++ (eq_attr "memory" "both,store"))) ++ "c86-4g-vector,c86-4g-ivector") ++ ++;; MOV - integer moves ++(define_insn_reservation "c86_4g_load_imov_double" 2 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "imovx") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-ieu") ++ ++(define_insn_reservation "c86_4g_load_imov_direct" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "!double") ++ (and (eq_attr "type" "imov,imovx") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-ieu") ++ ++(define_insn_reservation "c86_4g_load_imov_double_store" 2 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "imovx") ++ (eq_attr "memory" "store")))) ++ "c86-4g-double,c86-4g-ieu,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_load_imov_direct_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "!double") ++ (and (eq_attr "type" "imov,imovx") ++ (eq_attr "memory" "store")))) ++ "c86-4g-direct,c86-4g-ieu,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_load_imov_double_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "imovx") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-ieu") ++ ++(define_insn_reservation "c86_4g_load_imov_direct_load" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "!double") ++ (and (eq_attr "type" "imov,imovx") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load") ++ ++;; INTEGER/GENERAL instructions ++;; register/imm operands only: ALU, ICMP, NEG, NOT, ROTATE, ISHIFT, TEST ++(define_insn_reservation "c86_4g_insn" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov") ++ (eq_attr "memory" "none,unknown"))) ++ "c86-4g-direct,c86-4g-ieu") ++ ++(define_insn_reservation "c86_4g_insn_load" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-ieu") ++ ++;; FIXME: The instructions matched here has only two operands, which means memory type can only be none, load or both. ++;; Store memory type handling should never take effect here? ++(define_insn_reservation "c86_4g_insn_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec") ++ (eq_attr "memory" "store"))) ++ "c86-4g-direct,c86-4g-ieu,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_insn_both" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec") ++ (eq_attr "memory" "both"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-ieu,c86-4g-store") ++ ++;; Special latency for multi type. ++(define_insn_reservation "c86_4g_fp_fcomp" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "unit" "i387") ++ (eq_attr "type" "multi")))) ++ "c86-4g-double,c86-4g-fp0|c86-4g-fp2") ++ ++;; Fix me: Other vector type insns keeping latency 6 as of now. ++(define_insn_reservation "c86_4g_ieu_vector" 6 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "unit" "!i387") ++ (eq_attr "type" "other,str,multi")))) ++ "c86-4g-vector,c86-4g-ivector") ++ ++;; ALU1 register operands. ++(define_insn_reservation "c86_4g_alu1_vector" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "vector") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-vector,c86-4g-ivector") ++ ++(define_insn_reservation "c86_4g_alu1_double" 2 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-double,c86-4g-ieu") ++ ++(define_insn_reservation "c86_4g_alu1_direct" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "none,unknown")))) ++ "c86-4g-direct,c86-4g-ieu") ++ ++;; Branches : Fix me need to model conditional branches. ++(define_insn_reservation "c86_4g_branch" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct") ++ ++;; Indirect branches check latencies. ++(define_insn_reservation "c86_4g_indirect_branch_mem" 6 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "load"))) ++ "c86-4g-vector,c86-4g-ivector") ++ ++;; LEA executes in ALU units with 1 cycle latency. ++(define_insn_reservation "c86_4g_lea" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "lea")) ++ "c86-4g-direct,c86-4g-ieu") ++ ++;; Floating point ++(define_insn_reservation "c86_4g_fp_cmov" 6 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "fcmov")) ++ "c86-4g-vector,c86-4g-fvector") ++ ++ ++(define_insn_reservation "c86_4g_fp_mov_direct_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_fp_mov_direct_store" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "store")))) ++ "c86-4g-direct,c86-4g-fp2|c86-4g-fp3,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_fp_mov_double" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_fp_mov_double_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "double") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_fp_mov_direct" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++;; SQRT ++(define_insn_reservation "c86_4g_fp_sqrt" 22 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fpspc") ++ (eq_attr "c86_attr" "sqrt"))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*18") ++ ++(define_insn_reservation "c86_4g_sse_sqrt_sf" 14 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SF,V4SF,V8SF") ++ (and (eq_attr "memory" "none,unknown") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*10") ++ ++(define_insn_reservation "c86_4g_sse_sqrt_sf_mem" 21 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SF,V4SF,V8SF") ++ (and (eq_attr "memory" "load") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*10") ++ ++(define_insn_reservation "c86_4g_sse_sqrt_df" 20 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "DF,V2DF,V4DF") ++ (and (eq_attr "memory" "none,unknown") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*16") ++ ++(define_insn_reservation "c86_4g_sse_sqrt_df_mem" 27 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "DF,V2DF,V4DF") ++ (and (eq_attr "memory" "load") ++ (and (eq_attr "c86_attr" "sqrt") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*16") ++ ++;; RCP ++(define_insn_reservation "c86_4g_sse_rcp" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V4SF,V8SF,SF") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "c86_attr" "rcp") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_rcp_mem" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V4SF,V8SF,SF") ++ (and (eq_attr "memory" "load") ++ (and (eq_attr "c86_attr" "rcp") ++ (eq_attr "type" "sse"))))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++;; TODO: AGU? ++(define_insn_reservation "c86_4g_fp_spc_direct" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_decode" "direct") ++ (and (eq_attr "type" "fpspc") ++ (eq_attr "memory" "store")))) ++ "c86-4g-direct,c86-4g-fp3") ++ ++;; FABS ++(define_insn_reservation "c86_4g_fp_absneg" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "fsgn")) ++ "c86-4g-direct,c86-4g-fp1|c86-4g-fp3") ++ ++;; FCMP ++(define_insn_reservation "c86_4g_fp_fcmp" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "c86_decode" "double") ++ (eq_attr "type" "fcmp")))) ++ "c86-4g-double,c86-4g-fp0,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_fp_fcmp_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "memory" "load") ++ (and (eq_attr "c86_decode" "double") ++ (eq_attr "type" "fcmp")))) ++ "c86-4g-double,c86-4g-load, c86-4g-fp0,c86-4g-fp1") ++ ++;;FADD FSUB FMUL ++(define_insn_reservation "c86_4g_fp_op_mul" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fop,fmul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_fp_op_mul_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fop,fmul") ++ (and (eq_attr "fp_int_src" "false") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_fp_op_imul_load" 16 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fop,fmul") ++ (and (eq_attr "fp_int_src" "true") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp0,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_fp_op_div" 15 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fdiv") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*11") ++ ++(define_insn_reservation "c86_4g_fp_op_div_load" 22 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fdiv") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*11") ++ ++(define_insn_reservation "c86_4g_fp_op_idiv_load" 26 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "fdiv") ++ (and (eq_attr "fp_int_src" "true") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp1*4,c86-4g-fp1fdivx4,c86-4g-fdiv*11") ++ ++;; MMX, SSE, SSEn.n, AVX, AVX2 instructions ++(define_insn_reservation "c86_4g_fp_insn" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "type" "mmx")) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_mmx_add" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxadd") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_mmx_add_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxadd") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_mmx_hadd" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseadd1") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_mmx_hadd_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseadd1") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_mmx_cmp" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxcmp") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_mmx_cmp_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxcmp") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_mmx_cvt_pck_shuf" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_cvt_pck_shuf_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_shift" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxshft") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_move" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxmov") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_shift_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxshft") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_move_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxshft") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_mmx_move_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxshft,mmxmov") ++ (eq_attr "memory" "store,both"))) ++ "c86-4g-direct,c86-4g-fp2,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_mmx_mul" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxmul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_mmx_mul_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "mmxmul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0") ++ ++;; sseabs ++(define_insn_reservation "c86_4g_sse_abs" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_attr" "abs") ++ (and (eq_attr "type" "sselog1") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sse_pinsr_reg" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insr") ++ (and (match_operand 2 "register_operand") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-direct,c86-4g-ieu2,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_pinsr" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "insr") ++ (and (not (match_operand 2 "register_operand")) ++ (eq_attr "memory" "none"))))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_log" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_log_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_sign" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sign") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sse_sign_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "sign") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fpu") ++ ++ ++(define_insn_reservation "c86_4g_sse_log1" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_log1_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sselog1") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "!none")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_extrq" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "memory" "none") ++ (eq_attr "prefix_data16" "1")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_movsdup" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "memory" "none") ++ (eq_attr "prefix" "vex")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_alignr" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "prefix_extra" "1")) ++ (and (eq_attr "type" "sseishft") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_ishift" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "prefix_extra" "!1")) ++ (and (eq_attr "type" "sseishft") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_ishift_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "prefix_extra" "!1")) ++ (and (eq_attr "type" "sseishft") ++ (eq_attr "memory" "!none"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_insertimm" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseins") ++ (and (eq_attr "memory" "none") ++ (eq_attr "length_immediate" "2")))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sse_insert" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseins") ++ (and (eq_attr "memory" "none") ++ (eq_attr "length_immediate" "!2")))) ++ "c86-4g-direct,c86-4g-fpu,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sse_comi" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SF,DF,V4SF,V2DF") ++ (and (eq_attr "prefix" "!vex") ++ (and (eq_attr "prefix_extra" "0") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_comi_load" 12 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF")) ++ (and (eq_attr "prefix_extra" "0") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_comi_double" 2 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4SF,V2DF,TI")) ++ (and (eq_attr "prefix" "vex") ++ (and (eq_attr "prefix_extra" "0") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-double,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_comi_double_load" 10 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4SF,V2DF,TI")) ++ (and (eq_attr "prefix" "vex") ++ (and (eq_attr "prefix_extra" "0") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp0|c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_test" 4 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")) ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_test_load" 11 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")) ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_avx256_test" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V8SF,V4DF,OI")) ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_avx256_test_load" 15 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V8SF,V4DF,OI")) ++ (and (eq_attr "prefix_extra" "1") ++ (and (eq_attr "type" "ssecomi") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1") ++ ++;; SSE moves ++;; Fix me: Need to revist this again some of the moves may be restricted ++;; to some fpu pipes. ++ ++;; movnt doesn't touch cache, so latency modeling has little impact. ++(define_insn_reservation "c86_4g_sse_movnt_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (eq_attr "type" "ssemov,mmxmov,ssecvt") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load") ++ ++(define_insn_reservation "c86_4g_sse_movnt_store" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "c86_attr" "movnt") ++ (and (eq_attr "type" "ssemov,mmxmov,ssecvt") ++ (eq_attr "memory" "store")))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_sse_mov" 2 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SI") ++ (and (eq_attr "isa" "avx") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-direct,c86-4g-ieu0") ++ ++(define_insn_reservation "c86_4g_avx_mov" 2 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "TI") ++ (and (eq_attr "isa" "avx") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand:SI 1 "register_operand") ++ (eq_attr "memory" "none")))))) ++ "c86-4g-direct,c86-4g-ieu2") ++ ++(define_insn_reservation "c86_4g_sseavx_mov" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")) ++ (and (eq_attr "prefix_extra" "0") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sseavx_blend" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF")) ++ (and (eq_attr "type" "ssemov,sselog1") ++ (and (eq_attr "c86_attr" "blend,blendv") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sseavx_mov_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "store")))) ++ "c86-4g-direct,c86-4g-fpu,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_sseavx_mov_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")) ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_avx256_mov" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_avx256_mov_store" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "store")))) ++ "c86-4g-double,c86-4g-fpu,c86-4g-store") ++ ++(define_insn_reservation "c86_4g_avx256_mov_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF,V4DF,OI") ++ (and (eq_attr "type" "ssemov") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fpu") ++ ++;; SSE max & min ++(define_insn_reservation "c86_4g_sse_maxmin" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V8SF,V2DF,V4DF,TI")) ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "none") ++ (eq_attr "c86_attr" "maxmin")))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_maxmin_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V8SF,V2DF,V4DF,TI")) ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "load") ++ (eq_attr "c86_attr" "maxmin")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_pmaxmin" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "TI,OI")) ++ (and (eq_attr "type" "mmxadd,sseiadd") ++ (and (eq_attr "memory" "none") ++ (eq_attr "c86_attr" "maxmin")))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sse_pmaxmin_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "TI,OI")) ++ (and (eq_attr "type" "mmxadd,sseiadd") ++ (and (eq_attr "memory" "load") ++ (eq_attr "c86_attr" "maxmin")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fpu") ++ ++;; SSE avg ++(define_insn_reservation "c86_4g_sse_avg" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "c86_attr" "avg")) ++ (and (eq_attr "type" "sseiadd,mmxshft") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sse_avg_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "c86_attr" "avg")) ++ (and (eq_attr "type" "sseiadd,mmxshft") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp3") ++ ++;;MMX sadbw ++(define_insn_reservation "c86_4g_sse_sadbw" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseiadd,mmxshft") ++ (and (eq_attr "c86_attr" "sadbw") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sse_sadbw_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseiadd,mmxshft") ++ (and (eq_attr "c86_attr" "sadbw") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0") ++ ++;; SSE add ++(define_insn_reservation "c86_4g_sse_add" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "none") ++ (eq_attr "c86_attr" "other")))) ++ "c86-4g-direct,c86-4g-fp1|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_sse_add_load" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "load") ++ (eq_attr "c86_attr" "!maxmin")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1|c86-4g-fp3") ++ ++(define_insn_reservation "c86_4g_sse_fma" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ssemuladd") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_fma_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ssemuladd") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_iadd" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseiadd") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++(define_insn_reservation "c86_4g_sse_iadd_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "sseiadd") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fpu") ++ ++;; SSE conversions. ++(define_insn_reservation "c86_4g_ssecvtsf_si_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SI") ++ (and (eq_attr "type" "sseicvt") ++ (and (match_operand:SF 1 "memory_operand") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp3,c86-4g-ieu0") ++ ++(define_insn_reservation "c86_4g_ssecvtdf_si" 5 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SI") ++ (and (match_operand:DF 1 "register_operand") ++ (and (eq_attr "type" "sseicvt") ++ (eq_attr "memory" "none"))))) ++ "c86-4g-double,c86-4g-fp3,c86-4g-ieu0") ++ ++(define_insn_reservation "c86_4g_ssecvtdf_si_load" 12 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "SI") ++ (and (eq_attr "type" "sseicvt") ++ (and (match_operand:DF 1 "memory_operand") ++ (eq_attr "memory" "load"))))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp3,c86-4g-ieu0") ++ ++;; All other used ssecvt fp3 pipes ++;; Check: Need to revisit this again. ++;; Some SSE converts may use different pipe combinations. ++(define_insn_reservation "c86_4g_ssecvt" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "none")))) ++ "c86-4g-direct,c86-4g-fp1") ++ ++(define_insn_reservation "c86_4g_ssecvt_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "type" "ssecvt") ++ (and (eq_attr "c86_attr" "other") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1") ++ ++;; SSE div ++(define_insn_reservation "c86_4g_ssediv_ss_ps" 10 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4SF,SF")) ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*6") ++ ++(define_insn_reservation "c86_4g_ssediv_ss_ps_load" 17 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4SF,SF")) ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*6") ++ ++(define_insn_reservation "c86_4g_ssediv_sd_pd" 13 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V2DF,DF")) ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp1fdivx4,c86-4g-fdiv*9") ++ ++(define_insn_reservation "c86_4g_ssediv_sd_pd_load" 20 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V2DF,DF")) ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*9") ++ ++ ++(define_insn_reservation "c86_4g_ssediv_avx256_ps" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF") ++ (and (eq_attr "memory" "none") ++ (eq_attr "type" "ssediv")))) ++ "c86-4g-double,c86-4g-fp1fdivx4,c86-4g-fdiv*6") ++ ++(define_insn_reservation "c86_4g_ssediv_avx256_ps_load" 17 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF") ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*6") ++ ++(define_insn_reservation "c86_4g_ssediv_avx256_pd" 13 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V4DF") ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fp1fdivx4,c86-4g-fdiv*9") ++ ++(define_insn_reservation "c86_4g_ssediv_avx256_pd_load" 20 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V4DF") ++ (and (eq_attr "type" "ssediv") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp1fdivx4,c86-4g-fdiv*9") ++;; SSE MUL ++(define_insn_reservation "c86_4g_ssemul_ss_ps" 3 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V8SF,V4SF,SF")) ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_ssemul_ss_ps_load" 10 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V8SF,V4SF,SF")) ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_ssemul_sd_pd" 4 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4DF,V2DF,DF")) ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_ssemul_sd_pd_load" 11 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "V4DF,V2DF,DF")) ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++;;SSE imul ++(define_insn_reservation "c86_4g_sseimul" 3 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "TI")) ++ (and (eq_attr "type" "sseimul") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sseimul_avx256" 4 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "OI") ++ (and (eq_attr "type" "sseimul") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sseimul_load" 10 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "TI")) ++ (and (eq_attr "type" "sseimul") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sseimul_avx256_load" 11 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "OI") ++ (and (eq_attr "type" "sseimul") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sseimul_di" 3 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "DI") ++ (and (eq_attr "memory" "none") ++ (eq_attr "type" "sseimul")))) ++ "c86-4g-direct,c86-4g-fp0") ++ ++(define_insn_reservation "c86_4g_sseimul_load_di" 10 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "DI") ++ (and (eq_attr "type" "sseimul") ++ (eq_attr "memory" "load")))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0") ++ ++;; SSE compares ++(define_insn_reservation "c86_4g_sse_cmp" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF")) ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_cmp_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "SF,DF,V4SF,V2DF")) ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++ ++(define_insn_reservation "c86_4g_sse_cmp_avx256" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF,V4DF") ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_cmp_avx256_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "V8SF,V4DF") ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fp0|c86-4g-fp2") ++ ++(define_insn_reservation "c86_4g_sse_icmp" 1 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "QI,HI,SI,DI,TI")) ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "none"))) ++ "c86-4g-direct,c86-4g-fpu") ++ ++ ++(define_insn_reservation "c86_4g_sse_icmp_load" 8 ++ (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (eq_attr "mode" "QI,HI,SI,DI,TI")) ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "load"))) ++ "c86-4g-direct,c86-4g-load,c86-4g-fpu") ++ ++ ++(define_insn_reservation "c86_4g_sse_icmp_avx256" 1 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "OI") ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "none")))) ++ "c86-4g-double,c86-4g-fpu") ++ ++ ++(define_insn_reservation "c86_4g_sse_icmp_avx256_load" 8 ++ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") ++ (and (eq_attr "mode" "OI") ++ (and (eq_attr "type" "ssecmp") ++ (eq_attr "memory" "load")))) ++ "c86-4g-double,c86-4g-load,c86-4g-fpu") +--- a/src/gcc/config/i386/cpuid.h ++++ b/src/gcc/config/i386/cpuid.h +@@ -229,6 +229,10 @@ + #define signature_SHANGHAI_ecx 0x20206961 + #define signature_SHANGHAI_edx 0x68676e61 + ++#define signature_HYGON_ebx 0x6f677948 ++#define signature_HYGON_ecx 0x656e6975 ++#define signature_HYGON_edx 0x6e65476e ++ + #ifndef __x86_64__ + /* At least one cpu (Winchip 2) does not set %ebx and %ecx + for cpuid leaf 1. Forcibly zero the two registers before +--- a/src/gcc/config/i386/driver-i386.cc ++++ b/src/gcc/config/i386/driver-i386.cc +@@ -526,6 +526,16 @@ const char *host_detect_local_cpu (int argc, const char **argv) + else + processor = PROCESSOR_PENTIUM; + } ++ else if (vendor == VENDOR_HYGON) ++ { ++ processor = PROCESSOR_GENERIC; ++ if (model == 4) ++ processor = PROCESSOR_C86_4G_M4; ++ else if (model == 6) ++ processor = PROCESSOR_C86_4G_M6; ++ else if (model >= 7) ++ processor = PROCESSOR_C86_4G_M7; ++ } + else if (vendor == VENDOR_CENTAUR) + { + processor = PROCESSOR_GENERIC; +@@ -868,6 +878,15 @@ const char *host_detect_local_cpu (int argc, const char **argv) + case PROCESSOR_SHIJIDADAO: + cpu = "shijidadao"; + break; ++ case PROCESSOR_C86_4G_M4: ++ cpu = "c86-4g-m4"; ++ break; ++ case PROCESSOR_C86_4G_M6: ++ cpu = "c86-4g-m6"; ++ break; ++ case PROCESSOR_C86_4G_M7: ++ cpu = "c86-4g-m7"; ++ break; + + default: + /* Use something reasonable. */ +--- a/src/gcc/config/i386/i386-c.cc ++++ b/src/gcc/config/i386/i386-c.cc +@@ -295,7 +295,18 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, + def_or_undef (parse_in, "__diamondrapids"); + def_or_undef (parse_in, "__diamondrapids__"); + break; +- ++ case PROCESSOR_C86_4G_M4: ++ def_or_undef (parse_in, "__c86_4g_m4"); ++ def_or_undef (parse_in, "__c86_4g_m4__"); ++ break; ++ case PROCESSOR_C86_4G_M6: ++ def_or_undef (parse_in, "__c86_4g_m6"); ++ def_or_undef (parse_in, "__c86_4g_m6__"); ++ break; ++ case PROCESSOR_C86_4G_M7: ++ def_or_undef (parse_in, "__c86_4g_m7"); ++ def_or_undef (parse_in, "__c86_4g_m7__"); ++ break; + /* use PROCESSOR_max to not set/unset the arch macro. */ + case PROCESSOR_max: + break; +@@ -498,6 +509,15 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, + case PROCESSOR_DIAMONDRAPIDS: + def_or_undef (parse_in, "__tune_diamondrapids__"); + break; ++ case PROCESSOR_C86_4G_M4: ++ def_or_undef (parse_in, "__tune_c86_4g_m4__"); ++ break; ++ case PROCESSOR_C86_4G_M6: ++ def_or_undef (parse_in, "__tune_c86_4g_m6__"); ++ break; ++ case PROCESSOR_C86_4G_M7: ++ def_or_undef (parse_in, "__tune_c86_4g_m7__"); ++ break; + case PROCESSOR_INTEL: + case PROCESSOR_GENERIC: + break; +--- a/src/gcc/config/i386/i386-expand.cc ++++ b/src/gcc/config/i386/i386-expand.cc +@@ -17891,6 +17891,11 @@ ix86_expand_vector_set (bool mmx_ok, rtx target, rtx val, int elt) + machine_mode mmode = VOIDmode; + rtx (*gen_blendm) (rtx, rtx, rtx, rtx); + ++ if (!IN_RANGE (elt, 0, GET_MODE_NUNITS (mode))) ++ { ++ emit_move_insn (target, target); ++ return; ++ } + switch (mode) + { + case E_V2SImode: +@@ -25991,12 +25996,15 @@ ix86_gen_ccmp_first (rtx_insn **prep_seq, rtx_insn **gen_seq, + op_mode = GET_MODE (op1); + + /* We only supports following scalar comparisons that use just 1 +- instruction: DI/SI/QI/HI/DF/SF/HF. +- Unordered/Ordered compare cannot be corretly indentified by ++ instruction: DI/SI/HI/QI/XF/DF/SF/HF. ++ Unordered/Ordered compare cannot be correctly identified by + ccmp so they are not supported. */ +- if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode +- || op_mode == QImode || op_mode == DFmode || op_mode == SFmode +- || op_mode == HFmode) ++ if (!(op_mode == DImode || op_mode == SImode ++ || op_mode == HImode || op_mode == QImode ++ || ((op_mode == XFmode || op_mode == DFmode || op_mode == SFmode) ++ && (TARGET_80387 ++ || (SSE_FLOAT_MODE_P (op_mode) && TARGET_SSE_MATH))) ++ || (op_mode == HFmode && TARGET_AVX512FP16)) + || code == ORDERED + || code == UNORDERED) + { +--- a/src/gcc/config/i386/i386-options.cc ++++ b/src/gcc/config/i386/i386-options.cc +@@ -183,6 +183,10 @@ along with GCC; see the file COPYING3. If not see + #define m_ZNVER (m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ZNVER5) + #define m_AMD_MULTIPLE (m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER \ + | m_ZNVER) ++#define m_C86_4G_M4 (HOST_WIDE_INT_1U<xf_i387" + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "direct") + (set_attr "bdver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "znver1_decode" "double")]) + + (define_insn "*cmpx" +@@ -2086,6 +2090,7 @@ (define_insn "*cmpi" + (set_attr "amdfam10_decode" "direct") + (set_attr "bdver1_decode" "double") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set (attr "enabled") + (if_then_else + (match_test ("SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH")) +@@ -2477,6 +2482,7 @@ (define_insn "*movxi_internal_avx512f" + } + } + [(set_attr "type" "sselog1,sselog1,ssemov,ssemov") ++ (set_attr "c86_attr" "sselogic,sselogic,*,*") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -2501,6 +2507,7 @@ (define_insn "*movoi_internal_avx" + } + [(set_attr "isa" "*,avx2,*,*") + (set_attr "type" "sselog1,sselog1,ssemov,ssemov") ++ (set_attr "c86_attr" "sselogic,sselogic,*,*") + (set_attr "prefix" "vex") + (set_attr "mode" "OI")]) + +@@ -2543,6 +2550,10 @@ (define_insn "*movti_internal" + (const_string "sselog1") + ] + (const_string "ssemov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "2,3") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "prefix") + (if_then_else (eq_attr "type" "sselog1,ssemov") + (const_string "maybe_vex") +@@ -2686,6 +2697,10 @@ (define_insn "*movdi_internal" + (const_string "lea") + ] + (const_string "imov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "12") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "modrm") + (if_then_else + (and (eq_attr "alternative" "4") (eq_attr "type" "imov")) +@@ -2906,6 +2921,10 @@ (define_insn "*movsi_internal" + (const_string "lea") + ] + (const_string "imov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "8") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "prefix") + (if_then_else (eq_attr "type" "sselog1,ssemov") + (const_string "maybe_vex") +@@ -3080,6 +3099,10 @@ (define_insn "*movhi_internal" + (const_string "imovx") + ] + (const_string "imov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "11") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "prefix") + (cond [(eq_attr "alternative" "4,5,6,7,8") + (const_string "vex") +@@ -3361,6 +3384,7 @@ (define_insn "swap" + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") ++ (set_attr "c86_decode" "vector") + (set_attr "bdver1_decode" "double")]) + + (define_insn "*swap" +@@ -3386,6 +3410,7 @@ (define_insn "*swap" + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") ++ (set_attr "c86_decode" "vector") + (set_attr "bdver1_decode" "double")]) + + (define_peephole2 +@@ -4069,6 +4094,7 @@ (define_insn "*movtf_internal" + } + [(set_attr "isa" "*,*,*,x64,x64") + (set_attr "type" "sselog1,ssemov,ssemov,multi,multi") ++ (set_attr "c86_attr" "sselogic,*,*,*,*") + (set (attr "prefix") + (if_then_else (eq_attr "type" "sselog1,ssemov") + (const_string "maybe_vex") +@@ -4240,6 +4266,10 @@ (define_insn "*movdf_internal" + (const_string "sselog1") + ] + (const_string "ssemov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "12,16") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "modrm") + (if_then_else (eq_attr "alternative" "11") + (const_string "0") +@@ -4412,6 +4442,10 @@ (define_insn "*movsf_internal" + (const_string "mmxmov") + ] + (const_string "ssemov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "5") ++ (const_string "sselogic") ++ (const_string "*"))) + (set (attr "prefix") + (if_then_else (eq_attr "type" "sselog1,ssemov") + (const_string "maybe_vex") +@@ -4760,6 +4794,10 @@ (define_insn "*zero_extendsidi2" + (const_string "mskmov") + ] + (const_string "imovx"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "10,11") ++ (const_string "vpmovx") ++ (const_string "*"))) + (set (attr "prefix_extra") + (if_then_else (eq_attr "alternative" "10,11") + (const_string "1") +@@ -5169,6 +5207,10 @@ (define_insn "extendhisi2" + (if_then_else (eq_attr "prefix_0f" "0") + (const_string "double") + (const_string "direct"))) ++ (set (attr "c86_decode") ++ (if_then_else (eq_attr "prefix_0f" "0") ++ (const_string "double") ++ (const_string "direct"))) + (set (attr "modrm") + (if_then_else (eq_attr "prefix_0f" "0") + (const_string "0") +@@ -6078,6 +6120,7 @@ (define_insn "floathi2" + [(set_attr "type" "fmov") + (set_attr "mode" "") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "fp_int_src" "true")]) + + (define_insn "floatxf2" +@@ -6088,6 +6131,7 @@ (define_insn "floatxf2" + [(set_attr "type" "fmov") + (set_attr "mode" "XF") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "fp_int_src" "true")]) + + (define_expand "float2" +@@ -6122,6 +6166,7 @@ (define_insn "*float2" + (set_attr "amdfam10_decode" "*,vector,double") + (set_attr "bdver1_decode" "*,double,direct") + (set_attr "znver1_decode" "double,*,*") ++ (set_attr "c86_decode" "double,*,*") + (set_attr "fp_int_src" "true") + (set (attr "enabled") + (if_then_else +@@ -6160,6 +6205,7 @@ (define_insn "*floatdi2_i387" + [(set_attr "type" "fmov") + (set_attr "mode" "") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "fp_int_src" "true")]) + + ;; Try TARGET_USE_VECTOR_CONVERTS, but not so hard as to require extra memory +@@ -7115,6 +7161,11 @@ (define_split + operands[1] = gen_lowpart (mode, operands[1]); + operands[2] = gen_lowpart (mode, operands[2]); + } ++ else ++ /* *lea and *add_1_nf have the same pattern, try_split ++ refuses to split an insn into itself, so just request ++ a new recog which will match *lea which comes first. */ ++ INSN_CODE (curr_insn) = -1; + }) + + ;; Convert add to the lea pattern to avoid flags dependency. +@@ -12601,6 +12652,7 @@ (define_insn_and_split "*anddi_1_btr" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + ;; Turn *anddi_1 into *andsi_1_zext if possible. +@@ -13658,6 +13710,7 @@ (define_insn_and_split "*iordi_1_bts" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + (define_insn_and_split "*xordi_1_btc" +@@ -13682,6 +13735,7 @@ (define_insn_and_split "*xordi_1_btc" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + ;; Optimize a ^ ((a ^ b) & mask) to (~mask & a) | (b & mask) +@@ -18839,6 +18893,7 @@ (define_insn "*" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "")]) + + ;; Avoid useless masking of count operand. +@@ -18907,6 +18962,7 @@ (define_insn "*btr" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "")]) + + ;; Avoid useless masking of count operand. +@@ -19048,6 +19104,7 @@ (define_insn "*btsq_imm" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + (define_insn "*btrq_imm" +@@ -19061,6 +19118,7 @@ (define_insn "*btrq_imm" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + (define_insn "*btcq_imm" +@@ -19074,6 +19132,7 @@ (define_insn "*btcq_imm" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "DI")]) + + ;; Allow Nocona to avoid these instructions if a register is available. +@@ -19160,7 +19219,7 @@ (define_insn "*bt" + (zero_extract:SWI48 + (match_operand:SWI48 0 "nonimmediate_operand" "r,m") + (const_int 1) +- (match_operand:QI 1 "nonmemory_operand" "q,"))))] ++ (match_operand:QI 1 "nonmemory_operand" "r,"))))] + "" + { + switch (get_attr_mode (insn)) +@@ -19189,7 +19248,7 @@ (define_insn_and_split "*bt_mask" + (compare:CCC + (const_int 0) + (zero_extract:SWI48 +- (match_operand:SWI48 0 "nonimmediate_operand" "r,m") ++ (match_operand:SWI48 0 "nonimmediate_operand") + (const_int 1) + (subreg:QI + (and:SWI248 +@@ -21040,6 +21099,7 @@ (define_insn_and_split "*tzcnt_1" + (set_attr "prefix_0f" "1") + (set_attr "prefix_rep" "1") + (set_attr "btver2_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "")]) + + ; False dependency happens when destination is only updated by tzcnt, +@@ -21059,6 +21119,7 @@ (define_insn "*tzcnt_1_falsedep" + (set_attr "prefix_0f" "1") + (set_attr "prefix_rep" "1") + (set_attr "btver2_decode" "double") ++ (set_attr "c86_decode" "double") + (set_attr "mode" "")]) + + (define_insn "*bsf_1" +@@ -21073,6 +21134,7 @@ (define_insn "*bsf_1" + (set_attr "prefix_0f" "1") + (set_attr "btver2_decode" "double") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "")]) + + (define_insn_and_split "ctz2" +@@ -21135,6 +21197,7 @@ (define_insn "*ctz2_falsedep" + gcc_unreachable (); + } + [(set_attr "type" "alu1") ++ (set_attr "c86_decode" "double") + (set_attr "prefix_0f" "1") + (set_attr "prefix_rep" "1") + (set_attr "mode" "")]) +@@ -21160,6 +21223,7 @@ (define_insn_and_split "*ctzsi2_zext" + (clobber (reg:CC FLAGS_REG))])] + "ix86_expand_clear (operands[0]);" + [(set_attr "type" "alu1") ++ (set_attr "c86_decode" "double") + (set_attr "prefix_0f" "1") + (set_attr "prefix_rep" "1") + (set_attr "mode" "SI")]) +@@ -21180,6 +21244,7 @@ (define_insn "*ctzsi2_zext_falsedep" + "TARGET_BMI && TARGET_64BIT" + "tzcnt{l}\t{%1, %k0|%k0, %1}" + [(set_attr "type" "alu1") ++ (set_attr "c86_decode" "double") + (set_attr "prefix_0f" "1") + (set_attr "prefix_rep" "1") + (set_attr "mode" "SI")]) +@@ -21257,6 +21322,7 @@ (define_insn "bsr_rex64" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "DI")]) + + (define_insn "bsr_rex64_1" +@@ -21269,6 +21335,7 @@ (define_insn "bsr_rex64_1" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "DI")]) + + (define_insn "bsr_rex64_1_zext" +@@ -21284,6 +21351,7 @@ (define_insn "bsr_rex64_1_zext" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "DI")]) + + (define_insn "bsr" +@@ -21298,6 +21366,7 @@ (define_insn "bsr" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "SI")]) + + (define_insn "bsr_1" +@@ -21310,6 +21379,7 @@ (define_insn "bsr_1" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "SI")]) + + (define_insn "bsr_zext_1" +@@ -21324,6 +21394,7 @@ (define_insn "bsr_zext_1" + [(set_attr "type" "alu1") + (set_attr "prefix_0f" "1") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "SI")]) + + ; As bsr is undefined behavior on zero and for other input +@@ -22640,6 +22711,7 @@ (define_insn "*bswaphi2_movbe" + (set_attr "pent_pair" "np,*,*") + (set_attr "athlon_decode" "vector,*,*") + (set_attr "amdfam10_decode" "double,*,*") ++ (set_attr "c86_decode" "vector,*,*") + (set_attr "bdver1_decode" "double,*,*") + (set_attr "mode" "QI,HI,HI")]) + +@@ -22652,6 +22724,7 @@ (define_insn "*bswaphi2" + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") ++ (set_attr "c86_decode" "vector") + (set_attr "bdver1_decode" "double") + (set_attr "mode" "QI")]) + +@@ -22676,6 +22749,7 @@ (define_insn "bswaphisi2_lowpart" + (set_attr "pent_pair" "np") + (set_attr "athlon_decode" "vector") + (set_attr "amdfam10_decode" "double") ++ (set_attr "c86_decode" "vector") + (set_attr "bdver1_decode" "double") + (set_attr "mode" "QI")]) + +@@ -23749,6 +23823,7 @@ (define_insn "sqrtxf2" + [(set_attr "type" "fpspc") + (set_attr "mode" "XF") + (set_attr "athlon_decode" "direct") ++ (set_attr "c86_attr" "sqrt") + (set_attr "amdfam10_decode" "direct") + (set_attr "bdver1_decode" "direct")]) + +@@ -23917,6 +23992,7 @@ (define_insn "fpremxf4_i387" + "fprem" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "fmodxf3" +@@ -23989,6 +24065,7 @@ (define_insn "fprem1xf4_i387" + "fprem1" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "remainderxf3" +@@ -24064,6 +24141,7 @@ (define_insn "xf2" + "f" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "2" +@@ -24095,6 +24173,7 @@ (define_insn "sincosxf3" + "fsincos" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "sincos3" +@@ -24128,6 +24207,7 @@ (define_insn "fptanxf4_i387" + "fptan" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "tanxf2" +@@ -24170,6 +24250,7 @@ (define_insn "atan2xf3" + "fpatan" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "atan23" +@@ -24473,6 +24554,7 @@ (define_insn "fyl2xxf3_i387" + "fyl2x" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "logxf2" +@@ -24570,6 +24652,7 @@ (define_insn "fyl2xp1xf3_i387" + "fyl2xp1" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "log1pxf2" +@@ -24610,6 +24693,7 @@ (define_insn "fxtractxf3_i387" + "fxtract" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "logbxf2" +@@ -24690,6 +24774,7 @@ (define_insn "*f2xm1xf2_i387" + "f2xm1" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_insn "fscalexf4_i387" +@@ -24705,6 +24790,7 @@ (define_insn "fscalexf4_i387" + "fscale" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "expNcorexf3" +@@ -25023,6 +25109,7 @@ (define_insn "rintxf2" + "frndint" + [(set_attr "type" "fpspc") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "XF")]) + + (define_expand "rinthf2" +@@ -26767,6 +26854,7 @@ (define_insn "3" + v\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "prefix" "orig,vex") ++ (set_attr "c86_attr" "maxmin") + (set_attr "type" "sseadd") + (set_attr "mode" "")]) + +@@ -26811,6 +26899,7 @@ (define_insn "*ieee_s3" + v\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "prefix" "orig,maybe_evex") ++ (set_attr "c86_attr" "maxmin") + (set_attr "type" "sseadd") + (set_attr "mode" "")]) + +--- a/src/gcc/config/i386/mmx.md ++++ b/src/gcc/config/i386/mmx.md +@@ -641,6 +641,7 @@ (define_insn "sse_movntq" + [(set_attr "isa" "*,x64") + (set_attr "mmx_isa" "native,*") + (set_attr "type" "mmxmov,ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "mode" "DI")]) + + (define_expand "movq__to_sse" +@@ -1301,6 +1302,7 @@ (define_insn "*mmx_blendps" + vblendps\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*") + (set_attr "prefix_extra" "1") +@@ -1321,6 +1323,7 @@ (define_insn "mmx_blendvps" + vblendvps\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*") + (set_attr "prefix_extra" "1") +@@ -3576,6 +3579,7 @@ (define_insn "*mmx_pmaddwd" + [(set_attr "isa" "*,sse2_noavx,avx") + (set_attr "mmx_isa" "native,*,*") + (set_attr "type" "mmxmul,sseiadd,sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "mode" "DI,TI,TI")]) + + (define_expand "mmx_pmulhrwv4hi3" +@@ -4323,6 +4327,7 @@ (define_insn "mmx_pblendvb_v8qi" + vpblendvb\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,orig,vex") +@@ -4399,6 +4404,7 @@ (define_insn "mmx_pblendvb_" + vpblendvb\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,orig,vex") +@@ -5017,6 +5023,7 @@ (define_insn "sse4_1_v4qiv4hi2" + "%vpmovbw\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -5049,6 +5056,7 @@ (define_insn "sse4_1_v2hiv2si2" + "%vpmovwd\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -5081,6 +5089,7 @@ (define_insn "sse4_1_v2qiv2si2" + "%vpmovbd\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -5107,6 +5116,7 @@ (define_insn "sse4_1_v2qiv2hi2" + "%vpmovbw\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -5283,6 +5293,7 @@ (define_insn "*mmx_pinsrd" + (set_attr "addr" "gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insr") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "TI")]) +@@ -5322,6 +5333,7 @@ (define_insn "*mmx_pinsrw" + [(set_attr "isa" "*,sse2_noavx,avx,sse4") + (set_attr "mmx_isa" "native,*,*,*") + (set_attr "type" "mmxcvt,sselog,sselog,sselog") ++ (set_attr "c86_attr" "insr") + (set_attr "length_immediate" "1") + (set_attr "mode" "DI,TI,TI,TI")]) + +@@ -5372,6 +5384,7 @@ (define_insn "*mmx_pinsrb" + } + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insr") + (set_attr "addr" "gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -5394,6 +5407,7 @@ (define_insn "*mmx_pextrw" + (set_attr "addr" "*,*,gpr16,*") + (set_attr "mmx_isa" "native,*,*,*") + (set_attr "type" "mmxcvt,sselog1,sselog1,sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,maybe_vex,maybe_vex,maybe_evex") + (set_attr "mode" "DI,TI,TI,TI")]) +@@ -5429,6 +5443,7 @@ (define_insn "*mmx_pextrw" + (set_attr "addr" "*,*,gpr16,*,*,*") + (set_attr "mmx_isa" "native,*,*,*,*,*") + (set_attr "type" "mmxcvt,sselog1,sselog1,sselog1,sseishft1,sseishft1") ++ (set_attr "c86_attr" "extr,extr,extr,extr,*,*") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,maybe_vex,maybe_vex,maybe_evex,orig,maybe_evex") + (set_attr "mode" "DI,TI,TI,TI,TI,TI")]) +@@ -5447,6 +5462,7 @@ (define_insn "*mmx_pextrw_zext" + [(set_attr "isa" "*,sse2") + (set_attr "mmx_isa" "native,*") + (set_attr "type" "mmxcvt,sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,maybe_vex") + (set_attr "mode" "DI,TI")]) +@@ -5465,6 +5481,7 @@ (define_insn "*mmx_pextrb" + [(set_attr "isa" "noavx,noavx,avx,avx") + (set_attr "addr" "*,gpr16,*,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -5480,6 +5497,7 @@ (define_insn "*mmx_pextrb_zext" + "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -5606,6 +5624,7 @@ (define_insn "*mmx_pblendw64" + vpblendw\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,orig,vex") +@@ -5624,6 +5643,7 @@ (define_insn "*mmx_pblendw32" + vpblendw\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,orig,vex") +@@ -5806,6 +5826,7 @@ (define_insn "*vec_extractv2si_1" + (const_string "*"))) + (set_attr "mmx_isa" "native,*,*,*,*,native,*,*") + (set_attr "type" "mmxcvt,ssemov,ssemov,sseshuf1,sseshuf1,mmxmov,ssemov,imov") ++ (set_attr "c86_attr" "*,extr,extr,*,*,*,*,*") + (set (attr "length_immediate") + (if_then_else (eq_attr "alternative" "1,2,3,4") + (const_string "1") +@@ -5833,6 +5854,7 @@ (define_insn "*vec_extractv2si_1_zext" + "%vpextrd\t{$1, %1, %k0|%k0, %1, 1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -5987,6 +6009,7 @@ (define_insn "*pinsrw" + } + [(set_attr "isa" "noavx,avx,sse4") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insr") + (set_attr "length_immediate" "1") + (set_attr "mode" "TI")]) + +@@ -6039,6 +6062,7 @@ (define_insn "*pinsrb" + [(set_attr "isa" "noavx,avx") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,vex") +@@ -6057,6 +6081,7 @@ (define_insn "*pextrw" + [(set_attr "isa" "*,sse4_noavx,avx") + (set_attr "addr" "*,gpr16,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) +@@ -6090,6 +6115,7 @@ (define_insn "*pextrw" + [(set_attr "isa" "*,sse4_noavx,avx,noavx,avx") + (set_attr "addr" "*,gpr16,*,*,*") + (set_attr "type" "sselog1,sselog1,sselog1,sseishft1,sseishft1") ++ (set_attr "c86_attr" "extr,extr,extr,*,*") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex,orig,maybe_evex,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -6103,6 +6129,7 @@ (define_insn "*pextrw_zext" + "TARGET_SSE2" + "%vpextrw\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) +@@ -6121,6 +6148,7 @@ (define_insn "*pextrb" + [(set_attr "isa" "noavx,noavx,avx,avx") + (set_attr "addr" "*,gpr16,*,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -6136,6 +6164,7 @@ (define_insn "*pextrb_zext" + "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -6488,6 +6517,7 @@ (define_insn "*mmx_psadbw" + [(set_attr "isa" "*,sse2_noavx,avx") + (set_attr "mmx_isa" "native,*,*") + (set_attr "type" "mmxshft,sseiadd,sseiadd") ++ (set_attr "c86_attr" "sadbw") + (set_attr "mode" "DI,TI,TI")]) + + (define_expand "reduc__scal_" +@@ -6867,6 +6897,7 @@ (define_insn "*mmx_maskmovq" + "maskmovq\t{%2, %1|%1, %2}" + [(set_attr "type" "mmxcvt") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "DI")]) + + (define_int_iterator EMMS +--- a/src/gcc/config/i386/sse.md ++++ b/src/gcc/config/i386/sse.md +@@ -1131,17 +1131,6 @@ (define_mode_attr avx512fmaskmodelower + (V16SF "hi") (V8SF "qi") (V4SF "qi") + (V8DF "qi") (V4DF "qi") (V2DF "qi")]) + +-;; Mapping of vector modes to corresponding mask half size +-(define_mode_attr avx512fmaskhalfmode +- [(V64QI "SI") (V32QI "HI") (V16QI "QI") +- (V32HI "HI") (V16HI "QI") (V8HI "QI") (V4HI "QI") +- (V16SI "QI") (V8SI "QI") (V4SI "QI") +- (V8DI "QI") (V4DI "QI") (V2DI "QI") +- (V32HF "HI") (V16HF "QI") (V8HF "QI") +- (V32BF "HI") (V16BF "QI") (V8BF "QI") +- (V16SF "QI") (V8SF "QI") (V4SF "QI") +- (V8DF "QI") (V4DF "QI") (V2DF "QI")]) +- + ;; Mapping of vector float modes to an integer mode of the same size + (define_mode_attr sseintvecmode + [(V32HF "V32HI") (V32BF "V32HI") (V16SF "V16SI") (V8DF "V8DI") +@@ -1772,6 +1761,11 @@ (define_insn "_blendm" + } + } + [(set_attr "type" "ssemov") ++ (set (attr "c86_attr") ++ (if_then_else (and (match_test "REG_P (operands[1])") ++ (match_test "REGNO (operands[1]) != REGNO (operands[0])")) ++ (const_string "blend") ++ (const_string "*"))) + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -1786,6 +1780,7 @@ (define_insn "_blendm" + vmovdqu\t{%2, %0%{%3%}%N1|%0%{%3%}%N1, %2} + vpblendm\t{%2, %1, %0%{%3%}|%0%{%3%}, %1, %2}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "*,blend") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -2012,6 +2007,7 @@ (define_insn "sse2_movnti" + "TARGET_SSE2" + "movnti\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix_data16" "0") + (set_attr "mode" "")]) + +@@ -2023,6 +2019,7 @@ (define_insn "_movnt" + "TARGET_SSE" + "%vmovnt\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "")]) + +@@ -2038,6 +2035,7 @@ (define_insn "_movnt" + (match_test "TARGET_AVX") + (const_string "*") + (const_string "1"))) ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "")]) + +@@ -2339,6 +2337,7 @@ (define_insn "ktest" + "ktest\t{%1, %0|%0, %1}" + [(set_attr "mode" "") + (set_attr "type" "msklog") ++ (set_attr "c86_decode" "vector") + (set_attr "prefix" "vex")]) + + (define_insn "*kortest" +@@ -2351,6 +2350,7 @@ (define_insn "*kortest" + "kortest\t{%1, %0|%0, %1}" + [(set_attr "mode" "") + (set_attr "type" "msklog") ++ (set_attr "c86_decode" "vector") + (set_attr "prefix" "vex")]) + + (define_insn "kortest_ccc" +@@ -2919,6 +2919,7 @@ (define_insn "_rcp2" + (set_attr "addr" "*,gpr16") + (set_attr "atom_sse_attr" "rcp") + (set_attr "btver2_sse_attr" "rcp") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "")]) + +@@ -2938,6 +2939,7 @@ (define_insn "sse_vmrcpv4sf2" + (set_attr "addr" "*,gpr16") + (set_attr "atom_sse_attr" "rcp") + (set_attr "btver2_sse_attr" "rcp") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "SF")]) + +@@ -2958,6 +2960,7 @@ (define_insn "*sse_vmrcpv4sf2" + (set_attr "addr" "*,gpr16") + (set_attr "atom_sse_attr" "rcp") + (set_attr "btver2_sse_attr" "rcp") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "SF")]) + +@@ -3007,6 +3010,7 @@ (define_insn "rcp14" + "TARGET_AVX512F" + "vrcp14\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3021,6 +3025,7 @@ (define_insn "srcp14" + "TARGET_AVX512F" + "vrcp14\t{%1, %2, %0|%0, %2, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3038,6 +3043,7 @@ (define_insn "srcp14_mask" + "TARGET_AVX512F" + "vrcp14\t{%1, %2, %0%{%4%}%N3|%0%{%4%}%N3, %2, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3073,6 +3079,7 @@ (define_insn "_sqrt2" + (set_attr "type" "sse") + (set_attr "atom_sse_attr" "sqrt") + (set_attr "btver2_sse_attr" "sqrt") ++ (set_attr "c86_attr" "sqrt") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "")]) + +@@ -3092,6 +3099,7 @@ (define_insn "_vmsqrt2" + (set_attr "atom_sse_attr" "sqrt") + (set_attr "prefix" "") + (set_attr "btver2_sse_attr" "sqrt") ++ (set_attr "c86_attr" "sqrt") + (set_attr "mode" "")]) + + (define_insn "*_vmsqrt2" +@@ -3111,6 +3119,7 @@ (define_insn "*_vmsqrt2" + (set_attr "atom_sse_attr" "sqrt") + (set_attr "prefix" "") + (set_attr "btver2_sse_attr" "sqrt") ++ (set_attr "c86_attr" "sqrt") + (set_attr "mode" "")]) + + (define_expand "rsqrt2" +@@ -3161,6 +3170,7 @@ (define_insn "rsqrt14" + "TARGET_AVX512F" + "vrsqrt14\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3175,6 +3185,7 @@ (define_insn "rsqrt14" + "TARGET_AVX512F" + "vrsqrt14\t{%1, %2, %0|%0, %2, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3192,6 +3203,7 @@ (define_insn "rsqrt14__mask" + "TARGET_AVX512F" + "vrsqrt14\t{%1, %2, %0%{%4%}%N3|%0%{%4%}%N3, %2, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "rcp") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -3316,6 +3328,7 @@ (define_insn "*3" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd") + (set_attr "btver2_sse_attr" "maxmin") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -3403,6 +3416,7 @@ (define_insn "ieee_3" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd") + (set_attr "btver2_sse_attr" "maxmin") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -3427,6 +3441,7 @@ (define_insn "*ieee_3" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd") + (set_attr "btver2_sse_attr" "maxmin") ++ (set_attr "c86_attr" "maxmin") + (set (attr "prefix") + (cond [(eq_attr "alternative" "0") + (const_string "orig") +@@ -3474,6 +3489,7 @@ (define_insn "*_vm3") + (set_attr "mode" "")]) + +@@ -3670,6 +3686,7 @@ (define_insn "avx_hv4df3" + "TARGET_AVX" + "vhpd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "prefix" "vex") + (set_attr "mode" "V4DF")]) +@@ -3715,6 +3732,7 @@ (define_insn "*sse3_haddv2df3" + [(set_attr "isa" "noavx,avx") + (set_attr "addr" "*,gpr16") + (set_attr "type" "sseadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "V2DF")]) + +@@ -3737,6 +3755,7 @@ (define_insn "sse3_hsubv2df3" + vhsubpd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "*,gpr16") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "V2DF")]) +@@ -3757,6 +3776,7 @@ (define_insn "*sse3_haddv2df3_low" + vhaddpd\t{%1, %1, %0|%0, %1, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "V2DF")]) + +@@ -3775,6 +3795,7 @@ (define_insn "*sse3_hsubv2df3_low" + vhsubpd\t{%1, %1, %0|%0, %1, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "V2DF")]) + +@@ -3818,6 +3839,7 @@ (define_insn "avx_hv8sf3" + "TARGET_AVX" + "vhps\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "prefix" "vex") + (set_attr "mode" "V8SF")]) +@@ -3849,6 +3871,7 @@ (define_insn "sse3_hv4sf3" + vhps\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "*,gpr16") + (set_attr "atom_unit" "complex") + (set_attr "prefix" "orig,vex") +@@ -4028,6 +4051,7 @@ (define_insn "reducep" + "TARGET_AVX512DQ || (VALID_AVX512FP16_REG_MODE (mode))" + "vreduce\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "aes") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -4044,6 +4068,7 @@ (define_insn "reduces" + "TARGET_AVX512DQ || (VALID_AVX512FP16_REG_MODE (mode))" + "vreduce\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "aes") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -4587,6 +4612,7 @@ (define_insn "*_eq3_1" + vpcmpeq\t{%2, %1, %0|%0, %1, %2} + vptestnm\t{%1, %1, %0|%0, %1, %1}" + [(set_attr "type" "ssecmp") ++ (set_attr "c86_attr" "*,ptest") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -4676,6 +4702,7 @@ (define_insn "*_eq3_1" + vpcmpeq\t{%2, %1, %0|%0, %1, %2} + vptestnm\t{%1, %1, %0|%0, %1, %1}" + [(set_attr "type" "ssecmp") ++ (set_attr "c86_attr" "*,ptest") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -5284,6 +5311,7 @@ (define_insn "_andnot3" + [(set_attr "isa" "noavx,avx_noavx512f,avx512dq,avx512f") + (set_attr "addr" "*,gpr16,*,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "orig,maybe_vex,evex,evex") + (set (attr "mode") + (cond [(and (match_test "") +@@ -5335,6 +5363,7 @@ (define_insn "_andnot3" + return ""; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "evex") + (set (attr "mode") + (if_then_else (match_test "TARGET_AVX512DQ") +@@ -5411,6 +5440,7 @@ (define_insn "*3" + } + [(set_attr "isa" "noavx,avx,avx512dq,avx512f") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "orig,maybe_evex,evex,evex") + (set (attr "mode") + (cond [(and (match_test "") +@@ -5458,6 +5488,7 @@ (define_insn "*3" + return ""; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "evex") + (set (attr "mode") + (if_then_else (match_test "TARGET_AVX512DQ") +@@ -5575,6 +5606,7 @@ (define_insn "*andnot3" + } + [(set_attr "isa" "noavx,avx,avx512vl,avx512f_512") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "orig,vex,evex,evex") + (set (attr "mode") + (cond [(eq_attr "alternative" "2") +@@ -5705,6 +5737,7 @@ (define_insn "3" + } + [(set_attr "isa" "noavx,avx,avx512vl,avx512f_512") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "orig,vex,evex,evex") + (set (attr "mode") + (cond [(eq_attr "alternative" "2") +@@ -5767,6 +5800,7 @@ (define_insn "*tf3" + } + [(set_attr "isa" "noavx,avx,avx512vl,avx512f_512") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set (attr "prefix_data16") + (if_then_else + (and (eq_attr "alternative" "0") +@@ -5913,8 +5947,8 @@ (define_insn "*fma_fmadd_" + [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") + (fma:FMAMODE + (match_operand:FMAMODE 1 "nonimmediate_operand" "%0,0,v,x,x") +- (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,m") +- (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xm,x")))] ++ (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,jm") ++ (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xjm,x")))] + "TARGET_FMA || TARGET_FMA4" + "@ + vfmadd132\t{%2, %3, %0|%0, %3, %2} +@@ -5924,6 +5958,7 @@ (define_insn "*fma_fmadd_" + vfmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + ;; Suppose AVX-512F as baseline +@@ -6011,9 +6046,9 @@ (define_insn "*fma_fmsub_" + [(set (match_operand:FMAMODE 0 "register_operand" "=v,v,v,x,x") + (fma:FMAMODE + (match_operand:FMAMODE 1 "nonimmediate_operand" "%0,0,v,x,x") +- (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,m") ++ (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,jm") + (neg:FMAMODE +- (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xm,x"))))] ++ (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xjm,x"))))] + "TARGET_FMA || TARGET_FMA4" + "@ + vfmsub132\t{%2, %3, %0|%0, %3, %2} +@@ -6023,6 +6058,7 @@ (define_insn "*fma_fmsub_" + vfmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + (define_expand "_fmsub__maskz" +@@ -6118,8 +6154,8 @@ (define_insn "*fma_fnmadd_" + (fma:FMAMODE + (neg:FMAMODE + (match_operand:FMAMODE 1 "nonimmediate_operand" "%0,0,v,x,x")) +- (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,m") +- (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xm,x")))] ++ (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,jm") ++ (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xjm,x")))] + "TARGET_FMA || TARGET_FMA4" + "@ + vfnmadd132\t{%2, %3, %0|%0, %3, %2} +@@ -6129,6 +6165,7 @@ (define_insn "*fma_fnmadd_" + vfnmadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + (define_expand "_fnmadd__maskz" +@@ -6224,9 +6261,9 @@ (define_insn "*fma_fnmsub_" + (fma:FMAMODE + (neg:FMAMODE + (match_operand:FMAMODE 1 "nonimmediate_operand" "%0,0,v,x,x")) +- (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,m") ++ (match_operand:FMAMODE 2 "nonimmediate_operand" "vm,v,vm,x,jm") + (neg:FMAMODE +- (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xm,x"))))] ++ (match_operand:FMAMODE 3 "nonimmediate_operand" "v,vm,0,xjm,x"))))] + "TARGET_FMA || TARGET_FMA4" + "@ + vfnmsub132\t{%2, %3, %0|%0, %3, %2} +@@ -6236,6 +6273,7 @@ (define_insn "*fma_fnmsub_" + vfnmsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + (define_expand "_fnmsub__maskz" +@@ -6401,8 +6439,8 @@ (define_insn "*fma_fmaddsub_" + [(set (match_operand:VF_128_256 0 "register_operand" "=v,v,v,x,x") + (unspec:VF_128_256 + [(match_operand:VF_128_256 1 "nonimmediate_operand" "%0,0,v,x,x") +- (match_operand:VF_128_256 2 "nonimmediate_operand" "vm,v,vm,x,m") +- (match_operand:VF_128_256 3 "nonimmediate_operand" "v,vm,0,xm,x")] ++ (match_operand:VF_128_256 2 "nonimmediate_operand" "vm,v,vm,x,jm") ++ (match_operand:VF_128_256 3 "nonimmediate_operand" "v,vm,0,xjm,x")] + UNSPEC_FMADDSUB))] + "TARGET_FMA || TARGET_FMA4" + "@ +@@ -6413,6 +6451,7 @@ (define_insn "*fma_fmaddsub_" + vfmaddsub\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + (define_insn "fma_fmaddsub_" +@@ -6469,9 +6508,9 @@ (define_insn "*fma_fmsubadd_" + [(set (match_operand:VF_128_256 0 "register_operand" "=v,v,v,x,x") + (unspec:VF_128_256 + [(match_operand:VF_128_256 1 "nonimmediate_operand" "%0,0,v,x,x") +- (match_operand:VF_128_256 2 "nonimmediate_operand" "vm,v,vm,x,m") ++ (match_operand:VF_128_256 2 "nonimmediate_operand" "vm,v,vm,x,jm") + (neg:VF_128_256 +- (match_operand:VF_128_256 3 "nonimmediate_operand" "v,vm,0,xm,x"))] ++ (match_operand:VF_128_256 3 "nonimmediate_operand" "v,vm,0,xjm,x"))] + UNSPEC_FMADDSUB))] + "TARGET_FMA || TARGET_FMA4" + "@ +@@ -6482,6 +6521,7 @@ (define_insn "*fma_fmsubadd_" + vfmsubadd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "fma,fma,fma,fma4,fma4") + (set_attr "type" "ssemuladd") ++ (set_attr "addr" "*,*,*,gpr16,gpr16") + (set_attr "mode" "")]) + + (define_insn "fma_fmsubadd_" +@@ -8517,6 +8557,7 @@ (define_insn "sse_cvtsi2ss" + (set_attr "bdver1_decode" "double,direct,*") + (set_attr "btver2_decode" "double,double,double") + (set_attr "znver1_decode" "double,double,double") ++ (set_attr "c86_decode" "double,double,double") + (set (attr "length_vex") + (if_then_else + (and (match_test "mode == DImode") +@@ -8978,6 +9019,7 @@ (define_insn "sse2_cvtsi2sd" + (set_attr "bdver1_decode" "double,direct,*") + (set_attr "btver2_decode" "double,double,double") + (set_attr "znver1_decode" "double,double,double") ++ (set_attr "c86_decode" "double,double,double") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "DF")]) + +@@ -11907,6 +11949,10 @@ (define_insn "vec_set_0" + (const_string "ssemov2") + ] + (const_string "ssemov"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "9,10,11") ++ (const_string "insr") ++ (const_string "*"))) + (set (attr "addr") + (if_then_else (eq_attr "alternative" "9,10") + (const_string "gpr16") +@@ -11981,6 +12027,13 @@ (define_insn "@vec_set_0" + (if_then_else (eq_attr "alternative" "0,1,2,3,6,7,10") + (const_string "ssemov") + (const_string "sselog"))) ++ (set (attr "c86_attr") ++ (cond [(eq_attr "alternative" "6,7,10") ++ (const_string "blend") ++ (eq_attr "alternative" "4,5,8,9,11,12") ++ (const_string "insr") ++ ] ++ (const_string "*"))) + (set (attr "prefix_data16") + (if_then_else (eq_attr "alternative" "4,5") + (const_string "1") +@@ -12349,6 +12402,7 @@ (define_insn_and_split "*sse4_1_extractps" + [(set_attr "isa" "noavx,noavx,avx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*,*,*") + (set_attr "type" "sselog,sselog,sselog,*,*") ++ (set_attr "c86_attr" "extr,extr,extr,*,*") + (set_attr "prefix_data16" "1,1,1,*,*") + (set_attr "prefix_extra" "1,1,1,*,*") + (set_attr "length_immediate" "1,1,1,*,*") +@@ -13252,6 +13306,7 @@ (define_insn "*vec_extract" + [(set_attr "isa" "*,sse4_noavx,avx,noavx,avx") + (set_attr "addr" "*,gpr16,*,*,*") + (set_attr "type" "sselog1,sselog1,sselog1,sseishft1,sseishft1") ++ (set_attr "c86_attr" "extr,extr,extr,other,other") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "TI")]) + +@@ -14042,6 +14097,7 @@ (define_insn "_align" + "TARGET_AVX512F" + "valign\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + [(set_attr "prefix" "evex") ++ (set_attr "c86_attr" "shufx") + (set_attr "mode" "")]) + + (define_mode_attr vec_extract_imm_predicate +@@ -16657,6 +16713,7 @@ (define_insn "avx512bw_pmaddwd512" + "TARGET_AVX512BW && " + "vpmaddwd\t{%2, %1, %0|%0, %1, %2}"; + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -16728,6 +16785,7 @@ (define_insn "*avx2_pmaddwd" + "TARGET_AVX2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "vpmaddwd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "vex") + (set_attr "mode" "OI")]) + +@@ -16786,6 +16844,7 @@ (define_insn "*sse2_pmaddwd" + vpmaddwd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "atom_unit" "simul") + (set_attr "prefix_data16" "1,*") + (set_attr "prefix" "orig,vex") +@@ -17653,6 +17712,7 @@ (define_insn "*avx2_3" + "TARGET_AVX2 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") + (set_attr "mode" "OI")]) +@@ -17694,6 +17754,7 @@ (define_insn "*avx512f_3" + "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "")]) + +@@ -17705,6 +17766,7 @@ (define_insn "*avx512bw_3" + "TARGET_AVX512BW && !(MEM_P (operands[1]) && MEM_P (operands[2]))" + "vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -17803,6 +17865,7 @@ (define_insn "*sse4_1_3" + vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix_extra" "1") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "prefix" "orig,orig,vex") +@@ -17819,6 +17882,7 @@ (define_insn "*v8hi3" + vpw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "addr" "gpr16,*") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "TI")]) +@@ -17887,6 +17951,7 @@ (define_insn "*sse4_1_3" + vp\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "prefix_extra" "1,1,*") + (set_attr "prefix" "orig,orig,vex") +@@ -17904,6 +17969,7 @@ (define_insn "*v16qi3" + [(set_attr "isa" "noavx,avx") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "maxmin") + (set_attr "prefix" "orig,vex") + (set_attr "mode" "TI")]) + +@@ -18559,6 +18625,7 @@ (define_insn "*andnot3" + [(set_attr "isa" "noavx,avx_noavx512f,avx512f,*,*") + (set_attr "addr" "*,gpr16,*,*,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set (attr "prefix_data16") + (if_then_else + (and (eq_attr "alternative" "0") +@@ -18666,6 +18733,7 @@ (define_insn "*andnot3_mask" + "TARGET_AVX512F" + "vpandn\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"; + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -18790,6 +18858,7 @@ (define_insn "*3" + [(set_attr "isa" "noavx,avx_noavx512f,avx512f") + (set_attr "addr" "*,gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set (attr "prefix_data16") + (if_then_else + (and (eq_attr "alternative" "0") +@@ -18887,6 +18956,7 @@ (define_insn "*3" + [(set_attr "isa" "noavx,avx_noavx512f,avx512f") + (set_attr "addr" "*,gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set (attr "prefix_data16") + (if_then_else + (and (eq_attr "alternative" "0") +@@ -18923,6 +18993,7 @@ (define_insn "v1ti3" + (set_attr "prefix" "orig,vex,evex") + (set_attr "prefix_data16" "1,*,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "sselogic") + (set_attr "mode" "TI")]) + + (define_expand "one_cmplv1ti2" +@@ -19898,6 +19969,7 @@ (define_insn "_pinsr" + } + [(set_attr "isa" "noavx,noavx,avx,avx,,,avx2") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insr") + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0,1") + (const_string "gpr16") +@@ -20011,6 +20083,7 @@ (define_insn "*_vinsert_0" + } + } + [(set_attr "type" "sselog,ssemov,ssemov") ++ (set_attr "c86_attr" "insertx,*,*") + (set_attr "length_immediate" "1,0,0") + (set_attr "prefix" "evex,vex,evex") + (set_attr "mode" ",,")]) +@@ -20043,6 +20116,7 @@ (define_insn "_vinsert_1\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20081,6 +20155,7 @@ (define_insn "vec_set_lo_" + "TARGET_AVX512DQ" + "vinsert32x8\t{$0x0, %2, %1, %0|%0, %1, %2, 0x0}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20098,6 +20173,7 @@ (define_insn "vec_set_hi_" + "TARGET_AVX512DQ" + "vinsert32x8\t{$0x1, %2, %1, %0|%0, %1, %2, 0x1}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20113,6 +20189,7 @@ (define_insn "vec_set_lo_" + "TARGET_AVX512F" + "vinsert64x4\t{$0x0, %2, %1, %0|%0, %1, %2, 0x0}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) +@@ -20128,6 +20205,7 @@ (define_insn "vec_set_hi_" + "TARGET_AVX512F" + "vinsert64x4\t{$0x1, %2, %1, %0|%0, %1, %2, 0x1}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) +@@ -20177,6 +20255,7 @@ (define_insn "avx512dq_shuf_64x2_1" + return "vshuf64x2\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "addr" "gpr16,*") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") +@@ -20240,6 +20319,7 @@ (define_insn "avx512f_shuf_64x2_1" + return "vshuf64x2\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20276,6 +20356,7 @@ (define_insn "*avx512f_shuf_64x2_1_1" + return "vshuf64x2\t{%2, %1, %1, %0|%0, %1, %1, %2}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20339,6 +20420,7 @@ (define_insn "avx512vl_shuf_32x4_1" + return "vshuf32x4\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "addr" "gpr16,*") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") +@@ -20426,6 +20508,7 @@ (define_insn "avx512f_shuf_32x4_1" + return "vshuf32x4\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -20478,6 +20561,7 @@ (define_insn "*avx512f_shuf_32x4_1_1" + return "vshuf32x4\t{%2, %1, %1, %0|%0, %1, %1, %2}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "shufx") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -21082,6 +21166,7 @@ (define_insn "*vec_extract" + [(set_attr "isa" "sse2_noavx,avx,sse4_noavx,avx") + (set_attr "addr" "*,*,gpr16,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set (attr "prefix_extra") + (if_then_else + (eq (const_string "mode") (const_string "V8HImode")) +@@ -21103,6 +21188,7 @@ (define_insn "*vec_extract_zext" + "%vpextr\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set (attr "prefix_extra") + (if_then_else + (eq (const_string "mode") (const_string "V8HImode")) +@@ -21123,6 +21209,7 @@ (define_insn "*vec_extractv16qi_zext" + "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -21257,6 +21344,7 @@ (define_insn "*vec_extractv4si" + } + [(set_attr "isa" "noavx,avx,avx512dq,noavx,noavx,avx") + (set_attr "type" "sselog1,sselog1,sselog1,sseishft1,sseishft1,sseishft1") ++ (set_attr "c86_attr" "extr,extr,*,*,*,*") + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0") + (const_string "gpr16") +@@ -21279,6 +21367,7 @@ (define_insn "*vec_extractv4si_zext" + "%vpextrd\t{%2, %1, %k0|%k0, %1, %2}" + [(set_attr "isa" "noavx,avx,avx512dq") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "extr") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "maybe_vex") +@@ -21351,6 +21440,10 @@ (define_insn "*vec_extractv2di_1" + (const_string "imov") + ] + (const_string "sselog1"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "0,1,2") ++ (const_string "extr") ++ (const_string "other"))) + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0") + (const_string "gpr16") +@@ -21516,6 +21609,10 @@ (define_insn "*vec_concatv2si_sse4_1" + (const_string "mmxmov") + ] + (const_string "sselog"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "0,1,2,3") ++ (const_string "insr") ++ (const_string "other"))) + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0,1") + (const_string "gpr16") +@@ -21674,6 +21771,10 @@ (define_insn "vec_concatv2di" + (eq_attr "alternative" "0,1,2,3,4,5") + (const_string "sselog") + (const_string "ssemov2"))) ++ (set (attr "c86_attr") ++ (if_then_else (eq_attr "alternative" "0,1,2,3") ++ (const_string "insr") ++ (const_string "other"))) + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0,1") + (const_string "gpr16") +@@ -21893,6 +21994,7 @@ (define_insn "*_uavg3" + vpavg\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "avg") + (set_attr "prefix_data16" "1,*") + (set_attr "prefix" "orig,") + (set_attr "mode" "")]) +@@ -21921,6 +22023,7 @@ (define_insn "*_psadbw" + vpsadbw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "sadbw") + (set_attr "atom_unit" "simul") + (set_attr "prefix_data16" "1,*") + (set_attr "prefix" "orig,maybe_evex") +@@ -21935,6 +22038,7 @@ (define_insn "_movmsk" + "%vmovmsk\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "")]) + +@@ -21948,6 +22052,7 @@ (define_insn "*_movmsk_ext" + "%vmovmsk\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "")]) + +@@ -22085,6 +22190,7 @@ (define_insn "_pmovmskb" + "%vpmovmskb\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set (attr "prefix_data16") + (if_then_else + (match_test "TARGET_AVX") +@@ -22103,6 +22209,7 @@ (define_insn "*_pmovmskb_zext" + "%vpmovmskb\t{%1, %k0|%k0, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set (attr "prefix_data16") + (if_then_else + (match_test "TARGET_AVX") +@@ -22121,6 +22228,7 @@ (define_insn "*sse2_pmovmskb_ext" + "%vpmovmskb\t{%1, %k0|%k0, %1}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set (attr "prefix_data16") + (if_then_else + (match_test "TARGET_AVX") +@@ -22470,6 +22578,7 @@ (define_insn "*sse2_maskmovdqu" + return "%vmaskmovdqu\t{%2, %1|%1, %2}"; + } + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "prefix_data16" "1") + (set (attr "length_address") + (symbol_ref ("Pmode != word_mode"))) +@@ -22478,6 +22587,7 @@ (define_insn "*sse2_maskmovdqu" + (symbol_ref ("3 + REX_SSE_REGNO_P (REGNO (operands[2]))"))) + (set_attr "prefix" "maybe_vex") + (set_attr "znver1_decode" "vector") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "TI")]) + + (define_insn "sse_ldmxcsr" +@@ -22570,6 +22680,7 @@ (define_insn "avx2_phwv16hi3" + "TARGET_AVX2" + "vphw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") +@@ -22596,6 +22707,7 @@ (define_insn "ssse3_phwv8hi3" + vphw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") +@@ -22637,6 +22749,7 @@ (define_insn_and_split "ssse3_phwv4hi3" + } + [(set_attr "mmx_isa" "native,sse_noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)")) +@@ -22660,6 +22773,7 @@ (define_insn "avx2_phdv8si3" + "TARGET_AVX2" + "vphd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") +@@ -22684,6 +22798,7 @@ (define_insn "ssse3_phdv4si3" + vphd\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1,*") +@@ -22724,6 +22839,7 @@ (define_insn_and_split "ssse3_phdv2si3" + } + [(set_attr "mmx_isa" "native,sse_noavx,avx") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "hplus") + (set_attr "addr" "gpr16") + (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") +@@ -22780,6 +22896,7 @@ (define_insn "avx2_pmaddubsw256" + "TARGET_AVX2" + "vpmaddubsw\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") + (set_attr "mode" "OI")]) +@@ -22795,6 +22912,7 @@ (define_insn "avx512bw_pmaddubsw512" + "TARGET_AVX512BW" + "vpmaddubsw\t{%2, %1, %0|%0, %1, %2}"; + [(set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -22871,6 +22989,7 @@ (define_insn "ssse3_pmaddubsw128" + [(set_attr "isa" "noavx,avx") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "atom_unit" "simul") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,vex") +@@ -22907,6 +23026,7 @@ (define_insn "ssse3_pmaddubsw" + [(set_attr "isa" "*,noavx,avx") + (set_attr "mmx_isa" "native,*,*") + (set_attr "type" "sseiadd") ++ (set_attr "c86_attr" "madd") + (set_attr "atom_unit" "simul") + (set_attr "prefix_extra" "1") + (set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)")) +@@ -22946,9 +23066,9 @@ (define_expand "_pmulhrsw3" + (lshiftrt: + (mult: + (sign_extend: +- (match_operand:PMULHRSW 1 "nonimmediate_operand")) ++ (match_operand:PMULHRSW 1 "vector_operand")) + (sign_extend: +- (match_operand:PMULHRSW 2 "nonimmediate_operand"))) ++ (match_operand:PMULHRSW 2 "vector_operand"))) + (const_int 14)) + (match_dup 3)) + (const_int 1))))] +@@ -22966,9 +23086,9 @@ (define_expand "smulhrs3" + (lshiftrt: + (mult: + (sign_extend: +- (match_operand:VI2_AVX2_AVX512BW 1 "nonimmediate_operand")) ++ (match_operand:VI2_AVX2_AVX512BW 1 "vector_operand")) + (sign_extend: +- (match_operand:VI2_AVX2_AVX512BW 2 "nonimmediate_operand"))) ++ (match_operand:VI2_AVX2_AVX512BW 2 "vector_operand"))) + (const_int 14)) + (match_dup 3)) + (const_int 1))))] +@@ -23190,6 +23310,7 @@ (define_insn "_psign3" + vpsign\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "sign") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,vex") +@@ -23209,6 +23330,7 @@ (define_insn "ssse3_psign3" + [(set_attr "isa" "*,noavx,avx") + (set_attr "mmx_isa" "native,*,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "sign") + (set_attr "prefix_extra" "1") + (set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)")) + (set_attr "mode" "DI,TI,TI")]) +@@ -23358,6 +23480,7 @@ (define_insn "*abs2" + (set_attr "type" "sselog1") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_vex") ++ (set_attr "c86_attr" "abs") + (set_attr "mode" "")]) + + (define_insn "abs2_mask" +@@ -23370,6 +23493,7 @@ (define_insn "abs2_mask" + "TARGET_AVX512F" + "vpabs\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "abs") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -23383,6 +23507,7 @@ (define_insn "abs2_mask" + "TARGET_AVX512BW" + "vpabs\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "abs") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -23415,6 +23540,7 @@ (define_insn "sse4a_movnt" + "TARGET_SSE4A" + "movnt\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "mode" "")]) + + (define_insn "sse4a_vmmovnt" +@@ -23427,6 +23553,7 @@ (define_insn "sse4a_vmmovnt" + "TARGET_SSE4A" + "movnt\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "mode" "")]) + + (define_insn "sse4a_extrqi" +@@ -23503,6 +23630,7 @@ (define_insn "_blend" + vblend\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*") +@@ -23524,6 +23652,7 @@ (define_insn "_blendv" + vblendv\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "addr" "gpr16") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*") +@@ -23557,6 +23686,7 @@ (define_insn "sse4_1_blendv" + } + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*") + (set_attr "prefix_extra" "1") +@@ -23769,6 +23899,7 @@ (define_insn "_dp" + (set_attr "prefix" "orig,orig,vex") + (set_attr "btver2_decode" "vector,vector,vector") + (set_attr "znver1_decode" "vector,vector,vector") ++ (set_attr "c86_decode" "vector,vector,vector") + (set_attr "mode" "")]) + + ;; Mode attribute used by `vmovntdqa' pattern +@@ -23784,6 +23915,7 @@ (define_insn "_movntdqa" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "movnt") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "")]) +@@ -23808,6 +23940,7 @@ (define_insn "_mpsadbw" + (set_attr "prefix" "orig,orig,vex") + (set_attr "btver2_decode" "vector,vector,vector") + (set_attr "znver1_decode" "vector,vector,vector") ++ (set_attr "c86_decode" "vector,vector,vector") + (set_attr "mode" "")]) + + (define_insn "avx10_2_mpsadbw" +@@ -23867,6 +24000,7 @@ (define_insn "_pblendvb" + vpblendvb\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blendv") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "*,*,1") +@@ -24008,6 +24142,7 @@ (define_insn "sse4_1_pblend" + vpblendw\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -24080,6 +24215,7 @@ (define_insn "*avx2_pblend" + return "vpblendw\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -24095,6 +24231,7 @@ (define_insn "avx2_pblendd" + "TARGET_AVX2" + "vpblendd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -24121,6 +24258,7 @@ (define_insn "avx2_v16qiv16hi2" + "TARGET_AVX2 && && " + "vpmovbw\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -24175,6 +24313,7 @@ (define_insn "avx512bw_v32qiv32hi2" + "TARGET_AVX512BW && TARGET_EVEX512" + "vpmovbw\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -24234,6 +24373,7 @@ (define_insn "sse4_1_v8qiv8hi2" + "%vpmovbw\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24250,6 +24390,7 @@ (define_insn "*sse4_1_v8qiv8hi2_1" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24396,6 +24537,7 @@ (define_insn "avx512f_v16qiv16si2" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovbd\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -24417,6 +24559,7 @@ (define_insn "avx2_v8qiv8si2" + "TARGET_AVX2 && " + "vpmovbd\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -24428,6 +24571,7 @@ (define_insn "*avx2_v8qiv8si2_1" + "TARGET_AVX2 && " + "%vpmovbd\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -24505,6 +24649,7 @@ (define_insn "sse4_1_v4qiv4si2" + "%vpmovbd\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24518,6 +24663,7 @@ (define_insn "*sse4_1_v4qiv4si2_1" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24595,6 +24741,7 @@ (define_insn "avx512f_v16hiv16si2" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovwd\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -24648,6 +24795,7 @@ (define_insn "avx2_v8hiv8si2" + "TARGET_AVX2 && " + "vpmovwd\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -24707,6 +24855,7 @@ (define_insn "sse4_1_v4hiv4si2" + "%vpmovwd\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24720,6 +24869,7 @@ (define_insn "*sse4_1_v4hiv4si2_1" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -24864,6 +25014,7 @@ (define_insn "avx512f_v8qiv8di2" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovbq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -24874,6 +25025,7 @@ (define_insn "*avx512f_v8qiv8di2_1" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovbq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -24947,6 +25099,7 @@ (define_insn "avx2_v4qiv4di2" + "TARGET_AVX2 && " + "vpmovbq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -24958,6 +25111,7 @@ (define_insn "*avx2_v4qiv4di2_1" + "TARGET_AVX2 && " + "vpmovbq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -25038,6 +25192,7 @@ (define_insn "sse4_1_v2qiv2di2" + "%vpmovbq\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -25051,6 +25206,7 @@ (define_insn "*sse4_1_v2qiv2di2_1" + [(set_attr "isa" "noavx,avx") + (set_attr "addr" "gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "TI")]) +@@ -25100,6 +25256,7 @@ (define_insn "avx512f_v8hiv8di2" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovwq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -25119,6 +25276,7 @@ (define_insn "avx2_v4hiv4di2" + "TARGET_AVX2 && " + "vpmovwq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -25130,6 +25288,7 @@ (define_insn "*avx2_v4hiv4di2_1" + "TARGET_AVX2 && " + "vpmovwq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_evex") + (set_attr "mode" "OI")]) +@@ -25202,6 +25361,7 @@ (define_insn "sse4_1_v2hiv2di2" + "%vpmovwq\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -25215,6 +25375,7 @@ (define_insn "*sse4_1_v2hiv2di2_1" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -25290,6 +25451,7 @@ (define_insn "avx512f_v8siv8di2" + "TARGET_AVX512F && TARGET_EVEX512" + "vpmovdq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -25341,6 +25503,7 @@ (define_insn "avx2_v4siv4di2" + "TARGET_AVX2 && " + "vpmovdq\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix" "maybe_evex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "OI")]) +@@ -25396,6 +25559,7 @@ (define_insn "sse4_1_v2siv2di2" + "%vpmovdq\t{%1, %0|%0, %1}" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -25409,6 +25573,7 @@ (define_insn "*sse4_1_v2siv2di2_1" + [(set_attr "isa" "noavx,noavx,avx") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "ssemov") ++ (set_attr "c86_attr" "vpmovx") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,orig,maybe_evex") + (set_attr "mode" "TI")]) +@@ -25831,6 +25996,7 @@ (define_insn "sse4_1_round" + } + [(set_attr "isa" "noavx,noavx,noavx512f,avx512f") + (set_attr "type" "ssecvt") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,gpr16,gpr16,*") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*,*") +@@ -25868,6 +26034,7 @@ (define_insn "*sse4_1_round" + } + [(set_attr "isa" "noavx,noavx,noavx512f,avx512f") + (set_attr "type" "ssecvt") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,gpr16,gpr16,*") + (set_attr "length_immediate" "1") + (set_attr "prefix_data16" "1,1,*,*") +@@ -26137,6 +26304,7 @@ (define_insn "sse4_2_pcmpestri" + "TARGET_SSE4_2" + "%vpcmpestri\t{%5, %3, %1|%1, %3, %5}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_vex") +@@ -26165,6 +26333,7 @@ (define_insn "sse4_2_pcmpestrm" + "TARGET_SSE4_2" + "%vpcmpestrm\t{%5, %3, %1|%1, %3, %5}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -26191,6 +26360,7 @@ (define_insn "sse4_2_pcmpestr_cconly" + %vpcmpestri\t{%6, %4, %2|%2, %4, %6} + %vpcmpestri\t{%6, %4, %2|%2, %4, %6}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -26268,6 +26438,7 @@ (define_insn "sse4_2_pcmpistri" + "TARGET_SSE4_2" + "%vpcmpistri\t{%3, %2, %1|%1, %2, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -26292,6 +26463,7 @@ (define_insn "sse4_2_pcmpistrm" + "TARGET_SSE4_2" + "%vpcmpistrm\t{%3, %2, %1|%1, %2, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -26316,6 +26488,7 @@ (define_insn "sse4_2_pcmpistr_cconly" + %vpcmpistri\t{%4, %3, %2|%2, %3, %4} + %vpcmpistri\t{%4, %3, %2|%2, %3, %4}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "cmpestr") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -26342,12 +26515,13 @@ (define_insn "xop_p" + (xop_plus:VI24_128 + (mult:VI24_128 + (match_operand:VI24_128 1 "nonimmediate_operand" "%x") +- (match_operand:VI24_128 2 "nonimmediate_operand" "xm")) ++ (match_operand:VI24_128 2 "nonimmediate_operand" "xjm")) + (match_operand:VI24_128 3 "register_operand" "x")))] + "TARGET_XOP" + "vp\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "prefix" "vex") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_pdql" +@@ -26360,13 +26534,14 @@ (define_insn "xop_pdql" + (parallel [(const_int 0) (const_int 2)]))) + (sign_extend:V2DI + (vec_select:V2SI +- (match_operand:V4SI 2 "nonimmediate_operand" "xm") ++ (match_operand:V4SI 2 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2)])))) + (match_operand:V2DI 3 "register_operand" "x")))] + "TARGET_XOP" + "vpdql\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "prefix" "vex") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_pdqh" +@@ -26379,13 +26554,14 @@ (define_insn "xop_pdqh" + (parallel [(const_int 1) (const_int 3)]))) + (sign_extend:V2DI + (vec_select:V2SI +- (match_operand:V4SI 2 "nonimmediate_operand" "xm") ++ (match_operand:V4SI 2 "nonimmediate_operand" "xjm") + (parallel [(const_int 1) (const_int 3)])))) + (match_operand:V2DI 3 "register_operand" "x")))] + "TARGET_XOP" + "vpdqh\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "prefix" "vex") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP parallel integer multiply/add instructions for the intrinisics +@@ -26400,7 +26576,7 @@ (define_insn "xop_pwd" + (const_int 5) (const_int 7)]))) + (sign_extend:V4SI + (vec_select:V4HI +- (match_operand:V8HI 2 "nonimmediate_operand" "xm") ++ (match_operand:V8HI 2 "nonimmediate_operand" "xjm") + (parallel [(const_int 1) (const_int 3) + (const_int 5) (const_int 7)])))) + (match_operand:V4SI 3 "register_operand" "x")))] +@@ -26408,6 +26584,7 @@ (define_insn "xop_pwd" + "vpwd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "prefix" "vex") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_pwd" +@@ -26422,7 +26599,7 @@ (define_insn "xop_pwd" + (const_int 4) (const_int 6)]))) + (sign_extend:V4SI + (vec_select:V4HI +- (match_operand:V8HI 2 "nonimmediate_operand" "xm") ++ (match_operand:V8HI 2 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2) + (const_int 4) (const_int 6)])))) + (mult:V4SI +@@ -26441,18 +26618,20 @@ (define_insn "xop_pwd" + "vpwd\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "ssemuladd") + (set_attr "prefix" "vex") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP parallel XMM conditional moves + (define_insn "xop_pcmov_" + [(set (match_operand:V_128_256 0 "register_operand" "=x,x") + (if_then_else:V_128_256 +- (match_operand:V_128_256 3 "nonimmediate_operand" "x,m") ++ (match_operand:V_128_256 3 "nonimmediate_operand" "x,jm") + (match_operand:V_128_256 1 "register_operand" "x,x") +- (match_operand:V_128_256 2 "nonimmediate_operand" "xm,x")))] ++ (match_operand:V_128_256 2 "nonimmediate_operand" "xjm,x")))] + "TARGET_XOP" + "vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "")]) + + ;; Recognize XOP's vpcmov from canonical (xor (and (xor t f) c) f) +@@ -26487,7 +26666,7 @@ (define_insn "xop_phaddbw" + (plus:V8HI + (any_extend:V8HI + (vec_select:V8QI +- (match_operand:V16QI 1 "nonimmediate_operand" "xm") ++ (match_operand:V16QI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2) + (const_int 4) (const_int 6) + (const_int 8) (const_int 10) +@@ -26502,8 +26681,10 @@ (define_insn "xop_phaddbw" + "TARGET_XOP" + "vphaddbw\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phaddbd" +@@ -26512,7 +26693,7 @@ (define_insn "xop_phaddbd" + (plus:V4SI + (any_extend:V4SI + (vec_select:V4QI +- (match_operand:V16QI 1 "nonimmediate_operand" "xm") ++ (match_operand:V16QI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 4) + (const_int 8) (const_int 12)]))) + (any_extend:V4SI +@@ -26534,8 +26715,10 @@ (define_insn "xop_phaddbd" + "TARGET_XOP" + "vphaddbd\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phaddbq" +@@ -26545,7 +26728,7 @@ (define_insn "xop_phaddbq" + (plus:V2DI + (any_extend:V2DI + (vec_select:V2QI +- (match_operand:V16QI 1 "nonimmediate_operand" "xm") ++ (match_operand:V16QI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 8)]))) + (any_extend:V2DI + (vec_select:V2QI +@@ -26582,8 +26765,10 @@ (define_insn "xop_phaddbq" + "TARGET_XOP" + "vphaddbq\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phaddwd" +@@ -26591,7 +26776,7 @@ (define_insn "xop_phaddwd" + (plus:V4SI + (any_extend:V4SI + (vec_select:V4HI +- (match_operand:V8HI 1 "nonimmediate_operand" "xm") ++ (match_operand:V8HI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2) + (const_int 4) (const_int 6)]))) + (any_extend:V4SI +@@ -26602,8 +26787,10 @@ (define_insn "xop_phaddwd" + "TARGET_XOP" + "vphaddwd\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phaddwq" +@@ -26612,7 +26799,7 @@ (define_insn "xop_phaddwq" + (plus:V2DI + (any_extend:V2DI + (vec_select:V2HI +- (match_operand:V8HI 1 "nonimmediate_operand" "xm") ++ (match_operand:V8HI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 4)]))) + (any_extend:V2DI + (vec_select:V2HI +@@ -26630,8 +26817,10 @@ (define_insn "xop_phaddwq" + "TARGET_XOP" + "vphaddwq\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phadddq" +@@ -26639,7 +26828,7 @@ (define_insn "xop_phadddq" + (plus:V2DI + (any_extend:V2DI + (vec_select:V2SI +- (match_operand:V4SI 1 "nonimmediate_operand" "xm") ++ (match_operand:V4SI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2)]))) + (any_extend:V2DI + (vec_select:V2SI +@@ -26648,8 +26837,10 @@ (define_insn "xop_phadddq" + "TARGET_XOP" + "vphadddq\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phsubbw" +@@ -26657,7 +26848,7 @@ (define_insn "xop_phsubbw" + (minus:V8HI + (sign_extend:V8HI + (vec_select:V8QI +- (match_operand:V16QI 1 "nonimmediate_operand" "xm") ++ (match_operand:V16QI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2) + (const_int 4) (const_int 6) + (const_int 8) (const_int 10) +@@ -26672,8 +26863,10 @@ (define_insn "xop_phsubbw" + "TARGET_XOP" + "vphsubbw\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phsubwd" +@@ -26681,7 +26874,7 @@ (define_insn "xop_phsubwd" + (minus:V4SI + (sign_extend:V4SI + (vec_select:V4HI +- (match_operand:V8HI 1 "nonimmediate_operand" "xm") ++ (match_operand:V8HI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2) + (const_int 4) (const_int 6)]))) + (sign_extend:V4SI +@@ -26692,8 +26885,10 @@ (define_insn "xop_phsubwd" + "TARGET_XOP" + "vphsubwd\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_phsubdq" +@@ -26701,7 +26896,7 @@ (define_insn "xop_phsubdq" + (minus:V2DI + (sign_extend:V2DI + (vec_select:V2SI +- (match_operand:V4SI 1 "nonimmediate_operand" "xm") ++ (match_operand:V4SI 1 "nonimmediate_operand" "xjm") + (parallel [(const_int 0) (const_int 2)]))) + (sign_extend:V2DI + (vec_select:V2SI +@@ -26710,8 +26905,10 @@ (define_insn "xop_phsubdq" + "TARGET_XOP" + "vphsubdq\t{%1, %0|%0, %1}" + [(set_attr "type" "sseiadd1") ++ (set_attr "c86_attr" "hplus") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP permute instructions +@@ -26719,12 +26916,13 @@ (define_insn "xop_pperm" + [(set (match_operand:V16QI 0 "register_operand" "=x,x") + (unspec:V16QI + [(match_operand:V16QI 1 "register_operand" "x,x") +- (match_operand:V16QI 2 "nonimmediate_operand" "x,m") +- (match_operand:V16QI 3 "nonimmediate_operand" "xm,x")] ++ (match_operand:V16QI 2 "nonimmediate_operand" "x,jm") ++ (match_operand:V16QI 3 "nonimmediate_operand" "xjm,x")] + UNSPEC_XOP_PERMUTE))] + "TARGET_XOP && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "vpperm\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP pack instructions that combine two vectors into a smaller vector +@@ -26734,11 +26932,12 @@ (define_insn "xop_pperm_pack_v2di_v4si" + (truncate:V2SI + (match_operand:V2DI 1 "register_operand" "x,x")) + (truncate:V2SI +- (match_operand:V2DI 2 "nonimmediate_operand" "x,m")))) +- (use (match_operand:V16QI 3 "nonimmediate_operand" "xm,x"))] ++ (match_operand:V2DI 2 "nonimmediate_operand" "x,jm")))) ++ (use (match_operand:V16QI 3 "nonimmediate_operand" "xjm,x"))] + "TARGET_XOP && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "vpperm\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_pperm_pack_v4si_v8hi" +@@ -26747,11 +26946,12 @@ (define_insn "xop_pperm_pack_v4si_v8hi" + (truncate:V4HI + (match_operand:V4SI 1 "register_operand" "x,x")) + (truncate:V4HI +- (match_operand:V4SI 2 "nonimmediate_operand" "x,m")))) +- (use (match_operand:V16QI 3 "nonimmediate_operand" "xm,x"))] ++ (match_operand:V4SI 2 "nonimmediate_operand" "x,jm")))) ++ (use (match_operand:V16QI 3 "nonimmediate_operand" "xjm,x"))] + "TARGET_XOP && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "vpperm\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_pperm_pack_v8hi_v16qi" +@@ -26760,11 +26960,12 @@ (define_insn "xop_pperm_pack_v8hi_v16qi" + (truncate:V8QI + (match_operand:V8HI 1 "register_operand" "x,x")) + (truncate:V8QI +- (match_operand:V8HI 2 "nonimmediate_operand" "x,m")))) +- (use (match_operand:V16QI 3 "nonimmediate_operand" "xm,x"))] ++ (match_operand:V8HI 2 "nonimmediate_operand" "x,jm")))) ++ (use (match_operand:V16QI 3 "nonimmediate_operand" "xjm,x"))] + "TARGET_XOP && !(MEM_P (operands[2]) && MEM_P (operands[3]))" + "vpperm\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP packed rotate instructions +@@ -26835,7 +27036,7 @@ (define_expand "rotr3" + (define_insn "xop_rotl3" + [(set (match_operand:VI_128 0 "register_operand" "=x") + (rotate:VI_128 +- (match_operand:VI_128 1 "nonimmediate_operand" "xm") ++ (match_operand:VI_128 1 "nonimmediate_operand" "xjm") + (match_operand:SI 2 "const_0_to__operand")))] + "TARGET_XOP" + "vprot\t{%2, %1, %0|%0, %1, %2}" +@@ -26843,12 +27044,13 @@ (define_insn "xop_rotl3" + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_rotr3" + [(set (match_operand:VI_128 0 "register_operand" "=x") + (rotatert:VI_128 +- (match_operand:VI_128 1 "nonimmediate_operand" "xm") ++ (match_operand:VI_128 1 "nonimmediate_operand" "xjm") + (match_operand:SI 2 "const_0_to__operand")))] + "TARGET_XOP" + { +@@ -26860,6 +27062,7 @@ (define_insn "xop_rotr3" + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_expand "vrotr3" +@@ -26888,10 +27091,10 @@ (define_insn "xop_vrotl3" + [(set (match_operand:VI_128 0 "register_operand" "=x,x") + (if_then_else:VI_128 + (ge:VI_128 +- (match_operand:VI_128 2 "nonimmediate_operand" "x,m") ++ (match_operand:VI_128 2 "nonimmediate_operand" "x,jm") + (const_int 0)) + (rotate:VI_128 +- (match_operand:VI_128 1 "nonimmediate_operand" "xm,x") ++ (match_operand:VI_128 1 "nonimmediate_operand" "xjm,x") + (match_dup 2)) + (rotatert:VI_128 + (match_dup 1) +@@ -26901,6 +27104,7 @@ (define_insn "xop_vrotl3" + [(set_attr "type" "sseishft") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; XOP packed shift instructions. +@@ -27125,10 +27329,10 @@ (define_insn "xop_sha3" + [(set (match_operand:VI_128 0 "register_operand" "=x,x") + (if_then_else:VI_128 + (ge:VI_128 +- (match_operand:VI_128 2 "nonimmediate_operand" "x,m") ++ (match_operand:VI_128 2 "nonimmediate_operand" "x,jm") + (const_int 0)) + (ashift:VI_128 +- (match_operand:VI_128 1 "nonimmediate_operand" "xm,x") ++ (match_operand:VI_128 1 "nonimmediate_operand" "xjm,x") + (match_dup 2)) + (ashiftrt:VI_128 + (match_dup 1) +@@ -27138,16 +27342,17 @@ (define_insn "xop_sha3" + [(set_attr "type" "sseishft") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_shl3" + [(set (match_operand:VI_128 0 "register_operand" "=x,x") + (if_then_else:VI_128 + (ge:VI_128 +- (match_operand:VI_128 2 "nonimmediate_operand" "x,m") ++ (match_operand:VI_128 2 "nonimmediate_operand" "x,jm") + (const_int 0)) + (ashift:VI_128 +- (match_operand:VI_128 1 "nonimmediate_operand" "xm,x") ++ (match_operand:VI_128 1 "nonimmediate_operand" "xjm,x") + (match_dup 2)) + (lshiftrt:VI_128 + (match_dup 1) +@@ -27157,6 +27362,7 @@ (define_insn "xop_shl3" + [(set_attr "type" "sseishft") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_expand "3" +@@ -27228,13 +27434,14 @@ (define_insn_and_split "*ashrv2di3" + (define_insn "xop_frcz2" + [(set (match_operand:FMAMODE 0 "register_operand" "=x") + (unspec:FMAMODE +- [(match_operand:FMAMODE 1 "nonimmediate_operand" "xm")] ++ [(match_operand:FMAMODE 1 "nonimmediate_operand" "xjm")] + UNSPEC_FRCZ))] + "TARGET_XOP" + "vfrcz\t{%1, %0|%0, %1}" + [(set_attr "type" "ssecvt1") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "")]) + + (define_expand "xop_vmfrcz2" +@@ -27252,7 +27459,7 @@ (define_insn "*xop_vmfrcz2" + [(set (match_operand:VF_128 0 "register_operand" "=x") + (vec_merge:VF_128 + (unspec:VF_128 +- [(match_operand:VF_128 1 "nonimmediate_operand" "xm")] ++ [(match_operand:VF_128 1 "nonimmediate_operand" "xjm")] + UNSPEC_FRCZ) + (match_operand:VF_128 2 "const0_operand") + (const_int 1)))] +@@ -27261,26 +27468,29 @@ (define_insn "*xop_vmfrcz2" + [(set_attr "type" "ssecvt1") + (set_attr "prefix" "vex") + (set_attr "prefix_extra" "1") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "")]) + + (define_insn "xop_maskcmp3" + [(set (match_operand:VI_128 0 "register_operand" "=x") + (match_operator:VI_128 1 "ix86_comparison_int_operator" + [(match_operand:VI_128 2 "register_operand" "x") +- (match_operand:VI_128 3 "nonimmediate_operand" "xm")]))] ++ (match_operand:VI_128 3 "nonimmediate_operand" "xjm")]))] + "TARGET_XOP" + "vpcom%Y1\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_maskcmp_uns3" + [(set (match_operand:VI_128 0 "register_operand" "=x") + (match_operator:VI_128 1 "ix86_comparison_uns_operator" + [(match_operand:VI_128 2 "register_operand" "x") +- (match_operand:VI_128 3 "nonimmediate_operand" "xm")]))] ++ (match_operand:VI_128 3 "nonimmediate_operand" "xjm")]))] + "TARGET_XOP" + "vpcom%Y1u\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; Version of pcom*u* that is called from the intrinsics that allows pcomequ* +@@ -27291,11 +27501,12 @@ (define_insn "xop_maskcmp_uns23" + (unspec:VI_128 + [(match_operator:VI_128 1 "ix86_comparison_uns_operator" + [(match_operand:VI_128 2 "register_operand" "x") +- (match_operand:VI_128 3 "nonimmediate_operand" "xm")])] ++ (match_operand:VI_128 3 "nonimmediate_operand" "xjm")])] + UNSPEC_XOP_UNSIGNED_CMP))] + "TARGET_XOP" + "vpcom%Y1u\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + ;; Pcomtrue and pcomfalse support. These are useless instructions, but are +@@ -27304,7 +27515,7 @@ (define_insn "xop_pcom_tf3" + [(set (match_operand:VI_128 0 "register_operand" "=x") + (unspec:VI_128 + [(match_operand:VI_128 1 "register_operand" "x") +- (match_operand:VI_128 2 "nonimmediate_operand" "xm") ++ (match_operand:VI_128 2 "nonimmediate_operand" "xjm") + (match_operand:SI 3 "const_int_operand")] + UNSPEC_XOP_TRUEFALSE))] + "TARGET_XOP" +@@ -27314,19 +27525,21 @@ (define_insn "xop_pcom_tf3" + : "vpcomfalse\t{%2, %1, %0|%0, %1, %2}"); + } + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "TI")]) + + (define_insn "xop_vpermil23" + [(set (match_operand:VF_128_256 0 "register_operand" "=x,x") + (unspec:VF_128_256 + [(match_operand:VF_128_256 1 "register_operand" "x,x") +- (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m") +- (match_operand: 3 "nonimmediate_operand" "xm,x") ++ (match_operand:VF_128_256 2 "nonimmediate_operand" "x,jm") ++ (match_operand: 3 "nonimmediate_operand" "xjm,x") + (match_operand:SI 4 "const_0_to_3_operand")] + UNSPEC_VPERMIL2))] + "TARGET_XOP" + "vpermil2\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}" + [(set_attr "type" "sse4arg") ++ (set_attr "addr" "gpr16") + (set_attr "mode" "")]) + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +@@ -27343,6 +27556,7 @@ (define_insn "aesenc" + vaesenc\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,maybe_evex,evex") +@@ -27361,6 +27575,7 @@ (define_insn "aesenclast" + vaesenclast\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,maybe_evex,evex") +@@ -27379,6 +27594,7 @@ (define_insn "aesdec" + vaesdec\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "noavx,avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,maybe_evex,evex") +@@ -27398,6 +27614,7 @@ (define_insn "aesdeclast" + [(set_attr "isa" "noavx,avx,vaes_avx512vl") + (set_attr "addr" "gpr16,gpr16,*") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "orig,maybe_evex,evex") + (set_attr "btver2_decode" "double,double,double") +@@ -27410,6 +27627,7 @@ (define_insn "aesimc" + "TARGET_AES" + "%vaesimc\t{%1, %0|%0, %1}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_vex") +@@ -27423,6 +27641,7 @@ (define_insn "aeskeygenassist" + "TARGET_AES" + "%vaeskeygenassist\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -27446,6 +27665,7 @@ (define_insn "pclmulqdq" + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "orig,vex,evex") ++ (set_attr "c86_decode" "*,vector,vector") + (set_attr "mode" "TI")]) + + (define_expand "avx_vzeroall" +@@ -27563,6 +27783,7 @@ (define_insn "_permvar" + return "vperm\t{%1, %2, %0|%0, %2, %1}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -27575,6 +27796,7 @@ (define_insn "_permvar" + "TARGET_AVX512VBMI && " + "vperm\t{%1, %2, %0|%0, %2, %1}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -27587,6 +27809,7 @@ (define_insn "_permvar" + "TARGET_AVX512BW && " + "vpermw\t{%1, %2, %0|%0, %2, %1}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -27805,6 +28028,7 @@ (define_insn "avx2_perm_1" + return "vperm\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -27880,6 +28104,7 @@ (define_insn "avx512f_perm_1" + return "vperm\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm") + (set_attr "prefix" "") + (set_attr "mode" "")]) + +@@ -27986,6 +28211,7 @@ (define_insn "avx512f_broadcast" + vshuf32x4\t{$0x0, %g1, %g1, %0|%0, %g1, %g1, 0x0} + vbroadcast32x4\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "shufx,*") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -27998,6 +28224,7 @@ (define_insn "avx512f_broadcast" + vshuf64x2\t{$0x44, %g1, %g1, %0|%0, %g1, %g1, 0x44} + vbroadcast64x4\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "shufx,*") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -28251,6 +28478,7 @@ (define_insn "avx_vbroadcastf128_" + vinsert32x4\t{$1, %1, %0, %0|%0, %0, %1, 1}" + [(set_attr "isa" "noavx512vl,*,*,avx512dq,avx512dq,avx512vl,avx512vl") + (set_attr "type" "ssemov,sselog1,sselog1,ssemov,sselog1,ssemov,sselog1") ++ (set_attr "c86_attr" "*,insertx,*,*,insertx,*,insertx") + (set (attr "addr") + (if_then_else (eq_attr "alternative" "0") + (const_string "gpr16") +@@ -28294,6 +28522,7 @@ (define_insn "avx512vl_broadcast_1" + vshuf32x4\t{$0x0, %t1, %t1, %0|%0, %t1, %t1, 0x0} + vbroadcast32x4\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "shufx,*") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -28307,6 +28536,7 @@ (define_insn "avx512dq_broadcast_1" + vshuf32x4\t{$0x44, %g1, %g1, %0|%0, %g1, %g1, 0x44} + vbroadcast32x8\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "shufx,*") + (set_attr "length_immediate" "1,*") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -28325,6 +28555,7 @@ (define_insn "avx512dq_broadcast_1" + vshuf64x2\t{$0x0, %1, %1, %0|%0, %1, %1, 0x0} + vbroadcast64x2\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "shufx,*") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -28423,6 +28654,7 @@ (define_insn "*_vpermi2var3_mask" + "TARGET_AVX512F" + "vpermi2\t{%3, %1, %0%{%4%}|%0%{%4%}, %1, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm2") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -28439,6 +28671,7 @@ (define_insn "*_vpermi2var3_mask" + "TARGET_AVX512F" + "vpermi2\t{%3, %1, %0%{%4%}|%0%{%4%}, %1, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm2") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -28468,6 +28701,7 @@ (define_insn "_vpermt2var3" + vpermt2\t{%3, %1, %0|%0, %1, %3} + vpermi2\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm2") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -28499,6 +28733,7 @@ (define_insn "_vpermt2var3_mask" + "TARGET_AVX512F" + "vpermt2\t{%3, %1, %0%{%4%}|%0%{%4%}, %1, %3}" + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "perm2") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -28577,6 +28812,7 @@ (define_insn "*avx_vperm2f128_nozero" + return "vperm2\t{%3, %2, %1, %0|%0, %1, %2, %3}"; + } + [(set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -28684,6 +28920,7 @@ (define_insn "vec_set_lo_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex") +@@ -28708,6 +28945,7 @@ (define_insn "vec_set_hi_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex") +@@ -28731,6 +28969,7 @@ (define_insn "vec_set_lo_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex") +@@ -28754,6 +28993,7 @@ (define_insn "vec_set_hi_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex") +@@ -28776,6 +29016,7 @@ (define_insn "vec_set_lo_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex,evex") +@@ -28798,6 +29039,7 @@ (define_insn "vec_set_hi_" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16,*") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex,evex") +@@ -28823,6 +29065,7 @@ (define_insn "vec_set_lo_v32qi" + vinserti32x4\t{$0x0, %2, %1, %0|%0, %1, %2, 0x0}" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "addr" "gpr16,*") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") +@@ -28850,6 +29093,7 @@ (define_insn "vec_set_hi_v32qi" + [(set_attr "isa" "noavx512vl,avx512vl") + (set_attr "addr" "gpr16") + (set_attr "type" "sselog") ++ (set_attr "c86_attr" "insertx") + (set_attr "prefix_extra" "1") + (set_attr "length_immediate" "1") + (set_attr "prefix" "vex,evex") +@@ -28869,6 +29113,7 @@ (define_insn "_maskload" + return "vmaskmov\t{%1, %2, %0|%0, %2, %1}"; + } + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") +@@ -28890,6 +29135,7 @@ (define_insn "_maskstore" + return "vmaskmov\t{%2, %1, %0|%0, %1, %2}"; + } + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "blend") + (set_attr "addr" "gpr16") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "vex") +@@ -29286,6 +29532,7 @@ (define_insn "avx_vec_concat" + [(set_attr "isa" "noavx512f,avx512f,*,*") + (set_attr "addr" "gpr16,*,*,*") + (set_attr "type" "sselog,sselog,ssemov,ssemov") ++ (set_attr "c86_attr" "insertx,insertx,*,*") + (set_attr "prefix_extra" "1,1,*,*") + (set_attr "length_immediate" "1,1,*,*") + (set_attr "prefix" "maybe_evex") +@@ -29896,6 +30143,7 @@ (define_insn "_compress_mask" + "TARGET_AVX512F" + "vcompress\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "compress") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -29909,6 +30157,7 @@ (define_insn "compress_mask" + "TARGET_AVX512VBMI2" + "vpcompress\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "compress") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -29922,6 +30171,7 @@ (define_insn "_compressstore_mask" + "TARGET_AVX512F" + "vcompress\t{%1, %0%{%2%}|%0%{%2%}, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "compress") + (set_attr "prefix" "evex") + (set_attr "memory" "store") + (set_attr "mode" "")]) +@@ -29936,6 +30186,7 @@ (define_insn "compressstore_mask" + "TARGET_AVX512VBMI2" + "vpcompress\t{%1, %0%{%2%}|%0%{%2%}, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "compress") + (set_attr "prefix" "evex") + (set_attr "memory" "store") + (set_attr "mode" "")]) +@@ -29960,6 +30211,7 @@ (define_insn "expand_mask" + "TARGET_AVX512F" + "vexpand\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "expand") + (set_attr "prefix" "evex") + (set_attr "memory" "none,load") + (set_attr "mode" "")]) +@@ -29974,6 +30226,7 @@ (define_insn "expand_mask" + "TARGET_AVX512VBMI2" + "vexpand\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "c86_attr" "expand") + (set_attr "prefix" "evex") + (set_attr "memory" "none,load") + (set_attr "mode" "")]) +@@ -30166,6 +30419,7 @@ (define_insn "avx512bw_dbpsadbw" + "TARGET_AVX512BW" + "vdbpsadbw\t{%3, %2, %1, %0|%0, %1, %2, %3}" + [(set_attr "type" "sselog1") ++ (set_attr "c86_attr" "sadbw") + (set_attr "length_immediate" "1") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) +@@ -30177,6 +30431,7 @@ (define_insn "clz2" + "TARGET_AVX512CD" + "vplzcnt\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "c86_attr" "abs") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -30189,6 +30444,7 @@ (define_insn "conflict" + "vpconflict\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") + (set_attr "prefix" "evex") ++ (set_attr "c86_decode" "vector") + (set_attr "mode" "")]) + + (define_insn "sha1msg1" +@@ -30451,6 +30707,7 @@ (define_insn "vpmadd52v8di" + "TARGET_AVX512IFMA && TARGET_EVEX512" + "vpmadd52\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "type" "ssemuladd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "evex") + (set_attr "mode" "XI")]) + +@@ -30467,6 +30724,7 @@ (define_insn "vpmadd52" + vpmadd52\t{%3, %2, %0|%0, %2, %3}" + [(set_attr "isa" "avxifma,avx512ifmavl") + (set_attr "type" "ssemuladd") ++ (set_attr "c86_attr" "madd") + (set_attr "addr" "gpr16,*") + (set_attr "prefix" "vex,evex") + (set_attr "mode" "")]) +@@ -30484,6 +30742,7 @@ (define_insn "vpmadd52_maskz_1" + "TARGET_AVX512IFMA" + "vpmadd52\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3}" + [(set_attr "type" "ssemuladd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -30500,6 +30759,7 @@ (define_insn "vpmadd52_mask" + "TARGET_AVX512IFMA" + "vpmadd52\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}" + [(set_attr "type" "ssemuladd") ++ (set_attr "c86_attr" "madd") + (set_attr "prefix" "evex") + (set_attr "mode" "")]) + +@@ -31103,6 +31363,7 @@ (define_insn "vaesdec_" + } + [(set_attr "isa" "avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,*") + (set_attr "mode" "TI")]) + +@@ -31121,6 +31382,7 @@ (define_insn "vaesdeclast_" + } + [(set_attr "isa" "avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,*") + (set_attr "mode" "TI")]) + +@@ -31139,6 +31401,7 @@ (define_insn "vaesenc_" + } + [(set_attr "isa" "avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,*") + (set_attr "mode" "TI")]) + +@@ -31157,6 +31420,7 @@ (define_insn "vaesenclast_" + } + [(set_attr "isa" "avx,vaes_avx512vl") + (set_attr "type" "sselog1") ++ (set_attr "c86_attr" "aes") + (set_attr "addr" "gpr16,*") + (set_attr "mode" "TI")]) + +@@ -31430,7 +31694,7 @@ (define_expand "avx512f_dpbf16ps__maskz" + (match_operand:VF1_AVX512VL 1 "register_operand") + (match_operand: 2 "register_operand") + (match_operand: 3 "register_operand") +- (match_operand: 4 "register_operand")] ++ (match_operand: 4 "register_operand")] + "TARGET_AVX512BF16" + { + emit_insn (gen_avx512f_dpbf16ps__maskz_1(operands[0], operands[1], +@@ -31438,7 +31702,7 @@ (define_expand "avx512f_dpbf16ps__maskz" + DONE; + }) + +-(define_insn "avx512f_dpbf16ps_" ++(define_insn "avx512f_dpbf16ps_" + [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v") + (unspec:VF1_AVX512VL + [(match_operand:VF1_AVX512VL 1 "register_operand" "0") +@@ -31446,7 +31710,7 @@ (define_insn "avx512f_dpbf16ps_" + (match_operand: 3 "nonimmediate_operand" "vm")] + UNSPEC_VDPBF16PS))] + "TARGET_AVX512BF16" +- "vdpbf16ps\t{%3, %2, %0|%0, %2, %3}") ++ "vdpbf16ps\t{%3, %2, %0|%0, %2, %3}") + + (define_insn "avx512f_dpbf16ps__mask" + [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v") +@@ -31457,7 +31721,7 @@ (define_insn "avx512f_dpbf16ps__mask" + (match_operand: 3 "nonimmediate_operand" "vm")] + UNSPEC_VDPBF16PS) + (match_dup 1) +- (match_operand: 4 "register_operand" "Yk")))] ++ (match_operand: 4 "register_operand" "Yk")))] + "TARGET_AVX512BF16" + "vdpbf16ps\t{%3, %2, %0%{%4%}|%0%{%4%}, %2, %3}") + +@@ -31812,15 +32076,17 @@ (define_expand "udot_prod" + }) + + (define_insn "vpdp_" +- [(set (match_operand:VI4_AVX 0 "register_operand" "=v") ++ [(set (match_operand:VI4_AVX 0 "register_operand" "=x,v") + (unspec:VI4_AVX +- [(match_operand:VI4_AVX 1 "register_operand" "0") +- (match_operand:VI4_AVX 2 "register_operand" "v") +- (match_operand:VI4_AVX 3 "nonimmediate_operand" "vm")] ++ [(match_operand:VI4_AVX 1 "register_operand" "0,0") ++ (match_operand:VI4_AVX 2 "register_operand" "x,v") ++ (match_operand:VI4_AVX 3 "nonimmediate_operand" "xjm,vm")] + VPDOTPROD))] + "TARGET_AVXVNNIINT8 || TARGET_AVX10_2" + "vpdp\t{%3, %2, %0|%0, %2, %3}" +- [(set_attr "prefix" "maybe_evex")]) ++ [(set_attr "prefix" "maybe_evex") ++ (set_attr "addr" "gpr16,*") ++ (set_attr "isa" "avxvnniint8,avx10_2")]) + + (define_insn "vpdp_v16si" + [(set (match_operand:V16SI 0 "register_operand" "=v") +--- a/src/gcc/config/i386/subst.md ++++ b/src/gcc/config/i386/subst.md +@@ -469,16 +469,3 @@ (define_subst "round_saeonly_scalar" + (const_int 1)) + (match_operand:SI 3 "const48_operand")] + UNSPEC_EMBEDDED_ROUNDING))]) +- +-(define_subst_attr "maskz_half_name" "maskz_half" "" "_maskz_1") +-(define_subst_attr "maskz_half_operand4" "maskz_half" "" "%{%5%}%N4") +- +-(define_subst "maskz_half" +- [(set (match_operand:SUBST_V 0) +- (match_operand:SUBST_V 1))] +- "" +- [(set (match_dup 0) +- (vec_merge:SUBST_V +- (match_dup 1) +- (match_operand:SUBST_V 2 "const0_operand") +- (match_operand: 3 "register_operand" "Yk")))]) +--- a/src/gcc/config/i386/x86-tune-costs.h ++++ b/src/gcc/config/i386/x86-tune-costs.h +@@ -4065,3 +4065,274 @@ struct processor_costs core_cost = { + COSTS_N_INSNS (2), /* Branch mispredict scale. */ + }; + ++/* C86_4G_M4 has optimized REP instruction for medium sized blocks, but for ++ very small blocks it is better to use loop. For large blocks, libcall ++ can do nontemporary accesses and beat inline considerably. */ ++static stringop_algs c86_4g_m4_memcpy[2] = { ++ /* 32-bit tuning. */ ++ {libcall, {{6, loop, false}, ++ {14, unrolled_loop, false}, ++ {-1, libcall, false}}}, ++ /* 64-bit tuning. */ ++ {libcall, {{16, loop, false}, ++ {128, rep_prefix_8_byte, false}, ++ {-1, libcall, false}}}}; ++static stringop_algs c86_4g_m4_memset[2] = { ++ /* 32-bit tuning. */ ++ {libcall, {{8, loop, false}, ++ {24, unrolled_loop, false}, ++ {128, rep_prefix_4_byte, false}, ++ {-1, libcall, false}}}, ++ /* 64-bit tuning. */ ++ {libcall, {{48, unrolled_loop, false}, ++ {128, rep_prefix_8_byte, false}, ++ {-1, libcall, false}}}}; ++static const ++struct processor_costs c86_4g_m4_cost = { ++ { ++ /* Start of register allocator costs. integer->integer move cost is 2. */ ++ ++ /* reg-reg moves are done by renaming and thus they are even cheaper than ++ 1 cycle. Because reg-reg move cost is 2 and the following tables ++ correspond to doubles of latencies, we do not model this correctly. ++ It does not seem to make practical difference to bump prices up even ++ more. */ ++ 6, /* cost for loading QImode using ++ movzbl. */ ++ {6, 6, 6}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {8, 8, 8}, /* cost of storing integer ++ registers. */ ++ 2, /* cost of reg,reg fld/fst. */ ++ {6, 6, 16}, /* cost of loading fp registers ++ in SFmode, DFmode and XFmode. */ ++ {8, 8, 16}, /* cost of storing fp registers ++ in SFmode, DFmode and XFmode. */ ++ 2, /* cost of moving MMX register. */ ++ {6, 6}, /* cost of loading MMX registers ++ in SImode and DImode. */ ++ {8, 8}, /* cost of storing MMX registers ++ in SImode and DImode. */ ++ 2, 3, 6, /* cost of moving XMM,YMM,ZMM register. */ ++ {6, 6, 6, 12, 24}, /* cost of loading SSE registers ++ in 32,64,128,256 and 512-bit. */ ++ {8, 8, 8, 16, 32}, /* cost of storing SSE registers ++ in 32,64,128,256 and 512-bit. */ ++ 6, 6, /* SSE->integer and integer->SSE moves. */ ++ 8, 8, /* mask->integer and integer->mask moves */ ++ {6, 6, 6}, /* cost of loading mask register ++ in QImode, HImode, SImode. */ ++ {8, 8, 8}, /* cost if storing mask register ++ in QImode, HImode, SImode. */ ++ 2, /* cost of moving mask register. */ ++ /* End of register allocator costs. */ ++ }, ++ ++ COSTS_N_INSNS (1), /* cost of an add instruction. */ ++ COSTS_N_INSNS (1), /* cost of a lea instruction. */ ++ COSTS_N_INSNS (1), /* variable shift costs. */ ++ COSTS_N_INSNS (1), /* constant shift costs. */ ++ {COSTS_N_INSNS (3), /* cost of starting multiply for QI. */ ++ COSTS_N_INSNS (3), /* HI. */ ++ COSTS_N_INSNS (3), /* SI. */ ++ COSTS_N_INSNS (3), /* DI. */ ++ COSTS_N_INSNS (3)}, /* other. */ ++ 0, /* cost of multiply per each bit ++ set. */ ++ /* Depending on parameters, idiv can get faster on HYGON. This is upper ++ bound. */ ++ {COSTS_N_INSNS (16), /* cost of a divide/mod for QI. */ ++ COSTS_N_INSNS (22), /* HI. */ ++ COSTS_N_INSNS (30), /* SI. */ ++ COSTS_N_INSNS (45), /* DI. */ ++ COSTS_N_INSNS (45)}, /* other. */ ++ COSTS_N_INSNS (1), /* cost of movsx. */ ++ COSTS_N_INSNS (1), /* cost of movzx. */ ++ 8, /* "large" insn. */ ++ 9, /* MOVE_RATIO. */ ++ 6, /* CLEAR_RATIO */ ++ {6, 6, 6}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {8, 8, 8}, /* cost of storing integer ++ registers. */ ++ {6, 6, 6, 12, 24}, /* cost of loading SSE register ++ in 32bit, 64bit, 128bit, 256bit and 512bit */ ++ {8, 8, 8, 16, 32}, /* cost of storing SSE register ++ in 32bit, 64bit, 128bit, 256bit and 512bit */ ++ {6, 6, 6, 12, 24}, /* cost of unaligned loads. */ ++ {8, 8, 8, 16, 32}, /* cost of unaligned stores. */ ++ 2, 3, 6, /* cost of moving XMM,YMM,ZMM register. */ ++ 6, /* cost of moving SSE register to integer. */ ++ ++ 18, 8, /* Gather load static, per_elt. */ ++ 18, 10, /* Gather store static, per_elt. */ ++ 32, /* size of l1 cache. */ ++ 512, /* size of l2 cache. */ ++ 64, /* size of prefetch block. */ ++ /* C86_4G_M4 processors never drop prefetches; if they cannot be performed ++ immediately, they are queued. We set number of simultaneous prefetches ++ to a large constant to reflect this (it probably is not a good idea not ++ to limit number of prefetches at all, as their execution also takes some ++ time). */ ++ 100, /* number of parallel prefetches. */ ++ 3, /* Branch cost. */ ++ COSTS_N_INSNS (5), /* cost of FADD and FSUB insns. */ ++ COSTS_N_INSNS (5), /* cost of FMUL instruction. */ ++ ++ COSTS_N_INSNS (15), /* cost of FDIV instruction. */ ++ COSTS_N_INSNS (1), /* cost of FABS instruction. */ ++ COSTS_N_INSNS (1), /* cost of FCHS instruction. */ ++ ++ COSTS_N_INSNS (10), /* cost of FSQRT instruction. */ ++ ++ COSTS_N_INSNS (1), /* cost of cheap SSE instruction. */ ++ COSTS_N_INSNS (3), /* cost of ADDSS/SD SUBSS/SD insns. */ ++ COSTS_N_INSNS (3), /* cost of MULSS instruction. */ ++ COSTS_N_INSNS (4), /* cost of MULSD instruction. */ ++ COSTS_N_INSNS (5), /* cost of FMA SS instruction. */ ++ COSTS_N_INSNS (5), /* cost of FMA SD instruction. */ ++ COSTS_N_INSNS (10), /* cost of DIVSS instruction. */ ++ ++ COSTS_N_INSNS (13), /* cost of DIVSD instruction. */ ++ COSTS_N_INSNS (10), /* cost of SQRTSS instruction. */ ++ COSTS_N_INSNS (15), /* cost of SQRTSD instruction. */ ++ ++ 4, 4, 3, 6, /* reassoc int, fp, vec_int, vec_fp. */ ++ c86_4g_m4_memcpy, ++ c86_4g_m4_memset, ++ COSTS_N_INSNS (4), /* cond_taken_branch_cost. */ ++ COSTS_N_INSNS (2), /* cond_not_taken_branch_cost. */ ++ "16", /* Loop alignment. */ ++ "16", /* Jump alignment. */ ++ "0:0:8", /* Label alignment. */ ++ "16", /* Func alignment. */ ++ 4, /* Small unroll limit. */ ++ 2, /* Small unroll factor. */ ++ COSTS_N_INSNS (2), /* Branch mispredict scale. */ ++}; ++ ++struct processor_costs c86_4g_m6_cost = c86_4g_m4_cost; ++ ++struct processor_costs c86_4g_m7_cost = { ++ { ++ /* Start of register allocator costs. integer->integer move cost is 2. */ ++ ++ /* reg-reg moves are done by renaming and thus they are even cheaper than ++ 1 cycle. Because reg-reg move cost is 2 and following tables correspond ++ to doubles of latencies, we do not model this correctly. It does not ++ seem to make practical difference to bump prices up even more. */ ++ 6, /* cost for loading QImode using ++ movzbl. */ ++ {6, 6, 6}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {8, 8, 8}, /* cost of storing integer ++ registers. */ ++ 2, /* cost of reg,reg fld/fst. */ ++ {14, 14, 17}, /* cost of loading fp registers ++ in SFmode, DFmode and XFmode. */ ++ {12, 12, 16}, /* cost of storing fp registers ++ in SFmode, DFmode and XFmode. */ ++ 2, /* cost of moving MMX register. */ ++ {6, 6}, /* cost of loading MMX registers ++ in SImode and DImode. */ ++ {8, 8}, /* cost of storing MMX registers ++ in SImode and DImode. */ ++ 2, 2, 3, /* cost of moving XMM,YMM,ZMM ++ register. */ ++ {6, 6, 10, 10, 12}, /* cost of loading SSE registers ++ in 32,64,128,256 and 512-bit. */ ++ {8, 8, 8, 12, 12}, /* cost of storing SSE registers ++ in 32,64,128,256 and 512-bit. */ ++ 6, 8, /* SSE->integer and integer->SSE ++ moves. */ ++ 8, 8, /* mask->integer and integer->mask moves */ ++ {6, 6, 6}, /* cost of loading mask register ++ in QImode, HImode, SImode. */ ++ {8, 8, 8}, /* cost if storing mask register ++ in QImode, HImode, SImode. */ ++ 2, /* cost of moving mask register. */ ++ /* End of register allocator costs. */ ++ }, ++ ++ COSTS_N_INSNS (1), /* cost of an add instruction. */ ++ ++ COSTS_N_INSNS (1), /* cost of a lea instruction. */ ++ COSTS_N_INSNS (1), /* variable shift costs. */ ++ COSTS_N_INSNS (1), /* constant shift costs. */ ++ {COSTS_N_INSNS (3), /* cost of starting multiply for QI. */ ++ COSTS_N_INSNS (3), /* HI. */ ++ COSTS_N_INSNS (3), /* SI. */ ++ COSTS_N_INSNS (3), /* DI. */ ++ COSTS_N_INSNS (3)}, /* other. */ ++ 0, /* cost of multiply per each bit ++ set. */ ++ {COSTS_N_INSNS (15), /* cost of a divide/mod for QI. */ ++ COSTS_N_INSNS (17), /* HI. */ ++ COSTS_N_INSNS (25), /* SI. */ ++ COSTS_N_INSNS (41), /* DI. */ ++ COSTS_N_INSNS (41)}, /* other. */ ++ COSTS_N_INSNS (1), /* cost of movsx. */ ++ COSTS_N_INSNS (1), /* cost of movzx. */ ++ 8, /* "large" insn. */ ++ 9, /* MOVE_RATIO. */ ++ 6, /* CLEAR_RATIO */ ++ {6, 6, 6}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {8, 8, 8}, /* cost of storing integer ++ registers. */ ++ {6, 6, 10, 10, 12}, /* cost of loading SSE registers ++ in 32bit, 64bit, 128bit, 256bit and 512bit */ ++ {8, 8, 8, 12, 12}, /* cost of storing SSE register ++ in 32bit, 64bit, 128bit, 256bit and 512bit */ ++ {6, 6, 10, 10, 12}, /* cost of unaligned loads. */ ++ {8, 8, 8, 12, 12}, /* cost of unaligned stores. */ ++ 2, 2, 3, /* cost of moving XMM,YMM,ZMM ++ register. */ ++ 6, /* cost of moving SSE register to integer. */ ++ ++ 14, 10, /* Gather load static, per_elt. */ ++ 14, 20, /* Gather store static, per_elt. */ ++ 32, /* size of l1 cache. */ ++ 512, /* size of l2 cache. */ ++ 64, /* size of prefetch block. */ ++ ++ 100, /* number of parallel prefetches. */ ++ 3, /* Branch cost. */ ++ COSTS_N_INSNS (5), /* cost of FADD and FSUB insns. */ ++ COSTS_N_INSNS (5), /* cost of FMUL instruction. */ ++ ++ COSTS_N_INSNS (15), /* cost of FDIV instruction. */ ++ COSTS_N_INSNS (1), /* cost of FABS instruction. */ ++ COSTS_N_INSNS (1), /* cost of FCHS instruction. */ ++ ++ COSTS_N_INSNS (22), /* cost of FSQRT instruction. */ ++ ++ COSTS_N_INSNS (1), /* cost of cheap SSE instruction. */ ++ COSTS_N_INSNS (3), /* cost of ADDSS/SD SUBSS/SD insns. */ ++ COSTS_N_INSNS (3), /* cost of MULSS instruction. */ ++ COSTS_N_INSNS (3), /* cost of MULSD instruction. */ ++ COSTS_N_INSNS (4), /* cost of FMA SS instruction. */ ++ COSTS_N_INSNS (4), /* cost of FMA SD instruction. */ ++ COSTS_N_INSNS (13), /* cost of DIVSS instruction. */ ++ ++ COSTS_N_INSNS (10), /* cost of DIVSD instruction. */ ++ COSTS_N_INSNS (14), /* cost of SQRTSS instruction. */ ++ COSTS_N_INSNS (20), /* cost of SQRTSD instruction. */ ++ ++ 4, 4, 3, 6, /* reassoc int, fp, vec_int, vec_fp. */ ++ c86_4g_m4_memcpy, ++ c86_4g_m4_memset, ++ COSTS_N_INSNS (4), /* cond_taken_branch_cost. */ ++ COSTS_N_INSNS (2), /* cond_not_taken_branch_cost. */ ++ "16", /* Loop alignment. */ ++ "16", /* Jump alignment. */ ++ "0:0:8", /* Label alignment. */ ++ "16", /* Func alignment. */ ++ 4, /* Small unroll limit. */ ++ 2, /* Small unroll factor. */ ++ COSTS_N_INSNS (2), /* Branch mispredict scale. */ ++}; +--- a/src/gcc/config/i386/x86-tune-sched.cc ++++ b/src/gcc/config/i386/x86-tune-sched.cc +@@ -89,6 +89,9 @@ ix86_issue_rate (void) + is not going to be able to use more than 4 instructions since that + is limits of the decoders. */ + case PROCESSOR_ZNVER5: ++ case PROCESSOR_C86_4G_M4: ++ case PROCESSOR_C86_4G_M6: ++ case PROCESSOR_C86_4G_M7: + return 4; + + case PROCESSOR_ICELAKE_CLIENT: +@@ -426,6 +429,9 @@ ix86_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep_insn, int cost, + case PROCESSOR_ZNVER3: + case PROCESSOR_ZNVER4: + case PROCESSOR_ZNVER5: ++ case PROCESSOR_C86_4G_M4: ++ case PROCESSOR_C86_4G_M6: ++ case PROCESSOR_C86_4G_M7: + /* Stack engine allows to execute push&pop instructions in parall. */ + if ((insn_type == TYPE_PUSH || insn_type == TYPE_POP) + && (dep_insn_type == TYPE_PUSH || dep_insn_type == TYPE_POP)) +--- a/src/gcc/config/i386/x86-tune.def ++++ b/src/gcc/config/i386/x86-tune.def +@@ -42,7 +42,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + DEF_TUNE (X86_TUNE_SCHEDULE, "schedule", + m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL | m_SILVERMONT + | m_INTEL | m_K6_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT +- | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM ++ | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G + | m_GENERIC) + + /* X86_TUNE_PARTIAL_REG_DEPENDENCY: Enable more register renaming +@@ -53,7 +53,7 @@ DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency", + m_P4_NOCONA | m_CORE2 | m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 + | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL + | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID +- | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: This knob promotes all store + destinations to be 128bit to allow register renaming on 128bit SSE units, +@@ -64,7 +64,7 @@ DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency", + DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY, "sse_partial_reg_dependency", + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10 + | m_BDVER | m_ZNVER | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID +- | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY: This knob avoids + partial write to the destination in scalar SSE conversion from FP +@@ -73,7 +73,7 @@ DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY, + "sse_partial_reg_fp_converts_dependency", + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10 + | m_BDVER | m_ZNVER | m_ZHAOXIN | m_CORE_HYBRID | m_CORE_ATOM +- | m_GENERIC) ++ | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY: This knob avoids partial + write to the destination in scalar SSE conversion from integer to FP. */ +@@ -81,7 +81,7 @@ DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY, + "sse_partial_reg_converts_dependency", + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10 + | m_BDVER | m_ZNVER | m_ZHAOXIN | m_CORE_HYBRID | m_CORE_ATOM +- | m_GENERIC) ++ | m_C86_4G | m_GENERIC) + + /* X86_TUNE_DEST_FALSE_DEP_FOR_GLC: This knob inserts zero-idiom before + several insns to break false dependency on the dest register for GLC +@@ -113,32 +113,33 @@ DEF_TUNE (X86_TUNE_MOVX, "movx", + m_PPRO | m_P4_NOCONA | m_CORE2 | m_NEHALEM | m_SANDYBRIDGE + | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_INTEL + | m_GOLDMONT_PLUS | m_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN +- | m_CORE_AVX2 | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_AVX2 | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM ++ | m_C86_4G | m_GENERIC) + + /* X86_TUNE_MEMORY_MISMATCH_STALL: Avoid partial stores that are followed by + full sized loads. */ + DEF_TUNE (X86_TUNE_MEMORY_MISMATCH_STALL, "memory_mismatch_stall", + m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL + | m_GOLDMONT | m_GOLDMONT_PLUS | m_AMD_MULTIPLE | m_ZHAOXIN +- | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_FUSE_CMP_AND_BRANCH_32: Fuse compare with a subsequent + conditional jump instruction for 32 bit TARGET. */ + DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_32, "fuse_cmp_and_branch_32", +- m_CORE_ALL | m_BDVER | m_ZNVER | m_ZHAOXIN | m_GENERIC) ++ m_CORE_ALL | m_BDVER | m_ZNVER | m_ZHAOXIN | m_C86_4G | m_GENERIC) + + /* X86_TUNE_FUSE_CMP_AND_BRANCH_64: Fuse compare with a subsequent + conditional jump instruction for TARGET_64BIT. */ + DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_64, "fuse_cmp_and_branch_64", + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER +- | m_ZNVER | m_ZHAOXIN | m_GENERIC) ++ | m_ZNVER | m_ZHAOXIN | m_C86_4G | m_GENERIC) + + /* X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS: Fuse compare with a + subsequent conditional jump instruction when the condition jump + check sign flag (SF) or overflow flag (OF). */ + DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, "fuse_cmp_and_branch_soflags", + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER +- | m_ZNVER | m_ZHAOXIN | m_GENERIC) ++ | m_ZNVER | m_ZHAOXIN | m_C86_4G | m_GENERIC) + + /* X86_TUNE_FUSE_ALU_AND_BRANCH: Fuse alu with a subsequent conditional + jump instruction when the alu instruction produces the CCFLAG consumed by +@@ -200,14 +201,15 @@ DEF_TUNE (X86_TUNE_EPILOGUE_USING_MOVE, "epilogue_using_move", + /* X86_TUNE_USE_LEAVE: Use "leave" instruction in epilogues where it fits. */ + DEF_TUNE (X86_TUNE_USE_LEAVE, "use_leave", + m_386 | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN +- | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_PUSH_MEMORY: Enable generation of "push mem" instructions. + Some chips, like 486 and Pentium works faster with separate load + and push instructions. */ + DEF_TUNE (X86_TUNE_PUSH_MEMORY, "push_memory", + m_386 | m_P4_NOCONA | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE +- | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G ++ | m_GENERIC) + + /* X86_TUNE_SINGLE_PUSH: Enable if single push insn is preferred + over esp subtraction. */ +@@ -291,7 +293,7 @@ DEF_TUNE (X86_TUNE_INTEGER_DFMODE_MOVES, "integer_dfmode_moves", + ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT + | m_INTEL | m_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM +- | m_GENERIC)) ++ | m_C86_4G | m_GENERIC)) + + /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag + will impact LEA instruction selection. */ +@@ -338,14 +340,14 @@ DEF_TUNE (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB, + DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES, + "misaligned_move_string_pro_epilogues", + m_386 | m_486 | m_CORE_ALL | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT +- | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_USE_SAHF: Controls use of SAHF. */ + DEF_TUNE (X86_TUNE_USE_SAHF, "use_sahf", + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT + | m_INTEL | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER + | m_ZNVER | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT +- | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_USE_CLTD: Controls use of CLTD and CTQO instructions. */ + DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd", +@@ -356,7 +358,7 @@ DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd", + DEF_TUNE (X86_TUNE_USE_BT, "use_bt", + m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL | m_LAKEMONT + | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS +- | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_AVOID_FALSE_DEP_FOR_BMI: Avoid false dependency + for bit-manipulation instructions. */ +@@ -390,7 +392,7 @@ DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn", + /* X86_TUNE_AVOID_MFENCE: Use lock prefixed instructions instead of mfence. */ + DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_mfence", + m_CORE_ALL | m_BDVER | m_ZNVER | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID +- | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_EXPAND_ABS: This enables a new abs pattern by + generating instructions for abs (x) = (((signed) x >> (W-1) ^ x) - +@@ -414,10 +416,11 @@ DEF_TUNE (X86_TUNE_USE_SIMODE_FIOP, "use_simode_fiop", + ~(m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL + | m_SILVERMONT | m_INTEL | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM +- | m_GENERIC)) ++ | m_C86_4G | m_GENERIC)) + + /* X86_TUNE_USE_FFREEP: Use freep instruction instead of fstp. */ +-DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE | m_ZHAOXIN) ++DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE | m_ZHAOXIN ++ | m_C86_4G) + + /* X86_TUNE_EXT_80387_CONSTANTS: Use fancy 80387 constants, such as PI. */ + DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants", +@@ -441,30 +444,31 @@ DEF_TUNE (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, "sse_unaligned_load_optimal", + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_INTEL + | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID + | m_CORE_ATOM | m_AMDFAM10 | m_BDVER | m_BTVER | m_ZNVER | m_ZHAOXIN +- | m_GENERIC) ++ | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL: Use movups for misaligned stores + instead of a sequence loading registers by parts. */ + DEF_TUNE (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL, "sse_unaligned_store_optimal", + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT + | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID +- | m_CORE_ATOM | m_BDVER | m_ZNVER | m_ZHAOXIN | m_GENERIC) ++ | m_CORE_ATOM | m_BDVER | m_ZNVER | m_ZHAOXIN | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL: Use packed single + precision 128bit instructions instead of double where possible. */ + DEF_TUNE (X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL, "sse_packed_single_insn_optimal", +- m_BDVER | m_ZNVER) ++ m_BDVER | m_ZNVER | m_C86_4G) + + /* X86_TUNE_SSE_TYPELESS_STORES: Always movaps/movups for 128bit stores. */ + DEF_TUNE (X86_TUNE_SSE_TYPELESS_STORES, "sse_typeless_stores", + m_AMD_MULTIPLE | m_ZHAOXIN | m_CORE_ALL | m_TREMONT | m_CORE_HYBRID +- | m_CORE_ATOM | m_GENERIC) ++ | m_CORE_ATOM | m_C86_4G | m_GENERIC) + + /* X86_TUNE_SSE_LOAD0_BY_PXOR: Always use pxor to load0 as opposed to + xorps/xorpd and other variants. */ + DEF_TUNE (X86_TUNE_SSE_LOAD0_BY_PXOR, "sse_load0_by_pxor", + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BDVER | m_BTVER | m_ZNVER +- | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) ++ | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM ++ | m_C86_4G | m_GENERIC) + + /* X86_TUNE_INTER_UNIT_MOVES_TO_VEC: Enable moves in from integer + to SSE registers. If disabled, the moves will be done by storing +@@ -515,46 +519,48 @@ DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES, "avoid_4byte_prefixes", + elements. */ + DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts", + ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS +- | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS)) ++ | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS ++ | m_C86_4G)) + + /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2 + elements. */ + DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "use_scatter_2parts", +- ~(m_ZNVER4 | m_ZNVER5)) ++ ~(m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7)) + + /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4 + elements. */ + DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts", + ~(m_ZNVER | m_CORE_HYBRID | m_DIAMONDRAPIDS +- | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS)) ++ | m_YONGFENG | m_SHIJIDADAO | m_CORE_ATOM | m_GENERIC | m_GDS ++ | m_C86_4G)) + + /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4 + elements. */ + DEF_TUNE (X86_TUNE_USE_SCATTER_4PARTS, "use_scatter_4parts", +- ~(m_ZNVER4 | m_ZNVER5)) ++ ~(m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7)) + + /* X86_TUNE_USE_GATHER: Use gather instructions for vectors with 8 or more + elements. */ + DEF_TUNE (X86_TUNE_USE_GATHER_8PARTS, "use_gather_8parts", + ~(m_ZNVER | m_CORE_HYBRID | m_CORE_ATOM +- | m_YONGFENG | m_SHIJIDADAO | m_GENERIC | m_GDS)) ++ | m_YONGFENG | m_SHIJIDADAO | m_GENERIC | m_GDS | m_C86_4G)) + + /* X86_TUNE_USE_SCATTER: Use scater instructions for vectors with 8 or more + elements. */ + DEF_TUNE (X86_TUNE_USE_SCATTER_8PARTS, "use_scatter_8parts", +- ~(m_ZNVER4 | m_ZNVER5)) ++ ~(m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7)) + + /* X86_TUNE_AVOID_128FMA_CHAINS: Avoid creating loops with tight 128bit or + smaller FMA chain. */ + DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER +- | m_YONGFENG | m_SHIJIDADAO | m_GENERIC) ++ | m_YONGFENG | m_SHIJIDADAO | m_GENERIC | m_C86_4G) + + /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or + smaller FMA chain. */ + DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", + m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ZNVER5 | m_CORE_HYBRID + | m_SAPPHIRERAPIDS | m_GRANITERAPIDS | m_GRANITERAPIDS_D +- | m_DIAMONDRAPIDS | m_CORE_ATOM | m_GENERIC) ++ | m_DIAMONDRAPIDS | m_CORE_ATOM | m_GENERIC | m_C86_4G) + + /* X86_TUNE_AVOID_512FMA_CHAINS: Avoid creating loops with tight 512bit or + smaller FMA chain. */ +@@ -606,29 +612,32 @@ DEF_TUNE (X86_TUNE_AVX256_AVOID_VEC_PERM, + "avx256_avoid_vec_perm", m_CORE_ATOM) + + /* X86_TUNE_AVX256_SPLIT_REGS: if true, AVX512 ops are split into two AVX256 ops. */ +-DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4) ++DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4 ++ | m_C86_4G_M7) + + /* It's better to align MOVE_MAX with prefer_vector_width to reduce + risk of STLF stalls(small store followed by big load.) */ + /* X86_TUNE_AVX256_MOVE_BY_PIECES: Optimize move_by_pieces with 256-bit + AVX instructions. */ + DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces", +- m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3) ++ m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3 ++ | m_C86_4G_M4 | m_C86_4G_M6) + + /* X86_TUNE_AVX256_STORE_BY_PIECES: Optimize store_by_pieces with 256-bit + AVX instructions. */ + DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces", +- m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3) ++ m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3 ++ | m_C86_4G_M4 | m_C86_4G_M6) + + /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit + AVX instructions. */ + DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces", +- m_ZNVER4 | m_ZNVER5) ++ m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7) + + /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit + AVX instructions. */ + DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces", +- m_ZNVER4 | m_ZNVER5) ++ m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7) + + /* X86_TUNE_AVX512_TWO_EPILOGUES: Use two vector epilogues for 512-bit + vectorized loops. */ +@@ -775,4 +784,4 @@ DEF_TUNE (X86_TUNE_PROMOTE_QI_REGS, "promote_qi_regs", m_NONE) + DEF_TUNE (X86_TUNE_SLOW_STC, "slow_stc", m_PENT4) + + /* X86_TUNE_USE_RCR: Controls use of rcr 1 instruction instead of shrd. */ +-DEF_TUNE (X86_TUNE_USE_RCR, "use_rcr", m_AMD_MULTIPLE) ++DEF_TUNE (X86_TUNE_USE_RCR, "use_rcr", m_AMD_MULTIPLE | m_C86_4G) +--- a/src/gcc/config/microblaze/microblaze.h ++++ b/src/gcc/config/microblaze/microblaze.h +@@ -176,6 +176,14 @@ extern enum pipeline_type microblaze_pipe; + #define DWARF_FRAME_RETURN_COLUMN \ + (GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) + ++/* Signal frames (config/microblaze/linux-unwind.h) record the ++ interrupted PC in DWARF column 36, one past the hard registers, ++ because column 15 must keep the interrupted r15. Declaring it as ++ the alternate return column makes init_dwarf_reg_size_table size ++ it; otherwise _Unwind_GetGR aborts when unwinding through a signal ++ frame, such as during pthread cancellation. */ ++#define DWARF_ALT_FRAME_RETURN_COLUMN 36 ++ + /* Initial state of return address on entry to func = R15. + Actually, the RA is at R15+8, but gcc doesn't know how + to generate this. +--- a/src/gcc/config/mips/mips-ftypes.def ++++ b/src/gcc/config/mips/mips-ftypes.def +@@ -75,7 +75,7 @@ DEF_MIPS_FTYPE (1, (SI, V4QI)) + DEF_MIPS_FTYPE (2, (SI, V4QI, V4QI)) + DEF_MIPS_FTYPE (2, (SI, V4SI, UQI)) + DEF_MIPS_FTYPE (2, (SI, V8HI, UQI)) +-DEF_MIPS_FTYPE (1, (SI, VOID)) ++DEF_MIPS_FTYPE (0, (SI)) + + DEF_MIPS_FTYPE (2, (UDI, UDI, UDI)) + DEF_MIPS_FTYPE (2, (UDI, UV2SI, UV2SI)) +@@ -84,7 +84,7 @@ DEF_MIPS_FTYPE (2, (UDI, V2DI, UQI)) + DEF_MIPS_FTYPE (2, (USI, V16QI, UQI)) + DEF_MIPS_FTYPE (2, (USI, V4SI, UQI)) + DEF_MIPS_FTYPE (2, (USI, V8HI, UQI)) +-DEF_MIPS_FTYPE (1, (USI, VOID)) ++DEF_MIPS_FTYPE (0, (USI)) + + DEF_MIPS_FTYPE (2, (UV16QI, UV16QI, UQI)) + DEF_MIPS_FTYPE (2, (UV16QI, UV16QI, UV16QI)) +--- a/src/gcc/config/mips/mips.cc ++++ b/src/gcc/config/mips/mips.cc +@@ -211,6 +211,7 @@ enum mips_ucbranch_type + }; + + /* Macros to create an enumeration identifier for a function prototype. */ ++#define MIPS_FTYPE_NAME0(A) MIPS_##A##_FTYPE_VOID + #define MIPS_FTYPE_NAME1(A, B) MIPS_##A##_FTYPE_##B + #define MIPS_FTYPE_NAME2(A, B, C) MIPS_##A##_FTYPE_##B##_##C + #define MIPS_FTYPE_NAME3(A, B, C, D) MIPS_##A##_FTYPE_##B##_##C##_##D +@@ -17115,6 +17116,9 @@ mips_build_cvpointer_type (void) + + /* MIPS_FTYPE_ATYPESN takes N MIPS_FTYPES-like type codes and lists + their associated MIPS_ATYPEs. */ ++#define MIPS_FTYPE_ATYPES0(A) \ ++ MIPS_ATYPE_##A ++ + #define MIPS_FTYPE_ATYPES1(A, B) \ + MIPS_ATYPE_##A, MIPS_ATYPE_##B + +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -1685,10 +1685,6 @@ FP_ASM_SPEC "\ + doesn't support 128-bit integers for MIPS32 currently. */ + #define LONG_LONG_ACCUM_TYPE_SIZE (TARGET_64BIT ? 128 : 64) + +-/* long double is not a fixed mode, but the idea is that, if we +- support long double, we also want a 128-bit integer type. */ +-#define MAX_FIXED_MODE_SIZE MIPS_LONG_DOUBLE_TYPE_SIZE +- + /* Width in bits of a pointer. */ + #ifndef POINTER_SIZE + #define POINTER_SIZE ((TARGET_LONG64 && TARGET_64BIT) ? 64 : 32) +--- a/src/gcc/config/riscv/autovec-opt.md ++++ b/src/gcc/config/riscv/autovec-opt.md +@@ -53,7 +53,7 @@ (define_split + { + emit_insn (gen_pred_mov (mode, operands[0], CONST1_RTX (mode), + RVV_VUNDEF (mode), operands[3], +- operands[4], operands[5])); ++ operands[4], operands[6])); + DONE; + } + ) +@@ -1048,12 +1048,11 @@ (define_insn_and_split "*single_widen_fma" + ;; Combine extend + fma to widen_fma (vfwmacc) + (define_insn_and_split "*dual_widen_fma" + [(set (match_operand:VWEXTF 0 "register_operand") +- (plus:VWEXTF +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (float_extend:VWEXTF +- (match_operand: 3 "register_operand"))) ++ (fma:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand")) ++ (float_extend:VWEXTF ++ (match_operand: 3 "register_operand")) + (match_operand:VWEXTF 1 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" +@@ -1073,11 +1072,10 @@ (define_insn_and_split "*dual_widen_fma" + ;; pattern and non-widen fma pattern. + (define_insn_and_split "*single_widen_fma" + [(set (match_operand:VWEXTF 0 "register_operand") +- (plus:VWEXTF +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (match_operand:VWEXTF 3 "register_operand")) ++ (fma:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand")) ++ (match_operand:VWEXTF 3 "register_operand") + (match_operand:VWEXTF 1 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" +@@ -1100,13 +1098,13 @@ (define_insn_and_split "*single_widen_fma" + ;; Combine extend + fnma to widen_fnma (vfwnmsac) + (define_insn_and_split "*dual_widen_fnma" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (match_operand:VWEXTF 1 "register_operand") +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (float_extend:VWEXTF +- (match_operand: 3 "register_operand")))))] ++ (fma:VWEXTF ++ (neg:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand"))) ++ (float_extend:VWEXTF ++ (match_operand: 3 "register_operand")) ++ (match_operand:VWEXTF 1 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1125,12 +1123,12 @@ (define_insn_and_split "*dual_widen_fnma" + ;; pattern and non-widen fnma pattern. + (define_insn_and_split "*single_widen_fnma" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (match_operand:VWEXTF 1 "register_operand") +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (match_operand:VWEXTF 3 "register_operand"))))] ++ (fma:VWEXTF ++ (neg:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand"))) ++ (match_operand:VWEXTF 3 "register_operand") ++ (match_operand:VWEXTF 1 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1152,13 +1150,12 @@ (define_insn_and_split "*single_widen_fnma" + ;; Combine extend + fms to widen_fms (vfwmsac) + (define_insn_and_split "*dual_widen_fms" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (float_extend:VWEXTF +- (match_operand: 3 "register_operand"))) +- (match_operand:VWEXTF 1 "register_operand")))] ++ (fma:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand")) ++ (float_extend:VWEXTF ++ (match_operand: 3 "register_operand")) ++ (neg:VWEXTF (match_operand:VWEXTF 1 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1177,12 +1174,11 @@ (define_insn_and_split "*dual_widen_fms" + ;; pattern and non-widen fms pattern. + (define_insn_and_split "*single_widen_fms" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (mult:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand")) +- (match_operand:VWEXTF 3 "register_operand")) +- (match_operand:VWEXTF 1 "register_operand")))] ++ (fma:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand")) ++ (match_operand:VWEXTF 3 "register_operand") ++ (neg:VWEXTF (match_operand:VWEXTF 1 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1204,14 +1200,13 @@ (define_insn_and_split "*single_widen_fms" + ;; Combine extend + fnms to widen_fnms (vfwnmacc) + (define_insn_and_split "*dual_widen_fnms" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (mult:VWEXTF +- (neg:VWEXTF +- (float_extend:VWEXTF +- (match_operand: 2 "register_operand"))) +- (float_extend:VWEXTF +- (match_operand: 3 "register_operand"))) +- (match_operand:VWEXTF 1 "register_operand")))] ++ (fma:VWEXTF ++ (neg:VWEXTF ++ (float_extend:VWEXTF ++ (match_operand: 2 "register_operand"))) ++ (float_extend:VWEXTF ++ (match_operand: 3 "register_operand")) ++ (neg:VWEXTF (match_operand:VWEXTF 1 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1230,13 +1225,12 @@ (define_insn_and_split "*dual_widen_fnms" + ;; pattern and non-widen fnms pattern. + (define_insn_and_split "*single_widen_fnms" + [(set (match_operand:VWEXTF 0 "register_operand") +- (minus:VWEXTF +- (mult:VWEXTF +- (neg:VWEXTF +- (match_operand:VWEXTF 3 "register_operand")) +- (float_extend:VWEXTF ++ (fma:VWEXTF ++ (neg:VWEXTF ++ (float_extend:VWEXTF + (match_operand: 2 "register_operand"))) +- (match_operand:VWEXTF 1 "register_operand")))] ++ (match_operand:VWEXTF 3 "register_operand") ++ (neg:VWEXTF (match_operand:VWEXTF 1 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +--- a/src/gcc/config/riscv/autovec.md ++++ b/src/gcc/config/riscv/autovec.md +@@ -1242,10 +1242,9 @@ (define_insn_and_split "fnma4" + + (define_insn_and_split "fma4" + [(set (match_operand:V_VLSF 0 "register_operand") +- (plus:V_VLSF +- (mult:V_VLSF +- (match_operand:V_VLSF 1 "register_operand") +- (match_operand:V_VLSF 2 "register_operand")) ++ (fma:V_VLSF ++ (match_operand:V_VLSF 1 "register_operand") ++ (match_operand:V_VLSF 2 "register_operand") + (match_operand:V_VLSF 3 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" +@@ -1270,11 +1269,10 @@ (define_insn_and_split "fma4" + + (define_insn_and_split "fnma4" + [(set (match_operand:V_VLSF 0 "register_operand") +- (minus:V_VLSF +- (match_operand:V_VLSF 3 "register_operand") +- (mult:V_VLSF +- (match_operand:V_VLSF 1 "register_operand") +- (match_operand:V_VLSF 2 "register_operand"))))] ++ (fma:V_VLSF ++ (neg:V_VLSF (match_operand:V_VLSF 1 "register_operand")) ++ (match_operand:V_VLSF 2 "register_operand") ++ (match_operand:V_VLSF 3 "register_operand")))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1298,11 +1296,10 @@ (define_insn_and_split "fnma4" + + (define_insn_and_split "fms4" + [(set (match_operand:V_VLSF 0 "register_operand") +- (minus:V_VLSF +- (mult:V_VLSF +- (match_operand:V_VLSF 1 "register_operand") +- (match_operand:V_VLSF 2 "register_operand")) +- (match_operand:V_VLSF 3 "register_operand")))] ++ (fma:V_VLSF ++ (match_operand:V_VLSF 1 "register_operand") ++ (match_operand:V_VLSF 2 "register_operand") ++ (neg:V_VLSF (match_operand:V_VLSF 3 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1326,12 +1323,10 @@ (define_insn_and_split "fms4" + + (define_insn_and_split "fnms4" + [(set (match_operand:V_VLSF 0 "register_operand") +- (minus:V_VLSF +- (neg:V_VLSF +- (mult:V_VLSF +- (match_operand:V_VLSF 1 "register_operand") +- (match_operand:V_VLSF 2 "register_operand"))) +- (match_operand:V_VLSF 3 "register_operand")))] ++ (fma:V_VLSF ++ (neg:V_VLSF (match_operand:V_VLSF 1 "register_operand")) ++ (match_operand:V_VLSF 2 "register_operand") ++ (neg:V_VLSF (match_operand:V_VLSF 3 "register_operand"))))] + "TARGET_VECTOR && can_create_pseudo_p ()" + "#" + "&& 1" +@@ -1385,7 +1380,7 @@ (define_expand "vec_set" + + /* Here we set VL = offset + 1. */ + rtx length = gen_reg_rtx (Pmode); +- operands[2] = gen_lowpart (Pmode, operands[2]); ++ operands[2] = convert_to_mode (Pmode, operands[2], true); + if (CONST_INT_P (operands[2])) + emit_move_insn (length, GEN_INT (INTVAL (operands[2]) + 1)); + else +@@ -1442,7 +1437,7 @@ (define_expand "vec_extract" + + /* Emit the slide down to index 0 in a new vector. */ + tmp = gen_reg_rtx (mode); +- operands[2] = gen_lowpart (Pmode, operands[2]); ++ operands[2] = convert_to_mode (Pmode, operands[2], true); + rtx ops[] = {tmp, operands[1], operands[2]}; + riscv_vector::emit_vlmax_insn + (code_for_pred_slide (UNSPEC_VSLIDEDOWN, mode), +@@ -2395,7 +2390,7 @@ (define_expand "reduc_fmax_scal_" + "TARGET_VECTOR && !HONOR_SNANS (mode)" + { + REAL_VALUE_TYPE rv; +- real_inf (&rv, true); ++ real_nan (&rv, "", 1, VOIDmode); + rtx f = const_double_from_real_value (rv, mode); + riscv_vector::expand_reduction (UNSPEC_REDUC_MAX, + UNSPEC_REDUC_MAX_VL0_SAFE, +@@ -2410,7 +2405,7 @@ (define_expand "reduc_fmin_scal_" + "TARGET_VECTOR && !HONOR_SNANS (mode)" + { + REAL_VALUE_TYPE rv; +- real_inf (&rv, false); ++ real_nan (&rv, "", 1, VOIDmode); + rtx f = const_double_from_real_value (rv, mode); + riscv_vector::expand_reduction (UNSPEC_REDUC_MIN, + UNSPEC_REDUC_MIN_VL0_SAFE, +--- a/src/gcc/config/riscv/riscv-cores.def ++++ b/src/gcc/config/riscv/riscv-cores.def +@@ -39,7 +39,9 @@ RISCV_TUNE("sifive-5-series", generic, rocket_tune_info) + RISCV_TUNE("sifive-7-series", sifive_7, sifive_7_tune_info) + RISCV_TUNE("sifive-p400-series", sifive_p400, sifive_p400_tune_info) + RISCV_TUNE("sifive-p600-series", sifive_p600, sifive_p600_tune_info) ++RISCV_TUNE("tt-ascalon-x", generic_ooo, tt_ascalon_d8_tune_info) + RISCV_TUNE("tt-ascalon-d8", generic_ooo, tt_ascalon_d8_tune_info) ++RISCV_TUNE("tt-ascalon-xg", generic_ooo, tt_ascalon_d8_tune_info) + RISCV_TUNE("thead-c906", generic, thead_c906_tune_info) + RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info) + RISCV_TUNE("generic-ooo", generic_ooo, generic_ooo_tune_info) +@@ -93,13 +95,30 @@ RISCV_CORE("thead-c906", "rv64imafdc_xtheadba_xtheadbb_xtheadbs_xtheadcmo_" + "xtheadmemidx_xtheadmempair_xtheadsync", + "thead-c906") + +-RISCV_CORE("tt-ascalon-d8", "rv64imafdcv_zic64b_zicbom_zicbop_zicboz_" ++RISCV_CORE("tt-ascalon-x", "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_" + "ziccamoa_ziccif_zicclsm_ziccrse_zicond_zicsr_" + "zifencei_zihintntl_zihintpause_zimop_za64rs_" + "zawrs_zfa_zfbfmin_zfh_zcb_zcmop_zba_zbb_zbs_" +- "zvbb_zvbc_zvfbfwma_zvfh_zvkng_zvl256b", ++ "zvbb_zvbc_zvfbfmin_zvfbfwma_zvfh_zvkng_zvl256b_" ++ "zfhmin_zicntr_zihpm_zkr_zkt_zvfhmin_zvkt", ++ "tt-ascalon-x") ++ ++RISCV_CORE("tt-ascalon-d8", "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_" ++ "ziccamoa_ziccif_zicclsm_ziccrse_zicond_zicsr_" ++ "zifencei_zihintntl_zihintpause_zimop_za64rs_" ++ "zawrs_zfa_zfbfmin_zfh_zcb_zcmop_zba_zbb_zbs_" ++ "zvbb_zvbc_zvfbfmin_zvfbfwma_zvfh_zvkng_zvl256b_" ++ "zfhmin_zicntr_zihpm_zkr_zkt_zvfhmin_zvkt", + "tt-ascalon-d8") + ++RISCV_CORE("tt-ascalon-xg", "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_" ++ "ziccamoa_ziccif_zicclsm_ziccrse_zicond_zicsr_" ++ "zifencei_zihintntl_zihintpause_zimop_za64rs_" ++ "zawrs_zfa_zfbfmin_zfh_zcb_zcmop_zba_zbb_zbs_" ++ "zvbb_zvbc_zvfbfmin_zvfbfwma_zvfh_zvl256b_" ++ "zfhmin_zicntr_zihpm_zkr_zkt_zvfhmin_zvkt", ++ "tt-ascalon-xg") ++ + RISCV_CORE("xiangshan-nanhu", "rv64imafdc_zba_zbb_zbc_zbs_" + "zbkb_zbkc_zbkx_zknd_zkne_zknh_zksed_zksh_" + "svinval_zicbom_zicboz", +--- a/src/gcc/config/riscv/riscv-v.cc ++++ b/src/gcc/config/riscv/riscv-v.cc +@@ -1458,7 +1458,7 @@ expand_const_vector (rtx target, rtx src) + rtx tmp2 = gen_reg_rtx (builder.mode ()); + rtx step + = simplify_binary_operation (MINUS, builder.inner_mode (), +- builder.elt (v.npatterns()), ++ builder.elt (builder.npatterns ()), + builder.elt (0)); + expand_vec_series (tmp2, const0_rtx, step, tmp1); + +@@ -1480,140 +1480,42 @@ expand_const_vector (rtx target, rtx src) + = rtx_to_poly_int64 (builder.elt (builder.npatterns () + 1)) + - rtx_to_poly_int64 (base2); + +- /* For { 1, 0, 2, 0, ... , n - 1, 0 }, we can use larger EEW +- integer vector mode to generate such vector efficiently. +- +- E.g. EEW = 16, { 2, 0, 4, 0, ... } +- +- can be interpreted into: +- +- EEW = 32, { 2, 4, ... }. +- +- Both the series1 and series2 may overflow before taking the IOR +- to generate the final result. However, only series1 matters +- because the series2 will shift before IOR, thus the overflow +- bits will never pollute the final result. +- +- For now we forbid the negative steps and overflow, and they +- will fall back to the default merge way to generate the +- const_vector. */ +- +- unsigned int new_smode_bitsize = builder.inner_bits_size () * 2; +- scalar_int_mode new_smode; +- machine_mode new_mode; +- poly_uint64 new_nunits +- = exact_div (GET_MODE_NUNITS (builder.mode ()), 2); +- +- poly_int64 base1_poly = rtx_to_poly_int64 (base1); +- bool overflow_smode_p = false; +- +- if (!step1.is_constant ()) +- overflow_smode_p = true; +- else +- { +- int elem_count = XVECLEN (src, 0); +- uint64_t step1_val = step1.to_constant (); +- uint64_t base1_val = base1_poly.to_constant (); +- uint64_t elem_val = base1_val + (elem_count - 1) * step1_val; +- +- if ((elem_val >> builder.inner_bits_size ()) != 0) +- overflow_smode_p = true; +- } +- +- if (known_ge (step1, 0) && known_ge (step2, 0) +- && int_mode_for_size (new_smode_bitsize, 0).exists (&new_smode) +- && get_vector_mode (new_smode, new_nunits).exists (&new_mode) +- && !overflow_smode_p) ++ rtx vid = gen_reg_rtx (mode); ++ expand_vec_series (vid, const0_rtx, const1_rtx); ++ /* Transform into { 0, 0, 1, 1, 2, 2, ... }. */ ++ rtx shifted_vid; ++ if (lra_in_progress) + { +- rtx tmp1 = gen_reg_rtx (new_mode); +- base1 = gen_int_mode (base1_poly, new_smode); +- expand_vec_series (tmp1, base1, gen_int_mode (step1, new_smode)); +- +- if (rtx_equal_p (base2, const0_rtx) && known_eq (step2, 0)) +- /* { 1, 0, 2, 0, ... }. */ +- emit_move_insn (result, gen_lowpart (mode, tmp1)); +- else if (known_eq (step2, 0)) +- { +- /* { 1, 1, 2, 1, ... }. */ +- rtx scalar = expand_simple_binop ( +- Xmode, ASHIFT, +- gen_int_mode (rtx_to_poly_int64 (base2), Xmode), +- gen_int_mode (builder.inner_bits_size (), Xmode), +- NULL_RTX, false, OPTAB_DIRECT); +- scalar = simplify_gen_subreg (new_smode, scalar, Xmode, 0); +- rtx tmp2 = gen_reg_rtx (new_mode); +- rtx ior_ops[] = {tmp2, tmp1, scalar}; +- emit_vlmax_insn (code_for_pred_scalar (IOR, new_mode), +- BINARY_OP, ior_ops); +- emit_move_insn (result, gen_lowpart (mode, tmp2)); +- } +- else +- { +- /* { 1, 3, 2, 6, ... }. */ +- rtx tmp2 = gen_reg_rtx (new_mode); +- base2 = gen_int_mode (rtx_to_poly_int64 (base2), new_smode); +- expand_vec_series (tmp2, base2, +- gen_int_mode (step2, new_smode)); +- rtx shifted_tmp2; +- rtx shift = gen_int_mode (builder.inner_bits_size (), Xmode); +- if (lra_in_progress) +- { +- shifted_tmp2 = gen_reg_rtx (new_mode); +- rtx shift_ops[] = {shifted_tmp2, tmp2, shift}; +- emit_vlmax_insn (code_for_pred_scalar +- (ASHIFT, new_mode), BINARY_OP, +- shift_ops); +- } +- else +- shifted_tmp2 = expand_simple_binop (new_mode, ASHIFT, tmp2, +- shift, NULL_RTX, false, +- OPTAB_DIRECT); +- rtx tmp3 = gen_reg_rtx (new_mode); +- rtx ior_ops[] = {tmp3, tmp1, shifted_tmp2}; +- emit_vlmax_insn (code_for_pred (IOR, new_mode), BINARY_OP, +- ior_ops); +- emit_move_insn (result, gen_lowpart (mode, tmp3)); +- } ++ shifted_vid = gen_reg_rtx (mode); ++ rtx shift = gen_int_mode (1, Xmode); ++ rtx shift_ops[] = {shifted_vid, vid, shift}; ++ emit_vlmax_insn (code_for_pred_scalar ++ (LSHIFTRT, mode), BINARY_OP, ++ shift_ops); + } + else +- { +- rtx vid = gen_reg_rtx (mode); +- expand_vec_series (vid, const0_rtx, const1_rtx); +- /* Transform into { 0, 0, 1, 1, 2, 2, ... }. */ +- rtx shifted_vid; +- if (lra_in_progress) +- { +- shifted_vid = gen_reg_rtx (mode); +- rtx shift = gen_int_mode (1, Xmode); +- rtx shift_ops[] = {shifted_vid, vid, shift}; +- emit_vlmax_insn (code_for_pred_scalar +- (LSHIFTRT, mode), BINARY_OP, +- shift_ops); +- } +- else +- shifted_vid = expand_simple_binop (mode, LSHIFTRT, vid, +- const1_rtx, NULL_RTX, +- false, OPTAB_DIRECT); +- rtx tmp1 = gen_reg_rtx (mode); +- rtx tmp2 = gen_reg_rtx (mode); +- expand_vec_series (tmp1, base1, +- gen_int_mode (step1, builder.inner_mode ()), +- shifted_vid); +- expand_vec_series (tmp2, base2, +- gen_int_mode (step2, builder.inner_mode ()), +- shifted_vid); +- +- /* Transform into { 0, 1, 0, 1, 0, 1, ... }. */ +- rtx and_vid = gen_reg_rtx (mode); +- rtx and_ops[] = {and_vid, vid, const1_rtx}; +- emit_vlmax_insn (code_for_pred_scalar (AND, mode), BINARY_OP, +- and_ops); +- rtx mask = gen_reg_rtx (builder.mask_mode ()); +- expand_vec_cmp (mask, EQ, and_vid, CONST1_RTX (mode)); +- +- rtx ops[] = {result, tmp1, tmp2, mask}; +- emit_vlmax_insn (code_for_pred_merge (mode), MERGE_OP, ops); +- } ++ shifted_vid = expand_simple_binop (mode, LSHIFTRT, vid, ++ const1_rtx, NULL_RTX, ++ false, OPTAB_DIRECT); ++ rtx tmp1 = gen_reg_rtx (mode); ++ rtx tmp2 = gen_reg_rtx (mode); ++ expand_vec_series (tmp1, base1, ++ gen_int_mode (step1, builder.inner_mode ()), ++ shifted_vid); ++ expand_vec_series (tmp2, base2, ++ gen_int_mode (step2, builder.inner_mode ()), ++ shifted_vid); ++ ++ /* Transform into { 0, 1, 0, 1, 0, 1, ... }. */ ++ rtx and_vid = gen_reg_rtx (mode); ++ rtx and_ops[] = {and_vid, vid, const1_rtx}; ++ emit_vlmax_insn (code_for_pred_scalar (AND, mode), BINARY_OP, ++ and_ops); ++ rtx mask = gen_reg_rtx (builder.mask_mode ()); ++ expand_vec_cmp (mask, EQ, and_vid, CONST1_RTX (mode)); ++ ++ rtx ops[] = {result, tmp1, tmp2, mask}; ++ emit_vlmax_insn (code_for_pred_merge (mode), MERGE_OP, ops); + } + else + /* TODO: We will enable more variable-length vector in the future. */ +@@ -4421,7 +4323,7 @@ prepare_gather_scatter (machine_mode vec_mode, machine_mode idx_mode, + bool is_load) + { + if (!is_load) +- return code_for_pred_indexed_store (UNSPEC_UNORDERED, vec_mode, idx_mode); ++ return code_for_pred_indexed_store (UNSPEC_ORDERED, vec_mode, idx_mode); + else + { + unsigned src_eew_bitsize = GET_MODE_BITSIZE (GET_MODE_INNER (idx_mode)); +--- a/src/gcc/config/riscv/riscv.cc ++++ b/src/gcc/config/riscv/riscv.cc +@@ -346,7 +346,7 @@ bool riscv_registering_builtins; + /* Index R is the smallest register class that contains register R. */ + const enum reg_class riscv_regno_to_class[FIRST_PSEUDO_REGISTER] = { + GR_REGS, GR_REGS, GR_REGS, GR_REGS, +- GR_REGS, GR_REGS, SIBCALL_REGS, SIBCALL_REGS, ++ GR_REGS, GR_REGS, JALR_REGS, SIBCALL_REGS, + JALR_REGS, JALR_REGS, SIBCALL_REGS, SIBCALL_REGS, + SIBCALL_REGS, SIBCALL_REGS, SIBCALL_REGS, SIBCALL_REGS, + SIBCALL_REGS, SIBCALL_REGS, JALR_REGS, JALR_REGS, +@@ -609,7 +609,7 @@ static const struct riscv_tune_param tt_ascalon_d8_tune_info = { + {COSTS_N_INSNS (3), COSTS_N_INSNS (3)}, /* int_mul */ + {COSTS_N_INSNS (13), COSTS_N_INSNS (13)}, /* int_div */ + 8, /* issue_rate */ +- 3, /* branch_cost */ ++ 4, /* branch_cost */ + 4, /* memory_cost */ + 4, /* fmv_cost */ + false, /* slow_unaligned_access */ +@@ -8512,9 +8512,8 @@ riscv_v_adjust_scalable_frame (rtx target, poly_int64 offset, bool epilogue) + very wrong) we tie the old and new stack pointer together. + The tie will expand to nothing but the optimizers will not touch + the instruction. */ +- insn = get_last_insn (); + rtx stack_ptr_copy = gen_rtx_REG (Pmode, RISCV_STACK_CLASH_VECTOR_CFA_REGNUM); +- emit_move_insn (stack_ptr_copy, stack_pointer_rtx); ++ insn = emit_move_insn (stack_ptr_copy, stack_pointer_rtx); + riscv_emit_stack_tie (stack_ptr_copy); + + /* We want the CFA independent of the stack pointer for the +--- a/src/gcc/config/riscv/riscv.h ++++ b/src/gcc/config/riscv/riscv.h +@@ -419,10 +419,11 @@ ASM_MISA_SPEC + + /* Registers used as temporaries in prologue/epilogue code. + +- The prologue registers mustn't conflict with any +- incoming arguments, the static chain pointer, or the frame pointer. +- The epilogue temporary mustn't conflict with the return registers, +- the frame pointer, the EH stack adjustment, or the EH data registers. */ ++ The prologue temporaries mustn't conflict with any incoming arguments, ++ the static chain pointer, or the frame pointer. ++ The epilogue temporaries mustn't conflict with the return registers, ++ the frame pointer, the EH stack adjustment, the EH data registers, or ++ any register in SIBCALL_REGS. */ + + #define RISCV_PROLOGUE_TEMP_REGNUM (GP_TEMP_FIRST) + #define RISCV_PROLOGUE_TEMP(MODE) gen_rtx_REG (MODE, RISCV_PROLOGUE_TEMP_REGNUM) +@@ -561,7 +562,7 @@ enum reg_class + #define REG_CLASS_CONTENTS \ + { \ + { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \ +- { 0xf003fcc0, 0x00000000, 0x00000000, 0x00000000 }, /* SIBCALL_REGS */ \ ++ { 0xf003fc80, 0x00000000, 0x00000000, 0x00000000 }, /* SIBCALL_REGS */ \ + { 0x0000ff00, 0x00000000, 0x00000000, 0x00000000 }, /* RVC_GR_REGS */ \ + { 0xffffffc0, 0x00000000, 0x00000000, 0x00000000 }, /* JALR_REGS */ \ + { 0xffffffff, 0x00000000, 0x00000000, 0x00000000 }, /* GR_REGS */ \ +--- a/src/gcc/config/riscv/vector-crypto.md ++++ b/src/gcc/config/riscv/vector-crypto.md +@@ -1,4 +1,3 @@ +-;; Machine description for the RISC-V Vector Crypto extensions. + ;; Copyright (C) 2024-2025 Free Software Foundation, Inc. + + ;; This file is part of GCC. +@@ -65,13 +64,32 @@ (define_int_attr vv_ins_name [(UNSPEC_VGMUL "gmul" ) (UNSPEC_VAESEFVV "aesef" + (UNSPEC_VAESDMVS "aesdm") (UNSPEC_VAESZVS "aesz" ) + (UNSPEC_VSM4RVV "sm4r" ) (UNSPEC_VSM4RVS "sm4r" )]) + ++;; vd overlapping vs2 is reserved for vaes*.vs and vsm4r.vs, but not ++;; for the .vv instructions. ++(define_int_attr vv_ins_con ++ [(UNSPEC_VGMUL "=vr") (UNSPEC_VAESEFVV "=vr") ++ (UNSPEC_VAESEMVV "=vr") (UNSPEC_VAESDFVV "=vr") ++ (UNSPEC_VAESDMVV "=vr") (UNSPEC_VAESEFVS "=&vr") ++ (UNSPEC_VAESEMVS "=&vr") (UNSPEC_VAESDFVS "=&vr") ++ (UNSPEC_VAESDMVS "=&vr") (UNSPEC_VAESZVS "=&vr") ++ (UNSPEC_VSM4RVV "=vr") (UNSPEC_VSM4RVS "=&vr")]) ++ + (define_int_attr vv_ins1_name [(UNSPEC_VGHSH "ghsh") (UNSPEC_VSHA2MS "sha2ms") + (UNSPEC_VSHA2CH "sha2ch") (UNSPEC_VSHA2CL "sha2cl")]) + ++;; vd overlapping vs1 or vs2 is reserved for vsha2*, but not for vghsh. ++(define_int_attr vv_ins1_con ++ [(UNSPEC_VGHSH "=vr") (UNSPEC_VSHA2MS "=&vr") ++ (UNSPEC_VSHA2CH "=&vr") (UNSPEC_VSHA2CL "=&vr")]) ++ + (define_int_attr vi_ins_name [(UNSPEC_VAESKF1 "aeskf1") (UNSPEC_VSM4K "sm4k")]) + + (define_int_attr vi_ins1_name [(UNSPEC_VAESKF2 "aeskf2") (UNSPEC_VSM3C "sm3c")]) + ++;; vd overlapping vs2 is reserved for vsm3c, but not for vaeskf2. ++(define_int_attr vi_ins1_con ++ [(UNSPEC_VAESKF2 "=vr") (UNSPEC_VSM3C "=&vr")]) ++ + (define_int_attr ins_type [(UNSPEC_VGMUL "vv") (UNSPEC_VAESEFVV "vv") + (UNSPEC_VAESEMVV "vv") (UNSPEC_VAESDFVV "vv") + (UNSPEC_VAESDMVV "vv") (UNSPEC_VAESEFVS "vs") +@@ -464,7 +482,7 @@ (define_insn "*pred_vclmul_extend_scalar" + ;; zvknh[ab] and zvkg instructions patterns. + ;; vsha2ms.vv vsha2ch.vv vsha2cl.vv vghsh.vv + (define_insn "@pred_v" +- [(set (match_operand:VQEXTI 0 "register_operand" "=vr") ++ [(set (match_operand:VQEXTI 0 "register_operand" "") + (if_then_else:VQEXTI + (unspec: + [(match_operand 4 "vector_length_operand" "rK") +@@ -487,7 +505,7 @@ (define_insn "@pred_v" + ;; vaesef.[vv,vs] vaesem.[vv,vs] vaesdf.[vv,vs] vaesdm.[vv,vs] + ;; vsm4r.[vv,vs] + (define_insn "@pred_crypto_vv" +- [(set (match_operand:VSI 0 "register_operand" "=vr") ++ [(set (match_operand:VSI 0 "register_operand" "") + (if_then_else:VSI + (unspec: + [(match_operand 3 "vector_length_operand" " rK") +@@ -615,7 +633,7 @@ (define_insn "@pred_crypto_vi_scalar" + + ;; vaeskf2.vi vsm3c.vi + (define_insn "@pred_vi_nomaskedoff_scalar" +- [(set (match_operand:VSI 0 "register_operand" "=vr") ++ [(set (match_operand:VSI 0 "register_operand" "") + (if_then_else:VSI + (unspec: + [(match_operand 4 "vector_length_operand" "rK") +@@ -636,7 +654,7 @@ (define_insn "@pred_vi_nomaskedoff_scalar" + ;; zvksh instructions patterns. + ;; vsm3me.vv + (define_insn "@pred_vsm3me" +- [(set (match_operand:VSI 0 "register_operand" "=vr, vr") ++ [(set (match_operand:VSI 0 "register_operand" "=&vr, &vr") + (if_then_else:VSI + (unspec: + [(match_operand 4 "vector_length_operand" " rK, rK") +--- a/src/gcc/config/riscv/vector.md ++++ b/src/gcc/config/riscv/vector.md +@@ -828,10 +828,10 @@ (define_attr "mode_idx" "" + (const_int 2) + + (eq_attr "type" "vstux,vstox,vssegts,vssegtux,vssegtox,vfcvtftoi,vfwcvtitof,vfwcvtftoi, +- vfwcvtftof,vmsfs,vired,viwred,vfredu,vfredo,vfwredu,vfwredo,vwsll") ++ vfwcvtftof,vmsfs,vired,viwred,vfredu,vfredo,vfwredu,vfwredo,vwsll,viwalu,vfwalu,viwmul,vfwmul") + (const_int 3) + +- (eq_attr "type" "viwalu,viwmul,viwmuladd,vfwalu,vfwmul,vfwmuladd") ++ (eq_attr "type" "viwmuladd,vfwmuladd") + (const_int 4)] + (const_int INVALID_ATTRIBUTE))) + +@@ -4095,7 +4095,6 @@ (define_insn "@pred_single_widen__scalar" + "TARGET_VECTOR" + "vw.wx\t%0,%3,%z4%p1" + [(set_attr "type" "vi") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred_single_widen_add_extended_scalar" +@@ -4118,7 +4117,6 @@ (define_insn "@pred_single_widen_add_extended_scalar" + "TARGET_VECTOR" + "vwadd.wx\t%0,%3,%z4%p1" + [(set_attr "type" "viwalu") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred_single_widen_sub_extended_scalar" +@@ -4141,7 +4139,6 @@ (define_insn "@pred_single_widen_sub_extended_scalar" + "TARGET_VECTOR" + "vwsub.wx\t%0,%3,%z4%p1" + [(set_attr "type" "viwalu") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred_widen_mulsu" +@@ -4362,7 +4359,6 @@ (define_insn "@pred__scalar" + "TARGET_VECTOR" + "v.vx\t%0,%3,%4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred__scalar" +@@ -4384,7 +4380,6 @@ (define_insn "@pred__scalar" + "TARGET_VECTOR" + "v.vx\t%0,%3,%4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_expand "@pred__scalar" +@@ -4439,7 +4434,6 @@ (define_insn "*pred__scalar" + "TARGET_VECTOR" + "v.vx\t%0,%3,%4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "*pred__extended_scalar" +@@ -4462,7 +4456,6 @@ (define_insn "*pred__extended_scalar" + "TARGET_VECTOR && !TARGET_64BIT" + "v.vx\t%0,%3,%4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_expand "@pred__scalar" +@@ -4517,7 +4510,6 @@ (define_insn "*pred__scalar" + "TARGET_VECTOR" + "v.vx\t%0,%3,%z4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "*pred__extended_scalar" +@@ -4540,7 +4532,6 @@ (define_insn "*pred__extended_scalar" + "TARGET_VECTOR && !TARGET_64BIT" + "v.vx\t%0,%3,%z4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred_" +@@ -4586,7 +4577,6 @@ (define_insn "@pred__scalar" + "TARGET_VECTOR" + "v.vx\t%0,%3,%z4%p1" + [(set_attr "type" "") +- (set_attr "mode_idx" "3") + (set_attr "mode" "")]) + + (define_insn "@pred__scalar" +@@ -7078,7 +7068,7 @@ (define_insn "@pred_dual_widen__scalar" + [(set_attr "type" "vf") + (set_attr "mode" "") + (set (attr "frm_mode") +- (symbol_ref "riscv_vector::get_frm_mode (operands[9])"))]) ++ (symbol_ref "riscv_vector::get_frm_mode (operands[9])"))]) + + (define_insn "@pred_single_widen_add" + [(set (match_operand:VWEXTF 0 "register_operand" "=&vr, &vr") +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -564,7 +564,8 @@ extern int dot_symbols; + + /* Enable using prefixed PC-relative addressing on POWER10 if the ABI + supports it. The ELF v2 ABI only supports PC-relative relocations for +- the medium code model. */ ++ the medium/large code models. */ + #define PCREL_SUPPORTED_BY_OS (TARGET_POWER10 && TARGET_PREFIXED \ + && ELFv2_ABI_CHECK \ +- && TARGET_CMODEL == CMODEL_MEDIUM) ++ && (TARGET_CMODEL == CMODEL_MEDIUM \ ++ || TARGET_CMODEL == CMODEL_LARGE)) +--- a/src/gcc/config/rs6000/rs6000-builtin.cc ++++ b/src/gcc/config/rs6000/rs6000-builtin.cc +@@ -756,6 +756,21 @@ rs6000_init_builtins (void) + else + ieee128_float_type_node = NULL_TREE; + ++ /* PTImode to get even/odd register pairs. */ ++ if (TARGET_POWERPC64) ++ { ++ intPTI_type_internal_node = make_signed_type (GET_MODE_BITSIZE (PTImode)); ++ SET_TYPE_MODE (intPTI_type_internal_node, PTImode); ++ t = build_qualified_type (intPTI_type_internal_node, TYPE_QUAL_CONST); ++ lang_hooks.types.register_builtin_type (intPTI_type_internal_node, ++ "__pti_internal"); ++ ++ uintPTI_type_internal_node = make_unsigned_type (GET_MODE_BITSIZE (PTImode)); ++ SET_TYPE_MODE (uintPTI_type_internal_node, PTImode); ++ t = build_qualified_type (uintPTI_type_internal_node, TYPE_QUAL_CONST); ++ lang_hooks.types.register_builtin_type (uintPTI_type_internal_node, ++ "__upti_internal"); ++ } + /* Vector pair and vector quad support. */ + vector_pair_type_node = make_node (OPAQUE_TYPE); + SET_TYPE_MODE (vector_pair_type_node, OOmode); +@@ -3284,6 +3299,116 @@ rs6000_expand_builtin (tree exp, rtx target, rtx /* subtarget */, + return expand_call (exp, target, ignore); + } + ++ if (fcode == RS6000_BIF_PPC_ATOMIC_CAS_QI ++ || fcode == RS6000_BIF_PPC_ATOMIC_CAS_HI ++ || fcode == RS6000_BIF_PPC_ATOMIC_CAS_SI ++ || fcode == RS6000_BIF_PPC_ATOMIC_CAS_DI ++ || fcode == RS6000_BIF_PPC_ATOMIC_CAS_TI) ++ { ++ machine_mode mode; // Get mode based on BIF ID (QImode, SImode, etc.) ++ ++ switch (fcode) ++ { ++ case RS6000_BIF_PPC_ATOMIC_CAS_QI: ++ mode = QImode; ++ icode = CODE_FOR_atomic_compare_and_swap_localqi; ++ break; ++ case RS6000_BIF_PPC_ATOMIC_CAS_HI: ++ mode = HImode; ++ icode = CODE_FOR_atomic_compare_and_swap_localhi; ++ break; ++ case RS6000_BIF_PPC_ATOMIC_CAS_SI: ++ mode = SImode; ++ icode = CODE_FOR_atomic_compare_and_swap_localsi; ++ break; ++ case RS6000_BIF_PPC_ATOMIC_CAS_DI: ++ mode = DImode; ++ icode = CODE_FOR_atomic_compare_and_swap_localdi; ++ break; ++ case RS6000_BIF_PPC_ATOMIC_CAS_TI: ++ mode = TImode; ++ icode = CODE_FOR_atomic_compare_and_swap_localti; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ // For arg 0 (ptr to data) ++ rtx ptr = expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX, Pmode, ++ EXPAND_SUM); ++ ptr = convert_memory_address (Pmode, ptr); ++ rtx mem = gen_rtx_MEM (mode, ptr); ++ ++ // For arg 1 (expected ptr) ++ rtx exp_ptr = expand_expr (CALL_EXPR_ARG (exp, 1), NULL_RTX, Pmode, ++ EXPAND_SUM); ++ exp_ptr = convert_memory_address (Pmode, exp_ptr); ++ rtx expected_val = gen_reg_rtx (mode); ++ emit_move_insn (expected_val, gen_rtx_MEM (mode, exp_ptr)); ++ ++ // For arg 2 (desired ptr) ++ rtx desired_ptr = expand_expr (CALL_EXPR_ARG (exp, 2), NULL_RTX, Pmode, ++ EXPAND_SUM); ++ desired_ptr = convert_memory_address (Pmode, desired_ptr); ++ rtx desired_val = gen_reg_rtx (mode); ++ emit_move_insn (desired_val, gen_rtx_MEM (mode, desired_ptr)); ++ ++ // Args 3, 4, 5: weak, succ, fail (constants) ++ rtx weak = expand_normal (CALL_EXPR_ARG (exp, 3)); ++ rtx succ = expand_normal (CALL_EXPR_ARG (exp, 4)); ++ rtx fail = expand_normal (CALL_EXPR_ARG (exp, 5)); ++ ++ // 0: Boolean return (Output) ++ struct expand_operand ops[8]; ++ // Make sure we always have a place for bool operand. ++ if (target == const0_rtx || !target) ++ target = gen_reg_rtx (SImode); ++ ++ create_output_operand (&ops[0], target, SImode); ++ ++ // 1: Old value return (Output) ++ rtx old_val = gen_reg_rtx (mode); ++ create_output_operand (&ops[1], old_val, mode); ++ ++ // 2: The Memory (Fixed/Input - it's a MEM rtx) ++ // We use create_fixed_operand because it's a specific MEM location ++ create_fixed_operand (&ops[2], mem); ++ ++ // 3: Expected Value (Input) ++ create_input_operand (&ops[3], expected_val, mode); ++ ++ // 4: Desired Value (Input) ++ create_input_operand (&ops[4], desired_val, mode); ++ ++ // 5, 6, 7: Weak, Success, Failure (Immediate/Constants) ++ create_input_operand (&ops[5], weak, SImode); ++ create_input_operand (&ops[6], succ, SImode); ++ create_input_operand (&ops[7], fail, SImode); ++ ++ // Now call expand_insn with the ops array ++ if (!maybe_expand_insn (icode, 8, ops)) ++ error ("invalid arguments to builtin"); ++ ++ // Create a label for the end of the function. ++ rtx done_label = gen_label_rtx (); ++ ++ /* Standard Semantics: Update 'expected' ONLY on failure. ++ If target (the boolean result) is NOT 0, the CAS succeeded. ++ In the case of success, we jump straight to the end. */ ++ ++ // If target != 0 (Success), skip the store. ++ emit_cmp_and_jump_insns (target, const0_rtx, NE, NULL_RTX, ++ SImode, 1, done_label); ++ ++ // FAILURE PATH: This code runs only if target == 0. ++ rtx expected_mem = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, exp_ptr)); ++ emit_move_insn (expected_mem, old_val); ++ ++ emit_label (done_label); ++ ++ return target; ++ } ++ + if (bif_is_nosoft (*bifaddr) + && rs6000_isa_flags & OPTION_MASK_SOFT_FLOAT) + { +--- a/src/gcc/config/rs6000/rs6000-builtins.def ++++ b/src/gcc/config/rs6000/rs6000-builtins.def +@@ -246,6 +246,23 @@ + const double __builtin_unpack_longdouble (long double, const int<1>); + UNPACK_TF unpacktf {ibmld} + ++; Builtins for ppc specific atomic compare exchange ++ bool __builtin_ppc_atomic_cas_local_qi (char *, char *, char *, const int, \ ++ const int, const int); ++ PPC_ATOMIC_CAS_QI nothing {} ++ bool __builtin_ppc_atomic_cas_local_hi (short *, short *, short *, \ ++ const int, const int, const int); ++ PPC_ATOMIC_CAS_HI nothing {} ++ bool __builtin_ppc_atomic_cas_local_si (int *, int *, int *, const int, \ ++ const int, const int); ++ PPC_ATOMIC_CAS_SI nothing {} ++ bool __builtin_ppc_atomic_cas_local_di (long long *, long long *, \ ++ long long *, const int, const int, \ ++ const int); ++ PPC_ATOMIC_CAS_DI nothing {} ++ bool __builtin_ppc_atomic_cas_local_ti (__int128 *, __int128 *, __int128 *, \ ++ const int, const int, const int); ++ PPC_ATOMIC_CAS_TI nothing {} + + ; Builtins that have been around just about forever, but not quite. + [power5] +--- a/src/gcc/config/rs6000/rs6000-c.cc ++++ b/src/gcc/config/rs6000/rs6000-c.cc +@@ -927,7 +927,7 @@ altivec_build_resolved_builtin (tree *args, int n, tree fntype, tree ret_type, + + /* If the number of arguments to an overloaded function increases, + we must expand this switch. */ +- gcc_assert (MAX_OVLD_ARGS <= 4); ++ gcc_assert (MAX_OVLD_ARGS <= 6); + + tree call; + switch (n) +@@ -947,6 +947,10 @@ altivec_build_resolved_builtin (tree *args, int n, tree fntype, tree ret_type, + case 4: + call = build_call_expr (fndecl, 4, args[0], args[1], args[2], args[3]); + break; ++ case 6: ++ call = build_call_expr (fndecl, 6, args[0], args[1], args[2], args[3], ++ args[4], args[5]); ++ break; + default: + gcc_unreachable (); + } +@@ -1708,11 +1712,143 @@ find_instance (bool *unsupported_builtin, int *instance, + + tree + altivec_resolve_overloaded_builtin (location_t loc, tree fndecl, +- void *passed_arglist, bool) ++ void *passed_arglist, bool complain) + { + rs6000_gen_builtins fcode + = (rs6000_gen_builtins) DECL_MD_FUNCTION_CODE (fndecl); + ++ /* Handle __builtin_ppc_atomic_cas_local before standard overload ++ processing. */ ++ if (fcode == RS6000_OVLD_PPC_ATOMIC_CAS) ++ { ++ vec *arglist ++ = static_cast *> (passed_arglist); ++ ++ /* Expected: (void *ptr, void *expected, void *desired, ++ bool weak, int success_order, int failure_order). */ ++ if (vec_safe_length (arglist) != 6) ++ { ++ if (complain) ++ error_at (loc, "%qE requires 6 arguments", fndecl); ++ return error_mark_node; ++ } ++ unsigned HOST_WIDE_INT size; ++ for (int i=0; i<3; i++) { ++ /* Get the first argument to determine the actual type. */ ++ tree arg0 = (*arglist)[i]; ++ tree type0 = TREE_TYPE (arg0); ++ ++ /* Must be a pointer. */ ++ if (!POINTER_TYPE_P (type0)) ++ { ++ if (complain) ++ error_at (loc, "argument %d to %qE must be a pointer", ++ i + 1, fndecl); ++ return error_mark_node; ++ } ++ ++ /* Get the pointee type. */ ++ tree pointee_type = TREE_TYPE (type0); ++ ++ /* Must be a complete type. */ ++ if (!COMPLETE_TYPE_P (pointee_type)) ++ { ++ if (complain) ++ error_at (loc, "argument %d to %qE must point to a complete" ++ " type", i + 1, fndecl); ++ return error_mark_node; ++ } ++ if (FUNCTION_POINTER_TYPE_P (type0)) ++ { ++ if (complain) ++ error_at (loc, "argument %d to %qE must not be a pointer to a" ++ " function", i + 1, fndecl); ++ return error_mark_node; ++ } ++ ++ /* Get size in bytes. */ ++ tree size_tree = TYPE_SIZE_UNIT (pointee_type); ++ if (!tree_fits_uhwi_p (size_tree)) ++ { ++ if (complain) ++ error_at (loc, "type size must be constant"); ++ return error_mark_node; ++ } ++ if (i > 0 && size != tree_to_uhwi (size_tree)) { ++ if (complain) ++ error_at(loc, "size mismatch in argument %d", i + 1); ++ return error_mark_node; ++ } ++ size = tree_to_uhwi (size_tree); ++ } ++ ++ /* Determine which size-specific builtin to use. */ ++ rs6000_gen_builtins target_fcode; ++ tree int_type; ++ ++ switch (size) ++ { ++ case 1: ++ target_fcode = RS6000_BIF_PPC_ATOMIC_CAS_QI; ++ int_type = unsigned_char_type_node; ++ break; ++ case 2: ++ target_fcode = RS6000_BIF_PPC_ATOMIC_CAS_HI; ++ int_type = short_unsigned_type_node; ++ break; ++ case 4: ++ target_fcode = RS6000_BIF_PPC_ATOMIC_CAS_SI; ++ int_type = unsigned_intSI_type_node; ++ break; ++ case 8: ++ target_fcode = RS6000_BIF_PPC_ATOMIC_CAS_DI; ++ int_type = long_long_unsigned_type_node; ++ break; ++ case 16: ++ if (!TARGET_QUAD_MEMORY_ATOMIC) ++ { ++ if (complain) ++ error_at (loc, "%qE requires the %qs option for 16-byte operands", ++ fndecl, "-mquad-memory-atomic"); ++ return error_mark_node; ++ } ++ target_fcode = RS6000_BIF_PPC_ATOMIC_CAS_TI; ++ int_type = unsigned_intTI_type_node; ++ break; ++ default: ++ if (complain) ++ error_at (loc, "size %wu not supported for %qE " ++ "(must be 1, 2, 4, 8, or 16 bytes)", size, fndecl); ++ return error_mark_node; ++ } ++ ++ /* Create pointer type to the appropriate integer type. */ ++ tree int_ptr_type = build_pointer_type (int_type); ++ ++ /* Cast the three pointer arguments to the appropriate integer ++ pointer type. */ ++ tree new_arg0 = build1 (VIEW_CONVERT_EXPR, int_ptr_type, (*arglist)[0]); ++ tree new_arg1 = build1 (VIEW_CONVERT_EXPR, int_ptr_type, (*arglist)[1]); ++ tree new_arg2 = build1 (VIEW_CONVERT_EXPR, int_ptr_type, (*arglist)[2]); ++ ++ /* Build new argument list with casted pointers. */ ++ vec *new_arglist; ++ vec_alloc (new_arglist, 6); ++ new_arglist->quick_push (new_arg0); ++ new_arglist->quick_push (new_arg1); ++ new_arglist->quick_push (new_arg2); ++ new_arglist->quick_push ((*arglist)[3]); /* weak (bool). */ ++ new_arglist->quick_push ((*arglist)[4]); /* success_memorder. */ ++ new_arglist->quick_push ((*arglist)[5]); /* failure_memorder. */ ++ ++ /* Get the target builtin function. */ ++ tree new_fndecl = rs6000_builtin_decls[target_fcode]; ++ ++ /* Build and return the function call. */ ++ return build_function_call_vec (loc, vNULL, new_fndecl, new_arglist, ++ NULL, fndecl); ++ } ++ + /* Return immediately if this isn't an overload. */ + if (fcode <= RS6000_OVLD_NONE) + return NULL_TREE; +--- a/src/gcc/config/rs6000/rs6000-overload.def ++++ b/src/gcc/config/rs6000/rs6000-overload.def +@@ -79,6 +79,14 @@ + ; a semicolon are also treated as blank lines. + + ++; The following function is not overloaded, but is internally substituted by ++; __builtin_ppc_atomic_cas_local_{qi,hi,si,di,ti} based on the first 3 ++; arguments. ++[PPC_ATOMIC_CAS, SKIP, __builtin_ppc_atomic_cas_local] ++ bool __builtin_ppc_atomic_cas_local (void *, void *, void *, const int, \ ++ const int, const int); ++ PPC_ATOMIC_CAS_QI PPC_ATOMIC_CAS_FAKERY ++ + [BCDADD, __builtin_bcdadd, __builtin_vec_bcdadd] + vsq __builtin_vec_bcdadd (vsq, vsq, const int); + BCDADD_V1TI +--- a/src/gcc/config/rs6000/rs6000-protos.h ++++ b/src/gcc/config/rs6000/rs6000-protos.h +@@ -127,7 +127,7 @@ extern bool rs6000_emit_set_const (rtx, rtx); + extern bool rs6000_emit_cmove (rtx, rtx, rtx, rtx); + extern bool rs6000_emit_int_cmove (rtx, rtx, rtx, rtx); + extern void rs6000_emit_minmax (rtx, enum rtx_code, rtx, rtx); +-extern void rs6000_expand_atomic_compare_and_swap (rtx op[]); ++extern void rs6000_expand_atomic_compare_and_swap (rtx op[], bool local); + extern rtx swap_endian_selector_for_mode (machine_mode mode); + + extern void rs6000_expand_atomic_exchange (rtx op[]); +--- a/src/gcc/config/rs6000/rs6000.cc ++++ b/src/gcc/config/rs6000/rs6000.cc +@@ -4361,12 +4361,15 @@ rs6000_option_override_internal (bool global_init_p) + && (rs6000_isa_flags_explicit & OPTION_MASK_PCREL) == 0) + rs6000_isa_flags |= OPTION_MASK_PCREL; + +- /* -mpcrel requires -mcmodel=medium, but we can't check TARGET_CMODEL until +- after the subtarget override options are done. */ +- else if (TARGET_PCREL && TARGET_CMODEL != CMODEL_MEDIUM) ++ /* -mpcrel requires medium or large code models, but we can't check ++ TARGET_CMODEL until after the subtarget override options are done. */ ++ else if (TARGET_PCREL ++ && TARGET_CMODEL != CMODEL_MEDIUM ++ && TARGET_CMODEL != CMODEL_LARGE) + { + if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0) +- error ("%qs requires %qs", "-mpcrel", "-mcmodel=medium"); ++ error ("%qs requires %qs or %qs", "-mpcrel", "-mcmodel=medium", ++ "-mcmodel=large"); + + rs6000_isa_flags &= ~OPTION_MASK_PCREL; + } +@@ -16735,12 +16738,13 @@ emit_unlikely_jump (rtx cond, rtx label) + + /* A subroutine of the atomic operation splitters. Emit a load-locked + instruction in MODE. For QI/HImode, possibly use a pattern than includes +- the zero_extend operation. */ ++ the zero_extend operation. LOCAL indicates the EH bit value for the ++ load-locked instruction. */ + + static void +-emit_load_locked (machine_mode mode, rtx reg, rtx mem) ++emit_load_locked (machine_mode mode, rtx reg, rtx mem, rtx local) + { +- rtx (*fn) (rtx, rtx) = NULL; ++ rtx (*fn) (rtx, rtx, rtx) = NULL; + + switch (mode) + { +@@ -16767,7 +16771,7 @@ emit_load_locked (machine_mode mode, rtx reg, rtx mem) + default: + gcc_unreachable (); + } +- emit_insn (fn (reg, mem)); ++ emit_insn (fn (reg, mem, local)); + } + + /* A subroutine of the atomic operation splitters. Emit a store-conditional +@@ -16937,7 +16941,7 @@ rs6000_finish_atomic_subword (rtx narrow, rtx wide, rtx shift) + /* Expand an atomic compare and swap operation. */ + + void +-rs6000_expand_atomic_compare_and_swap (rtx operands[]) ++rs6000_expand_atomic_compare_and_swap (rtx operands[], bool local) + { + rtx boolval, retval, mem, oldval, newval, cond; + rtx label1, label2, x, mask, shift; +@@ -17000,7 +17004,7 @@ rs6000_expand_atomic_compare_and_swap (rtx operands[]) + } + label2 = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ()); + +- emit_load_locked (mode, retval, mem); ++ emit_load_locked (mode, retval, mem, local ? const1_rtx : const0_rtx); + + x = retval; + if (mask) +@@ -17098,7 +17102,7 @@ rs6000_expand_atomic_exchange (rtx operands[]) + label = gen_rtx_LABEL_REF (VOIDmode, gen_label_rtx ()); + emit_label (XEXP (label, 0)); + +- emit_load_locked (mode, retval, mem); ++ emit_load_locked (mode, retval, mem, const0_rtx); + + x = val; + if (mask) +@@ -17203,7 +17207,7 @@ rs6000_expand_atomic_op (enum rtx_code code, rtx mem, rtx val, + if (before == NULL_RTX) + before = gen_reg_rtx (mode); + +- emit_load_locked (mode, before, mem); ++ emit_load_locked (mode, before, mem, const0_rtx); + + if (code == NOT) + { +@@ -21346,7 +21350,7 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl) + ASM_OUTPUT_TYPE_DIRECTIVE (file, name, "function"); + ASM_DECLARE_RESULT (file, DECL_RESULT (decl)); + +- if (TARGET_CMODEL == CMODEL_LARGE ++ if (TARGET_CMODEL == CMODEL_LARGE && !TARGET_PCREL + && rs6000_global_entry_point_prologue_needed_p ()) + { + char buf[256]; +--- a/src/gcc/config/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.h +@@ -532,9 +532,13 @@ extern int rs6000_vector_align[]; + || TARGET_VSX \ + || TARGET_HARD_FLOAT) + +-/* E500 cores only support plain "sync", not lwsync. */ ++/* E500 and MPC8xx cores require all should-be-zero bits in sync to ++ actually be zero; using lwsync (L=1) causes a fault on these cores. ++ Classic cores (601, 603, 604, 750 etc.) simply ignore the L field ++ and always do a full hwsync. */ + #define TARGET_NO_LWSYNC (rs6000_cpu == PROCESSOR_PPC8540 \ +- || rs6000_cpu == PROCESSOR_PPC8548) ++ || rs6000_cpu == PROCESSOR_PPC8548 \ ++ || rs6000_cpu == PROCESSOR_MPCCORE) + + + /* Which machine supports the various reciprocal estimate instructions. */ +@@ -2285,6 +2289,8 @@ enum rs6000_builtin_type_index + RS6000_BTI_ptr_vector_quad, + RS6000_BTI_ptr_long_long, + RS6000_BTI_ptr_long_long_unsigned, ++ RS6000_BTI_INTPTI, ++ RS6000_BTI_UINTPTI, + RS6000_BTI_MAX + }; + +@@ -2329,6 +2335,8 @@ enum rs6000_builtin_type_index + #define uintDI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTDI]) + #define intTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTTI]) + #define uintTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTTI]) ++#define intPTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_INTPTI]) ++#define uintPTI_type_internal_node (rs6000_builtin_types[RS6000_BTI_UINTPTI]) + #define float_type_internal_node (rs6000_builtin_types[RS6000_BTI_float]) + #define double_type_internal_node (rs6000_builtin_types[RS6000_BTI_double]) + #define long_double_type_internal_node (rs6000_builtin_types[RS6000_BTI_long_double]) +--- a/src/gcc/config/rs6000/rs6000.md ++++ b/src/gcc/config/rs6000/rs6000.md +@@ -970,6 +970,75 @@ (define_insn_and_split "*zero_extendhi2_dot2" + (set_attr "length" "4,8")]) + + ++;; On power10, optimize zero extending a QI/HI/SI/DImode value from memory that ++;; is going to a vector register target by generating a LXVR{B,H,W,D}X ++;; instruction without creating the TImode value in a GPR and using MTVSRDD to ++;; move it to the vector register. ++(define_peephole2 ++ [(set (match_operand:DI 0 "int_reg_operand") ++ (match_operand:DI 1 "memory_operand")) ++ (set (match_operand:DI 2 "base_reg_operand") ++ (const_int 0)) ++ (set (match_operand:TI 3 "vsx_register_operand") ++ (match_operand:TI 4 "int_reg_operand"))] ++ "TARGET_POWER10 && TARGET_POWERPC64 ++ && (reg_or_subregno (operands[0]) ++ == reg_or_subregno (operands[4]) + !!WORDS_BIG_ENDIAN) ++ && (reg_or_subregno (operands[2]) ++ == reg_or_subregno (operands[4]) + !WORDS_BIG_ENDIAN) ++ && peep2_reg_dead_p (3, operands[4]) ++ && (REG_P (XEXP (operands[1], 0)) ++ || SUBREG_P (XEXP (operands[1], 0)) ++ || GET_CODE (XEXP (operands[1], 0)) == PLUS)" ++ [(set (match_dup 3) ++ (zero_extend:TI (match_dup 5)))] ++{ ++ rtx mem = operands[1]; ++ rtx addr = XEXP (mem, 0); ++ ++ if (indexed_or_indirect_address (addr, DImode)) ++ operands[5] = mem; ++ else ++ { ++ rtx op2 = operands[2]; ++ emit_insn (gen_rtx_SET (op2, addr)); ++ operands[5] = change_address (mem, DImode, op2); ++ } ++}) ++ ++(define_peephole2 ++ [(set (match_operand:DI 0 "int_reg_operand") ++ (zero_extend:DI ++ (match_operand:QHSI 1 "memory_operand"))) ++ (set (match_operand:DI 2 "base_reg_operand") ++ (const_int 0)) ++ (set (match_operand:TI 3 "vsx_register_operand") ++ (match_operand:TI 4 "int_reg_operand"))] ++ "TARGET_POWER10 && TARGET_POWERPC64 ++ && (reg_or_subregno (operands[0]) ++ == reg_or_subregno (operands[4]) + !!WORDS_BIG_ENDIAN) ++ && (reg_or_subregno (operands[2]) ++ == reg_or_subregno (operands[4]) + !WORDS_BIG_ENDIAN) ++ && peep2_reg_dead_p (3, operands[4]) ++ && (REG_P (XEXP (operands[1], 0)) ++ || SUBREG_P (XEXP (operands[1], 0)) ++ || GET_CODE (XEXP (operands[1], 0)) == PLUS)" ++ [(set (match_dup 3) ++ (zero_extend:TI (match_dup 5)))] ++{ ++ rtx mem = operands[1]; ++ rtx addr = XEXP (mem, 0); ++ ++ if (indexed_or_indirect_address (addr, DImode)) ++ operands[5] = mem; ++ else ++ { ++ rtx op2 = operands[2]; ++ emit_insn (gen_rtx_SET (op2, addr)); ++ operands[5] = change_address (mem, DImode, op2); ++ } ++}) ++ + (define_insn "zero_extendsi2" + [(set (match_operand:EXTSI 0 "gpc_reg_operand" "=r,r,d,wa,wa,r,wa") + (zero_extend:EXTSI (match_operand:SI 1 "reg_or_mem_operand" "m,r,?Z,?Z,r,wa,wa")))] +--- a/src/gcc/config/rs6000/sync.md ++++ b/src/gcc/config/rs6000/sync.md +@@ -198,6 +198,57 @@ (define_expand "atomic_load" + DONE; + }) + ++;; PTI and TI are both 128-bit modes; the following conversions are ++;; register-class changes only, no actual truncation, sign or zero ++;; extension occurs. ++(define_insn_and_split "trunctipti2" ++ [(set (match_operand:PTI 0 "register_operand" "=r,r") ++ (truncate:PTI (match_operand:TI 1 "register_operand" "0,r")))] ++ "TARGET_POWERPC64" ++ "#" ++ "&& reload_completed" ++ [(set (match_dup 2) (match_dup 4)) ++ (set (match_dup 3) (match_dup 5))] ++{ ++ operands[2] = gen_lowpart (DImode, operands[0]); ++ operands[3] = gen_highpart (DImode, operands[0]); ++ operands[4] = gen_lowpart (DImode, operands[1]); ++ operands[5] = gen_highpart (DImode, operands[1]); ++} ++[(set_attr "length" "0,8")]) ++ ++(define_insn_and_split "extendptiti2" ++ [(set (match_operand:TI 0 "register_operand" "=r,r") ++ (sign_extend:TI (match_operand:PTI 1 "register_operand" "0,r")))] ++ "TARGET_POWERPC64" ++ "#" ++ "&& reload_completed" ++ [(set (match_dup 2) (match_dup 4)) ++ (set (match_dup 3) (match_dup 5))] ++{ ++ operands[2] = gen_lowpart (DImode, operands[0]); ++ operands[3] = gen_highpart (DImode, operands[0]); ++ operands[4] = gen_lowpart (DImode, operands[1]); ++ operands[5] = gen_highpart (DImode, operands[1]); ++} ++[(set_attr "length" "0,8")]) ++ ++(define_insn_and_split "zero_extendptiti2" ++ [(set (match_operand:TI 0 "register_operand" "=r,r") ++ (zero_extend:TI (match_operand:PTI 1 "register_operand" "0,r")))] ++ "TARGET_POWERPC64" ++ "#" ++ "&& reload_completed" ++ [(set (match_dup 2) (match_dup 4)) ++ (set (match_dup 3) (match_dup 5))] ++{ ++ operands[2] = gen_lowpart (DImode, operands[0]); ++ operands[3] = gen_highpart (DImode, operands[0]); ++ operands[4] = gen_lowpart (DImode, operands[1]); ++ operands[5] = gen_highpart (DImode, operands[1]); ++} ++[(set_attr "length" "0,8")]) ++ + ;; If TARGET_PREFIXED, always use pstq rather than stq. + (define_insn "store_quadpti" + [(set (match_operand:PTI 0 "quad_memory_operand" "=wQ") +@@ -278,17 +329,19 @@ (define_mode_iterator ATOMIC [(QI "TARGET_SYNC_HI_QI") + (define_insn "load_locked" + [(set (match_operand:ATOMIC 0 "int_reg_operand" "=r") + (unspec_volatile:ATOMIC +- [(match_operand:ATOMIC 1 "memory_operand" "Z")] UNSPECV_LL))] ++ [(match_operand:ATOMIC 1 "memory_operand" "Z") ++ (match_operand:QI 2 "u1bit_cint_operand" "n")] UNSPECV_LL))] + "" +- " %0,%y1" ++ " %0,%y1,%2" + [(set_attr "type" "load_l")]) + + (define_insn "load_locked_si" + [(set (match_operand:SI 0 "int_reg_operand" "=r") + (unspec_volatile:SI +- [(match_operand:QHI 1 "memory_operand" "Z")] UNSPECV_LL))] ++ [(match_operand:QHI 1 "memory_operand" "Z") ++ (match_operand:QI 2 "u1bit_cint_operand" "n")] UNSPECV_LL))] + "TARGET_SYNC_HI_QI" +- " %0,%y1" ++ " %0,%y1,%2" + [(set_attr "type" "load_l")]) + + ;; Use PTImode to get even/odd register pairs. +@@ -302,7 +355,8 @@ (define_insn "load_locked_si" + + (define_expand "load_lockedti" + [(use (match_operand:TI 0 "quad_int_reg_operand")) +- (use (match_operand:TI 1 "memory_operand"))] ++ (use (match_operand:TI 1 "memory_operand")) ++ (use (match_operand:QI 2 "u1bit_cint_operand"))] + "TARGET_SYNC_TI" + { + rtx op0 = operands[0]; +@@ -316,7 +370,7 @@ (define_expand "load_lockedti" + operands[1] = op1 = change_address (op1, TImode, new_addr); + } + +- emit_insn (gen_load_lockedpti (pti, op1)); ++ emit_insn (gen_load_lockedpti (pti, op1, operands[2])); + if (WORDS_BIG_ENDIAN) + emit_move_insn (op0, gen_lowpart (TImode, pti)); + else +@@ -330,11 +384,12 @@ (define_expand "load_lockedti" + (define_insn "load_lockedpti" + [(set (match_operand:PTI 0 "quad_int_reg_operand" "=&r") + (unspec_volatile:PTI +- [(match_operand:TI 1 "indexed_or_indirect_operand" "Z")] UNSPECV_LL))] ++ [(match_operand:TI 1 "indexed_or_indirect_operand" "Z") ++ (match_operand:QI 2 "u1bit_cint_operand" "n")] UNSPECV_LL))] + "TARGET_SYNC_TI + && !reg_mentioned_p (operands[0], operands[1]) + && quad_int_reg_operand (operands[0], PTImode)" +- "lqarx %0,%y1" ++ "lqarx %0,%y1,%2" + [(set_attr "type" "load_l") + (set_attr "size" "128")]) + +@@ -411,7 +466,22 @@ (define_expand "atomic_compare_and_swap" + (match_operand:SI 7 "const_int_operand")] ;; model fail + "" + { +- rs6000_expand_atomic_compare_and_swap (operands); ++ rs6000_expand_atomic_compare_and_swap (operands, false); ++ DONE; ++}) ++ ++(define_expand "atomic_compare_and_swap_local" ++ [(match_operand:SI 0 "int_reg_operand") ;; bool out ++ (match_operand:AINT 1 "int_reg_operand") ;; val out ++ (match_operand:AINT 2 "memory_operand") ;; memory ++ (match_operand:AINT 3 "reg_or_short_operand") ;; expected ++ (match_operand:AINT 4 "int_reg_operand") ;; desired ++ (match_operand:SI 5 "const_int_operand") ;; is_weak ++ (match_operand:SI 6 "const_int_operand") ;; model succ ++ (match_operand:SI 7 "const_int_operand")] ;; model fail ++ "" ++{ ++ rs6000_expand_atomic_compare_and_swap (operands, true); + DONE; + }) + +--- a/src/gcc/config/rs6000/vsx.md ++++ b/src/gcc/config/rs6000/vsx.md +@@ -4798,6 +4798,24 @@ (define_insn "vsx_splat__mem" + "lxvdsx %x0,%y1" + [(set_attr "type" "vecload")]) + ++;; Optimize SPLAT of an extract from a V2DF/V2DI vector with a constant element ++(define_insn "*vsx_splat_extract_" ++ [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa") ++ (vec_duplicate:VSX_D ++ (vec_select: ++ (match_operand:VSX_D 1 "vsx_register_operand" "wa") ++ (parallel [(match_operand 2 "const_0_to_1_operand" "n")]))))] ++ "VECTOR_MEM_VSX_P (mode)" ++{ ++ int which_word = INTVAL (operands[2]); ++ if (!BYTES_BIG_ENDIAN) ++ which_word = 1 - which_word; ++ ++ operands[3] = GEN_INT (which_word ? 3 : 0); ++ return "xxpermdi %x0,%x1,%x1,%3"; ++} ++ [(set_attr "type" "vecperm")]) ++ + ;; V4SI splat support + (define_insn "vsx_splat_v4si" + [(set (match_operand:V4SI 0 "vsx_register_operand" "=wa,wa") +@@ -6264,7 +6282,7 @@ (define_constants + (SFBOOL_MFVSR_A 3) ;; move to gpr src + (SFBOOL_BOOL_D 4) ;; and/ior/xor dest + (SFBOOL_BOOL_A1 5) ;; and/ior/xor arg1 +- (SFBOOL_BOOL_A2 6) ;; and/ior/xor arg1 ++ (SFBOOL_BOOL_A2 6) ;; and/ior/xor arg2 + (SFBOOL_SHL_D 7) ;; shift left dest + (SFBOOL_SHL_A 8) ;; shift left arg + (SFBOOL_MTVSR_D 9) ;; move to vecter dest +@@ -6304,18 +6322,18 @@ (define_constants + ;; GPR, and instead move the integer mask value to the vector register after a + ;; shift and do the VSX logical operation. + +-;; The insns for dealing with SFmode in GPR registers looks like: ++;; The insns for dealing with SFmode in GPR registers looks like on power8: + ;; (set (reg:V4SF reg2) (unspec:V4SF [(reg:SF reg1)] UNSPEC_VSX_CVDPSPN)) + ;; +-;; (set (reg:DI reg3) (unspec:DI [(reg:V4SF reg2)] UNSPEC_P8V_RELOAD_FROM_VSX)) ++;; (set (reg:DI reg3) (zero_extend:DI (reg:SI reg2))) + ;; +-;; (set (reg:DI reg4) (and:DI (reg:DI reg3) (reg:DI reg3))) ++;; (set (reg:DI reg4) (and:SI (reg:SI reg3) (reg:SI mask))) + ;; + ;; (set (reg:DI reg5) (ashift:DI (reg:DI reg4) (const_int 32))) + ;; + ;; (set (reg:SF reg6) (unspec:SF [(reg:DI reg5)] UNSPEC_P8V_MTVSRD)) + ;; +-;; (set (reg:SF reg6) (unspec:SF [(reg:SF reg6)] UNSPEC_VSX_CVSPDPN)) ++;; (set (reg:SF reg7) (unspec:SF [(reg:SF reg6)] UNSPEC_VSX_CVSPDPN)) + + (define_peephole2 + [(match_scratch:DI SFBOOL_TMP_GPR "r") +@@ -6396,6 +6414,138 @@ (define_peephole2 + operands[SFBOOL_MTVSR_D_V4SF] = gen_rtx_REG (V4SFmode, regno_mtvsr_d); + }) + ++;; Constants for SFbool optimization on power9/power10 ++(define_constants ++ [(SFBOOL2_TMP_VSX_V4SI 0) ;; vector temporary (V4SI) ++ (SFBOOL2_TMP_GPR_SI 1) ;; GPR temporary (SI) ++ (SFBOOL2_MFVSR_D 2) ;; move to gpr dest (DI) ++ (SFBOOL2_MFVSR_A 3) ;; move to gpr src (SI) ++ (SFBOOL2_BOOL_D 4) ;; and/ior/xor dest (SI) ++ (SFBOOL2_BOOL_A1 5) ;; and/ior/xor arg1 (SI) ++ (SFBOOL2_BOOL_A2 6) ;; and/ior/xor arg2 (SI) ++ (SFBOOL2_SPLAT_D 7) ;; splat dest (V4SI) ++ (SFBOOL2_MTVSR_D 8) ;; move/splat to VSX dest. ++ (SFBOOL2_MTVSR_A 9) ;; move/splat to VSX arg. ++ (SFBOOL2_MFVSR_A_V4SI 10) ;; MFVSR_A as V4SI ++ (SFBOOL2_MTVSR_D_V4SI 11) ;; MTVSR_D as V4SI ++ (SFBOOL2_XXSPLTW 12)]) ;; 1 or 3 for XXSPLTW ++ ++;; On power9/power10, the code is different because we have a splat 32-bit ++;; operation that does a direct move to the FPR/vector registers (MTVSRWS). ++;; ++;; The insns for dealing with SFmode in GPR registers looks like on ++;; power9/power10: ++;; ++;; (set (reg:V4SF reg2) (unspec:V4SF [(reg:SF reg1)] UNSPEC_VSX_CVDPSPN)) ++;; ++;; (set (reg:DI reg3) (zero_extend:DI (reg:SI reg2))) ++;; ++;; (set (reg:SI reg4) (and:SI (reg:SI reg3) (reg:SI mask))) ++;; ++;; (set (reg:V4SI reg5) (vec_duplicate:V4SI (reg:SI reg4))) ++;; ++;; (set (reg:SF reg6) (unspec:SF [(reg:SF reg5)] UNSPEC_VSX_CVSPDPN)) ++ ++;; The VSX temporary needs to be an Altivec register in case we are trying to ++;; do and/ior/xor of -16..15 and we want to use VSPLTISW to load the constant. ++;; ++;; The GPR temporary is only used if we are trying to do a logical operation ++;; with a constant outside of the -16..15 range on a power9. Otherwise, we can ++;; load the constant directly into the VSX temporary register. ++ ++(define_peephole2 ++ [(match_scratch:V4SI SFBOOL2_TMP_VSX_V4SI "v") ++ (match_scratch:SI SFBOOL2_TMP_GPR_SI "r") ++ ++ ;; Zero_extend and direct move ++ (set (match_operand:DI SFBOOL2_MFVSR_D "int_reg_operand") ++ (zero_extend:DI ++ (match_operand:SI SFBOOL2_MFVSR_A "vsx_register_operand"))) ++ ++ ;; AND/IOR/XOR operation on int ++ (set (match_operand:SI SFBOOL2_BOOL_D "int_reg_operand") ++ (and_ior_xor:SI ++ (match_operand:SI SFBOOL2_BOOL_A1 "int_reg_operand") ++ (match_operand:SI SFBOOL2_BOOL_A2 "reg_or_cint_operand"))) ++ ++ ;; Splat sfbool result to vector register ++ (set (match_operand:V4SI SFBOOL2_SPLAT_D "vsx_register_operand") ++ (vec_duplicate:V4SI ++ (match_dup SFBOOL2_BOOL_D)))] ++ ++ "TARGET_POWERPC64 && TARGET_P9_VECTOR ++ && REG_P (operands[SFBOOL2_MFVSR_D]) ++ && REG_P (operands[SFBOOL2_BOOL_A1]) ++ && (REGNO (operands[SFBOOL2_MFVSR_D]) == REGNO (operands[SFBOOL2_BOOL_A1]) ++ || (REG_P (operands[SFBOOL2_BOOL_A2]) ++ && (REGNO (operands[SFBOOL2_MFVSR_D]) ++ == REGNO (operands[SFBOOL2_BOOL_A2])))) ++ && peep2_reg_dead_p (3, operands[SFBOOL2_MFVSR_D]) ++ && peep2_reg_dead_p (4, operands[SFBOOL2_BOOL_D])" ++ ++ ;; Either (set (reg:SI xxx) (reg:SI yyy)) or ++ ;; (set (reg:V4SI xxx) (const_vector (parallel [c, c, c, c]))) ++ [(set (match_dup SFBOOL2_MTVSR_D) ++ (match_dup SFBOOL2_MTVSR_A)) ++ ++ ;; And/ior/xor on vector registers ++ (set (match_dup SFBOOL2_TMP_VSX_V4SI) ++ (and_ior_xor:V4SI ++ (match_dup SFBOOL2_MFVSR_A_V4SI) ++ (match_dup SFBOOL2_TMP_VSX_V4SI))) ++ ++ ;; XXSPLTW t,r,r,1 ++ (set (match_dup SFBOOL2_SPLAT_D) ++ (vec_duplicate:V4SI ++ (vec_select:SI ++ (match_dup SFBOOL2_TMP_VSX_V4SI) ++ (parallel [(match_dup SFBOOL2_XXSPLTW)]))))] ++{ ++ rtx mfvsr_d = operands[SFBOOL2_MFVSR_D]; ++ rtx bool_a1 = operands[SFBOOL2_BOOL_A1]; ++ rtx bool_a2 = operands[SFBOOL2_BOOL_A2]; ++ rtx bool_arg = (rtx_equal_p (mfvsr_d, bool_a1) ? bool_a2 : bool_a1); ++ int regno_mfvsr_a = REGNO (operands[SFBOOL2_MFVSR_A]); ++ int regno_tmp_vsx = REGNO (operands[SFBOOL2_TMP_VSX_V4SI]); ++ ++ /* If the logical operation is a constant, form the constant in a vector ++ register. */ ++ if (CONST_INT_P (bool_arg)) ++ { ++ HOST_WIDE_INT value = INTVAL (bool_arg); ++ ++ /* See if we can directly load the constant, either by VSPLTIW or by ++ XXSPLTIW on power10. */ ++ ++ if (IN_RANGE (value, -16, 15) || TARGET_PREFIXED) ++ { ++ rtvec cv = gen_rtvec (4, bool_arg, bool_arg, bool_arg, bool_arg); ++ operands[SFBOOL2_MTVSR_D] = gen_rtx_REG (V4SImode, regno_tmp_vsx); ++ operands[SFBOOL2_MTVSR_A] = gen_rtx_CONST_VECTOR (V4SImode, cv); ++ } ++ ++ else ++ { ++ /* We need to load up the constant to a GPR and move it to a ++ vector register. */ ++ rtx tmp_gpr = operands[SFBOOL2_TMP_GPR_SI]; ++ emit_move_insn (tmp_gpr, bool_arg); ++ operands[SFBOOL2_MTVSR_D] = gen_rtx_REG (SImode, regno_tmp_vsx); ++ operands[SFBOOL2_MTVSR_A] = tmp_gpr; ++ } ++ } ++ else ++ { ++ /* Mask is in a register, move it to a vector register. */ ++ operands[SFBOOL2_MTVSR_D] = gen_rtx_REG (SImode, regno_tmp_vsx); ++ operands[SFBOOL2_MTVSR_A] = bool_arg; ++ } ++ ++ operands[SFBOOL2_TMP_VSX_V4SI] = gen_rtx_REG (V4SImode, regno_tmp_vsx); ++ operands[SFBOOL2_MFVSR_A_V4SI] = gen_rtx_REG (V4SImode, regno_mfvsr_a); ++ operands[SFBOOL2_XXSPLTW] = GEN_INT (BYTES_BIG_ENDIAN ? 1 : 2); ++}) ++ + ;; Support signed/unsigned long long to float conversion vectorization. + ;; Note that any_float (pc) here is just for code attribute . + (define_expand "vec_pack_float_v2di" +--- a/src/gcc/config/s390/s390.cc ++++ b/src/gcc/config/s390/s390.cc +@@ -3944,13 +3944,15 @@ s390_rtx_costs (rtx x, machine_mode mode, int outer_code, + case MEM: + *total = 0; + return true; +- case SET: { ++ case SET: ++ { + rtx dst = SET_DEST (x); + rtx src = SET_SRC (x); + + switch (GET_CODE (src)) + { +- case IF_THEN_ELSE: { ++ case IF_THEN_ELSE: ++ { + /* Without this a conditional move instruction would be + accounted as 3 * COSTS_N_INSNS (set, if_then_else, + comparison operator). That's a bit pessimistic. */ +@@ -3959,6 +3961,12 @@ s390_rtx_costs (rtx x, machine_mode mode, int outer_code, + return false; + + rtx cond = XEXP (src, 0); ++ /* Intermediate RTXs may have a non-compare condition as e.g. a ++ constant like r108={(0x1)?r113:r109} which get folded later ++ on. */ ++ if (GET_RTX_CLASS (GET_CODE (cond)) != RTX_COMPARE ++ && GET_RTX_CLASS (GET_CODE (cond)) != RTX_COMM_COMPARE) ++ return false; + if (!CC_REG_P (XEXP (cond, 0)) || !CONST_INT_P (XEXP (cond, 1))) + return false; + +@@ -4017,7 +4025,8 @@ s390_rtx_costs (rtx x, machine_mode mode, int outer_code, + /* Otherwise just cost the src. */ + *total += rtx_cost (src, mode, SET, 1, speed); + return true; +- case MEM: { ++ case MEM: ++ { + rtx address = XEXP (dst, 0); + rtx tmp; + HOST_WIDE_INT tmp2; +--- a/src/gcc/config/s390/s390.md ++++ b/src/gcc/config/s390/s390.md +@@ -7119,7 +7119,9 @@ (define_expand "usubc5" + else + { + rtx tmp = gen_reg_rtx (mode); +- emit_insn (gen_xor3 (tmp, operands[4], const1_rtx)); ++ emit_insn (gen_xor3 (tmp, CONSTANT_P (operands[4]) ++ ? force_reg (mode, operands[4]) ++ : operands[4], const1_rtx)); + rtx slb_cond = s390_emit_compare (mode, LEU, tmp, const0_rtx); + emit_insn (gen_sub3_slb_borrow1_cc (operands[0], operands[2], operands[3], slb_cond)); + } +@@ -8007,8 +8009,23 @@ (define_insn "*extzv__srl" + " + /* Note that even for the SImode pattern, the rotate is always DImode. */ + && s390_extzv_shift_ok (, -INTVAL (operands[2]), +- INTVAL (operands[3]))" +- "\t%0,%1,%3,128+%3,64-%2" ++ INTVAL (operands[3])) ++ /* Ensure that we end up with a non-zero bitmask. */ ++ && (mode == DImode ++ ? ((UINTVAL (operands[3]) << UINTVAL (operands[2])) >> UINTVAL (operands[2])) > 0 ++ : (((unsigned int)UINTVAL (operands[3]) << UINTVAL (operands[2])) >> UINTVAL (operands[2])) > 0)" ++{ ++ unsigned HOST_WIDE_INT shiftamount = UINTVAL (operands[2]); ++ unsigned HOST_WIDE_INT bitmask = UINTVAL (operands[3]); ++ /* Clear the higher bits of the mask which overlap with the vacated bits of ++ the shift. */ ++ if (mode == DImode) ++ bitmask = (bitmask << shiftamount) >> shiftamount; ++ else ++ bitmask = ((unsigned int)bitmask << shiftamount) >> shiftamount; ++ operands[3] = GEN_INT (bitmask); ++ return "\t%0,%1,%3,128+%3,64-%2"; ++} + [(set_attr "op_type" "RIE") + (set_attr "z10prop" "z10_super_E1")]) + +@@ -8020,8 +8037,18 @@ (define_insn "*extzv__sll" + (match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))] + " + && s390_extzv_shift_ok (, INTVAL (operands[2]), +- INTVAL (operands[3]))" +- "\t%0,%1,%3,128+%3,%2" ++ INTVAL (operands[3])) ++ /* Ensure that we end up with a non-zero bitmask. */ ++ && ((UINTVAL (operands[3]) >> UINTVAL (operands[2])) << UINTVAL (operands[2])) > 0" ++{ ++ unsigned HOST_WIDE_INT shiftamount = UINTVAL (operands[2]); ++ unsigned HOST_WIDE_INT bitmask = UINTVAL (operands[3]); ++ /* Clear the lower bits of the mask which overlap with the vacated bits of ++ the shift. */ ++ bitmask = (bitmask >> shiftamount) << shiftamount; ++ operands[3] = GEN_INT (bitmask); ++ return "\t%0,%1,%3,128+%3,%2"; ++} + [(set_attr "op_type" "RIE") + (set_attr "z10prop" "z10_super_E1")]) + +@@ -10023,6 +10050,7 @@ (define_insn_and_split "*brx_stage1_" + (pc))) + (set (match_operand:GPR 4 "nonimmediate_operand" "") + (plus:GPR (match_dup 1) (match_dup 2))) ++ (clobber (reg:CC CC_REGNUM)) + (clobber (match_scratch:GPR 5 ""))] + "" + "#" +--- a/src/gcc/config/sh/sh.md ++++ b/src/gcc/config/sh/sh.md +@@ -1563,7 +1563,10 @@ (define_insn "addc" + (match_operand:SI 2 "arith_reg_operand" "r")) + (reg:SI T_REG))) + (set (reg:SI T_REG) +- (ltu:SI (plus:SI (match_dup 1) (match_dup 2)) (match_dup 1)))] ++ (gtu:SI (plus:DI (plus:DI (zero_extend:DI (match_dup 1)) ++ (zero_extend:DI (match_dup 2))) ++ (zero_extend:DI (reg:SI T_REG))) ++ (const_int 4294967295)))] + "TARGET_SH1" + "addc %2,%0" + [(set_attr "type" "arith")]) +@@ -1955,9 +1958,9 @@ (define_insn "subc" + (match_operand:SI 2 "arith_reg_operand" "r")) + (reg:SI T_REG))) + (set (reg:SI T_REG) +- (gtu:SI (minus:SI (minus:SI (match_dup 1) (match_dup 2)) +- (reg:SI T_REG)) +- (match_dup 1)))] ++ (gtu:SI (plus:DI (zero_extend:DI (match_dup 2)) ++ (zero_extend:DI (reg:SI T_REG))) ++ (zero_extend:DI (match_dup 1))))] + "TARGET_SH1" + "subc %2,%0" + [(set_attr "type" "arith")]) +--- a/src/gcc/config/t-openbsd ++++ b/src/gcc/config/t-openbsd +@@ -1,5 +1,6 @@ +-# We don't need GCC's own include files. +-USER_H = $(EXTRA_HEADERS) ++# We need stdatomic.h from GCC's include files. ++USER_H = $(srcdir)/ginclude/stdatomic.h \ ++ $(EXTRA_HEADERS) + + # OpenBSD-specific D support. + openbsd-d.o: $(srcdir)/config/openbsd-d.cc +--- a/src/gcc/cp/ChangeLog ++++ b/src/gcc/cp/ChangeLog +@@ -1,3 +1,77 @@ ++2026-09-03 Patrick Palka ++ ++ Backported from master: ++ 2026-08-14 Patrick Palka ++ ++ PR c++/126483 ++ * typeck2.cc (store_init_value): Check maybe_constexpr_fn ++ instead of DECL_DECLARED_CONSTEXPR_P of the function scope. ++ ++2026-09-03 Patrick Palka ++ ++ Backported from master: ++ 2026-07-25 Patrick Palka ++ ++ PR c++/126280 ++ * pt.cc (mark_template_arguments_used): Split out loop into ... ++ (mark_template_arguments_used_1): ... here. Recurse into ++ argument packs. ++ ++2026-08-10 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-31 Torbjörn SVENSSON ++ ++ PR c++/124806 ++ * module.cc (elf_out::began): New data member. ++ (elf_out::begin): Set it after successful initialization. ++ (elf_out::end): Do not finalize output that never began. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-13 Torbjörn SVENSSON ++ ++ PR driver/124058 ++ * decl.cc (maybe_prepare_return_this): Use OPT_Wuse_after_free_. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-03 Jakub Jelinek ++ ++ PR c++/126057 ++ * decl.cc (cp_finish_decomp): Set assembler name to ++ during error recovery whenever TREE_STATIC ++ rather than just DECL_NAMESPACE_SCOPE_P. ++ * pt.cc (tsubst_stmt): If tsubst_decomp_names fails, ++ set assembler name to . ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-12 Jakub Jelinek ++ ++ PR c++/125674 ++ * pt.cc (tsubst_decl): Diagnose bit-field widths ++ with invalid type. ++ ++2026-07-10 Alexandre Oliva ++ ++ Backported from master: ++ 2026-04-03 Alexandre Oliva ++ ++ * coroutines.cc (cp_coroutine_transform::build_ramp_function): ++ Zero-initialize refcount. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-05-04 Andrew Pinski ++ ++ PR c++/65271 ++ * parser.cc (cp_parser_class_specifier): Accept &&. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/cp/coroutines.cc ++++ b/src/gcc/cp/coroutines.cc +@@ -5119,7 +5119,9 @@ cp_coroutine_transform::build_ramp_function () + tree coro_frame_refcount + = coro_build_and_push_artificial_var_with_dve (loc, coro_frame_refcount_id, + short_unsigned_type_node, +- orig_fn_decl, NULL_TREE, ++ orig_fn_decl, ++ build_int_cst ++ (short_unsigned_type_node, 0), + deref_fp); + /* Cleanup if both the ramp and the body have finished. */ + tree cond +--- a/src/gcc/cp/decl.cc ++++ b/src/gcc/cp/decl.cc +@@ -9837,7 +9837,7 @@ cp_finish_decomp (tree decl, cp_decomp *decomp, bool test_p) + } + first = DECL_CHAIN (first); + } +- if (DECL_P (decl) && DECL_NAMESPACE_SCOPE_P (decl)) ++ if (DECL_P (decl) && TREE_STATIC (decl)) + SET_DECL_ASSEMBLER_NAME (decl, get_identifier ("")); + return false; + } +@@ -18948,7 +18948,7 @@ maybe_prepare_return_this (tree cdtor) + if (targetm.cxx.cdtor_returns_this ()) + if (tree val = DECL_ARGUMENTS (cdtor)) + { +- suppress_warning (val, OPT_Wuse_after_free); ++ suppress_warning (val, OPT_Wuse_after_free_); + return val; + } + +--- a/src/gcc/cp/module.cc ++++ b/src/gcc/cp/module.cc +@@ -1505,6 +1505,7 @@ class elf_out : public elf, public data::allocator { + private: + ptr_int_hash_map identtab; /* Map of IDENTIFIERS to strtab offsets. */ + unsigned pos; /* Write position in file. */ ++ bool began; /* True if begin initialized output state. */ + #if MAPPED_WRITING + unsigned offset; /* Offset of the mapping. */ + unsigned extent; /* Length of mapping. */ +@@ -1513,7 +1514,7 @@ private: + + public: + elf_out (int fd, int e) +- :parent (fd, e), identtab (500), pos (0) ++ :parent (fd, e), identtab (500), pos (0), began (false) + { + #if MAPPED_WRITING + offset = extent = 0; +@@ -2225,7 +2226,10 @@ elf_out::begin () + memset (h, 0, sizeof (header)); + hdr.pos = hdr.size; + write (hdr); +- return !get_error (); ++ if (get_error ()) ++ return false; ++ began = true; ++ return true; + } + + /* Finish writing the file. Write out the string & section tables. +@@ -2234,7 +2238,7 @@ elf_out::begin () + bool + elf_out::end () + { +- if (fd >= 0) ++ if (fd >= 0 && began) + { + /* Write the string table. */ + unsigned strnam = name (".strtab"); +--- a/src/gcc/cp/parser.cc ++++ b/src/gcc/cp/parser.cc +@@ -27634,6 +27634,7 @@ cp_parser_class_specifier (cp_parser* parser) + case CPP_SEMICOLON: + case CPP_MULT: + case CPP_AND: ++ case CPP_AND_AND: + case CPP_OPEN_PAREN: + case CPP_CLOSE_PAREN: + case CPP_COMMA: +--- a/src/gcc/cp/pt.cc ++++ b/src/gcc/cp/pt.cc +@@ -225,6 +225,7 @@ static bool uses_outer_template_parms (tree); + static tree alias_ctad_tweaks (tree, tree); + static tree inherited_ctad_tweaks (tree, tree, tsubst_flags_t); + static tree deduction_guides_for (tree, bool&, tsubst_flags_t); ++static void mark_template_arguments_used_1 (tree); + + /* Make the current scope suitable for access checking when we are + processing T. T can be FUNCTION_DECL for instantiated function +@@ -15634,11 +15635,26 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain, + cp_apply_type_quals_to_decl (cp_type_quals (type), r); + + if (DECL_C_BIT_FIELD (r)) +- /* For bit-fields, DECL_BIT_FIELD_REPRESENTATIVE gives the +- number of bits. */ +- DECL_BIT_FIELD_REPRESENTATIVE (r) +- = tsubst_expr (DECL_BIT_FIELD_REPRESENTATIVE (t), args, +- complain, in_decl); ++ { ++ /* For bit-fields, DECL_BIT_FIELD_REPRESENTATIVE gives the ++ number of bits. */ ++ tree width ++ = tsubst_expr (DECL_BIT_FIELD_REPRESENTATIVE (t), args, ++ complain, in_decl); ++ if (width ++ && width != error_mark_node ++ && !type_dependent_expression_p (width) ++ && !INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P ++ (TREE_TYPE (width))) ++ { ++ if (complain & tf_error) ++ error_at (DECL_SOURCE_LOCATION (t), ++ "width of bit-field %qD has non-integral " ++ "type %qT", r, TREE_TYPE (width)); ++ RETURN (error_mark_node); ++ } ++ DECL_BIT_FIELD_REPRESENTATIVE (r) = width; ++ } + if (DECL_INITIAL (t)) + { + /* Set up DECL_TEMPLATE_INFO so that we can get at the +@@ -19126,7 +19142,15 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl) + if (tsubst_decomp_names (decl, pattern_decl, args, + complain, in_decl, decomp) + == error_mark_node) +- decomp = NULL; ++ { ++ decomp = NULL; ++ /* As in cp_finish_decomp. */ ++ if (TREE_STATIC (decl)) ++ { ++ tree id = get_identifier (""); ++ SET_DECL_ASSEMBLER_NAME (decl, id); ++ } ++ } + } + + init = tsubst_init (init, decl, args, complain, in_decl); +@@ -22641,6 +22665,14 @@ mark_template_arguments_used (tree tmpl, tree args) + /* We already marked outer arguments when specializing the context. */ + args = INNERMOST_TEMPLATE_ARGS (args); + ++ mark_template_arguments_used_1 (args); ++} ++ ++/* Main recursive part of the above. */ ++ ++static void ++mark_template_arguments_used_1 (tree args) ++{ + for (tree arg : tree_vec_range (args)) + { + /* A (pointer/reference to) function or variable NTTP argument. */ +@@ -22681,6 +22713,8 @@ mark_template_arguments_used (tree tmpl, tree args) + cp_walk_tree_without_duplicates (&DECL_INITIAL (arg), + mark_used_r, nullptr); + } ++ else if (TREE_CODE (arg) == NONTYPE_ARGUMENT_PACK) ++ mark_template_arguments_used_1 (ARGUMENT_PACK_ARGS (arg)); + } + } + +--- a/src/gcc/cp/typeck2.cc ++++ b/src/gcc/cp/typeck2.cc +@@ -931,7 +931,7 @@ store_init_value (tree decl, tree init, vec** cleanups, int flags) + that might fold away something that needs to be diagnosed at constexpr + evaluation time. */ + if (!current_function_decl +- || !DECL_DECLARED_CONSTEXPR_P (current_function_decl) ++ || !maybe_constexpr_fn (current_function_decl) + || TREE_STATIC (decl)) + value = cp_fully_fold_init (value); + +--- a/src/gcc/expmed.cc ++++ b/src/gcc/expmed.cc +@@ -5395,6 +5395,9 @@ make_tree (tree type, rtx x) + t = wide_int_to_tree (type, rtx_mode_t (x, TYPE_MODE (type))); + return t; + ++ case CONST_POLY_INT: ++ return wide_int_to_tree (type, const_poly_int_value (x)); ++ + case CONST_DOUBLE: + STATIC_ASSERT (HOST_BITS_PER_WIDE_INT * 2 <= MAX_BITSIZE_MODE_ANY_INT); + if (TARGET_SUPPORTS_WIDE_INT == 0 && GET_MODE (x) == VOIDmode) +@@ -5486,9 +5489,6 @@ make_tree (tree type, rtx x) + /* fall through. */ + + default: +- if (CONST_POLY_INT_P (x)) +- return wide_int_to_tree (t, const_poly_int_value (x)); +- + t = build_decl (RTL_LOCATION (x), VAR_DECL, NULL_TREE, type); + + /* If TYPE is a POINTER_TYPE, we might need to convert X from +--- a/src/gcc/ext-dce.cc ++++ b/src/gcc/ext-dce.cc +@@ -498,7 +498,23 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x) + if (mask == 0) + return 0; + +- enum machine_mode mode = GET_MODE_INNER (GET_MODE (x)); ++ /* Consider a vector operation, the bits live are the element bits live ++ broadcasted across the vector. So there can be holes (consider a ++ logical shift). ++ ++ Vector modes aren't likely to represent cases we can optimize with ++ any regularity. It seems sensible to just punt that case in a ++ conservatively correct way. ++ ++ The conservatively corect choice here would be to return the mode ++ mask for the outer mode. We're already doing that for modes larger ++ than HOST_BITS_PER_WIDE_INT, so it should be safe for larger vectors ++ as well as something like V2HI. */ ++ if (VECTOR_MODE_P (GET_MODE (x)) || COMPLEX_MODE_P (GET_MODE (x))) ++ return GET_MODE_MASK (GET_MODE (x)); ++ ++ ++ enum machine_mode mode = GET_MODE (x); + unsigned HOST_WIDE_INT mmask = GET_MODE_MASK (mode); + + /* While we don't try to optimize operations on types larger +@@ -572,6 +588,11 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x) + || !GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0))).is_constant ()) + return -1; + ++ /* See note about vector modes near the start of this function. */ ++ if (VECTOR_MODE_P (GET_MODE (XEXP (x, 0))) ++ || COMPLEX_MODE_P (GET_MODE (XEXP (x, 0)))) ++ return GET_MODE_MASK (GET_MODE (XEXP (x, 0))); ++ + /* We want the mode of the inner object. We need to ensure its + sign bit is on in MASK. */ + mode = GET_MODE_INNER (GET_MODE (XEXP (x, 0))); +@@ -707,7 +728,7 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj, + { + rtx inner = XEXP (src, 0); + unsigned HOST_WIDE_INT src_mask +- = GET_MODE_MASK (GET_MODE_INNER (GET_MODE (inner))); ++ = GET_MODE_MASK (GET_MODE (inner)); + + /* DST_MASK could be zero if we had something in the SET + that we couldn't handle. */ +@@ -805,8 +826,7 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj, + propagate destination liveness through, then just + set the mask to the mode's mask. */ + if (!safe_for_live_propagation (code)) +- tmp_mask +- = GET_MODE_MASK (GET_MODE_INNER (GET_MODE (y))); ++ tmp_mask = GET_MODE_MASK (GET_MODE (y)); + + if (tmp_mask & 0xff) + bitmap_set_bit (livenow, rn); +--- a/src/gcc/fortran/ChangeLog ++++ b/src/gcc/fortran/ChangeLog +@@ -1,3 +1,170 @@ ++2026-08-26 Harald Anlauf ++ ++ Backported from master: ++ 2026-07-08 Harald Anlauf ++ ++ PR fortran/126127 ++ * interface.cc (find_symtree0): Check for NULL pointer. ++ (gfc_find_sym_in_symtree): Also search user-defined operator list ++ when the symbol refers to a function. ++ ++2026-08-16 Paul Thomas ++ ++ Backported from master: ++ 2026-03-27 Paul Thomas ++ ++ PR fortran/114021 ++ * symbol.cc (gfc_get_unique_symtree): If the namespace argument ++ is NULL, allocate a new symtree and provide it with the unique ++ name. ++ * trans-expr.cc (trans_scalar_assign): In the deep copy of a ++ derived type with allocatable components, fix the rhs value if ++ it is not a constant or a variable. ++ * trans-stmt.cc (gfc_trans_allocate): Do not deallocate ++ allocatable components of a source that is not a variable and ++ is a pointer. If the DECL_NAME or its IDENTIFIER_POINTER are ++ null,use gfc_get_unique_symtree with NULL namespace to obtain a ++ symtree for the assignment. ++ ++2026-08-08 Paul Thomas ++ ++ Backported from master: ++ 2026-02-03 Paul Thomas ++ ++ PR fortran/123952 ++ * symbol.cc (gfc_copy_dummy_sym): Ensure that external, array ++ valued destination symbols have the correct interface so that ++ conflicts do not arise when adding attributes. ++ ++2026-08-08 Paul Thomas ++ ++ Backported from master: ++ 2026-05-23 Paul Thomas ++ ++ PR fortran/125263 ++ * trans-expr.cc (gfc_trans_assignment_1): Pass scalar class to ++ derived type assignment expressions to gfc_trans_scalar_assign. ++ ++2026-08-05 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-28 Jerry DeLisle ++ ++ PR fortran/125866 ++ * expr.cc (is_CFI_desc): Add check for proc_name. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-27 Jakub Jelinek ++ ++ PR fortran/126303 ++ * frontend-passes.cc (inner_loop_may_be_skipped): If inner loop iterator ++ is not integral, return true. ++ ++2026-07-27 Thomas Koenig ++ ++ Backported from master: ++ 2026-07-26 Thomas Koenig ++ ++ PR fortran/126386 ++ * frontend-passes.cc (matmul_lhs_realloc): Fix size calculation of ++ A2B1 case. ++ ++2026-07-20 Mikael Morin ++ ++ Backported from master: ++ 2026-07-03 Mikael Morin ++ ++ PR fortran/97592 ++ PR fortran/125998 ++ * trans-array.cc (gfc_conv_array_parameter): Always create a new ++ descriptor. Copy lbound and ubound from the original descriptor ++ using matching dimension indexes. Recalculate stride and ++ offset. ++ ++2026-07-12 Paul Thomas ++ ++ Backported from master: ++ 2026-05-07 Paul Thomas ++ ++ PR fortran/125172 ++ * resolve.cc (gfc_fixup_inferred_type_refs): Update kind for ++ INQUIRY_RE and INQUIRY_IM references on inferred complex ++ associate-name. ++ (resolve_variable): For an inferred-type associate-name with ++ no subobject ref, refresh e->ts from sym->ts. ++ (resolve_assoc_var): For an inferred-type complex/character ++ associate-name, refresh sym->ts from the resolved target when ++ only the kind differs. ++ ++2026-07-09 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-07 Jerry DeLisle ++ ++ PR fortran/103367 ++ * expr.cc (simplify_const_ref): Hoist the call to ++ remove_subobject_ref up a level. ++ * primary.cc (gfc_match_rvalue): Don't copy the value expr ++ if the type is an EXPR_VARIABLE. ++ * trans-array.cc (gfc_conv_array_initializer): Only copy the expr ++ value if it does not have a ref. ++ ++2026-07-09 Jerry DeLisle ++ ++ Backported from master: ++ 2026-06-24 Jerry DeLisle ++ ++ PR fortran/60576 ++ * trans-array.cc (gfc_conv_array_parameter): For an assumed-rank ++ actual argument passed to a CLASS assumed-rank formal, use a ++ runtime-sized memcpy for the dim[] entries instead of a full ++ GFC_MAX_DIMENSIONS static copy. For a fixed-rank actual to a ++ CLASS assumed-rank formal, pass lhs_type=false to ++ gfc_class_array_data_assign so the dim[] copy is sized by the ++ RHS descriptor type (dim_t[rank]). Fixed-rank class formals ++ retain lhs_type=true. ++ * trans-expr.cc (gfc_conv_derived_to_class): For an assumed-rank ++ actual, use a runtime-sized memcpy for the derived_array descriptor ++ dim[] copy instead of a full GFC_MAX_DIMENSIONS static copy. ++ ++2026-07-09 Christopher Albert ++ ++ PR fortran/103367 ++ * trans-array.cc (gfc_conv_array_initializer): Emit an error for ++ invalid residual initializer expressions before returning a safe ++ empty constructor. ++ ++2026-07-09 Christopher Albert ++ ++ PR fortran/103367 ++ * trans-array.cc (gfc_conv_array_initializer): Return empty ++ constructor for unexpected expression types after parameter ++ substitution. ++ ++2026-07-03 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-03 Jerry DeLisle ++ ++ PR fortran/126018 ++ * match.cc (gfc_match_stopcode): Adjust the f2008 error check.If the ++ STOP code expr type is unknown, do not error. It will be checked in ++ gfc_resolve_code. ++ * resolve.cc (gfc_resolve_code): Add checks for EXEC_STOP and ++ EXEC_ERROR_STOP. ++ ++2026-06-12 Harald Anlauf ++ ++ Backported from master: ++ 2026-06-06 Harald Anlauf ++ ++ PR fortran/125606 ++ * trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument ++ of LOC() is not scalar or known to be simply contiguous, simply ++ take the address of the argument array's first element. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/fortran/expr.cc ++++ b/src/gcc/fortran/expr.cc +@@ -1154,7 +1154,7 @@ is_CFI_desc (gfc_symbol *sym, gfc_expr *e) + && e && e->expr_type == EXPR_VARIABLE) + sym = e->symtree->n.sym; + +- if (sym && sym->attr.dummy ++ if (sym && sym->attr.dummy && sym->ns && sym->ns->proc_name + && sym->ns->proc_name->attr.is_bind_c + && (sym->attr.pointer + || sym->attr.allocatable +@@ -2086,16 +2086,26 @@ simplify_const_ref (gfc_expr *p) + switch (p->ref->type) + { + case REF_ARRAY: +- switch (p->ref->u.ar.type) ++ /* , parameter :: x() = scalar_expr ++ will generate this. */ ++ if (p->expr_type != EXPR_ARRAY) + { +- case AR_ELEMENT: +- /* , parameter :: x() = scalar_expr +- will generate this. */ +- if (p->expr_type != EXPR_ARRAY) ++ if (p->ref->u.ar.type == AR_ELEMENT) + { +- remove_subobject_ref (p, NULL); +- break; ++ int dim; ++ for (dim = 0; dim < p->ref->u.ar.dimen; dim++) ++ if (!p->ref->u.ar.start[dim] ++ || p->ref->u.ar.start[dim]->expr_type != EXPR_CONSTANT) ++ return true; + } ++ ++ remove_subobject_ref (p, NULL); ++ break; ++ } ++ ++ switch (p->ref->u.ar.type) ++ { ++ case AR_ELEMENT: + if (!find_array_element (p->value.constructor, &p->ref->u.ar, &cons)) + return false; + +--- a/src/gcc/fortran/frontend-passes.cc ++++ b/src/gcc/fortran/frontend-passes.cc +@@ -2777,6 +2777,9 @@ inner_loop_may_be_skipped (int loop_index, gfc_symbol *outer_sym, mpz_t outer_va + if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL) + return true; + ++ if (loop->ext.iterator->var->symtree->n.sym->ts.type != BT_INTEGER) ++ return true; ++ + if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step)) + return true; + +@@ -3565,7 +3568,7 @@ matmul_lhs_realloc (gfc_expr *c, gfc_expr *a, gfc_expr *b, + ar->start[0] = get_array_inq_function (GFC_ISYM_SIZE, a, 1); + cond = build_logical_expr (INTRINSIC_NE, + get_array_inq_function (GFC_ISYM_SIZE, c, 1), +- get_array_inq_function (GFC_ISYM_SIZE, a, 2)); ++ get_array_inq_function (GFC_ISYM_SIZE, a, 1)); + break; + + case A1B2: +--- a/src/gcc/fortran/interface.cc ++++ b/src/gcc/fortran/interface.cc +@@ -4703,7 +4703,7 @@ find_symtree0 (gfc_symtree *root, gfc_symbol *sym) + { + gfc_symtree * st; + +- if (root->n.sym == sym) ++ if (root == NULL || root->n.sym == sym) + return root; + + st = NULL; +@@ -4736,6 +4736,14 @@ gfc_find_sym_in_symtree (gfc_symbol *sym) + st = find_symtree0 (ns->sym_root, sym); + if (st) + return st; ++ ++ /* Search user-defined operators. */ ++ if (ns->uop_root && sym->attr.function) ++ { ++ st = find_symtree0 (ns->uop_root, sym); ++ if (st) ++ return st; ++ } + } + gfc_internal_error ("Unable to find symbol %qs", sym->name); + /* Not reached. */ +--- a/src/gcc/fortran/match.cc ++++ b/src/gcc/fortran/match.cc +@@ -3501,19 +3501,22 @@ checks: + goto cleanup; + } + +- /* Use the machinery for an initialization expression to reduce the +- stop-code to a constant. */ +- gfc_reduce_init_expr (e); +- +- /* Test for F2008 style STOP stop-code. */ +- if (e->expr_type != EXPR_CONSTANT && f08) ++ /* If this is F2008, it could be an init expression. */ ++ if (f08) + { +- gfc_error ("STOP code at %L must be a scalar default CHARACTER or " +- "INTEGER constant expression", &e->where); +- goto cleanup; ++ gfc_reduce_init_expr (e); ++ if (e->expr_type != EXPR_CONSTANT) ++ { ++ gfc_error ("STOP code at %L must be a scalar constant " ++ "expression", &e->where); ++ goto cleanup; ++ } + } + +- if (!(e->ts.type == BT_CHARACTER || e->ts.type == BT_INTEGER)) ++ /* For types known at parse time, check immediately. For BT_UNKNOWN ++ (e.g. a forward-referenced contained function) defer to resolve. */ ++ if (e->ts.type != BT_UNKNOWN ++ && !(e->ts.type == BT_CHARACTER || e->ts.type == BT_INTEGER)) + { + gfc_error ("STOP code at %L must be either INTEGER or CHARACTER type", + &e->where); +--- a/src/gcc/fortran/primary.cc ++++ b/src/gcc/fortran/primary.cc +@@ -3934,7 +3934,8 @@ gfc_match_rvalue (gfc_expr **result) + end up here. Unfortunately, sym->value->expr_type is set to + EXPR_CONSTANT, and so the if () branch would be followed without + the !sym->as check. */ +- if (sym->value && sym->value->expr_type != EXPR_ARRAY && !sym->as) ++ if (sym->value && sym->value->expr_type != EXPR_ARRAY ++ && sym->value->expr_type != EXPR_VARIABLE && !sym->as) + e = gfc_copy_expr (sym->value); + else + { +--- a/src/gcc/fortran/resolve.cc ++++ b/src/gcc/fortran/resolve.cc +@@ -6200,6 +6200,13 @@ resolve_variable (gfc_expr *e) + if (e->expr_type == EXPR_CONSTANT) + return true; + } ++ else if (IS_INFERRED_TYPE (e) ++ && sym->ts.type != BT_UNKNOWN ++ && (sym->ts.type != e->ts.type || sym->ts.kind != e->ts.kind)) ++ /* No subobject ref, but the expression's typespec was set at parse ++ time before the target's actual type/kind was known. Refresh from ++ the now-resolved associate-name symbol. */ ++ e->ts = sym->ts; + else if (sym->attr.select_type_temporary + && sym->ns->assoc_name_inferred) + gfc_fixup_inferred_type_refs (e); +@@ -6584,6 +6591,15 @@ gfc_fixup_inferred_type_refs (gfc_expr *e) + sym->assoc->target->ts.kind); + gfc_replace_expr (e, ne); + } ++ else if (ref && ref->type == REF_INQUIRY ++ && (ref->u.i == INQUIRY_RE || ref->u.i == INQUIRY_IM) ++ && sym->ts.type == BT_COMPLEX ++ && e->ts.type == BT_REAL ++ && e->ts.kind != sym->ts.kind) ++ /* primary.cc set the inquiry-result kind to the default real kind ++ when the associate-name's type was inferred from %re/%im before ++ the target was resolved. Now use the (resolved) selector kind. */ ++ e->ts.kind = sym->ts.kind; + + /* Now that the references are all sorted out, set the expression rank + and return. */ +@@ -10242,6 +10258,16 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) + /* Confirmed to be either a derived type or misidentified to be a + scalar class object, when the selector is a class array. */ + sym->ts = target->ts; ++ else if (sym->assoc->inferred_type ++ && (sym->ts.type == BT_COMPLEX ++ || sym->ts.type == BT_CHARACTER) ++ && target->ts.type == sym->ts.type ++ && sym->ts.kind != target->ts.kind) ++ /* The inferred type was set from a %re, %im or %len inquiry on ++ the associate name with the default kind, before the target's ++ actual type was known. Now that the target has been resolved, ++ update the kind to match. */ ++ sym->ts = target->ts; + } + + +@@ -13465,6 +13491,25 @@ start: + + case EXEC_STOP: + case EXEC_ERROR_STOP: ++ if (code->expr1 != NULL && t) ++ { ++ if (!(code->expr1->ts.type == BT_CHARACTER ++ || code->expr1->ts.type == BT_INTEGER)) ++ gfc_error ("STOP code at %L must be either INTEGER or CHARACTER " ++ "type", &code->expr1->where); ++ else if (code->expr1->rank != 0) ++ gfc_error ("STOP code at %L must be scalar", ++ &code->expr1->where); ++ else if (code->expr1->ts.type == BT_CHARACTER ++ && code->expr1->ts.kind != gfc_default_character_kind) ++ gfc_error ("STOP code at %L must be default character KIND=%d", ++ &code->expr1->where, (int) gfc_default_character_kind); ++ else if (code->expr1->ts.type == BT_INTEGER ++ && code->expr1->ts.kind != gfc_default_integer_kind) ++ gfc_notify_std (GFC_STD_F2018, "STOP code at %L must be default " ++ "integer KIND=%d", &code->expr1->where, ++ (int) gfc_default_integer_kind); ++ } + if (code->expr2 != NULL + && (code->expr2->ts.type != BT_LOGICAL + || code->expr2->rank != 0)) +--- a/src/gcc/fortran/symbol.cc ++++ b/src/gcc/fortran/symbol.cc +@@ -2222,6 +2222,10 @@ gfc_copy_dummy_sym (gfc_symbol **dsym, gfc_symbol *sym, int result) + if (!gfc_add_type (*dsym, &(sym->ts), &gfc_current_locus)) + return 1; + ++ if (sym->attr.external ++ && (sym->attr.codimension || sym->attr.dimension)) ++ (*dsym)->attr.if_source = IFSRC_DECL; ++ + if (!gfc_copy_attr (&(*dsym)->attr, &(sym->attr), + &gfc_current_locus)) + return 1; +@@ -3086,7 +3090,15 @@ gfc_get_unique_symtree (gfc_namespace *ns) + static int serial = 0; + + sprintf (name, "@%d", serial++); +- return gfc_new_symtree (&ns->sym_root, name); ++ if (ns) ++ return gfc_new_symtree (&ns->sym_root, name); ++ else ++ { ++ /* Some uses need a symtree that is cleaned up locally. */ ++ gfc_symtree *st = XCNEW (gfc_symtree); ++ st->name = gfc_get_string ("%s", name); ++ return st; ++ } + } + + +--- a/src/gcc/fortran/trans-array.cc ++++ b/src/gcc/fortran/trans-array.cc +@@ -6901,9 +6901,23 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr) + + if (expr->expr_type == EXPR_VARIABLE + && expr->symtree->n.sym->attr.flavor == FL_PARAMETER +- && expr->symtree->n.sym->value) ++ && expr->symtree->n.sym->value ++ && !expr->ref) + expr = expr->symtree->n.sym->value; + ++ /* After parameter substitution the expression should be a constant, array ++ constructor, structure constructor, or NULL. Anything else is invalid ++ and must not ICE later in lowering. */ ++ if (expr->expr_type != EXPR_CONSTANT ++ && expr->expr_type != EXPR_STRUCTURE ++ && expr->expr_type != EXPR_ARRAY ++ && expr->expr_type != EXPR_NULL) ++ { ++ gfc_error ("Array initializer at %L does not reduce to a constant " ++ "expression", &expr->where); ++ return build_constructor (type, NULL); ++ } ++ + switch (expr->expr_type) + { + case EXPR_CONSTANT: +@@ -9032,6 +9046,34 @@ is_pointer (gfc_expr *e) + return sym->attr.pointer || sym->attr.proc_pointer; + } + ++/* Assumed-rank actual argument: the caller only allocates storage for dtype ++ rank dimensions. Copying GFC_MAX_DIMENSIONS dim entries would read past the ++ physical end of the descriptor. Copy the header fields explicitly and use a ++ runtime-sized memcpy for the dim[] entries. */ ++void ++gfc_resize_assumed_rank_dim_field (gfc_se *se, stmtblock_t *block, tree desc) ++{ ++ tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr; ++ ++ gfc_conv_descriptor_data_set (block, desc, ++ gfc_conv_descriptor_data_get (se->expr)); ++ gfc_conv_descriptor_offset_set (block, desc, ++ gfc_conv_descriptor_offset_get (se->expr)); ++ gfc_add_modify (block, gfc_conv_descriptor_dtype (desc), ++ gfc_conv_descriptor_dtype (se->expr)); ++ rank = fold_convert (size_type_node, gfc_conv_descriptor_rank (se->expr)); ++ dim_field = gfc_get_descriptor_dimension (se->expr); ++ dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field))); ++ copy_size = fold_build2_loc (input_location, MULT_EXPR, ++ size_type_node, rank, dim_size); ++ dst_ptr = gfc_build_addr_expr (pvoid_type_node, ++ gfc_get_descriptor_dimension (desc)); ++ src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field); ++ gfc_add_expr_to_block (block, build_call_expr_loc (input_location, ++ builtin_decl_explicit (BUILT_IN_MEMCPY), ++ 3, dst_ptr, src_ptr, copy_size)); ++} ++ + /* Convert an array for passing as an actual parameter. */ + + void +@@ -9306,7 +9348,12 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, bool g77, + gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node); + se->expr = arr; + } +- gfc_class_array_data_assign (&block, tmp, se->expr, true); ++ if (expr->rank == -1) ++ gfc_resize_assumed_rank_dim_field (se, &block, tmp); ++ else if (CLASS_DATA (fsym)->as->rank == -1) ++ gfc_class_array_data_assign (&block, tmp, se->expr, false); ++ else ++ gfc_class_array_data_assign (&block, tmp, se->expr, true); + + /* Handle optional. */ + if (fsym && fsym->attr.optional && sym && sym->attr.optional) +@@ -9435,14 +9482,10 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, bool g77, + { + tmp = build_fold_indirect_ref_loc (input_location, desc); + +- gfc_ss * ss = gfc_walk_expr (expr); +- if (!transposed_dims (ss) && expr->rank != -1) +- { +- if (!ctree) +- gfc_conv_descriptor_data_set (&se->pre, tmp, ptr); +- } +- else if (!ctree) ++ if (!ctree) + { ++ /* The original descriptor may have transposed dims so we ++ can't reuse it directly; we have to create a new one. */ + tree old_field, new_field; + tree old_desc = tmp; + tree new_desc = gfc_create_var (TREE_TYPE (old_desc), "arg_desc"); +@@ -9507,19 +9550,55 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, bool g77, + } + else + { +- /* The original descriptor has transposed dims so we can't +- reuse it directly; we have to create a new one. */ +- old_field = gfc_conv_descriptor_offset_get (old_desc); +- gfc_conv_descriptor_offset_set (&se->pre, new_desc, old_field); ++ tree offset = gfc_index_zero_node; ++ ++ tree stride = gfc_index_one_node; + + for (int i = 0; i < expr->rank; i++) + { +- old_field = gfc_conv_descriptor_dimension (old_desc, +- gfc_rank_cst[get_array_ref_dim_for_loop_dim (ss, i)]); +- new_field = gfc_conv_descriptor_dimension (new_desc, +- gfc_rank_cst[i]); +- gfc_add_modify (&se->pre, new_field, old_field); ++ tree dim = gfc_rank_cst[i]; ++ ++ tree lbound = gfc_conv_descriptor_lbound_get (old_desc, ++ dim); ++ lbound = gfc_evaluate_now (lbound, &se->pre); ++ gfc_conv_descriptor_lbound_set (&se->pre, new_desc, dim, ++ lbound); ++ ++ tree ubound = gfc_conv_descriptor_ubound_get (old_desc, ++ dim); ++ ubound = gfc_evaluate_now (ubound, &se->pre); ++ gfc_conv_descriptor_ubound_set (&se->pre, new_desc, dim, ++ ubound); ++ ++ gfc_conv_descriptor_stride_set (&se->pre, new_desc, dim, ++ stride); ++ ++ tree tmp = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, ++ stride, lbound); ++ offset = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ offset, tmp); ++ offset = gfc_evaluate_now (offset, &se->pre); ++ ++ /* Now calculate the stride for next dimension, unless the ++ current dimension is the last one. */ ++ if (i == expr->rank - 1) ++ break; ++ ++ tmp = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ lbound, gfc_index_one_node); ++ tree extent = fold_build2_loc (input_location, MINUS_EXPR, ++ gfc_array_index_type, ++ ubound, tmp); ++ stride = fold_build2_loc (input_location, MULT_EXPR, ++ gfc_array_index_type, ++ stride, extent); ++ stride = gfc_evaluate_now (stride, &se->pre); + } ++ ++ gfc_conv_descriptor_offset_set (&se->pre, new_desc, offset); + } + + if (flag_coarray == GFC_FCOARRAY_LIB +@@ -9535,7 +9614,6 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, bool g77, + gfc_conv_descriptor_data_set (&se->pre, new_desc, ptr); + se->expr = gfc_build_addr_expr (NULL_TREE, new_desc); + } +- gfc_free_ss (ss); + } + + if (gfc_option.rtcheck & GFC_RTCHECK_ARRAY_TEMPS) +--- a/src/gcc/fortran/trans-expr.cc ++++ b/src/gcc/fortran/trans-expr.cc +@@ -961,7 +961,39 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym, + { + *derived_array + = gfc_create_var (TREE_TYPE (parmse->expr), "array"); +- gfc_add_modify (&block, *derived_array, parmse->expr); ++ if (e->rank == -1) ++ { ++ /* Assumed-rank actual: parmse->expr physically holds only ++ dtype.rank dims; a full struct assign reads past the end. ++ Copy field-by-field with a runtime-sized dim[] memcpy. ++ PR fortran/60576. */ ++ tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr; ++ ++ gfc_conv_descriptor_data_set ++ (&block, *derived_array, ++ gfc_conv_descriptor_data_get (parmse->expr)); ++ gfc_conv_descriptor_offset_set ++ (&block, *derived_array, ++ gfc_conv_descriptor_offset_get (parmse->expr)); ++ gfc_add_modify (&block, ++ gfc_conv_descriptor_dtype (*derived_array), ++ gfc_conv_descriptor_dtype (parmse->expr)); ++ rank = fold_convert (size_type_node, ++ gfc_conv_descriptor_rank (parmse->expr)); ++ dim_field = gfc_get_descriptor_dimension (parmse->expr); ++ dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field))); ++ copy_size = fold_build2_loc (input_location, MULT_EXPR, ++ size_type_node, rank, dim_size); ++ dst_ptr = gfc_build_addr_expr ++ (pvoid_type_node, gfc_get_descriptor_dimension (*derived_array)); ++ src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field); ++ gfc_add_expr_to_block (&block, ++ build_call_expr_loc (input_location, ++ builtin_decl_explicit (BUILT_IN_MEMCPY), ++ 3, dst_ptr, src_ptr, copy_size)); ++ } ++ else ++ gfc_add_modify (&block, *derived_array, parmse->expr); + } + + if (optional) +@@ -11569,6 +11601,8 @@ gfc_trans_scalar_assign (gfc_se *lse, gfc_se *rse, gfc_typespec ts, + /* Are the rhs and the lhs the same? */ + if (deep_copy) + { ++ if (!TREE_CONSTANT (rse->expr) && !VAR_P (rse->expr)) ++ rse->expr = gfc_evaluate_now (rse->expr, &rse->pre); + cond = fold_build2_loc (input_location, EQ_EXPR, logical_type_node, + gfc_build_addr_expr (NULL_TREE, lse->expr), + gfc_build_addr_expr (NULL_TREE, rse->expr)); +@@ -12956,13 +12990,19 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag, + needed. */ + lhs_attr = gfc_expr_attr (expr1); + ++ /* What can be sent to trans_class_assignment includes all the obvious ++ candidates but scalar assignment of a class expression to a derived type ++ must be done using gfc_trans_scalar_assign; partly because it is simpler ++ and partly because some cases fail, eg. class assignment to derived_type ++ select type temporaries. */ + is_poly_assign + = (use_vptr_copy + || ((lhs_attr.pointer || lhs_attr.allocatable) && !lhs_attr.dimension)) + && (expr1->ts.type == BT_CLASS || gfc_is_class_array_ref (expr1, NULL) + || gfc_is_class_scalar_expr (expr1) + || gfc_is_class_array_ref (expr2, NULL) +- || gfc_is_class_scalar_expr (expr2)) ++ || (gfc_is_class_scalar_expr (expr2) ++ && !(expr1->ts.type == BT_DERIVED && !lhs_attr.dimension))) + && lhs_attr.flavor != FL_PROCEDURE; + + assoc_assign = is_assoc_assign (expr1, expr2); +--- a/src/gcc/fortran/trans-intrinsic.cc ++++ b/src/gcc/fortran/trans-intrinsic.cc +@@ -9606,9 +9606,15 @@ gfc_conv_intrinsic_loc (gfc_se * se, gfc_expr * expr) + gfc_add_data_component (arg_expr); + gfc_conv_expr_reference (se, arg_expr); + } +- else ++ else if (gfc_is_simply_contiguous (arg_expr, false, false)) + gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL); ++ else ++ { ++ gfc_conv_expr_descriptor (se, arg_expr); ++ se->expr = gfc_conv_descriptor_data_get (se->expr); ++ } + se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr); ++ se->expr = gfc_evaluate_now (se->expr, &se->pre); + + /* Create a temporary variable for loc return value. Without this, + we get an error an ICE in gcc/expr.cc(expand_expr_addr_expr_1). */ +--- a/src/gcc/fortran/trans-stmt.cc ++++ b/src/gcc/fortran/trans-stmt.cc +@@ -6777,6 +6777,7 @@ gfc_trans_allocate (gfc_code * code, gfc_omp_namelist *omp_allocate) + && (code->expr3->expr_type != EXPR_VARIABLE || temp_obj_created) + && code->expr3->ts.u.derived->attr.alloc_comp + && !code->expr3->must_finalize ++ && !gfc_expr_attr (code->expr3).pointer + && !code->ext.alloc.expr3_not_explicit) + { + tmp = gfc_deallocate_alloc_comp (code->expr3->ts.u.derived, +@@ -6940,11 +6941,16 @@ gfc_trans_allocate (gfc_code * code, gfc_omp_namelist *omp_allocate) + /* Build a temporary symtree and symbol. Do not add it to the current + namespace to prevent accidentaly modifying a colliding + symbol's as. */ +- newsym = XCNEW (gfc_symtree); + /* The name of the symtree should be unique, because gfc_create_var () + took care about generating the identifier. */ +- newsym->name +- = gfc_get_string ("%s", IDENTIFIER_POINTER (DECL_NAME (expr3))); ++ if (DECL_NAME (expr3) && IDENTIFIER_POINTER (DECL_NAME (expr3))) ++ { ++ const char *name = IDENTIFIER_POINTER (DECL_NAME (expr3)); ++ newsym = XCNEW (gfc_symtree); ++ newsym->name = gfc_get_string ("%s", name); ++ } ++ else ++ newsym = gfc_get_unique_symtree (NULL); + newsym->n.sym = gfc_new_symbol (newsym->name, NULL); + /* The backend_decl is known. It is expr3, which is inserted + here. */ +--- a/src/gcc/gimple-isel.cc ++++ b/src/gcc/gimple-isel.cc +@@ -93,10 +93,11 @@ gimple_expand_vec_set_extract_expr (struct function *fun, + return false; + + tree op0 = TREE_OPERAND (ref, 0); +- if (TREE_CODE (op0) == VIEW_CONVERT_EXPR && DECL_P (TREE_OPERAND (op0, 0)) ++ if (TREE_CODE (op0) == VIEW_CONVERT_EXPR ++ && DECL_P (TREE_OPERAND (op0, 0)) + && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0))) +- && TYPE_MODE (TREE_TYPE (ref)) +- == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0))))) ++ && (TYPE_MODE (TREE_TYPE (ref)) ++ == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))))) + { + tree pos = TREE_OPERAND (ref, 1); + +@@ -108,9 +109,13 @@ gimple_expand_vec_set_extract_expr (struct function *fun, + if (poly_int_tree_p (idx, &idx_poly)) + { + poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0)); +- if (known_gt (idx_poly, nelts)) ++ if (known_ge (idx_poly, nelts)) + return false; + } ++ else if (poly_int_tree_p (idx)) ++ // if idx doesn't fit into poly_uint64, but is constant, it ++ // must be out of bounds ++ return false; + machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0)); + machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref)); + +--- a/src/gcc/gimple-lower-bitint.cc ++++ b/src/gcc/gimple-lower-bitint.cc +@@ -56,6 +56,8 @@ along with GCC; see the file COPYING3. If not see + #include "ubsan.h" + #include "stor-layout.h" + #include "gimple-lower-bitint.h" ++#include "attribs.h" ++#include "asan.h" + + /* Split BITINT_TYPE precisions in 4 categories. Small _BitInt, where + target hook says it is a single limb, middle _BitInt which per ABI +@@ -1207,16 +1209,27 @@ bitint_large_huge::handle_plus_minus (tree_code code, tree rhs1, tree rhs2, + } + else + { +- tree in = add_cast (rhs1_type, data_in); +- lhs = make_ssa_name (rhs1_type); ++ /* Always perform the two additions or subtractions in ++ unsigned type, avoid introducing a temporary UB. While ++ the end result of the 2 additions or 2 subtractions in ++ a valid program should not overflow, temporarily it can. ++ See PR126503. */ ++ tree utype = unsigned_type_for (rhs1_type); ++ tree in = add_cast (utype, data_in); ++ lhs = make_ssa_name (utype); ++ if (utype != rhs1_type) ++ { ++ rhs1 = add_cast (utype, rhs1); ++ rhs2 = add_cast (utype, rhs2); ++ } + g = gimple_build_assign (lhs, code, rhs1, rhs2); + insert_before (g); +- rhs1 = make_ssa_name (rhs1_type); ++ rhs1 = make_ssa_name (utype); + g = gimple_build_assign (rhs1, code, lhs, in); + insert_before (g); + m_data[m_data_cnt] = NULL_TREE; + m_data_cnt += 2; +- return rhs1; ++ return utype != rhs1_type ? add_cast (rhs1_type, rhs1) : rhs1; + } + rhs1 = make_ssa_name (m_limb_type); + g = gimple_build_assign (rhs1, REALPART_EXPR, +@@ -5980,6 +5993,18 @@ build_bitint_stmt_ssa_conflicts (gimple *stmt, live_track *live, + } + } + } ++ else if (is_gimple_call (stmt) && gimple_call_internal_p (stmt)) ++ switch (gimple_call_internal_fn (stmt)) ++ { ++ case IFN_MUL_OVERFLOW: ++ case IFN_UBSAN_CHECK_MUL: ++ lhs = gimple_call_lhs (stmt); ++ if (lhs) ++ muldiv_p = true; ++ break; ++ default: ++ break; ++ } + + ssa_op_iter iter; + tree var; +@@ -6180,6 +6205,40 @@ gimple_lower_bitint (void) + } + } + ++ if (flag_sanitize & (SANITIZE_ADDRESS | SANITIZE_HWADDRESS)) ++ { ++ hash_map shadow_vars_mapping; ++ bool need_commit_edge_insert = false; ++ bool any_asan_poison = false; ++ for (unsigned j = 0; j < num_ssa_names; ++j) ++ { ++ tree s = ssa_name (j); ++ if (s == NULL) ++ continue; ++ tree type = TREE_TYPE (s); ++ if (BITINT_TYPE_P (type) ++ && gimple_call_internal_p (SSA_NAME_DEF_STMT (s), ++ IFN_ASAN_POISON) ++ && bitint_precision_kind (type) >= bitint_prec_large) ++ { ++ any_asan_poison = true; ++ gimple_stmt_iterator gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (s)); ++ asan_expand_poison_ifn (&gsi, &need_commit_edge_insert, ++ shadow_vars_mapping); ++ } ++ } ++ if (any_asan_poison) ++ { ++ if (need_commit_edge_insert) ++ gsi_commit_edge_inserts (); ++ i = 0; ++ free_dominance_info (CDI_DOMINATORS); ++ free_dominance_info (CDI_POST_DOMINATORS); ++ mark_virtual_operands_for_renaming (cfun); ++ cleanup_tree_cfg (TODO_update_ssa); ++ } ++ } ++ + struct bitint_large_huge large_huge; + bool has_large_huge_parm_result = false; + bool has_large_huge = false; +@@ -6398,6 +6457,39 @@ gimple_lower_bitint (void) + add_phi_arg (phi, rhs2, e3, UNKNOWN_LOCATION); + break; + } ++ else if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (s) ++ && is_gimple_call (stmt) ++ && gimple_call_internal_p (stmt)) ++ switch (gimple_call_internal_fn (stmt)) ++ { ++ case IFN_UBSAN_CHECK_MUL: ++ for (unsigned i = 0; i < gimple_call_num_args (stmt); ++i) ++ { ++ location_t loc = gimple_location (stmt); ++ gsi = gsi_for_stmt (stmt); ++ /* Similar case to multiplication/division with (ab) ++ above for internal functions which set muldiv_p. */ ++ tree arg = gimple_call_arg (stmt, i); ++ if (TREE_CODE (arg) == SSA_NAME ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg)) ++ { ++ first_large_huge = 0; ++ tree t = make_ssa_name (TREE_TYPE (arg)); ++ g = gimple_build_assign (t, SSA_NAME, arg); ++ gsi_insert_before (&gsi, g, GSI_SAME_STMT); ++ gimple_set_location (g, loc); ++ gimple_call_set_arg (stmt, i, t); ++ if (i == 0 ++ && gimple_call_num_args (stmt) >= 2 ++ && gimple_call_arg (stmt, 1) == arg) ++ gimple_call_set_arg (stmt, 1, t); ++ update_stmt (stmt); ++ } ++ } ++ break; ++ default: ++ break; ++ } + } + /* We need to also rewrite stores of large/huge _BitInt INTEGER_CSTs + into memory. Such functions could have no large/huge SSA_NAMEs. */ +--- a/src/gcc/gimple-range-fold.cc ++++ b/src/gcc/gimple-range-fold.cc +@@ -1341,7 +1341,7 @@ fold_using_range::relation_fold_and_or (irange& lhs_range, gimple *s, + return; + + if (reverse_op2) +- relation2 = relation_negate (relation2); ++ relation2 = relation_swap (relation2); + + // x && y is false if the relation intersection of the true cases is NULL. + if (is_and && relation_intersect (relation1, relation2) == VREL_UNDEFINED) +--- a/src/gcc/gimple-range-op.cc ++++ b/src/gcc/gimple-range-op.cc +@@ -461,6 +461,8 @@ frange_mpfr_arg1 (REAL_VALUE_TYPE *res_low, REAL_VALUE_TYPE *res_high, + return true; + } + ++extern frange float_widen_lhs_range (tree, const frange &); ++ + class cfn_sqrt : public range_operator + { + public: +@@ -567,7 +569,10 @@ public: + frange_nextafter (TYPE_MODE (type), lb, dconstninf); + if (real_less (&dconst0, &lb)) + { +- REAL_VALUE_TYPE op = lb; ++ frange wlhs (type, lb, dconstinf); ++ wlhs.clear_nan (); ++ REAL_VALUE_TYPE op ++ = float_widen_lhs_range (type, wlhs).lower_bound (); + frange_arithmetic (MULT_EXPR, type, lb, op, op, dconstninf); + } + else +@@ -581,7 +586,10 @@ public: + frange_nextafter (TYPE_MODE (type), ub, dconstinf); + if (real_isfinite (&ub)) + { +- REAL_VALUE_TYPE op = ub; ++ frange wlhs (type, dconstninf, ub); ++ wlhs.clear_nan (); ++ REAL_VALUE_TYPE op ++ = float_widen_lhs_range (type, wlhs).upper_bound (); + frange_arithmetic (MULT_EXPR, type, ub, op, op, dconstinf); + } + else +--- a/src/gcc/gimple-range.cc ++++ b/src/gcc/gimple-range.cc +@@ -78,6 +78,9 @@ gimple_ranger::const_query () + return m_cache.const_query (); + } + ++// Implement range of EXPR on stmt S, and return it in R. ++// Return false if no range can be calculated. ++ + bool + gimple_ranger::range_of_expr (vrange &r, tree expr, gimple *stmt) + { +@@ -98,8 +101,9 @@ gimple_ranger::range_of_expr (vrange &r, tree expr, gimple *stmt) + fputs ("\n", dump_file); + } + +- // If there is no statement, just get the global value. +- if (!stmt) ++ // If there is no statement or stmt happens to be not in the IL, ++ // just get the global value. ++ if (!stmt || !gimple_bb (stmt)) + { + value_range tmp (TREE_TYPE (expr)); + // If there is no global range for EXPR yet, try to evaluate it. +--- a/src/gcc/gimple-ssa-warn-access.cc ++++ b/src/gcc/gimple-ssa-warn-access.cc +@@ -3911,7 +3911,7 @@ pass_waccess::warn_invalid_pointer (tree ref, gimple *use_stmt, + if (!var) + ref = NULL_TREE; + /* Don't warn for cases like when a cdtor returns 'this' on ARM. */ +- else if (warning_suppressed_p (var, OPT_Wuse_after_free)) ++ else if (warning_suppressed_p (var, OPT_Wuse_after_free_)) + return; + else if (DECL_ARTIFICIAL (var)) + ref = NULL_TREE; +@@ -3933,18 +3933,18 @@ pass_waccess::warn_invalid_pointer (tree ref, gimple *use_stmt, + if (!m_early_checks_p + || (equality && warn_use_after_free < 3) + || (maybe && warn_use_after_free < 2) +- || warning_suppressed_p (use_stmt, OPT_Wuse_after_free)) ++ || warning_suppressed_p (use_stmt, OPT_Wuse_after_free_)) + return; + + const tree inval_decl = gimple_call_fndecl (inval_stmt); + + auto_diagnostic_group d; +- if ((ref && warning_at (use_loc, OPT_Wuse_after_free, ++ if ((ref && warning_at (use_loc, OPT_Wuse_after_free_, + (maybe + ? G_("pointer %qE may be used after %qD") + : G_("pointer %qE used after %qD")), + ref, inval_decl)) +- || (!ref && warning_at (use_loc, OPT_Wuse_after_free, ++ || (!ref && warning_at (use_loc, OPT_Wuse_after_free_, + (maybe + ? G_("pointer may be used after %qD") + : G_("pointer used after %qD")), +@@ -3952,7 +3952,7 @@ pass_waccess::warn_invalid_pointer (tree ref, gimple *use_stmt, + { + location_t loc = gimple_location (inval_stmt); + inform (loc, "call to %qD here", inval_decl); +- suppress_warning (use_stmt, OPT_Wuse_after_free); ++ suppress_warning (use_stmt, OPT_Wuse_after_free_); + } + return; + } +--- a/src/gcc/gimplify.cc ++++ b/src/gcc/gimplify.cc +@@ -3409,6 +3409,13 @@ recalculate_side_effects (tree t) + /* No side-effects. */ + return; + ++ case tcc_declaration: ++ /* These can have side-effects if TREE_THIS_VOLATILE, ++ but those should be set elsewhere, not in ++ recalculate_side_effects. Can be triggered e.g. if ++ a comparison is folded into one of its operands. */ ++ return; ++ + default: + if (code == SSA_NAME) + /* No side-effects. */ +--- a/src/gcc/ipa-cp.cc ++++ b/src/gcc/ipa-cp.cc +@@ -1749,21 +1749,22 @@ ipa_vr_intersect_with_arith_jfunc (vrange &vr, + if (!ipa_vr_operation_and_type_effects (op_res, src_vr, operation, + operation_type, src_type)) + return; +- if (src_type == dst_type) +- { +- vr.intersect (op_res); +- return; +- } + inter_vr = &op_res; + src_type = operation_type; + } + else + inter_vr = &src_vr; + +- value_range tmp_res (dst_type); +- if (ipa_vr_operation_and_type_effects (tmp_res, *inter_vr, NOP_EXPR, +- dst_type, src_type)) +- vr.intersect (tmp_res); ++ if (src_type != dst_type) ++ { ++ value_range tmp_res (dst_type); ++ if (!ipa_vr_operation_and_type_effects (tmp_res, *inter_vr, NOP_EXPR, ++ dst_type, src_type)) ++ return; ++ vr.intersect (tmp_res); ++ } ++ else ++ vr.intersect (*inter_vr); + return; + } + +--- a/src/gcc/ipa-param-manipulation.cc ++++ b/src/gcc/ipa-param-manipulation.cc +@@ -1348,8 +1348,8 @@ ipa_param_body_adjustments::prepare_debug_expressions (tree dead_ssa) + } + + gcc_assert (TREE_CODE (value) == SSA_NAME); +- tree *d = m_dead_ssa_debug_equiv.get (value); +- m_dead_ssa_debug_equiv.put (dead_ssa, *d); ++ tree d = *m_dead_ssa_debug_equiv.get (value); ++ m_dead_ssa_debug_equiv.put (dead_ssa, d); + return true; + } + +--- a/src/gcc/ira.cc ++++ b/src/gcc/ira.cc +@@ -3894,6 +3894,7 @@ combine_and_move_insns (void) + continue; + + rtx_insn *use_insn = 0; ++ bool multiple_insns = false; + for (df_ref use = DF_REG_USE_CHAIN (regno); + use; + use = DF_REF_NEXT_REG (use)) +@@ -3901,11 +3902,20 @@ combine_and_move_insns (void) + { + if (DEBUG_INSN_P (DF_REF_INSN (use))) + continue; +- gcc_assert (!use_insn); ++ if (use_insn && DF_REF_INSN (use) != use_insn) ++ { ++ multiple_insns = true; ++ break; ++ } + use_insn = DF_REF_INSN (use); + } + gcc_assert (use_insn); + ++ /* If a register is used by more than one insn, we cannot trivially move ++ or delete the definition anymore. */ ++ if (multiple_insns) ++ continue; ++ + /* Don't substitute into jumps. indirect_jump_optimize does + this for anything we are prepared to handle. */ + if (JUMP_P (use_insn)) +--- a/src/gcc/lra-constraints.cc ++++ b/src/gcc/lra-constraints.cc +@@ -1798,6 +1798,36 @@ simplify_operand_subreg (int nop, machine_mode reg_mode) + } + else if (REG_P (reg) && REGNO (reg) < FIRST_PSEUDO_REGISTER) + { ++ /* A narrowing subreg of a hard register that is not representable as a ++ hard register (its offset does not fall on a register boundary) cannot ++ be turned into one, and would otherwise be resolved to the wrong part ++ of the register. Reload it through memory so that the correct bytes ++ are accessed, as is done for pseudos below. Leave the frame, arg and ++ stack pointers alone: simplify_subreg_regno can reject them simply ++ because reload is not finished yet. */ ++ if (partial_subreg_p (mode, innermode) ++ && REGNO (reg) != FRAME_POINTER_REGNUM ++ && REGNO (reg) != ARG_POINTER_REGNUM ++ && REGNO (reg) != STACK_POINTER_REGNUM ++ && simplify_subreg_regno (REGNO (reg), innermode, ++ SUBREG_BYTE (operand), mode) < 0) ++ { ++ if (get_reload_reg (type, innermode, reg, NO_REGS, NULL, ++ true, false, "non-representable subreg", &new_reg)) ++ { ++ bitmap_set_bit (&lra_subreg_reload_pseudos, REGNO (new_reg)); ++ bool insert_before = (type != OP_OUT ++ || read_modify_subreg_p (operand)); ++ bool insert_after = (type != OP_IN); ++ insert_move_for_subreg (insert_before ? &before : NULL, ++ insert_after ? &after : NULL, ++ reg, new_reg); ++ } ++ SUBREG_REG (operand) = new_reg; ++ lra_process_new_insns (curr_insn, before, after, ++ "Inserting non-representable subreg reload"); ++ return true; ++ } + alter_subreg (curr_id->operand_loc[nop], false); + return true; + } +--- a/src/gcc/lto/ChangeLog ++++ b/src/gcc/lto/ChangeLog +@@ -1,3 +1,12 @@ ++2026-07-16 Michal Jires ++ ++ Backported from master: ++ 2026-07-15 Michal Jires ++ ++ PR lto/125257 ++ * lto-partition.cc: Handle min/max_partition_size = 0 for ++ cache partitioning. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/gcc/lto/lto-partition.cc ++++ b/src/gcc/lto/lto-partition.cc +@@ -860,11 +860,9 @@ public: + + protected: + partitioner_base (int64_t min_partition_size, int64_t max_partition_size): +- min_partition_size (min_partition_size), +- max_partition_size (max_partition_size) ++ min_partition_size (std::max(min_partition_size, 1)), ++ max_partition_size (std::max(max_partition_size, 1)) + { +- gcc_assert (min_partition_size != 0); +- gcc_assert (max_partition_size != 0); + } + virtual ~partitioner_base () + {} +--- a/src/gcc/match.pd ++++ b/src/gcc/match.pd +@@ -2528,7 +2528,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + second_op (eq bit_xor) + (simplify + (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op @0 @1)) +- (bit_not (bit_ior @0 @1)))) ++ (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) ++ && TYPE_PRECISION (TREE_TYPE (@0)) == 1) ++ (convert:type (bit_not (bit_ior @0 @1))) ++ (convert:type (bit_xor (bit_ior @0 @1) { build_one_cst (TREE_TYPE (@0)); }))))) + + /* Convert ~ (A - 1) or ~ (A + -1) to -A. */ + (simplify +@@ -5081,7 +5084,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (cmp (bit_and (lshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop) + (with { int c1 = wi::clz (wi::to_wide (@1)); + int c2 = wi::clz (wi::to_wide (@2)); } +- (if (c1 < c2) ++ (if (c1 < c2 ++ /* If c1 - c2 isn't representable in TREE_TYPE (@0), it is also ++ never true, because for any valid x C << x will be smaller ++ than D. See PR126476. */ ++ || !wi::fits_to_tree_p (wi::shwi (c1 - c2, HOST_BITS_PER_INT), ++ TREE_TYPE (@0))) + { constant_boolean_node (cmp == NE_EXPR ? false : true, type); } + (icmp @0 { build_int_cst (TREE_TYPE (@0), c1 - c2); })))) + (simplify +@@ -5089,7 +5097,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (if (tree_int_cst_sgn (@1) > 0) + (with { int c1 = wi::clz (wi::to_wide (@1)); + int c2 = wi::clz (wi::to_wide (@2)); } +- (if (c1 > c2) ++ (if (c1 > c2 ++ || !wi::fits_to_tree_p (wi::shwi (c2 - c1, HOST_BITS_PER_INT), ++ TREE_TYPE (@0))) + { constant_boolean_node (cmp == NE_EXPR ? false : true, type); } + (icmp @0 { build_int_cst (TREE_TYPE (@0), c2 - c1); })))))) + +@@ -5102,7 +5112,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (with { int cand = wi::ctz (wi::to_wide (@2)) - wi::ctz (wi::to_wide (@0)); } + (if (cand < 0 + || (!integer_zerop (@2) +- && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2))) ++ && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2)) ++ || !wi::fits_to_tree_p (wi::shwi (cand, HOST_BITS_PER_INT), ++ TREE_TYPE (@1))) + { constant_boolean_node (cmp == NE_EXPR, type); } + (if (!integer_zerop (@2) + && wi::lshift (wi::to_wide (@0), cand) == wi::to_wide (@2)) +@@ -5250,8 +5262,9 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (bit_and + (nop_convert? (lshift integer_onep @0)) integer_pow2p@1) integer_zerop) + (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))) +- (icmp @0 { wide_int_to_tree (TREE_TYPE (@0), +- wi::exact_log2 (wi::to_wide (@1))); })))) ++ (with { int c = wi::exact_log2 (wi::to_wide (@1)); } ++ (if (wi::fits_to_tree_p (wi::shwi (c, HOST_BITS_PER_INT), TREE_TYPE (@0))) ++ (icmp @0 { wide_int_to_tree (TREE_TYPE (@0), c); })))))) + + /* Fold (X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1) + (X {&,^,|} C2) >> C1 into (X >> C1) & (C2 >> C1). */ +@@ -5645,7 +5658,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + (plus @0 @0) + (if (SCALAR_FLOAT_TYPE_P (type)) + (mult @0 { build_real (type, dconst2); }) +- (if (INTEGRAL_TYPE_P (type)) ++ (if (INTEGRAL_TYPE_P (type) ++ && TYPE_PRECISION (type) > (2 - TYPE_UNSIGNED (type))) + (mult @0 { build_int_cst (type, 2); })))) + + /* 0 - X -> -X. */ +@@ -6688,7 +6702,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + /* For CONDs, don't handle signed values here. */ + (if (cnd == VEC_COND_EXPR + || TYPE_UNSIGNED (TREE_TYPE (@0))) +- (cnd @0 @2 @1)))) ++ (cnd @0 @2 @1))) ++ ++ /* A == CST ? A : CST -> CST. */ ++ (simplify ++ (cnd (eq @0 CONSTANT_CLASS_P@1) (nop_convert? @0) CONSTANT_CLASS_P@2) ++ (if (ANY_INTEGRAL_TYPE_P (type) ++ && operand_equal_p (@1, @2)) ++ (convert @1))) ++ ++ /* A != CST ? CST : A -> CST. */ ++ (simplify ++ (cnd (ne @0 CONSTANT_CLASS_P@1) CONSTANT_CLASS_P@2 (nop_convert? @0)) ++ (if (ANY_INTEGRAL_TYPE_P (type) ++ && operand_equal_p (@1, @2)) ++ (convert @1)))) + + /* abs/negative simplifications moved from fold_cond_expr_with_comparison. + +@@ -10122,10 +10150,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) + #endif + + /* PARITY simplifications. */ +-/* parity(~X) is parity(X). */ ++/* parity(~X) is parity(X) for even precision and parity(X) ^ 1 otherwise. */ + (simplify + (PARITY (bit_not @0)) +- (PARITY @0)) ++ (if ((element_precision (TREE_TYPE (@0)) & 1) == 0) ++ (PARITY @0) ++ (bit_xor (PARITY:type @0) { build_one_cst (type); }))) + + /* parity(bswap(x)) is parity(x). */ + (for parity (PARITY) +--- a/src/gcc/range-op-float.cc ++++ b/src/gcc/range-op-float.cc +@@ -2365,7 +2365,7 @@ zero_to_inf_range (REAL_VALUE_TYPE &lb, REAL_VALUE_TYPE &ub, int signbit_known) + So, for op1_range/op2_range extend the lhs range by 1ulp (or 0.5ulp) + in each direction. See PR109008 for more details. */ + +-static frange ++frange + float_widen_lhs_range (tree type, const frange &lhs) + { + frange ret = lhs; +@@ -2373,7 +2373,7 @@ float_widen_lhs_range (tree type, const frange &lhs) + return ret; + REAL_VALUE_TYPE lb = lhs.lower_bound (); + REAL_VALUE_TYPE ub = lhs.upper_bound (); +- if (real_isfinite (&lb)) ++ if (real_isfinite (&lb) || !real_isneg (&lb)) + { + frange_nextafter (TYPE_MODE (type), lb, dconstninf); + if (real_isinf (&lb)) +@@ -2387,7 +2387,9 @@ float_widen_lhs_range (tree type, const frange &lhs) + lb = dconstm1; + SET_REAL_EXP (&lb, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1); + } +- if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type))) ++ if (!flag_rounding_math ++ && !MODE_COMPOSITE_P (TYPE_MODE (type)) ++ && real_isfinite (&lhs.lower_bound ())) + { + /* If not -frounding-math nor IBM double double, actually widen + just by 0.5ulp rather than 1ulp. */ +@@ -2396,7 +2398,7 @@ float_widen_lhs_range (tree type, const frange &lhs) + real_arithmetic (&lb, RDIV_EXPR, &tem, &dconst2); + } + } +- if (real_isfinite (&ub)) ++ if (real_isfinite (&ub) || real_isneg (&ub)) + { + frange_nextafter (TYPE_MODE (type), ub, dconstinf); + if (real_isinf (&ub)) +@@ -2405,7 +2407,9 @@ float_widen_lhs_range (tree type, const frange &lhs) + ub = dconst1; + SET_REAL_EXP (&ub, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1); + } +- if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type))) ++ if (!flag_rounding_math ++ && !MODE_COMPOSITE_P (TYPE_MODE (type)) ++ && real_isfinite (&lhs.upper_bound ())) + { + /* If not -frounding-math nor IBM double double, actually widen + just by 0.5ulp rather than 1ulp. */ +--- a/src/gcc/regcprop.cc ++++ b/src/gcc/regcprop.cc +@@ -36,6 +36,7 @@ + #include "cfgrtl.h" + #include "target.h" + #include "function-abi.h" ++#include "cfgcleanup.h" + + /* The following code does forward propagation of hard register copies. + The object is to eliminate as many dependencies as possible, so that +@@ -858,7 +859,7 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd) + && !side_effects_p (SET_DEST (set))) + { + bool last = insn == BB_END (bb); +- delete_insn (insn); ++ delete_insn_and_edges (insn); + if (last) + break; + continue; +@@ -1439,6 +1440,7 @@ pass_cprop_hardreg::execute (function *fun) + auto_vec *curr = &worklist1; + auto_vec *next = &worklist2; + bool any_debug_changes = false; ++ bool any_changes = false; + + /* We need accurate notes. Earlier passes such as if-conversion may + leave notes in an inconsistent state. */ +@@ -1458,7 +1460,10 @@ pass_cprop_hardreg::execute (function *fun) + FOR_EACH_BB_FN (bb, fun) + { + if (cprop_hardreg_bb (bb, all_vd, visited)) +- curr->safe_push (bb->index); ++ { ++ curr->safe_push (bb->index); ++ any_changes = true; ++ } + if (all_vd[bb->index].n_debug_insn_changes) + any_debug_changes = true; + } +@@ -1485,7 +1490,10 @@ pass_cprop_hardreg::execute (function *fun) + { + bb = BASIC_BLOCK_FOR_FN (fun, index); + if (cprop_hardreg_bb (bb, all_vd, visited)) +- next->safe_push (bb->index); ++ { ++ next->safe_push (bb->index); ++ any_changes = true; ++ } + if (all_vd[bb->index].n_debug_insn_changes) + any_debug_changes = true; + } +@@ -1497,6 +1505,15 @@ pass_cprop_hardreg::execute (function *fun) + } + + free (all_vd); ++ ++ /* Copy propagation of the sp register into an mem's address ++ can cause what was a trapping instruction into ++ a non-trapping one so cleanup after that in the case of non-call ++ exceptions. */ ++ if (any_changes ++ && cfun->can_throw_non_call_exceptions ++ && purge_all_dead_edges ()) ++ cleanup_cfg (0); + return 0; + } + +--- a/src/gcc/simplify-rtx.cc ++++ b/src/gcc/simplify-rtx.cc +@@ -7153,9 +7153,78 @@ simplify_context::simplify_ternary_operation (rtx_code code, machine_mode mode, + if (CONST_INT_P (op0)) + return op0 != const0_rtx ? op1 : op2; + +- /* Convert c ? a : a into "a". */ ++ /* Convert c ? a : a into "a". Beware that two rtx_equal_p MEMs can ++ still carry different memory attributes, in particular incompatible ++ alias sets; returning one of them would narrow the aliasing of the ++ result to that operand's, which is unsound (PR125683). When the ++ attributes differ, fold to a copy that keeps only what both operands ++ guarantee, like merge_memattrs does when cross-jumping commons two ++ memory references. */ + if (rtx_equal_p (op1, op2) && ! side_effects_p (op0)) +- return op1; ++ { ++ if (op1 == op2 ++ || !MEM_P (op1) ++ || (mem_attrs_eq_p (get_mem_attrs (op1), get_mem_attrs (op2)) ++ && MEM_READONLY_P (op1) == MEM_READONLY_P (op2) ++ && MEM_NOTRAP_P (op1) == MEM_NOTRAP_P (op2) ++ && MEM_POINTER (op1) == MEM_POINTER (op2))) ++ return op1; ++ ++ /* For BLKmode the size in MEM_ATTRS describes the access itself, ++ so it cannot be dropped. Volatility is not merged either: it ++ constrains when the access happens rather than describing the ++ memory, so unlike the flags below it cannot be weakened to what ++ both operands allow. Dropping it would lose a required access; ++ merge_memattrs and noce_try_cmove_arith instead set it, which is ++ sound but claims more than either operand did. Those two have to ++ put something on a reference they are already committed to, while ++ this fold is free to do nothing, and if-conversion never reaches ++ it with a volatile operand in any case: side_effects_p is true ++ for one, so noce_operand_ok rejects it. Decline the fold. */ ++ if (GET_MODE (op1) != BLKmode ++ && MEM_VOLATILE_P (op1) == MEM_VOLATILE_P (op2)) ++ { ++ rtx mem = shallow_copy_rtx (op1); ++ ++ if (MEM_ALIAS_SET (op1) != MEM_ALIAS_SET (op2)) ++ set_mem_alias_set (mem, 0); ++ ++ if (!mem_expr_equal_p (MEM_EXPR (op1), MEM_EXPR (op2))) ++ { ++ set_mem_expr (mem, NULL_TREE); ++ clear_mem_offset (mem); ++ } ++ else if (MEM_OFFSET_KNOWN_P (op1) != MEM_OFFSET_KNOWN_P (op2) ++ || (MEM_OFFSET_KNOWN_P (op1) ++ && maybe_ne (MEM_OFFSET (op1), MEM_OFFSET (op2)))) ++ clear_mem_offset (mem); ++ ++ /* Unlike merge_memattrs, which fixes up two references that ++ both stay in the stream, this returns a single reference ++ that stands in for either arm, so keep the size only when ++ both agree rather than taking the larger one. */ ++ if (!MEM_SIZE_KNOWN_P (op1) || !MEM_SIZE_KNOWN_P (op2) ++ || maybe_ne (MEM_SIZE (op1), MEM_SIZE (op2))) ++ clear_mem_size (mem); ++ ++ set_mem_align (mem, MIN (MEM_ALIGN (op1), MEM_ALIGN (op2))); ++ ++ /* MEM_READONLY_P, MEM_NOTRAP_P and MEM_POINTER are rtx flag ++ bits rather than MEM_ATTRS fields, so shallow_copy_rtx has ++ already taken them from OP1 and they need clearing by hand. ++ Each asserts something about the reference, so the copy may ++ only keep it when both operands do, as merge_memattrs does ++ for the first two. */ ++ if (MEM_READONLY_P (op1) != MEM_READONLY_P (op2)) ++ MEM_READONLY_P (mem) = 0; ++ if (MEM_NOTRAP_P (op1) != MEM_NOTRAP_P (op2)) ++ MEM_NOTRAP_P (mem) = 0; ++ if (MEM_POINTER (op1) != MEM_POINTER (op2)) ++ MEM_POINTER (mem) = 0; ++ ++ return mem; ++ } ++ } + + /* Convert a != b ? a : b into "a". */ + if (GET_CODE (op0) == NE +@@ -8184,7 +8253,8 @@ simplify_context::simplify_subreg (machine_mode outermode, rtx op, + res = simplify_subreg (outermode, part, part_mode, final_offset); + if (res) + return res; +- if (validate_subreg (outermode, part_mode, part, final_offset)) ++ if (GET_MODE (part) != VOIDmode ++ && validate_subreg (outermode, part_mode, part, final_offset)) + return gen_rtx_SUBREG (outermode, part, final_offset); + return NULL_RTX; + } +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -7325,8 +7325,8 @@ HOOK_VECTOR (TARGET_TOGGLE_, mode_switching) + DEFHOOK + (emit, + "Generate one or more insns to set @var{entity} to @var{mode}.\n\ +-@var{hard_reg_live} is the set of hard registers live at the point where\n\ +-the insn(s) are to be inserted. @var{prev_moxde} indicates the mode\n\ ++@var{regs_live} is the set of hard registers live at the point where\n\ ++the insn(s) are to be inserted. @var{prev_mode} indicates the mode\n\ + to switch from, or is the number of modes if the previous mode is not\n\ + known. Sets of a lower numbered entity will be emitted before\n\ + sets of a higher numbered entity to a mode of the same or lower priority.", +--- a/src/gcc/testsuite/ChangeLog ++++ b/src/gcc/testsuite/ChangeLog +@@ -1,3 +1,1279 @@ ++2026-09-13 Zhou Qiankang ++ ++ Backported from master: ++ 2026-06-08 Zhou Qiankang ++ ++ PR c++/125642 ++ * g++.dg/pr125642.C: New test. ++ ++2026-09-12 Zhongyao Chen ++ ++ Backported from master: ++ 2026-09-08 Zhongyao Chen ++ ++ PR target/126932 ++ * gcc.target/riscv/rvv/autovec/ternop/pr126932.c: New test. ++ ++2026-09-11 Richard Earnshaw ++ ++ Backported from master: ++ 2026-09-04 Richard Earnshaw ++ ++ PR target/126463 ++ * gcc.target/aarch64/negv.c: New test. ++ ++2026-09-08 Jin Ma ++ ++ Backported from master: ++ 2026-09-05 Jin Ma ++ ++ PR target/126196 ++ * gcc.target/riscv/pr126196-1.c: New test. ++ * gcc.target/riscv/pr126196-2.c: New test. ++ * gcc.target/riscv/pr126196-3.c: New test. ++ * gcc.target/riscv/pr126196-4.c: New test. ++ ++2026-09-07 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-07-01 Stefan Schulze Frielinghaus ++ ++ PR target/126054 ++ * gcc.target/s390/pr126054.c: New test. ++ ++2026-09-06 Rohith Kapelli ++ ++ Backported from master: ++ 2026-08-13 Rohith Kapelli ++ ++ PR rtl-optimization/125683 ++ * gcc.dg/pr125683.c: New test. ++ * gcc.dg/rtl/aarch64/pr125683-flags.c: New test. ++ ++2026-09-04 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-09-04 Georg-Johann Lay ++ ++ PR target/127188 ++ * gcc.target/avr/pr127188.c: New test. ++ ++2026-09-03 Patrick Palka ++ ++ Backported from master: ++ 2026-08-14 Patrick Palka ++ ++ PR c++/126483 ++ * g++.dg/opt/is_constant_evaluated3b.C: xfail a1 initializer ++ folding. ++ * g++.dg/cpp2a/is-constant-evaluated16.C: New test. ++ ++2026-09-03 Patrick Palka ++ ++ Backported from master: ++ 2026-08-14 Patrick Palka ++ ++ * g++.dg/opt/is_constant_evaluated3a.C: New test. ++ * g++.dg/opt/is_constant_evaluated3b.C: New test. ++ ++2026-09-03 Patrick Palka ++ ++ Backported from master: ++ 2026-07-25 Patrick Palka ++ ++ PR c++/126280 ++ * g++.dg/template/fn-ptr6.C: New test. ++ ++2026-08-29 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-08-29 Georg-Johann Lay ++ ++ PR middle-end/127098 ++ * gcc.target/avr/torture/pr127098.c: New test. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/120681 ++ * gcc.target/powerpc/pr120681.c: New test. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/120528 ++ * gcc.target/powerpc/pr120528.c: New test. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/99293 ++ * gcc.target/powerpc/pr99293.c: New test. ++ * gcc.target/powerpc/builtins-1.c: Update instruction count. ++ ++2026-08-28 Michael Meissner ++ ++ PR target/117487 ++ * gcc.target/powerpc/pr117487.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-24 Jakub Jelinek ++ ++ * gcc.dg/builtin-stdc-bit-1.c (main): Fix two pastos. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-07 Jakub Jelinek ++ ++ PR tree-optimization/126534 ++ * gcc.dg/pr126534.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-07 Jakub Jelinek ++ ++ PR target/126667 ++ * gcc.dg/pr126667.c: New test. ++ * gcc.target/s390/pr126667.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-06 Jakub Jelinek ++ ++ PR preprocessor/125048 ++ * c-c++-common/cpp/va-opt-11.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-04 Jakub Jelinek ++ ++ PR tree-optimization/126464 ++ * gcc.dg/pr126464.c: Guard uses of 1e300 with ++ __DBL_MAX_10_EXP__ >= 301 and uses of 1e4000L with ++ __LDBL_MAX_10_EXP__ >= 4001. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-04 Jakub Jelinek ++ ++ PR tree-optimization/126601 ++ * gcc.dg/tree-ssa/pr126601.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-04 Jakub Jelinek ++ ++ PR tree-optimization/126564 ++ * gcc.dg/torture/pr126564.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-03 Jakub Jelinek ++ ++ PR tree-optimization/126547 ++ * gcc.dg/torture/pr126547.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-03 Jakub Jelinek ++ ++ PR tree-optimization/126576 ++ * gcc.dg/torture/pr126576.c: New test. ++ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-03 Jakub Jelinek ++ ++ PR target/126484 ++ * g++.target/mips/pr126484.C: New test. ++ ++2026-08-26 Harald Anlauf ++ ++ Backported from master: ++ 2026-07-08 Harald Anlauf ++ ++ PR fortran/126127 ++ * gfortran.dg/block_18.f90: New test. ++ ++2026-08-26 Eric Botcazou ++ ++ * gnat.dg/opt110.adb: New test. ++ ++2026-08-26 Alexandre Oliva ++ ++ Backported from master: ++ 2026-08-26 Alexandre Oliva ++ ++ PR tree-optimization/126650 ++ * gcc.dg/torture/pr126650.c: Be explicit about endianness ++ expectations. ++ ++2026-08-24 Jin Ma ++ ++ Backported from master: ++ 2026-08-21 Jin Ma ++ ++ PR target/126873 ++ * gcc.target/riscv/pr126873.c: New test. ++ ++2026-08-24 Jeff Law ++ ++ Backported from master: ++ 2026-08-14 Jeff Law ++ ++ PR rtl-optimization/126426 ++ * gcc.target/riscv/pr126426.c: New test. ++ ++2026-08-24 Eric Botcazou ++ ++ * gnat.dg/array43.adb: New test. ++ ++2026-08-24 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-08-23 Georg-Johann Lay ++ ++ PR target/127004 ++ * gcc.target/avr/torture/pr127004.c: New test. ++ ++2026-08-20 Hongyu Wang ++ ++ Backported from master: ++ 2026-08-12 Hongyu Wang ++ ++ PR target/126787 ++ * gcc.target/i386/pr126787.c: New test. ++ ++2026-08-20 Avinash Jayakar ++ ++ Backported from master: ++ 2026-08-10 Avinash Jayakar ++ ++ PR target/126513 ++ * gcc.target/powerpc/pr126513-acmp-tst-1.c: New test. ++ * gcc.target/powerpc/pr126513-acmp-tst-2.c: New test. ++ * gcc.target/powerpc/pr126513-acmp-tst-3.c: New test. ++ ++2026-08-19 Alice Carlotti ++ ++ PR target/124629 ++ * gcc.target/aarch64/cpunative/info_36: New test file. ++ * gcc.target/aarch64/cpunative/native_cpu_36.c: New test. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-08-05 Richard Biener ++ ++ PR tree-optimization/126650 ++ * gcc.dg/torture/pr126650.c: New testcase. ++ ++2026-08-19 H.J. Lu ++ ++ Backported from master: ++ 2026-07-28 H.J. Lu ++ Richard Biener ++ ++ PR middle-end/126410 ++ * gcc.target/i386/pr126410-1a.c: New test. ++ * gcc.target/i386/pr126410-1b.c: Likewise. ++ * gcc.target/i386/pr126410-1c.c: Likewise. ++ * gcc.target/i386/pr126410-2a.c: Likewise. ++ * gcc.target/i386/pr126410-2b.c: Likewise. ++ * gcc.target/i386/pr126410-2c.c: Likewise. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-15 Richard Biener ++ ++ PR tree-optimization/125786 ++ * gcc.dg/torture/pr125786.c: New testcase. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-02 Richard Biener ++ ++ PR tree-optimization/125545 ++ * gcc.dg/torture/pr125545.c: New testcase. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-06-03 Richard Biener ++ ++ PR tree-optimization/125477 ++ * gcc.dg/torture/pr125477.c: New testcase. ++ ++2026-08-19 Richard Biener ++ ++ Backported from master: ++ 2026-05-04 Richard Biener ++ ++ PR middle-end/125156 ++ * gcc.dg/torture/pr125156.c: New testcase. ++ ++2026-08-19 vekumar ++ ++ Backported from master: ++ 2026-06-26 vekumar ++ ++ PR target/125949 ++ * gcc.target/i386/pr125949.c: New test. ++ ++2026-08-16 Paul Thomas ++ ++ Backported from master: ++ 2026-03-27 Paul Thomas ++ ++ PR fortran/114021 ++ * gfortran.dg/pr114021.f90: New test. ++ ++2026-08-11 Robin Dapp ++ ++ Backported from master: ++ 2026-07-25 Robin Dapp ++ ++ PR target/126334 ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-1.c: ++ Adjust test expectations. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-11.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-12.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-3.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-9.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-1.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-11.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-3.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-9.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-1.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-3.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-9.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-1.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-3.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-9.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-1.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-9.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-1.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-10.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-2.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-3.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-4.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-5.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-6.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-7.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-8.c: Ditto. ++ * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-9.c: Ditto. ++ ++2026-08-11 Robin Dapp ++ ++ Backported from master: ++ 2026-08-04 Robin Dapp ++ ++ PR target/126550 ++ * gcc.target/riscv/rvv/autovec/pr126550-2.c: New test. ++ * gcc.target/riscv/rvv/autovec/pr126550.c: New test. ++ ++2026-08-08 Paul Thomas ++ ++ Backported from master: ++ 2026-02-03 Paul Thomas ++ ++ PR fortran/123952 ++ * gfortran.dg/pr123952.f90: New test. ++ ++2026-08-08 Paul Thomas ++ ++ Backported from master: ++ 2026-05-23 Paul Thomas ++ ++ PR fortran/125263 ++ * gfortran.dg/pr125263.f90: New test. ++ ++2026-08-05 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-28 Jerry DeLisle ++ ++ PR fortran/125866 ++ * gfortran.dg/pr125866.f90: New test. ++ ++2026-08-04 Jin Ma ++ ++ Backported from master: ++ 2026-07-16 Jin Ma ++ ++ * g++.target/riscv/pr97682.C: Accept registers in SIBCALL_REGS. ++ * gcc.target/riscv/rvv/base/sibcall-scalable-frame-indirect.c: ++ New test. ++ * gcc.target/riscv/rvv/base/sibcall-scalable-frame-weak.c: New test. ++ ++2026-08-03 Hu, Lin1 ++ ++ PR target/126581 ++ * gcc.target/i386/pr126581-1.c: New test. ++ ++2026-08-02 Eric Botcazou ++ ++ * gnat.dg/unchecked_union5.adb: New test. ++ ++2026-08-02 Eric Botcazou ++ ++ * gnat.dg/validity_check3.adb: New test. ++ ++2026-08-02 Eric Botcazou ++ ++ * gnat.dg/valid_scalars2.adb: Remove -O0 option. ++ * gnat.dg/validity_check3.ads: Rename to... ++ * gnat.dg/valid_scalars3.ads: ...this. ++ * gnat.dg/validity_check3.adb: Rename to... ++ * gnat.dg/valid_scalars3.adb: ...this. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126504 ++ * gcc.dg/torture/bitint-105.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126503 ++ * gcc.dg/torture/bitint-106.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR middle-end/126497 ++ * gcc.dg/bitint-141.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126490 ++ * gcc.dg/torture/bitint-104.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126464 ++ * gcc.dg/torture/pr126464.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-31 Jakub Jelinek ++ ++ PR tree-optimization/126476 ++ * gcc.dg/torture/bitint-103.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-30 Jakub Jelinek ++ ++ PR tree-optimization/126464 ++ * gcc.dg/pr126464.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-30 Jakub Jelinek ++ ++ PR tree-optimization/126471 ++ * gcc.dg/bitint-139.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-29 Jakub Jelinek ++ ++ PR target/126446 ++ * gcc.target/i386/avx2-pr126446.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-29 Jakub Jelinek ++ ++ PR middle-end/126447 ++ * gcc.dg/ubsan/bitint-5.c: New test. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-27 Jakub Jelinek ++ ++ PR fortran/126303 ++ * gfortran.dg/pr126303.f: New test. ++ ++2026-07-31 Alexandre Oliva ++ ++ Backported from master: ++ 2026-07-30 Alexandre Oliva ++ ++ PR tree-optimization/126194 ++ * g++.dg/lto/pr126194_2.C (main): Tolerate argc == 0. ++ ++2026-07-28 Haochen Jiang ++ ++ Backported from master: ++ 2026-07-28 Haochen Jiang ++ ++ PR target/126429 ++ * gcc.target/i386/pr126429-1.c: New test. ++ ++2026-07-27 Thomas Koenig ++ ++ Backported from master: ++ 2026-07-26 Thomas Koenig ++ ++ PR fortran/126386 ++ * gfortran.dg/inline_matmul_28.f90: New test. ++ ++2026-07-27 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-27 Torbjörn SVENSSON ++ ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-3.C: Require effective target ++ arm_fp16_alternative_hw instead of arm_fp16_alternative_ok. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-4.C: Likewise. ++ * gcc.dg/torture/arm-fp16-int-convert-alt.c: Likewise. ++ * gcc.dg/torture/arm-fp16-ops-3.c: Likewise. ++ * gcc.dg/torture/arm-fp16-ops-4.c: Likewise. ++ * lib/target-supports.exp (arm_fp16_alternative_hw): New proc. ++ ++2026-07-24 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-21 Torbjörn SVENSSON ++ ++ PR tree-optimization/124663 ++ * g++.dg/tree-ssa/pr124663.C: New test. ++ ++2026-07-23 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-23 Torbjörn SVENSSON ++ ++ PR testsuite/118407 ++ * gcc.dg/tree-ssa/predcom-8.c: Use arm_neon as xfail condition. ++ ++2026-07-23 Hu, Lin1 ++ ++ * gcc.target/i386/avx10_2-satcvt-1.c: Update intrin names and ++ add _si alias tests. ++ * gcc.target/i386/sse-14.c: Ditto. ++ * gcc.target/i386/sse-22.c: Ditto. ++ * gcc.target/i386/avx10_2-vcvttsd2sis-2.c: Update intrin names. ++ * gcc.target/i386/avx10_2-vcvttsd2usis-2.c: Ditto. ++ * gcc.target/i386/avx10_2-vcvttss2sis-2.c: Ditto. ++ * gcc.target/i386/avx10_2-vcvttss2usis-2.c: Ditto. ++ ++2026-07-23 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-23 Torbjörn SVENSSON ++ ++ PR testsuite/124112 ++ * gcc.dg/vect/vect-early-break_65.c: Prevent packing enum to a ++ smaller object. ++ ++2026-07-22 Martin Jambor ++ ++ Backported from master: ++ 2026-06-18 Martin Jambor ++ ++ PR ipa/124128 ++ * gcc.dg/ipa/pr124128.c: New test. ++ ++2026-07-22 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-22 Torbjörn SVENSSON ++ ++ * gcc.target/arm/reg_equal_test.c: Add require effective target ++ cortex-a53 for test. ++ ++2026-07-21 Alice Carlotti ++ ++ PR target/119210 ++ * gcc.target/aarch64/sme/za_state_8.c: New test. ++ ++2026-07-21 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-21 Torbjörn SVENSSON ++ ++ PR testsuite/124726 ++ * gcc.dg/vect/tsvc/vect-tsvc-s124.c: Remove xfail for arm_neon. ++ * gcc.dg/vect/tsvc/vect-tsvc-s276.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s3111.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s3113.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s312.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s314.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s316.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s317.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s319.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s441.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s443.c: Likewise. ++ * gcc.dg/vect/tsvc/vect-tsvc-s453.c: Likewise. ++ ++2026-07-21 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-21 Torbjörn SVENSSON ++ ++ PR testsuite/124361 ++ * gcc.dg/tree-ssa/ssa-dom-cse-2.c: Remove xfail for arm_mve. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR testsuite/126261 ++ * lib/target-supports.exp (check_effective_target_can_deref_null): ++ Cast argument to char*. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR target/124364 ++ * gcc.dg/Wstringop-overflow-47.c: Remove xfail. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR testsuite/126261 ++ * g++.dg/torture/pr101373.C: Use effective-target can_deref_null. ++ * lib/target-supports.exp (check_effective_target_can_deref_null): ++ New proc. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR testsuite/118407 ++ * gcc.dg/tree-ssa/predcom-8.c: Xfail test for arm*-*-* in hard ++ float ABI without MVE. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-20 Torbjörn SVENSSON ++ ++ PR testsuite/124043 ++ * gcc.target/arm/crypto-vsha1cq_u32.c: Xfail test for -mthumb ++ -mfloat-abi=hard. ++ * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. ++ * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. ++ * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. ++ ++2026-07-20 Alexandre Oliva ++ ++ Backported from master: ++ 2026-01-31 Alexandre Oliva ++ ++ * gcc.target/arm/crypto-vsha1cq_u32.c: Accept d regs in ++ vdup.32. Drop extraneous + after ] in vmov.32 pattern. ++ * gcc.target/arm/crypto-vsha1h_u32.c: Likewise. ++ * gcc.target/arm/crypto-vsha1mq_u32.c: Likewise. ++ * gcc.target/arm/crypto-vsha1pq_u32.c: Likewise. ++ ++2026-07-20 Mikael Morin ++ ++ Backported from master: ++ 2026-07-03 Mikael Morin ++ ++ PR fortran/97592 ++ PR fortran/125998 ++ * gfortran.dg/contiguous_17.f90: New test. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-06-25 Richard Biener ++ ++ PR tree-optimization/125953 ++ * gcc.dg/torture/pr125953.c: New testcase. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-06-02 Richard Biener ++ ++ PR tree-optimization/125502 ++ * gcc.dg/torture/pr125502.c: New testcase. ++ ++2026-07-20 Richard Biener ++ ++ Backported from master: ++ 2026-07-14 Richard Biener ++ ++ PR tree-optimization/126194 ++ * g++.dg/lto/pr126194.h: New testcase. ++ * g++.dg/lto/pr126194_0.C: Likewise. ++ * g++.dg/lto/pr126194_1.C: Likewise. ++ * g++.dg/lto/pr126194_2.C: Likewise. ++ ++2026-07-20 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-06-29 Kyrylo Tkachov ++ ++ PR target/105116 ++ * gcc.target/aarch64/sve/pr105116.c: New test. ++ * gcc.target/aarch64/sve/pr105116-run.c: New test. ++ ++2026-07-20 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-13 Torbjörn SVENSSON ++ ++ PR driver/124058 ++ * c-c++-common/Wuse-after-free-8.c: New test. ++ ++2026-07-16 Michal Jires ++ ++ Backported from master: ++ 2026-07-15 Michal Jires ++ ++ PR lto/125257 ++ * gcc.dg/lto/pr125257_0.c: New test. ++ ++2026-07-16 Rainer Orth ++ ++ Backported from master: ++ 2026-07-16 Rainer Orth ++ ++ * gcc.dg/torture/bitint-101.c: Require bitint. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-16 Jakub Jelinek ++ ++ PR tree-optimization/126262 ++ * gcc.dg/torture/bitint-102.c: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-15 Jakub Jelinek ++ ++ PR tree-optimization/126257 ++ * gcc.dg/torture/bitint-101.c: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-14 Jakub Jelinek ++ ++ PR middle-end/126084 ++ * gcc.dg/asan/bitint-1.c: New test. ++ * gcc.dg/asan/bitint-2.c: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-14 Jakub Jelinek ++ H.J. Lu ++ ++ PR tree-optimization/120201 ++ * g++.dg/asan/pr120201-1.C: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-05 Jakub Jelinek ++ ++ * g++.dg/opt/20260703-1.C: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-03 Jakub Jelinek ++ ++ PR c++/126057 ++ * g++.dg/cpp2a/decomp11.C: New test. ++ ++2026-07-16 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-12 Jakub Jelinek ++ ++ PR c++/125674 ++ * g++.dg/template/bitfield5.C: New test. ++ * g++.dg/template/bitfield6.C: New test. ++ ++2026-07-16 Jeevitha ++ ++ Backported from master: ++ 2026-06-22 Jeevitha Palanisamy ++ ++ PR target/106895 ++ * gcc.target/powerpc/pr106895-1.c: New test. ++ * gcc.target/powerpc/pr106895-2.c: New test. ++ ++2026-07-14 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-14 Torbjörn SVENSSON ++ ++ * gcc.target/arm/pr110268-1.c: Use arm_v8_1m_mve_link. ++ * gcc.target/arm/pr110268-2.c: Likewise ++ * lib/target-supports.exp (arm_v8_1m_mve_link): New. ++ ++2026-07-12 Paul Thomas ++ ++ Backported from master: ++ 2026-05-07 Paul Thomas ++ ++ PR fortran/125172 ++ * gfortran.dg/associate_79.f90: New test. ++ ++2026-07-10 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-08 Jerry DeLisle ++ ++ PR libfortran/126116 ++ * gfortran.dg/pr126116.f90: New test. ++ ++2026-07-09 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-07 Jerry DeLisle ++ ++ PR fortran/103367 ++ * gfortran.dg/pr103367_2.f90: New test. ++ * gfortran.dg/pr103367_3.f90: New test. ++ * gfortran.dg/pr103367_4.f90: New test. ++ ++2026-07-09 Jerry DeLisle ++ ++ Backported from master: ++ 2026-06-24 Jerry DeLisle ++ ++ PR fortran/60576 ++ * gfortran.dg/asan/assumed_rank_26.f90: New test covering both ++ assumed-rank and fixed-rank type actuals passed to a CLASS ++ assumed-rank dummy. ++ ++2026-07-09 Christopher Albert ++ ++ PR fortran/103367 ++ * gfortran.dg/pr103367.f90: Expect a constant-expression error and ++ prune the legacy-extension warning. ++ ++2026-07-09 Christopher Albert ++ ++ PR fortran/103367 ++ * gfortran.dg/pr103367.f90: New test. ++ ++2026-07-09 Uros Bizjak ++ ++ Backported from master: ++ 2026-07-08 Uros Bizjak ++ ++ PR target/126148 ++ * gcc.target/i386/pr126148.c: New test. ++ ++2026-07-07 Icenowy Zheng ++ ++ Backported from master: ++ 2026-07-01 Icenowy Zheng ++ ++ PR target/126049 ++ * gcc.target/riscv/rvv/autovec/pr126049.c: New. ++ ++2026-07-07 Christophe Lyon ++ ++ Backported from master: ++ 2025-05-09 Christophe Lyon ++ ++ * g++.dg/cpp2a/decomp2.C: Require tls_runtime. ++ ++2026-07-06 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-07-06 Torbjörn SVENSSON ++ ++ * gcc.target/arm/tls-disable-literal-pool.c: Add quotation for ++ command line arguments. ++ ++2026-07-05 Oleg Endo ++ ++ PR target/67459 ++ PR target/122948 ++ * gcc.target/sh/pr122948.c: New test. ++ ++2026-07-03 Stefan Schulze Frielinghaus ++ ++ PR rtl-optimization/125173 ++ * gcc.dg/pr125173-1.c: Remove option ++ -fno-fuse-ops-with-volatile-access. ++ ++2026-07-03 Richard Earnshaw ++ ++ * lib/target-supports.exp: Add arm_arch_v7a_thumb. ++ * gcc.target/arm/ifcvt-size-check.c: Add options to force thumb1. ++ * gcc.target/arm/ivopts-2.c: Remove object size check. ++ * gcc.target/arm/ivopts-3.c: Likewise. ++ * gcc.target/arm/ivopts-4.c: Likewise. ++ * gcc.target/arm/ivopts-5.c: Likewise. ++ * gcc.target/arm/ivopts.c: Likewise. ++ * gcc.target/arm/max-insns-skipped.c: Scan for absence of an IT ++ instruction. Remove object size check. Use arm_arch_v7a_thumb. ++ * gcc.target/arm/pr43597.c: Remove object size check and use ++ arm_arch_v7a_thumb. ++ * gcc.target/arm/pr63210.c: Use arm_arch_v5t_thumb options. ++ * gcc.target/arm/split-live-ranges-for-shrink-wrap.c: Remove ++ object size check and use arm_arch_v5t_thumb options. ++ (cherry picked from commit ++ e1077ad5753148892871fa146f3948b55c46f7e3 with a slight ++ modification for gcc.target/arm/ivopts.c, to keep the line ++ about arm_iwmmxt_ok because iwmmxt was removed in gcc-16) ++ ++2026-07-03 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-03 Jerry DeLisle ++ ++ PR fortran/126018 ++ * gfortran.dg/stop_function_code_1.f90: New test. ++ ++2026-07-02 Christophe Lyon ++ ++ Backported from master: ++ 2026-01-27 Christophe Lyon ++ ++ * gcc.target/arm/mve/intrinsics/vdupq_n_f32.c: Update expected ++ code. ++ ++2026-07-01 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-06-26 Stefan Schulze Frielinghaus ++ ++ PR target/125972 ++ * gcc.target/s390/pr125972.c: New test. ++ ++2026-07-01 Eric Botcazou ++ ++ * gnat.dg/opt109.adb: New test. ++ * gnat.dg/opt109_pkg.ads, gnat.dg/opt109_pkg.adb: New helper. ++ ++2026-07-01 Avinash Jayakar ++ ++ Backported from master: ++ 2026-06-30 Avinash Jayakar ++ Surya Kumari Jangala ++ ++ * gcc.target/powerpc/acmp-tst-32bit.c: New test. ++ * gcc.target/powerpc/acmp-tst.c: New test. ++ * gcc.target/powerpc/acmp-tst-indexed.c: New test. ++ ++2026-06-30 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2026-06-12 Stefan Schulze Frielinghaus ++ ++ PR rtl-optimization/125173 ++ * gcc.dg/pr125173-1.c: New test. ++ ++2026-06-30 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-04-22 Kyrylo Tkachov ++ ++ PR target/124908 ++ * gcc.target/aarch64/sve/acle/general/ld1rq_2.c: New test. ++ ++2026-06-29 Alex Coplan ++ ++ Backported from master: ++ 2026-06-23 Alex Coplan ++ ++ PR target/125818 ++ * gcc.target/aarch64/torture/pr125818.c: New test. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-05-28 Jakub Jelinek ++ ++ PR target/125469 ++ * gcc.target/i386/apx-nf-pr125469.c: New test. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-27 Jakub Jelinek ++ ++ PR target/125992 ++ * gcc.target/s390/pr125992.c: New test. ++ ++2026-06-29 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-06 Jakub Jelinek ++ ++ PR target/125611 ++ * gcc.target/i386/ssse3-pr125611.c: New test. ++ ++2026-06-25 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-03-24 Torbjörn SVENSSON ++ ++ PR rtl-optimization/124454 ++ * gcc.dg/pr124454-1.c: Add missing require effective target ++ fopenmp. ++ ++2026-06-22 Robin Dapp ++ ++ Backported from master: ++ 2026-06-17 Robin Dapp ++ ++ PR target/125478 ++ * gcc.target/riscv/rvv/autovec/pr125478.c: New test. ++ ++2026-06-22 Robin Dapp ++ ++ Backported from master: ++ 2026-06-16 Robin Dapp ++ ++ PR target/125670 ++ * gcc.target/riscv/rvv/autovec/pr125670.c: New test. ++ ++2026-06-22 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-06-11 Torbjörn SVENSSON ++ ++ * lib/target-supports.exp (arm_mixed_fp): Simplify ++ implementation. ++ ++2026-06-22 Torbjörn SVENSSON ++ ++ Backported from master: ++ 2026-04-09 Torbjörn SVENSSON ++ ++ PR testsuite/113276 ++ * gcc.dg/torture/fp-double-convert-float-1.c: Xfail test for arm* ++ unless single- and double-precision FP. ++ * lib/target-supports.exp (check_effective_target_arm_mixed_fp): ++ New function. ++ ++2026-06-18 Xin Liu ++ ++ Backported from master: ++ 2026-04-29 Xin Liu ++ Zhaoling Bao ++ ++ * gcc.target/i386/builtin_target.c: Add handling for HYGON CPUs by ++ validating the vendor and invoking HYGON-specific CPU detection. ++ * gcc.target/i386/funcspec-56.inc: Test function target attribute on ++ {arch,tune}=c86-4g-m{4,6,7}. ++ * g++.target/i386/mv33.C: New test. ++ ++2026-06-17 Zhongyao Chen ++ ++ PR target/125215 ++ * gcc.target/riscv/rvv/autovec/pr125215.c: New test. ++ * gcc.target/riscv/rvv/autovec/slp-interleave-1.c: Remove. ++ * gcc.target/riscv/rvv/autovec/slp-interleave-2.c: Remove. ++ * gcc.target/riscv/rvv/autovec/slp-interleave-3.c: Remove. ++ * gcc.target/riscv/rvv/autovec/slp-interleave-4.c: Remove. ++ * gcc.target/riscv/rvv/autovec/slp-interleave-5.c: Remove. ++ ++2026-06-17 Alex Coplan ++ ++ Backported from master: ++ 2026-06-09 Alex Coplan ++ ++ PR middle-end/125621 ++ * gcc.target/aarch64/torture/pr125621.c: New test. ++ ++2026-06-17 Kishan Parmar ++ ++ Backported from master: ++ 2026-05-27 Kishan Parmar ++ Surya Kumari Jangala ++ ++ PR target/125448 ++ * gcc.target/powerpc/mpc860_no_lwsync.c: Restrict to ilp32 targets. ++ ++2026-06-17 Kishan Parmar ++ ++ Backported from master: ++ 2026-05-22 Steve Markgraf ++ ++ * gcc.target/powerpc/mpc860_no_lwsync.c: New test. ++ ++2026-06-17 Kyrylo Tkachov ++ ++ Backported from master: ++ 2026-06-15 Kyrylo Tkachov ++ ++ PR target/125795 ++ * gcc.target/aarch64/pr125795.c: New test. ++ ++2026-06-17 Carter Rennick ++ ++ Backported from master: ++ 2026-04-24 Carter Rennick ++ ++ PR target/120144 ++ * gcc.dg/torture/pr120144.c: New test. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-06-13 Andrew Pinski ++ ++ PR tree-optimization/125776 ++ * gcc.dg/torture/pr125776-1.c: New test. ++ * gcc.dg/torture/pr125776-2.c: New test. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-06-14 Andrew Pinski ++ ++ PR tree-optimization/125774 ++ * gcc.dg/torture/pr125774-1.c: New test. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-05-04 Andrew Pinski ++ ++ PR c++/65271 ++ * g++.dg/cpp0x/rv-decl1.C: New test. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-03-12 Andrew Pinski ++ ++ PR rtl-optimization/123822 ++ * gcc.dg/torture/pr123822-1.c: New test. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-03-13 Andrew Pinski ++ ++ PR rtl-optimization/124454 ++ * gcc.dg/pr124454-1.c: New test. ++ ++2026-06-17 Thomas Schwinge ++ ++ Backported from master: ++ 2026-02-19 Thomas Schwinge ++ ++ PR rtl-optimization/116053 ++ * gcc.dg/pr116053-1.c: 'dg-require-effective-target int128'. ++ ++2026-06-17 Andrew Pinski ++ ++ Backported from master: ++ 2026-02-18 Andrew Pinski ++ ++ PR rtl-optimization/116053 ++ * gcc.dg/pr116053-1.c: New test. ++ ++2026-06-17 Andrew MacLeod ++ ++ PR tree-optimization/125501 ++ * gcc.dg/pr125501.c: New. ++ ++2026-06-16 Martin Jambor ++ ++ Backported from master: ++ 2026-05-12 Martin Jambor ++ ++ PR tree-optimization/124151 ++ * gcc.dg/tree-ssa/pr124151.c: New test. ++ ++2026-06-12 Harald Anlauf ++ ++ Backported from master: ++ 2026-06-06 Harald Anlauf ++ ++ PR fortran/125606 ++ * gfortran.dg/loc_3.f90: New test. ++ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125752 ++ * gcc.target/avr/torture/fx-to-double.c: New test. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/Wuse-after-free-8.c +@@ -0,0 +1,26 @@ ++/* Verify -Wuse-after-free is an alias for -Wuse-after-free=1. */ ++/* { dg-do compile } */ ++/* { dg-options "-O0 -Wuse-after-free" } */ ++ ++#if __cplusplus ++# define EXTERN_C extern "C" ++#else ++# define EXTERN_C extern ++#endif ++ ++EXTERN_C void free (void *); ++ ++void sink (void *); ++ ++void warn_call_after_free (void *p) ++{ ++ free (p); ++ sink (p); // { dg-warning "pointer 'p' used" } ++} ++ ++void warn_cond_call_after_free (void *p, int c) ++{ ++ free (p); ++ if (c) ++ sink (p); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/cpp/va-opt-11.c +@@ -0,0 +1,13 @@ ++/* PR preprocessor/125048 */ ++/* { dg-do preprocess } */ ++/* { dg-options "-std=c23" { target c } } */ ++/* { dg-options "-std=c++20" { target c++ } } */ ++ ++#define A(...)B(B(B(B(__VA_ARGS__##__VA_OPT__())))) ++#define B(...)C(C(C(C(__VA_ARGS__##__VA_OPT__())))) ++#define C(...)D(D(D(D(__VA_ARGS__##__VA_OPT__())))) ++#define D(...)E(E(E(E(__VA_ARGS__##__VA_OPT__())))) ++#define E(...)__VA_ARGS__ ++#define F ++A(F) ++/* { dg-final { scan-file va-opt-11.i "D\\\(D\\\(D\\\(C\\\(C\\\(C\\\(B\\\(B\\\(B\\\(\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)\\\)" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/asan/pr120201-1.C +@@ -0,0 +1,42 @@ ++// { dg-do run } ++// { dg-options "-O3 -std=c++23 -fsanitize=address" } ++ ++using size_t = decltype (sizeof 0); ++ ++float* shaderLightData; ++ ++using ShaderShadowTransform = float[4z * 4z * 6z]; ++using Transform = float[4 * 4]; ++ ++__attribute__ ((noipa)) ++#if defined(__i386__) || defined(__x86_64__) ++__attribute__ ((target ("arch=x86-64-v4"))) ++#endif ++static void ++do_test (void) ++{ ++ int lightCount = 3; ++ ShaderShadowTransform* shaderShadowData = new ShaderShadowTransform[lightCount]; ++ for (int index = 0; index < lightCount; index++) ++ { ++ Transform transforms[6]; ++ ++ const size_t matSize = 4z * 4z; ++ float* transformBlockStart = shaderShadowData[index]; ++ for (int face = 0; face < 6; face++) ++ __builtin_memcpy(transformBlockStart + (matSize * face), ++ &transforms[face][0], matSize * sizeof(float)); ++ } ++ ++ delete [] shaderShadowData; ++} ++ ++int ++main (void) ++{ ++#if defined(__i386__) || defined(__x86_64__) ++ if (__builtin_cpu_supports ("x86-64-v4")) ++#endif ++ do_test (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/rv-decl1.C +@@ -0,0 +1,7 @@ ++// PR c++/65271 ++// { dg-do compile { target c++11 } } ++ ++struct {} && m0 = {}; ++union {} && m1 = {}; ++class {} && m2 = {}; ++enum {} && m3 = {}; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp2a/decomp11.C +@@ -0,0 +1,12 @@ ++// PR c++/126057 ++// { dg-do compile { target c++20 } } ++ ++template ++int ++foo () ++{ ++ static auto [a] = 0; // { dg-error "cannot decompose non-array non-class type 'int'" } ++ return 0; ++} ++ ++int a = foo (); +--- a/src/gcc/testsuite/g++.dg/cpp2a/decomp2.C ++++ b/src/gcc/testsuite/g++.dg/cpp2a/decomp2.C +@@ -1,7 +1,7 @@ + // P1091R3 + // { dg-do run { target c++11 } } + // { dg-options "" } +-// { dg-require-effective-target tls } ++// { dg-require-effective-target tls_runtime } + // { dg-add-options tls } + + namespace std { +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated16.C +@@ -0,0 +1,20 @@ ++// PR c++/126483 ++// { dg-do compile { target c++17 } } ++ ++struct A { ++ int m; ++ constexpr A(int n) : m(__builtin_is_constant_evaluated() ? 42 : n) { } ++}; ++ ++constexpr auto v = [] { ++ A a = 0; ++ return a.m; ++}; ++static_assert(v() == 42); ++ ++template ++constexpr auto vt = [] { ++ A a = 0; ++ return a.m; ++}; ++static_assert(vt() == 42); +--- a/src/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C ++++ b/src/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-3.C +@@ -1,6 +1,6 @@ + /* Test various operators on __fp16 and mixed __fp16/float operands. */ + /* { dg-do run { target arm*-*-* } } */ +-/* { dg-require-effective-target arm_fp16_alternative_ok } */ ++/* { dg-require-effective-target arm_fp16_alternative_hw } */ + /* { dg-add-options arm_fp16_alternative } */ + + #include "arm-fp16-ops.h" +--- a/src/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C ++++ b/src/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-4.C +@@ -1,6 +1,6 @@ + /* Test various operators on __fp16 and mixed __fp16/float operands. */ + /* { dg-do run { target arm*-*-* } } */ +-/* { dg-require-effective-target arm_fp16_alternative_ok } */ ++/* { dg-require-effective-target arm_fp16_alternative_hw } */ + /* { dg-options "-ffast-math" } */ + /* { dg-add-options arm_fp16_alternative } */ + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/lto/pr126194.h +@@ -0,0 +1,87 @@ ++#pragma once ++ ++using Size = decltype(sizeof(0)); ++ ++struct A ++{ ++ void (*const f_)(void**) noexcept; ++ void** const p_; ++ Size const a_; ++ ++ A(void** pp, void (*f)(void**) noexcept, Size a) noexcept ++ : f_(f), p_(pp), a_(a) {} ++ ++ void reset() const noexcept ++ { ++ if (*p_) { ++ (*f_)(p_); ++ } ++ } ++ ++ A& operator=(const A&) = delete; ++ ++ void* create(Size size, const void* caller, struct R& r) const; ++ void destroy(void* p, const void* caller, struct R& r) const noexcept; ++}; ++ ++struct R ++{ ++ virtual ~R() = default; ++ virtual void* allocate(Size size, const void* caller) = 0; ++ virtual void deallocate(void* p, const void* caller) noexcept = 0; ++}; ++ ++R& get_r() noexcept; ++void touch(const void* p) noexcept; ++ ++struct B ++{ ++ void* q = nullptr; ++ ++ static void cb(void** pp) noexcept ++ { ++ B* self = reinterpret_cast(pp); ++ if (self->q) { ++ extern void release_q(void*); ++ release_q(self->q); ++ } ++ self->q = nullptr; ++ } ++ ++ ~B() noexcept ++ { ++ touch(this); ++ if (q) { ++ extern void release_q(void*); ++ release_q(q); ++ } ++ } ++ ++ B() noexcept = default; ++ B(const B&) = delete; ++ B& operator=(const B&) = delete; ++ B(B&& other) noexcept : q(other.q) ++ { ++ other.q = nullptr; ++ } ++ B& operator=(B&& other) noexcept ++ { ++ if (this != &other) { ++ if (q) { ++ extern void release_q(void*); ++ release_q(q); ++ } ++ q = other.q; ++ other.q = nullptr; ++ } ++ return *this; ++ } ++ ++ operator A() noexcept ++ { ++ return A(&q, &cb, alignof(void*)); ++ } ++}; ++ ++void* operator new(Size size, A const& a, R& r) noexcept(false); ++void operator delete(void* p, A const& a, R& r) noexcept; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/lto/pr126194_0.C +@@ -0,0 +1,71 @@ ++// { dg-lto-do run } ++// { dg-lto-options { { -O2 -flto } } } ++ ++#include "pr126194.h" ++ ++extern "C" void* malloc(Size size) noexcept; ++extern "C" void free(void* p) noexcept; ++ ++namespace { ++class M final : public R ++{ ++public: ++ void* allocate(Size size, const void* /*caller*/) override ++ { ++ return malloc(size); ++ } ++ ++ void deallocate(void* p, const void* /*caller*/) noexcept override ++ { ++ free(p); ++ } ++}; ++ ++M g_r; ++} ++ ++R& get_r() noexcept ++{ ++ return g_r; ++} ++ ++void touch(const void* p) noexcept ++{ ++ static const volatile void* sink = nullptr; ++ sink = p; ++} ++ ++void release_q(void* p) ++{ ++ free(p); ++} ++ ++int g_should_throw = 0; ++ ++void* A::create(Size size, const void* caller, R& r) const ++{ ++ reset(); ++ if (size < a_) size = a_; ++ void* p = r.allocate(size, caller); ++ if (!p) throw 2; ++ *p_ = p; ++ return p; ++} ++ ++__attribute__((noinline)) ++void A::destroy(void* p, const void* caller, R& r) const noexcept ++{ ++ *p_ = nullptr; ++ r.deallocate(p, caller); ++} ++ ++void* operator new(Size size, A const& a, R& r) noexcept(false) ++{ ++ return a.create(size, __builtin_return_address(0), r); ++} ++ ++__attribute__((noinline)) ++void operator delete(void* p, A const& a, R& r) noexcept ++{ ++ a.destroy(p, __builtin_return_address(0), r); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/lto/pr126194_1.C +@@ -0,0 +1,41 @@ ++#include "pr126194.h" ++ ++extern int g_should_throw; ++ ++struct T ++{ ++ int a; ++ __attribute__((noinline)) T() : a(0) ++ { ++ if (g_should_throw) { ++ throw 1; ++ } ++ } ++}; ++ ++__attribute__((noinline)) ++int make_widget(bool go, void** out_ptr) ++{ ++ B b; ++ R& r = get_r(); ++ if (go) { ++ T* t = new(b, r) T(); ++ (void)t; ++ } ++ *out_ptr = b.q; ++ b.q = nullptr; ++ return 42; ++} ++ ++extern "C" __attribute__((visibility("default"))) ++int run_repro(int argc) ++{ ++ g_should_throw = (argc > 0); ++ void* p = nullptr; ++ try { ++ (void)make_widget(argc > 0, &p); ++ return 1; ++ } catch (...) { ++ return 0; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/lto/pr126194_2.C +@@ -0,0 +1,8 @@ ++// { dg-options "-fno-lto" } ++ ++extern "C" int run_repro(int argc); ++ ++int main(int argc, char**) ++{ ++ return run_repro(argc >= 0); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/20260703-1.C +@@ -0,0 +1,46 @@ ++// This started to be miscompiled with r15-579 or in a larger ++// test with r15-3956 and got fixed with r17-2039. ++// DSE would optimize away the store of 42. ++// { dg-do run { target c++11 } } ++// { dg-options "-O2" } ++ ++struct B { }; ++ ++void *volatile g; ++ ++template ++struct D { T foo (void) const { return (T) g; } }; ++ ++struct G : public B ++{ ++ virtual B *bar (int); ++ struct H : public B { H () : h (42) {} int h; }; ++ struct I : public B {}; ++ D g; ++}; ++ ++struct H : public G { virtual B *bar (int) { return nullptr; } }; ++ ++B * ++G::bar (int x) ++{ ++ if (x == 0) ++ return new H (); ++ I *y = g.foo (); ++ return y; ++} ++ ++[[gnu::noipa]] B * ++baz (G *x, int y) ++{ ++ return x->bar (y); ++} ++ ++int ++main () ++{ ++ G g; ++ G::H *h = (G::H *) baz (&g, 0); ++ if (h->h != 42) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/is_constant_evaluated3a.C +@@ -0,0 +1,24 @@ ++// A version of is_constant_evaluated3.C where the containing function is ++// constexpr. ++// { dg-do compile { target c++14 } } ++// { dg-additional-options "-O -fdump-tree-original" } ++ ++struct A { ++ constexpr A(int n) : n(n), m(__builtin_is_constant_evaluated()) { } ++ constexpr A() : A(42) { } ++ int n, m; ++}; ++ ++constexpr void f() { ++ A a1 = {42}; ++ A a2{42}; ++ A a3(42); ++ A a4; ++ A a5{}; ++} ++ ++// { dg-final { scan-tree-dump "a1 = {\\.n=42, \\.m=0}" "original" { xfail *-*-* } } } ++// { dg-final { scan-tree-dump "a2 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a3 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a4 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a5 = {\\.n=42, \\.m=0}" "original" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/is_constant_evaluated3b.C +@@ -0,0 +1,24 @@ ++// A version of is_constant_evaluated3.C where the containing function is ++// a (maybe-constexpr) lambda. ++// { dg-do compile { target c++17 } } ++// { dg-additional-options "-O -fdump-tree-original" } ++ ++struct A { ++ constexpr A(int n) : n(n), m(__builtin_is_constant_evaluated()) { } ++ constexpr A() : A(42) { } ++ int n, m; ++}; ++ ++auto f = [] { ++ A a1 = {42}; ++ A a2{42}; ++ A a3(42); ++ A a4; ++ A a5{}; ++}; ++ ++// { dg-final { scan-tree-dump "a1 = {\\.n=42, \\.m=0}" "original" { xfail *-*-* } } } ++// { dg-final { scan-tree-dump "a2 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a3 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a4 = {\\.n=42, \\.m=0}" "original" } } ++// { dg-final { scan-tree-dump "a5 = {\\.n=42, \\.m=0}" "original" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/pr125642.C +@@ -0,0 +1,5 @@ ++/* { dg-do preprocess } */ ++ ++#ifdef __FRACT_FBIT__ ++#error "we should not report _Fract support in C++" ++#endif +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/template/bitfield5.C +@@ -0,0 +1,16 @@ ++// PR c++/125674 ++// { dg-do compile { target c++20 } } ++ ++struct A { int a : 1.; }; // { dg-error "width of bit-field 'a' has non-integral type 'double'" } ++template ++struct B { int b : 1.; }; // { dg-error "width of bit-field 'b' has non-integral type 'double'" } ++template ++struct C { T c : 1.; }; // { dg-error "width of bit-field 'c' has non-integral type 'double'" } ++template ++struct D { int d : N; }; // { dg-error "width of bit-field 'D::d' has non-integral type 'double'" } ++template ++struct E { T e : N; }; // { dg-error "width of bit-field 'E::e' has non-integral type 'double'" } ++B b; ++C c; ++D <1.> d; ++E e; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/template/bitfield6.C +@@ -0,0 +1,9 @@ ++// PR c++/125674 ++// { dg-do compile } ++ ++template ++struct A { ++ int f (); ++ int i : f; // { dg-error "width of bit-field 'A::i' has non-integral type ''" } ++}; ++A a; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/template/fn-ptr6.C +@@ -0,0 +1,26 @@ ++// PR c++/126280 ++// A version of fn-ptr3a.C where the template parameter is a pack. ++// { dg-do compile { target c++11 } } ++ ++template ++void f(T) { T::fail; } // { dg-error "fail" } ++ ++template ++struct A { ++ // P not called ++}; ++ ++template ++void wrap() { ++ // P not called ++} ++ ++template ++void g() { ++ A a; // { dg-message "required from" } ++ wrap(); // { dg-message "required from" } ++} ++ ++int main() { ++ g<0>(); ++} +--- a/src/gcc/testsuite/g++.dg/torture/pr101373.C ++++ b/src/gcc/testsuite/g++.dg/torture/pr101373.C +@@ -1,5 +1,6 @@ + // { dg-do run } + // { dg-xfail-run-if "PR100409" { *-*-* } } ++// { dg-skip-if "PR126261" { can_deref_null } } + + int __attribute__((const,noipa)) foo (int j) + { +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr124663.C +@@ -0,0 +1,13 @@ ++// PR c++/124663 ++// { dg-do compile } ++// { dg-options "-O2 -fdump-tree-forwprop3-raw" } ++ ++#define vector __attribute__((vector_size(4*sizeof(int)))) ++void f(vector int *a) ++{ ++ vector int cst = {1,2,3,4}; ++ vector int t = (*a == cst); ++ *a = (t ? *a : cst); ++} ++ ++// { dg-final { scan-tree-dump-not "_expr" "forwprop3" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/i386/mv33.C +@@ -0,0 +1,42 @@ ++// Test that dispatching can choose the right multiversion ++// for HYGON CPUs with the same internal GCC processor id ++ ++// { dg-do run } ++// { dg-require-ifunc "" } ++// { dg-options "-O2" } ++ ++#include ++ ++int __attribute__ ((target("default"))) ++foo () ++{ ++ return 0; ++} ++ ++int __attribute__ ((target("arch=c86-4g-m4"))) foo () { ++ return 1; ++} ++ ++int __attribute__ ((target("arch=c86-4g-m6"))) foo () { ++ return 2; ++} ++ ++int __attribute__ ((target("arch=c86-4g-m7"))) foo () { ++ return 3; ++} ++ ++int main () ++{ ++ int val = foo (); ++ ++ if (__builtin_cpu_is ("c86-4g-m4")) ++ assert (val == 1); ++ else if (__builtin_cpu_is ("c86-4g-m6")) ++ assert (val == 2); ++ else if (__builtin_cpu_is ("c86-4g-m7")) ++ assert (val == 3); ++ else ++ assert (val == 0); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/mips/pr126484.C +@@ -0,0 +1,8 @@ ++// PR target/126484 ++// { dg-do compile } ++ ++int ++foo () ++{ ++ return __builtin_mips_get_fcsr (); ++} +--- a/src/gcc/testsuite/g++.target/riscv/pr97682.C ++++ b/src/gcc/testsuite/g++.target/riscv/pr97682.C +@@ -156,5 +156,5 @@ namespace llvm + void bm::bl() { bk->bl(); } + } + +-/* The t1 register is to initial symbol reference for call instruction. */ +-/* { dg-final { scan-assembler "la\tt1,.*FrequencyData.*_M_default_append.*" } } */ ++/* A register in SIBCALL_REGS is used for the call address. */ ++/* { dg-final { scan-assembler {la\t(t[2-6]|a[0-7]),.*FrequencyData.*_M_default_append.*} } } */ +--- a/src/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c ++++ b/src/gcc/testsuite/gcc.dg/Wstringop-overflow-47.c +@@ -65,15 +65,15 @@ void warn_i16_64 (int16_t i) + like x86_64 it's a series of BIT_FIELD_REFs. The overflow by + the former is detected but the latter is not yet. */ + +- extern char warn_a64[64]; // { dg-message "at offset (1|128) into destination object 'warn_a64' of size (63|64)" "pr97027 note" { xfail { ! { aarch64-*-* } } } } ++ extern char warn_a64[64]; // { dg-message "at offset (1|128) into destination object 'warn_a64' of size (63|64)" "pr97027 note" { xfail { ! { aarch64-*-* || { arm*-*-* && { arm_neon || { arm_mve || arm_thumb1 } } } } } } } + + void *p = warn_a64 + 1; + I16_64 *q = (I16_64*)p; +- *q = (I16_64){ i }; // { dg-warning "writing (1 byte|64 bytes) into a region of size (0|63)" "pr97027" { xfail { ! { aarch64-*-* } } } } ++ *q = (I16_64){ i }; // { dg-warning "writing (1 byte|64 bytes) into a region of size (0|63)" "pr97027" { xfail { ! { aarch64-*-* || { arm*-*-* && { arm_neon || { arm_mve || arm_thumb1 } } } } } } } + + char a64[64]; + p = a64 + 1; + q = (I16_64*)p; +- *q = (I16_64){ i }; // { dg-warning "writing (1 byte|64 bytes) into a region of size (0|63)" "pr97027" { xfail { ! { aarch64-*-* } } } } ++ *q = (I16_64){ i }; // { dg-warning "writing (1 byte|64 bytes) into a region of size (0|63)" "pr97027" { xfail { ! { aarch64-*-* || { arm*-*-* && { arm_neon || { arm_mve || arm_thumb1 } } } } } } } + sink (p); + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/asan/bitint-1.c +@@ -0,0 +1,26 @@ ++/* PR middle-end/126084 */ ++/* { dg-do run { target bitint575 } } */ ++/* { dg-shouldfail "asan" } */ ++/* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */ ++ ++_BitInt(135) ++foo () ++{ ++ _BitInt(135) *p, *q; ++ { ++ _BitInt(135) a, b; ++ p = &a; ++ q = &b; ++ } ++ return *p + *q; ++} ++ ++int ++main () ++{ ++ volatile _BitInt(135) x = foo (); ++} ++ ++/* { dg-output "ERROR: AddressSanitizer: stack-use-after-scope on address.*(\n|\r\n|\r)" } */ ++/* { dg-output "READ of size .*" } */ ++/* { dg-output ".*'a' \\(line 11\\) <== Memory access at offset \[0-9\]* is inside this variable.*" } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/asan/bitint-2.c +@@ -0,0 +1,27 @@ ++/* PR middle-end/126084 */ ++/* { dg-do run { target bitint575 } } */ ++/* { dg-shouldfail "asan" } */ ++/* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */ ++ ++void ++foo () ++{ ++ _BitInt(135) *p, *q; ++ { ++ _BitInt(135) a, b; ++ p = &a; ++ q = &b; ++ } ++ *p = 1; ++ *q = 2; ++} ++ ++int ++main () ++{ ++ foo (); ++} ++ ++/* { dg-output "ERROR: AddressSanitizer: stack-use-after-scope on address.*(\n|\r\n|\r)" } */ ++/* { dg-output "WRITE of size .*" } */ ++/* { dg-output ".*'a' \\(line 11\\) <== Memory access at offset \[0-9\]* is inside this variable.*" } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/bitint-139.c +@@ -0,0 +1,36 @@ ++/* PR tree-optimization/126471 */ ++/* { dg-do run { target bitint575 } } */ ++/* { dg-options "-O2" } */ ++ ++[[gnu::noipa]] int ++foo (unsigned _BitInt(129) x) ++{ ++ return __builtin_parityg (~x); ++} ++ ++[[gnu::noipa]] int ++bar (unsigned _BitInt(7) x) ++{ ++ return __builtin_parityg (~x); ++} ++ ++[[gnu::noipa]] int ++baz (unsigned _BitInt(256) x) ++{ ++ return __builtin_parityg (~x); ++} ++ ++int ++main () ++{ ++ if (foo (0) != 1 ++ || foo (~(unsigned _BitInt(129)) 0) != 0 ++ || foo (1) != 0 ++ || bar (0) != 1 ++ || bar (~(unsigned _BitInt(7)) 0) != 0 ++ || bar (1) != 0 ++ || baz (0) != 0 ++ || baz (~(unsigned _BitInt(256)) 0) != 0 ++ || baz (1) != 1) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/bitint-141.c +@@ -0,0 +1,19 @@ ++/* PR middle-end/126497 */ ++/* { dg-do compile { target bitint } } */ ++/* { dg-options "-std=c23" } */ ++ ++typedef unsigned _BitInt (1) U; ++ ++U ++foo (U a) ++{ ++ U t = a >= 1uwb; ++ return t; ++} ++ ++U ++bar (U a) ++{ ++ U t = a == 1uwb; ++ return t; ++} +--- a/src/gcc/testsuite/gcc.dg/builtin-stdc-bit-1.c ++++ b/src/gcc/testsuite/gcc.dg/builtin-stdc-bit-1.c +@@ -891,7 +891,7 @@ main () + || __builtin_stdc_bit_floor (~(unsigned _BitInt(373)) 0) != ((unsigned _BitInt(373)) 1) << (373 - 1)) + __builtin_abort (); + if (__builtin_stdc_bit_floor (((unsigned _BitInt(512)) 511) << 405) != (((unsigned _BitInt(512)) 256) << 405) +- || __builtin_stdc_bit_floor (((unsigned _BitInt(373)) 512) << 242) != (((unsigned _BitInt(512)) 512) << 242)) ++ || __builtin_stdc_bit_floor (((unsigned _BitInt(373)) 512) << 242) != (((unsigned _BitInt(373)) 512) << 242)) + __builtin_abort (); + if (__builtin_stdc_bit_ceil ((unsigned _BitInt(512)) 0) != 1 + || !expr_has_type (__builtin_stdc_bit_ceil ((unsigned _BitInt(512)) 0), unsigned _BitInt(512)) +@@ -905,7 +905,7 @@ main () + || __builtin_stdc_bit_ceil ((~(unsigned _BitInt(373)) 0) >> 1) != ((unsigned _BitInt(373)) 1) << (373 - 1)) + __builtin_abort (); + if (__builtin_stdc_bit_ceil (((unsigned _BitInt(512)) 512) << 405) != (((unsigned _BitInt(512)) 512) << 405) +- || __builtin_stdc_bit_ceil (((unsigned _BitInt(373)) 513) << 242) != (((unsigned _BitInt(512)) 1024) << 242)) ++ || __builtin_stdc_bit_ceil (((unsigned _BitInt(373)) 513) << 242) != (((unsigned _BitInt(373)) 1024) << 242)) + __builtin_abort (); + if (__builtin_stdc_bit_floor ((unsigned _BitInt(__BITINT_MAXWIDTH__)) 0) != 0) + __builtin_abort (); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/ipa/pr124128.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-early-inlining" } */ ++ ++typedef int blasint; ++void blas_level1_thread(long); ++void cblas_sscal(blasint, float, float, blasint incx) { ++ blas_level1_thread(incx); ++} ++blasint c_api_check_saxpby_n; ++float c_api_check_saxpby_beta; ++long labs(long); ++static void c_api_check_saxpby(blasint incy) { ++ blasint incy_abs = labs(incy); ++ cblas_sscal(c_api_check_saxpby_n, c_api_check_saxpby_beta, 0, incy_abs); ++} ++void __ctest_saxpby_c_api_inc_x_2_inc_y_1_N_100_run() { ++ c_api_check_saxpby(1); ++ c_api_check_saxpby(2); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/lto/pr125257_0.c +@@ -0,0 +1,6 @@ ++/* PR lto/125257 */ ++/* { dg-lto-do link } */ ++/* { dg-lto-options { "-O0 -flto --param=lto-min-partition=0 --param=lto-max-partition=0" } } */ ++ ++int main() {} ++__attribute__((used)) void foo() {} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr116053-1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -finstrument-functions -fno-forward-propagate -fno-delete-dead-exceptions -fnon-call-exceptions" } */ ++/* { dg-require-effective-target exceptions } */ ++/* { dg-require-effective-target int128 } */ ++ ++/* PR rtl-optimization/116053 */ ++ ++void ++foo (__int128 x) ++{ ++ x = *(__int128 *) __builtin_memset (&x, 0, 10); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr124454-1.c +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target fopenmp } */ ++/* { dg-additional-options "-O3 -fno-forward-propagate -fnon-call-exceptions -fno-dse -fprofile-generate -fopenmp -finstrument-functions" } */ ++/* { dg-additional-options "-mno-outline-atomics" { target aarch64*-*-* } } */ ++ ++/* PR rtl-optimization/124454 */ ++ ++int a, b; ++ ++void ++foo() ++{ ++ long c; ++ a *= b; ++ b = *(char *)__builtin_memset(&c, 1, 4); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr125173-1.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -fno-forward-propagate --param=max-cse-insns=0" } */ ++ ++int a; ++volatile short b; ++ ++struct ++{ ++ char c; ++ int d; ++} s; ++ ++void ++foo () ++{ ++ __asm__ ("":"+m" (b), "+m" (s.d), "+m" (a)); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr125501.c +@@ -0,0 +1,35 @@ ++// { dg-do run } ++// { dg-options "-O3" } ++ ++#include ++int64_t g2, g27, g10; ++static void *g13, *g24; ++_Bool f11___trans_tmp_1, f11_c17; ++void __attribute__((noinline)) f11(int64_t a0, void *a4, void *a5) ++{ ++ _Bool ob6; ++ int32_t v12; ++ int64_t v15; ++lbl_entry: ++lbl_sw_def4: ++ ob6 = g13 == a4; ++ if (ob6 || f11_c17) return; ++ if (f11___trans_tmp_1) v12 = g10; ++ a0 = (char *)a5 - (char *)a4; ++ ob6 = 0 == a0; ++ *(_Bool *)4 = 0; ++ if (ob6) goto lbl_b22; ++ __builtin_unreachable(); ++lbl_b22: ++ g27 = v12; ++ switch (v15) ++ { ++ case 6009053803839173278: goto lbl_sw_def4; ++ case 70689892217558167: goto lbl_entry; ++ } ++} ++ ++int main() ++{ ++ f11(0, 0, g24); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr125683.c +@@ -0,0 +1,38 @@ ++/* PR rtl-optimization/125683 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-tree-pre -fno-code-hoisting -fdisable-tree-phiopt1 -fdisable-tree-phiopt2 -fdisable-tree-phiopt3 -fdisable-tree-phiopt4 -fdisable-tree-cselim" } */ ++ ++/* if-conversion (ce1) used to collapse the two conditional loads below ++ into a single load through simplify_gen_ternary's ++ (if_then_else c X X) -> X rule, which ignores the memory attributes. ++ The two loads have incompatible alias sets, so the collapsed load kept ++ just one of them; a later pass then treated it as not aliasing the ++ long store to *d and moved it, giving the wrong value when cc == d. ++ Several tree passes (PRE/code-hoisting on the release branches, phi-opt ++ load factoring on trunk) can factor the two loads with a conservative ++ type before RTL and so hide the bug; they are disabled here so the ++ if-conversion path is exercised on every affected version. */ ++ ++long __attribute__ ((noipa)) ++f (int a, void *cc, long *d) ++{ ++ long long c; ++ *d = 0; ++ if (a) ++ c = *(long *) cc; ++ else ++ c = *(long long *) cc; ++ *d = 1; ++ return c; ++} ++ ++int ++main (void) ++{ ++ long storage = -1; ++ /* cc == d, and a != 0 so the taken load reads *(long *)cc, which is a ++ type-compatible access to the object *d that was just set to 0. */ ++ if (f (1, &storage, &storage) != 0) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr126464.c +@@ -0,0 +1,65 @@ ++/* PR tree-optimization/126464 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++/* { dg-add-options ieee } */ ++/* { dg-skip-if "not IEEE float" { "pdp11-*-*" } } */ ++ ++[[gnu::noipa]] double ++foo (double x) ++{ ++ float y = (float) x; ++ ++ if (y == -__builtin_inff ()) ++ return x * 0.5; ++ return y; ++} ++ ++[[gnu::noipa]] long double ++bar (long double x) ++{ ++ double y = (double) x; ++ ++ if (y == __builtin_inf ()) ++ return x * 0.5L; ++ return y; ++} ++ ++[[gnu::noipa]] double ++baz (double x) ++{ ++ float y = (float) x; ++ ++ if (y == __builtin_inff ()) ++ return x * 0.5; ++ return y; ++} ++ ++[[gnu::noipa]] long double ++qux (long double x) ++{ ++ double y = (double) x; ++ ++ if (y == -__builtin_inf ()) ++ return x * 0.5L; ++ return y; ++} ++ ++int ++main () ++{ ++#if __DBL_MAX_10_EXP__ >= 301 ++ if (!__builtin_isinf ((double) 1e300) ++ && __builtin_isinf ((float) 1e300) ++ && (foo (-1e300) != -5e299 ++ || baz (1e300) != 5e299)) ++ __builtin_abort (); ++#endif ++ ++#if __LDBL_MAX_10_EXP__ >= 4001 ++ if (!__builtin_isinf ((long double) 1e4000L) ++ && __builtin_isinf ((double) 1e4000L) ++ && (bar (1e4000L) != 5e3999L ++ || qux (-1e4000L) != -5e3999L)) ++ __builtin_abort (); ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr126534.c +@@ -0,0 +1,45 @@ ++/* PR tree-optimization/126534 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++[[gnu::noipa]] int ++foo (double x) ++{ ++ double y = __builtin_sqrt (x); ++ if (y <= 5.0) ++ { ++ if (x > 25.0) ++ return 1; ++ return 2; ++ } ++ return 3; ++} ++ ++[[gnu::noipa]] int ++bar (double x) ++{ ++ double y = __builtin_sqrt (x); ++ if (y >= 5.0) ++ { ++ if (x < 25.0) ++ return 1; ++ return 2; ++ } ++ return 3; ++} ++ ++int ++main () ++{ ++#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_EXP__ == 1024 && __FLT_EVAL_METHOD__ == 0 ++ volatile double x = 0x1.9000000000001p+4; ++ volatile double y = 0x1.8ffffffffffffp+4; ++ if (__builtin_sqrt (x) == 5.0 && __builtin_sqrt (y) == 5.0) ++ { ++ if (foo (0x1.9000000000001p+4) != 1) /* 25.000000000000004 */ ++ __builtin_abort (); ++ if (bar (0x1.8ffffffffffffp+4) != 1) /* 24.999999999999996 */ ++ __builtin_abort (); ++ } ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr126667.c +@@ -0,0 +1,9 @@ ++/* PR target/126667 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++unsigned long ++foo (unsigned long x, unsigned long y, unsigned long *p) ++{ ++ return __builtin_subcl (x, y, 1UL, p); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/rtl/aarch64/pr125683-flags.c +@@ -0,0 +1,96 @@ ++/* { dg-do compile { target aarch64-*-* } } */ ++/* { dg-options "-O2 -fdump-rtl-ce1" } */ ++ ++/* PR125683: when ce1 collapses "c ? a : a" the folded MEM must not claim ++ anything only one arm guaranteed. MEM_READONLY_P and MEM_NOTRAP_P ++ disagreement cannot be produced from C source -- both are derived from ++ the base object, which two loads from the same address share -- so the ++ two MEMs are built here directly. The else arm is the one the fold ++ copies, so it is the arm that carries the flags. ++ ++ Based on the ce1 input for ++ ++ long f (int a, void *cc, long *d) ++ { long c; *d = 0; if (a) c = *(long *) cc; else c = *(long *) cc; ++ *d = 1; return c; } */ ++ ++long __RTL (startwith ("ce1")) f (int a, void *cc, long *d) ++{ ++(function "f" ++ (param "a" ++ (DECL_RTL (reg/v:SI <3> [ a ])) ++ (DECL_RTL_INCOMING (reg:SI x0 [ a ]))) ++ (param "cc" ++ (DECL_RTL (reg/v/f:DI <4> [ cc ])) ++ (DECL_RTL_INCOMING (reg:DI x1 [ cc ]))) ++ (param "d" ++ (DECL_RTL (reg/v/f:DI <5> [ d ])) ++ (DECL_RTL_INCOMING (reg:DI x2 [ d ]))) ++ (insn-chain ++ (block 2 ++ (edge-from entry (flags "FALLTHRU")) ++ (cnote 6 [bb 2] NOTE_INSN_BASIC_BLOCK) ++ (cinsn 2 (set (reg/v:SI <3> [ a ]) ++ (reg:SI x0 [ a ]))) ++ (cinsn 3 (set (reg/v/f:DI <4> [ cc ]) ++ (reg:DI x1 [ cc ]))) ++ (cinsn 4 (set (reg/v/f:DI <5> [ d ]) ++ (reg:DI x2 [ d ]))) ++ (cnote 5 NOTE_INSN_FUNCTION_BEG) ++ (cinsn 8 (set (mem:DI (reg/v/f:DI <5> [ d ]) [3 S8 A64]) ++ (const_int 0))) ++ (cinsn 9 (set (reg:CC cc) ++ (compare:CC (reg/v:SI <3> [ a ]) ++ (const_int 0)))) ++ (cjump_insn 10 (set (pc) ++ (if_then_else (eq (reg:CC cc) ++ (const_int 0)) ++ (label_ref 15) ++ (pc)))) ++ (edge-to 3 (flags "FALLTHRU")) ++ (edge-to 4) ++ ) ;; block 2 ++ (block 3 ++ (edge-from 2 (flags "FALLTHRU")) ++ (cnote 11 [bb 3] NOTE_INSN_BASIC_BLOCK) ++ (cinsn 12 (set (reg/v:DI <2>) ++ (mem:DI (reg/v/f:DI <4> [ cc ]) [2 S8 A64]))) ++ (edge-to 5 (flags "FALLTHRU")) ++ ) ;; block 3 ++ (block 4 ++ (edge-from 2) ++ (clabel 15 2) ++ (cnote 16 [bb 4] NOTE_INSN_BASIC_BLOCK) ++ (cinsn 17 (set (reg/v:DI <2>) ++ (mem/u/c/f:DI (reg/v/f:DI <4> [ cc ]) [1 S8 A64]))) ++ (edge-to 5 (flags "FALLTHRU")) ++ ) ;; block 4 ++ (block 5 ++ (edge-from 3 (flags "FALLTHRU")) ++ (edge-from 4 (flags "FALLTHRU")) ++ (cnote 20 [bb 5] NOTE_INSN_BASIC_BLOCK) ++ (cinsn 19 (set (reg:DI <6>) ++ (const_int 1))) ++ (cinsn 21 (set (mem:DI (reg/v/f:DI <5> [ d ]) [3 S8 A64]) ++ (reg:DI <6>))) ++ (cinsn 22 (set (reg/i:DI x0) ++ (reg/v:DI <2>))) ++ (cinsn 23 (use (reg/i:DI x0))) ++ (edge-to exit (flags "FALLTHRU")) ++ ) ;; block 5 ++ ) ;; insn-chain ++) ;; function ++} ++ ++/* The diamond must actually be collapsed, otherwise the rest proves ++ nothing. */ ++/* { dg-final { scan-rtl-dump "noce_try_ifelse_collapse" "ce1" } } */ ++ ++/* The alias sets disagree, so the fold drops to alias set 0. That MEM is ++ the folded one; it must carry no flag bits, since each was set on only ++ one arm. Before the flags were handled it came out as ++ "(mem/u/c:DI (reg...) [0 S8 A64])". The dump also lists the pass input, ++ where the /u/c arm legitimately appears, so both checks are anchored on ++ the alias set 0 that only the folded MEM has. */ ++/* { dg-final { scan-rtl-dump "mem:DI \\(reg\[^\)\]*\\) \\\[0 " "ce1" } } */ ++/* { dg-final { scan-rtl-dump-not "mem/\[a-z/\]*:DI \\(reg\[^\)\]*\\) \\\[0 " "ce1" } } */ +--- a/src/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c ++++ b/src/gcc/testsuite/gcc.dg/torture/arm-fp16-int-convert-alt.c +@@ -1,6 +1,6 @@ + /* Test floating-point conversions. Standard types and __fp16. */ + /* { dg-do run { target arm*-*-* } } */ +-/* { dg-require-effective-target arm_fp16_alternative_ok } ++/* { dg-require-effective-target arm_fp16_alternative_hw } */ + /* { dg-add-options arm_fp16_alternative } */ + + #include "fp-int-convert.h" +--- a/src/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c ++++ b/src/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-3.c +@@ -1,6 +1,6 @@ + /* Test various operators on __fp16 and mixed __fp16/float operands. */ + /* { dg-do run { target arm*-*-* } } */ +-/* { dg-require-effective-target arm_fp16_alternative_ok } ++/* { dg-require-effective-target arm_fp16_alternative_hw } */ + /* { dg-add-options arm_fp16_alternative } */ + + #include "arm-fp16-ops.h" +--- a/src/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c ++++ b/src/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-4.c +@@ -1,6 +1,6 @@ + /* Test various operators on __fp16 and mixed __fp16/float operands. */ + /* { dg-do run { target arm*-*-* } } */ +-/* { dg-require-effective-target arm_fp16_alternative_ok } ++/* { dg-require-effective-target arm_fp16_alternative_hw } */ + /* { dg-options "-ffast-math" } */ + /* { dg-add-options arm_fp16_alternative } */ + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-101.c +@@ -0,0 +1,26 @@ ++/* PR tree-optimization/126257 */ ++/* { dg-do run { target bitint } } */ ++ ++_BitInt(2) a; ++long long b, c, d; ++ ++int ++main () ++{ ++ int e; ++ _BitInt(2) f; ++ bool g; ++ long long h = b; ++lab: ++ e = h; ++ if (e != 4) ++ f = -1; ++ f = f + f; ++ a = f; ++ g = d - 4; ++ if (!g) ++ goto lab; ++ c = a; ++ if (c != -2) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-102.c +@@ -0,0 +1,33 @@ ++/* PR tree-optimization/126262 */ ++/* { dg-do run { target bitint } } */ ++/* { dg-options "-std=gnu23" } */ ++ ++#if __BITINT_MAXWIDTH__ >= 1024 ++typedef unsigned _BitInt (512) A; ++typedef _BitInt (1024) B; ++ ++[[gnu::noipa]] int ++foo (signed char x, A y) ++{ ++ B b = -(B) y; ++ A c; ++ if (__builtin_mul_overflow (1, b, &c)) ++ c = 42; ++ B f; ++ if (__builtin_mul_overflow (x, 9, &f)) ++ f = 42; ++ int i; ++ if (__builtin_mul_overflow (f, 1, &i)) ++ i = 42; ++ return c + i; ++} ++#endif ++ ++int ++main () ++{ ++#if __BITINT_MAXWIDTH__ >= 1024 ++ if (foo (1, -2) != 51) ++ __builtin_abort (); ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-103.c +@@ -0,0 +1,22 @@ ++/* PR tree-optimization/126476 */ ++/* { dg-do run { target bitint } } */ ++ ++[[gnu::noipa]] int ++foo (unsigned _BitInt(4) n) ++{ ++ return ((1ULL << n) & (1ULL << 20)) != 0; ++} ++ ++[[gnu::noipa]] int ++bar (unsigned _BitInt(4) n) ++{ ++ return (((1ULL << 40) >> n) & (1ULL << 20)) != 0; ++} ++ ++int ++main () ++{ ++ for (unsigned i = 0; i < 16; i++) ++ if (foo (i) != 0 || bar (i) != 0) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-104.c +@@ -0,0 +1,78 @@ ++/* PR tree-optimization/126490 */ ++/* { dg-do run { target bitint } } */ ++ ++typedef unsigned _BitInt(1) T; ++ ++[[gnu::noipa]] int ++foo (T a, T b) ++{ ++ return ((a & b) == (a ^ b)) + 1; ++} ++ ++[[gnu::noipa]] int ++bar (T a, T b) ++{ ++ return ((a & b) == (a ^ b)) != 0; ++} ++ ++[[gnu::noipa]] int ++baz (T a, T b) ++{ ++ return ((a & b) == (a ^ b)) == 0; ++} ++ ++[[gnu::noipa]] int ++qux (T a, T b) ++{ ++ return ((a & b) == (a ^ b)) < 1; ++} ++ ++[[gnu::noipa]] int ++corge (int a, int b) ++{ ++ return (a & b) == (a ^ b); ++} ++ ++[[gnu::noipa]] int ++garply (T a, T b) ++{ ++ return ((a & b) ^ (a == b)) + 1; ++} ++ ++[[gnu::noipa]] int ++fred (T a, T b) ++{ ++ return ((a & b) ^ (a == b)) != 0; ++} ++ ++[[gnu::noipa]] int ++xyzzy (T a, T b) ++{ ++ return ((a & b) ^ (a == b)) == 0; ++} ++ ++[[gnu::noipa]] int ++waldo (T a, T b) ++{ ++ return ((a & b) ^ (a == b)) < 1; ++} ++ ++int ++main () ++{ ++ for (int i = 0; i < 4; ++i) ++ { ++ int a = i & 1; ++ int b = i >> 1; ++ int c = corge (a, b); ++ if (foo (a, b) != c + 1 ++ || bar (a, b) != (c != 0) ++ || baz (a, b) != (c == 0) ++ || qux (a, b) != (c < 1) ++ || garply (a, b) != c + 1 ++ || fred (a, b) != (c != 0) ++ || xyzzy (a, b) != (c == 0) ++ || waldo (a, b) != (c < 1)) ++ __builtin_abort (); ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-105.c +@@ -0,0 +1,24 @@ ++/* PR tree-optimization/126504 */ ++/* { dg-do run { target bitint } } */ ++ ++typedef unsigned _BitInt(4) U; ++ ++[[gnu::noipa]] int ++foo (U n) ++{ ++ return ((1 << n) & (1 << 20)) != 0; ++} ++ ++[[gnu::noipa]] int ++bar (U n) ++{ ++ return ((unsigned) (1 << n) & (1u << 20)) != 0; ++} ++ ++int ++main () ++{ ++ for (unsigned i = 0; i < 16; i++) ++ if (foo (i) || bar (i)) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/bitint-106.c +@@ -0,0 +1,38 @@ ++/* PR tree-optimization/126503 */ ++/* { dg-do run { target bitint575 } } */ ++ ++[[gnu::noipa]] unsigned _BitInt(400) ++foo (_BitInt(257) a) ++{ ++ return (unsigned _BitInt(400)) (-a); ++} ++ ++[[gnu::noipa]] unsigned _BitInt(300) ++bar (_BitInt(7) a, unsigned _BitInt(17) b) ++{ ++ _BitInt(257) x = (_BitInt(257)) a + -1; ++ return ~((unsigned _BitInt(300)) x ^ (unsigned _BitInt(300)) b); ++} ++ ++[[gnu::noipa]] _BitInt(129) ++baz (_BitInt(129) x) ++{ ++ return x - 24; ++} ++ ++[[gnu::noipa]] int ++qux (_BitInt(129) x, _BitInt(129) y) ++{ ++ return x == y; ++} ++ ++int ++main () ++{ ++ if (foo (-1wb) != 1uwb) ++ __builtin_abort (); ++ if (bar (1wb, 3uwb) != (unsigned _BitInt(300)) -4wb) ++ __builtin_abort (); ++ if (!qux (baz (100), 76)) ++ __builtin_abort (); ++} +--- a/src/gcc/testsuite/gcc.dg/torture/fp-double-convert-float-1.c ++++ b/src/gcc/testsuite/gcc.dg/torture/fp-double-convert-float-1.c +@@ -1,5 +1,5 @@ + /* PR57245 */ +-/* { dg-do run } */ ++/* { dg-do run { xfail { arm_mixed_fp } } } */ + /* { dg-require-effective-target fenv } */ + /* { dg-require-effective-target hard_float } */ + /* { dg-additional-options "-frounding-math" } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr120144.c +@@ -0,0 +1,8 @@ ++/* PR target/120144 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target int128 } */ ++ ++int f(unsigned __int128 t) ++{ ++ return __builtin_clzg(t); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr123822-1.c +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-ffast-math" } */ ++/* { dg-require-effective-target dfp } */ ++ ++/* PR rtl-optimization/123822 */ ++ ++typedef __attribute__((__vector_size__(16))) _Decimal64 D; ++ ++int i; ++D d; ++ ++void ++foo() ++{ ++ d /= (D)(d >= *(D *)__builtin_memset(&d, i, 3)); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125156.c +@@ -0,0 +1,26 @@ ++/* { dg-do compile } */ ++ ++#include ++ ++int64_t g1, g8; ++ ++void g14() ++{ ++ int16_t v5; ++ goto lbl_cont30; ++lbl_bf2: ++ g8 = 0; ++lbl_b5: ++ g1 = g1 - 8366249724514421075; ++ switch (v5) ++case 5: ++case 2: ++ goto lbl_b5; ++ goto lbl_bf2; ++lbl_cont30: ++ switch (v5) ++ { ++ case 0: goto lbl_bf2; ++ case 5: goto lbl_b5; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125477.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++ ++void f123(void) __attribute__((__returns_twice__)); ++int c; ++volatile int i; ++void e(long *a, long *d, int f) { ++g: ++ if (i) ++ return; ++ f123(); ++ for (;;) { ++ __asm__ goto("" : : : : g); ++ c = 0; ++ for (; c < f; c++) ++ a[c] = d[c]; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125502.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++ ++int f() __attribute__((returns_twice)); ++typedef short v16i16 __attribute__((vector_size(32))); ++void f3(short); ++void f4() ++{ ++ v16i16 vec6, vec11; ++ short v13; ++ vec6[0] = f(); ++ vec11 = vec6; ++ f3(v13); ++ v13 = vec11[2]; ++ f4(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125545.c +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++ ++int b(int c) ++{ ++ int a; ++ __asm__ goto("" : "=r"(a) : : : d); ++d: ++ return c && a != 42 && a >= 42; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125774-1.c +@@ -0,0 +1,48 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */ ++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */ ++/* PR tree-optimization/125774 */ ++ ++__attribute__((noipa)) ++_Bool __GIMPLE (ssa,startwith("dom2")) ++f (int a, int b) ++{ ++ _Bool _3; ++ _Bool _4; ++ _Bool _5; ++ ++ __BB(2): ++ _3 = a_1(D) > b_2(D); ++ _4 = b_2(D) > a_1(D); ++ _5 = _3 | _4; ++ return _5; ++} ++ ++__attribute__((noipa)) ++_Bool __GIMPLE (ssa,startwith("dom2")) ++f1 (int a, int b) ++{ ++ _Bool _3; ++ _Bool _4; ++ _Bool _5; ++ ++ __BB(2): ++ _3 = a_1(D) > b_2(D); ++ _4 = a_1(D) < b_2(D); ++ _5 = _3 | _4; ++ return _5; ++} ++ ++int main() ++{ ++ int a = 10, b = 10; ++ if (f(a,b)) ++ __builtin_abort(); ++ if (f1(a,b)) ++ __builtin_abort(); ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */ ++/* Both functions should be optimized to `a_1 != b_2`. */ ++/* { dg-final { scan-tree-dump-times "a_1.D. != b_2.D." 2 "optimized" { target __OPTIMIZE__ } } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125776-1.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-fcompare-debug" } */ ++/* PR tree-optimization/125776 */ ++ ++int a, b, d, e, f; ++long c; ++void g(); ++void h() { ++ unsigned i; ++ for (;;) { ++ unsigned j = a ? a : d; ++ i += j; ++ f = b & 40 | b > 4; ++ e = a ? a : b; ++ if (e) ++ break; ++ if (j) ++ g(); ++ } ++ c = i; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125776-2.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-fcompare-debug" } */ ++/* PR tree-optimization/125776 */ ++int a, b, d, e, f; ++long c; ++void g(); ++void h(int i) { ++ for (;;) { ++ i++; ++ int j = a ? a : d; ++ i = i > 0 ? i : -i; ++ f = b & 40 | b > 4; ++ e = a ? a : b; ++ if (e) ++ break; ++ if (j) ++ g(); ++ } ++ c = i; ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125786.c +@@ -0,0 +1,30 @@ ++/* { dg-do run } */ ++ ++#define length 16 ++typedef int type; ++typedef type v8i64 __attribute__((vector_size(sizeof(type)*length))); ++v8i64 g6, g27; ++_Bool main_c14; ++ ++__attribute__((noipa)) ++static ++void f(v8i64 *a) ++{ ++ for(int i =0;i g27; ++lbl_br43: ++ g6 = g6 | g27; ++ if (main_c14) goto lbl_bf7; ++ g6 = g6 * g27 == 0; ++ f(&g6); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr125953.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.3-a+sve2" { target aarch64-*-* } } */ ++ ++unsigned char *begin(unsigned char *out) ++{ ++ int size_0_0_0; ++ unsigned char *kRow = begin(out); ++ unsigned char *currentRow = kRow; ++ for (int x = 0; x < size_0_0_0; ++x) { ++ char k = kRow ? kRow[x] : 5; ++ out[2] = currentRow[2] * k / 255; ++ } ++ return out; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr126464.c +@@ -0,0 +1,28 @@ ++/* PR tree-optimization/126464 */ ++/* { dg-do run } */ ++ ++#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \ ++ && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0 ++[[gnu::noipa]] double ++foo (double x, double y) ++{ ++ if (y >= -1e304 && y <= -1e300) ++ { ++ if (x + y == -__builtin_inf ()) ++ return x * 0.5; ++ } ++ return x; ++} ++#endif ++ ++int ++main () ++{ ++#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \ ++ && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0 ++ if (foo (-__builtin_inf (), -1e303) != -__builtin_inf ()) ++ __builtin_abort (); ++ if (foo (-1.797693134862e308, -1e303) != -1.797693134862e308 / 2.0) ++ __builtin_abort (); ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr126547.c +@@ -0,0 +1,31 @@ ++/* PR tree-optimization/126547 */ ++/* { dg-do run } */ ++ ++#if __LDBL_HAS_INFINITY__ ++[[gnu::noipa]] static int ++foo (long double a1, long double a2) ++{ ++ if (a1 >= 1.0 && a1 <= 8.0) ++ { ++ long double d = a1 / a2; ++ int n = 0; ++ if (d >= __builtin_infl ()) ++ n += 1; ++ if (a2 > 0.0L) ++ n += 2; ++ return n; ++ } ++ else ++ return -1; ++} ++#endif ++ ++int ++main () ++{ ++#if __LDBL_HAS_INFINITY__ ++ if (__builtin_isinf (1.0 / __LDBL_DENORM_MIN__) ++ && foo (1.0, __LDBL_DENORM_MIN__) != 3) ++ __builtin_abort (); ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr126564.c +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/126564 */ ++/* { dg-do run } */ ++ ++__attribute__((noipa)) int ++foo (int x, int y) ++{ ++ int c = 2; ++ if (x == y) ++ c = 0; ++ else if (x < y) ++ c = -1; ++ else if (x <= y) ++ c = 1; ++ return c == 1; ++} ++ ++int ++main () ++{ ++ int i, j; ++ for (i = -3; i <= 3; i++) ++ for (j = -3; j <= 3; j++) ++ if (foo (i, j) != 0) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr126576.c +@@ -0,0 +1,43 @@ ++/* PR tree-optimization/126576 */ ++/* { dg-do run } */ ++ ++#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \ ++ && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0 ++int v; ++ ++[[gnu::noipa]] void ++bar (int x) ++{ ++ v |= x; ++} ++ ++[[gnu::noipa]] double ++foo (double x) ++{ ++ double a = x * x; ++ if (__builtin_isinf (a) && !__builtin_isinf (x)) ++ bar (1); ++ double b = a * 3.0; ++ if (__builtin_isinf (b) && !__builtin_isinf (a)) ++ bar (2); ++ return b; ++} ++#endif ++ ++int ++main () ++{ ++#if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \ ++ && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0 ++ foo (1e154); ++ if (v != 2) ++ __builtin_abort (); ++ v = 0; ++ foo (1e152); ++ if (v != 0) ++ __builtin_abort (); ++ foo (1e155); ++ if (v != 1) ++ __builtin_abort (); ++#endif ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr126650.c +@@ -0,0 +1,35 @@ ++/* { dg-do run { target { le || be } } } */ ++ ++#include ++#include ++ ++long a; ++ ++void __attribute__((noipa)) foo (int n, ...) ++{ ++ va_list list; ++ va_start (list, n); ++ int val = va_arg (list, int); ++ if (val != -64) ++ abort (); ++ va_end (list); ++} ++ ++int main() ++{ ++ struct __attribute__ ((scalar_storage_order ("little-endian"))) b { ++ int : 7; ++ int : 2; ++ int : 6; ++ int : 3; ++ int c : 7; ++ }; ++ union __attribute__ ((scalar_storage_order ("little-endian"))) { ++ int d; ++ struct b bf; ++ char e[4]; ++ } f; ++ f.d = a; ++ f.e[3] = 7; ++ foo (1, f.bf.c); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c +@@ -0,0 +1,31 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O1" } */ ++ ++typedef struct { ++ _Bool : 1; ++} Http2Identifier; ++typedef struct { ++ _Bool is_end; ++ Http2Identifier identifier; ++} Http2DataFrame; ++typedef struct { ++ Http2Identifier identifier; ++ _Bool end_headers; ++} Http2ContinuationFrame; ++typedef struct { ++ union { ++ Http2DataFrame data; ++ Http2ContinuationFrame continuation; ++ }; ++} Http2Frame; ++typedef struct { ++ Http2Identifier stream_identifier; ++} Http2RawHeader; ++Http2RawHeader parse_http2_continuation_frame_http2_raw_header; ++Http2Frame gh2f; ++void http2_send_and_receive_preface() { ++ Http2ContinuationFrame continuation_frame = { ++ parse_http2_continuation_frame_http2_raw_header.stream_identifier, 0}; ++ Http2Frame frame = {.continuation = continuation_frame}; ++ gh2f = frame; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr126601.c +@@ -0,0 +1,29 @@ ++/* PR tree-optimization/126601 */ ++/* { dg-do compile } */ ++/* { dg-options "-Os" } */ ++ ++volatile int c[16]; ++ ++[[gnu::noipa]] int ++foo (unsigned x, unsigned y) ++{ ++ unsigned r = x * y; ++ int t = 0; ++ if (c[0]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[1]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[2]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[3]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[4]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[5]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[6]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[7]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[8]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[9]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[10]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[11]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[12]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[13]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[14]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ if (c[15]) { int u = 0; if (x != 0) u = (r / x != y); t += u; } ++ return t; ++} +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-8.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-8.c +@@ -10,4 +10,4 @@ int is_sorted(int *a, int n) + } + + /* { dg-final { scan-tree-dump "Executing predictive commoning without unrolling" "pcom" } } */ +-/* { dg-final { scan-tree-dump-not "Invalid sum" "pcom" { xfail aarch64*-*-* } } } */ ++/* { dg-final { scan-tree-dump-not "Invalid sum" "pcom" { xfail { aarch64*-*-* || { arm*-*-* && arm_neon } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c +@@ -27,4 +27,4 @@ foo () + but the loop reads only one element at a time, and DOM cannot resolve these. + The same happens on powerpc depending on the SIMD support available. */ + +-/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* hppa*64*-*-* nvptx*-*-* mmix-knuth-mmixware } || { { { lp64 && { powerpc*-*-* sparc*-*-* riscv*-*-* } } || aarch64_sve } || { arm*-*-* && { ! arm_neon } } } } } } } */ ++/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* hppa*64*-*-* nvptx*-*-* mmix-knuth-mmixware } || { { { lp64 && { powerpc*-*-* sparc*-*-* riscv*-*-* } } || aarch64_sve } || { arm*-*-* && { ! { arm_neon || arm_mve } } } } } } } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/ubsan/bitint-5.c +@@ -0,0 +1,36 @@ ++/* PR middle-end/126447 */ ++/* { dg-do compile { target bitint575 } } */ ++/* { dg-options "-fsanitize=signed-integer-overflow" } */ ++ ++void foo (int); ++[[gnu::returns_twice]] void bar (); ++ ++_BitInt(575) ++baz () ++{ ++ _BitInt(575) w = 1; ++ bar (); ++ w *= 3; ++ foo (3); ++ return w; ++} ++ ++_BitInt(575) ++qux () ++{ ++ _BitInt(575) w = 1; ++ bar (); ++ w += 3; ++ foo (3); ++ return w; ++} ++ ++_BitInt(575) ++fred (_BitInt(575) x) ++{ ++ _BitInt(575) w = 1; ++ bar (); ++ w -= x; ++ foo (3); ++ return w; ++} +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s124.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s124.c +@@ -44,4 +44,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { ! riscv_v } } } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { { ! riscv_v } && { ! arm_neon } } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s276.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s276.c +@@ -42,4 +42,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { ! riscv_v } } } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { { ! riscv_v } && { ! arm_neon } } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3111.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3111.c +@@ -41,4 +41,4 @@ int main (int argc, char **argv) + } + + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { ! riscv_v } } } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { { ! riscv_v } && { ! arm_neon } } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3113.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s3113.c +@@ -40,4 +40,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s312.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s312.c +@@ -38,4 +38,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s314.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s314.c +@@ -40,4 +40,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s316.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s316.c +@@ -40,4 +40,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s317.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s317.c +@@ -40,4 +40,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s319.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s319.c +@@ -41,4 +41,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s441.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s441.c +@@ -42,4 +42,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { ! riscv_v } } } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { { ! riscv_v } && { ! arm_neon } } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s443.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s443.c +@@ -47,4 +47,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { ! riscv_v } } } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { { ! aarch64_sve } && { { ! riscv_v } && { ! arm_neon } } } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s453.c ++++ b/src/gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s453.c +@@ -39,4 +39,4 @@ int main (int argc, char **argv) + return 0; + } + +-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail *-*-* } } } */ ++/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { ! arm_neon } } } } */ +--- a/src/gcc/testsuite/gcc.dg/vect/vect-early-break_65.c ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-early-break_65.c +@@ -4,7 +4,7 @@ + /* { dg-require-effective-target vect_int } */ + /* { dg-additional-options "-Ofast -fno-vect-cost-model -fdump-tree-vect-details" } */ + +-enum a { b }; ++enum a { b, dummy = __INT_MAX__ }; + + struct { + enum a c; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_36 +@@ -0,0 +1,9 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 asimddp sve sve2 fphp asimdhp fcma ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_36.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_36" } */ ++/* { dg-additional-options "-march=native -mtune=cortex-a34" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+dotprod\+crc\+crypto\+sve2\n} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/negv.c +@@ -0,0 +1,27 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++/* { dg-final { check-function-bodies "**" "" "" } } */ ++ ++_Bool negvsi (int x) ++{ ++ int result; ++ return __builtin_sub_overflow (0, x, &result); ++} ++/* ++** negvsi: ++** negs wzr, w0 ++** cset w0, vs ++** ret ++*/ ++ ++_Bool negvdi (long x) ++{ ++ long result; ++ return __builtin_sub_overflow (0, x, &result); ++} ++/* ++** negvdi: ++** negs xzr, x0 ++** cset w0, vs ++** ret ++*/ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr125795.c +@@ -0,0 +1,47 @@ ++/* PR target/125795 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -funroll-loops" } */ ++ ++/* This loop is vectorized with LD2 (deinterleave) and TBL (lane reversal), ++ then unrolled. The unrolled body builds a full-width (32 FPR) early-ra ++ color group, which used to trigger a "1U << 32" undefined shift in ++ early_ra::allocate_colors. As a result the long-lived TBL permute index ++ was wrongly allocated to the same FPR as an LD2 tuple destination and got ++ clobbered, so the result was miscomputed. */ ++ ++extern void abort (void); ++ ++#define N 256 ++ ++static int __attribute__ ((noipa)) ++foo (void) ++{ ++ int k[N]; ++ int k2[N]; ++ int i; ++ ++ for (i = 0; i < N; i++) ++ k2[i] = i; ++ ++ for (i = 0; i < 64; i++) ++ { ++ k[i] = k2[2 * i + 0]; ++ k[255 - i] = k2[2 * i + 1]; ++ k[64 + i] = k2[2 * i + 128]; ++ k[191 - i] = k2[2 * i + 129]; ++ } ++ ++ for (i = 0; i < N; i++) ++ if (k[i] != ((i < 128) ? (2 * i) : (511 - 2 * i))) ++ return 1; ++ ++ return 0; ++} ++ ++int ++main (void) ++{ ++ if (foo ()) ++ abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/sme/za_state_8.c +@@ -0,0 +1,25 @@ ++// { dg-options "-O -fomit-frame-pointer -fno-optimize-sibling-calls" } ++// { dg-final { check-function-bodies "**" "" } } ++ ++#include ++ ++void callee_ns(); ++__arm_streaming __arm_inout("za") void callee_s(); ++ ++/* ++** foo: ++** ... ++** smstart za ++** ... ++** msr tpidr2_el0, x\d+ ++** ... ++*/ ++__arm_locally_streaming __arm_new("za") const float * foo(const float* x) { ++ callee_ns (); ++ const float32_t *x_f_in = x; ++ svzero_za(); ++ callee_s (); ++ return x_f_in; ++} ++ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/sve/acle/general/ld1rq_2.c +@@ -0,0 +1,37 @@ ++/* PR target/124908 */ ++/* { dg-options "-O2 -msve-vector-bits=128" } */ ++ ++#include ++ ++/* Verify that folding svld1rq does not ICE with -msve-vector-bits=128. */ ++ ++svuint8_t ++f_u8 (const uint8_t *p) ++{ ++ return svld1rq_u8 (svptrue_b8 (), p); ++} ++ ++svint8_t ++f_s8 (const int8_t *p) ++{ ++ return svld1rq_s8 (svptrue_b8 (), p); ++} ++ ++svuint16_t ++f_u16 (const uint16_t *p) ++{ ++ return svld1rq_u16 (svptrue_b16 (), p); ++} ++ ++svuint32_t ++f_u32 (const uint32_t *p) ++{ ++ return svld1rq_u32 (svptrue_b32 (), p); ++} ++ ++svfloat64_t ++f_f64 (const float64_t *p) ++{ ++ return svld1rq_f64 (svptrue_b64 (), p); ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/sve/pr105116-run.c +@@ -0,0 +1,48 @@ ++/* PR target/105116 */ ++/* { dg-do run { target aarch64_sve_hw } } */ ++/* { dg-options "-O2 -fno-split-wide-types" } */ ++ ++/* Besides the ICE, the non-representable high-lane subregs used to be ++ resolved lossily (silently reading lane 0), miscompiling the upper lanes. ++ Check the scalarised divide produces the correct result for every lane. */ ++ ++typedef signed char vnx16qi __attribute__((vector_size (32))); ++ ++__attribute__((noipa)) void ++vdiv_vnx16qi (vnx16qi *x, vnx16qi y, vnx16qi z) ++{ ++ register vnx16qi dst asm ("z0"); ++ register vnx16qi src1 asm ("z2"); ++ register vnx16qi src2 asm ("z4"); ++ dst = *x; ++ src1 = y; ++ src2 = z; ++ asm volatile ("" :: "w" (dst), "w" (src1), "w" (src2)); ++ dst = src2 - (dst / src1); ++ asm volatile ("" :: "w" (dst)); ++ *x = dst; ++} ++ ++int ++main (void) ++{ ++ vnx16qi X, Y, Z; ++ signed char xv[32], yv[32], zv[32]; ++ for (int i = 0; i < 32; i++) ++ { ++ xv[i] = (signed char) (i * 7 - 50); ++ yv[i] = (signed char) (((i % 5) + 1) * (i & 1 ? 1 : -1)); ++ zv[i] = (signed char) (100 - i * 3); ++ } ++ __builtin_memcpy (&X, xv, 32); ++ __builtin_memcpy (&Y, yv, 32); ++ __builtin_memcpy (&Z, zv, 32); ++ vdiv_vnx16qi (&X, Y, Z); ++ signed char got[32]; ++ __builtin_memcpy (got, &X, 32); ++ for (int i = 0; i < 32; i++) ++ if (got[i] ++ != (signed char) (zv[i] - (signed char) ((int) xv[i] / (int) yv[i]))) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/sve/pr105116.c +@@ -0,0 +1,32 @@ ++/* PR target/105116 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fno-split-wide-types" } */ ++ ++/* Wide GNU vectors pinned to SVE z registers and then scalarised by vector ++ lowering used to ICE in lra_split_hard_reg_for ("unable to find a register ++ to spill"): LRA reloaded a non-representable scalar subreg of the OImode ++ register pair into GENERAL_REGS, which cannot hold OImode. Integer vector ++ divide and modulo have no Advanced SIMD form, so they are still scalarised ++ and exercise the reload path. */ ++ ++typedef signed char vnx16qi __attribute__((vector_size (32))); ++ ++#define TEST(NAME, OP) \ ++ void \ ++ NAME (vnx16qi *x, vnx16qi y, vnx16qi z) \ ++ { \ ++ register vnx16qi dst asm ("z0"); \ ++ register vnx16qi src1 asm ("z2"); \ ++ register vnx16qi src2 asm ("z4"); \ ++ dst = *x; \ ++ src1 = y; \ ++ src2 = z; \ ++ asm volatile ("" :: "w" (dst), "w" (src1), "w" (src2)); \ ++ dst = src2 - (OP); \ ++ asm volatile ("" :: "w" (dst)); \ ++ *x = dst; \ ++ } ++ ++TEST (vmul_vnx16qi, dst * src1) ++TEST (vdiv_vnx16qi, dst / src1) ++TEST (vmod_vnx16qi, dst % src1) +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/torture/pr125621.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv8.2-a+sve -fsanitize=undefined" } */ ++#include ++ ++long foo(long x) { ++ return (long)svcntd() * x; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/torture/pr125818.c +@@ -0,0 +1,6 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+sve" } */ ++#include ++void f(svfloat32x2_t *tp, const svfloat32x2_t *tuple, const svfloat32_t *vp) { ++ *tp = svset2_f32(*tuple, 0, *vp); ++} +--- a/src/gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c ++++ b/src/gcc/testsuite/gcc.target/arm/crypto-vsha1cq_u32.c +@@ -31,5 +31,5 @@ uint32_t foo (void) + TEST_SHA1C_VEC_SELECT (GET_LANE) + + /* { dg-final { scan-assembler-times {sha1c.32\tq[0-9]+, q[0-9]+} 5 } } */ +-/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */ +-/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]+} 3 } } */ ++/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, (?:r[0-9]+|d[0-9]+\[[0-9]+\])} 4 { xfail { arm_thumb2 && arm_hf_eabi } } } } */ ++/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]} 3 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c ++++ b/src/gcc/testsuite/gcc.target/arm/crypto-vsha1h_u32.c +@@ -27,5 +27,5 @@ uint32_t foo (void) + TEST_SHA1H_VEC_SELECT (GET_LANE) + + /* { dg-final { scan-assembler-times {sha1h.32\tq[0-9]+, q[0-9]+} 5 } } */ +-/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */ +-/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]+} 3 } } */ ++/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, (?:r[0-9]+|d[0-9]+\[[0-9]+\])} 4 { xfail { arm_thumb2 && arm_hf_eabi } } } } */ ++/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]} 3 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c ++++ b/src/gcc/testsuite/gcc.target/arm/crypto-vsha1mq_u32.c +@@ -31,5 +31,5 @@ uint32_t foo (void) + TEST_SHA1M_VEC_SELECT (GET_LANE) + + /* { dg-final { scan-assembler-times {sha1m.32\tq[0-9]+, q[0-9]+} 5 } } */ +-/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */ +-/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]+} 3 } } */ ++/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, (?:r[0-9]+|d[0-9]+\[[0-9]+\])} 4 { xfail { arm_thumb2 && arm_hf_eabi } } } } */ ++/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]} 3 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c ++++ b/src/gcc/testsuite/gcc.target/arm/crypto-vsha1pq_u32.c +@@ -31,5 +31,5 @@ uint32_t foo (void) + TEST_SHA1P_VEC_SELECT (GET_LANE) + + /* { dg-final { scan-assembler-times {sha1p.32\tq[0-9]+, q[0-9]+} 5 } } */ +-/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, r[0-9]+} 4 } } */ +-/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]+} 3 } } */ ++/* { dg-final { scan-assembler-times {vdup.32\tq[0-9]+, (?:r[0-9]+|d[0-9]+\[[0-9]+\])} 4 { xfail { arm_thumb2 && arm_hf_eabi } } } } */ ++/* { dg-final { scan-assembler-times {vmov.32\tr[0-9]+, d[0-9]+\[[0-9]+\]} 3 } } */ +--- a/src/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c ++++ b/src/gcc/testsuite/gcc.target/arm/ifcvt-size-check.c +@@ -1,6 +1,7 @@ + /* { dg-do assemble } */ +-/* { dg-options "-mthumb -Os " } */ +-/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-require-effective-target arm_arch_v4t_thumb_ok } */ ++/* { dg-options "-Os" } */ ++/* { dg-add-options arm_arch_v4t_thumb } */ + + int + test (unsigned char iov_len, int count, int i) +--- a/src/gcc/testsuite/gcc.target/arm/ivopts-2.c ++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-2.c +@@ -1,5 +1,4 @@ +-/* { dg-do assemble } */ +-/* { dg-options "-Os -fdump-tree-ivopts -save-temps" } */ ++/* { dg-options "-Os -fdump-tree-ivopts" } */ + + extern void foo2 (short*); + +@@ -14,4 +13,3 @@ tr4 (short array[], int n) + + /* { dg-final { scan-tree-dump-times "PHI = -1.0L) ++ TEST (dq); ++} ++ ++ ++NI void test_u (long double x) ++{ ++ TEST (uda); ++ TEST (uta); ++ ++ if (x < 1.0L) ++ TEST (udq); ++} ++ ++void test (DD x) ++{ ++ if (x >= 0) ++ test_u (x); ++ ++ test_s (x); ++} ++ ++int main (void) ++{ ++ test (+0.0L); ++ test (-0.0L); ++ ++ test (+1.0L); ++ test (-1.0L); ++ ++ test (-0x0.cafe123p0); ++ test (+0x0.cafe123p0); ++ ++ test (+0x1234.cafe123p0); ++ test (-0x1234.cafe123p0); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr127004.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-std=c99" } */ ++ ++unsigned f (unsigned x) ++{ ++ return (unsigned) (((unsigned long long) x * 0xAAAAAAAB) >> 32) >> 1; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/avr/torture/pr127098.c +@@ -0,0 +1,21 @@ ++/* { dg-do run } */ ++ ++#define NI __attribute((noipa)) ++ ++typedef char U __attribute__ ((vector_size (16))); ++ ++NI void fun (long i, U u) ++{ ++ (void) i; ++ if (u[0] != 1) ++ __builtin_abort (); ++} ++ ++U u = { 1 }; ++ ++int main (void) ++{ ++ fun (0, u); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/apx-nf-pr125469.c +@@ -0,0 +1,11 @@ ++/* PR target/125469 */ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-Ofast -mapx-features=nf" } */ ++ ++int s; ++ ++void ++foo () ++{ ++ s /= ((__int128) 0x33333333333333333333333333333333uwb) + 1i; ++} +--- a/src/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c +@@ -120,21 +120,21 @@ + /* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 2 } } */ + /* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 2 } } */ + /* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 2 } } */ + /* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 2 } } */ + /* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */ +-/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 2 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 2 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 2 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 2 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */ + + #include +@@ -319,23 +319,31 @@ avx10_2_test (void) + hxi = _mm_mask_cvtts_ps_epu64 (hxi, m8, hx); + hxi = _mm_maskz_cvtts_ps_epu64 (m8, hx); + +- i = _mm_cvtts_sd_epi32 (hxd); +- ui = _mm_cvtts_sd_epu32 (hxd); +- i = _mm_cvtts_ss_epi32 (hx); +- ui = _mm_cvtts_ss_epu32 (hx); +- i = _mm_cvtts_roundsd_epi32 (hxd, 8); +- ui = _mm_cvtts_roundsd_epu32 (hxd, 8); +- i = _mm_cvtts_roundss_epi32 (hx, 8); +- ui = _mm_cvtts_roundss_epu32 (hx, 8); ++ i = _mm_cvtts_sd_i32 (hxd); ++ i = _mm_cvtts_sd_si32 (hxd); ++ ui = _mm_cvtts_sd_u32 (hxd); ++ i = _mm_cvtts_ss_i32 (hx); ++ i = _mm_cvtts_ss_si32 (hx); ++ ui = _mm_cvtts_ss_u32 (hx); ++ i = _mm_cvtts_roundsd_i32 (hxd, 8); ++ i = _mm_cvtts_roundsd_si32 (hxd, 8); ++ ui = _mm_cvtts_roundsd_u32 (hxd, 8); ++ i = _mm_cvtts_roundss_i32 (hx, 8); ++ i = _mm_cvtts_roundss_si32 (hx, 8); ++ ui = _mm_cvtts_roundss_u32 (hx, 8); + + #ifdef __x86_64__ +- ll = _mm_cvtts_sd_epi64 (hxd); +- ull = _mm_cvtts_sd_epu64 (hxd); +- ll = _mm_cvtts_ss_epi64 (hx); +- ull = _mm_cvtts_ss_epu64 (hx); +- ll = _mm_cvtts_roundsd_epi64 (hxd, 8); +- ull = _mm_cvtts_roundsd_epu64 (hxd, 8); +- ll = _mm_cvtts_roundss_epi64 (hx, 8); +- ull = _mm_cvtts_roundss_epu64 (hx, 8); ++ ll = _mm_cvtts_sd_i64 (hxd); ++ ll = _mm_cvtts_sd_si64 (hxd); ++ ull = _mm_cvtts_sd_u64 (hxd); ++ ll = _mm_cvtts_ss_i64 (hx); ++ ll = _mm_cvtts_ss_si64 (hx); ++ ull = _mm_cvtts_ss_u64 (hx); ++ ll = _mm_cvtts_roundsd_i64 (hxd, 8); ++ ll = _mm_cvtts_roundsd_si64 (hxd, 8); ++ ull = _mm_cvtts_roundsd_u64 (hxd, 8); ++ ll = _mm_cvtts_roundss_i64 (hx, 8); ++ ll = _mm_cvtts_roundss_si64 (hx, 8); ++ ull = _mm_cvtts_roundss_u64 (hx, 8); + #endif + } +--- a/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2sis-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2sis-2.c +@@ -19,7 +19,7 @@ TEST (void) + + s.a[0] = 2.46; + +- res1 = _mm_cvtts_roundsd_epi32 (s.x, 8); ++ res1 = _mm_cvtts_roundsd_i32 (s.x, 8); + + if (s.a[0] > INT_MAX) + res1_ref = INT_MAX; +@@ -31,7 +31,7 @@ TEST (void) + if (res1 != res1_ref) + abort(); + +- res1 = _mm_cvtts_sd_epi32 (s.x); ++ res1 = _mm_cvtts_sd_i32 (s.x); + + if (s.a[0] > INT_MAX) + res1_ref = INT_MAX; +@@ -44,7 +44,7 @@ TEST (void) + abort(); + + #ifdef __x86_64__ +- res2 = _mm_cvtts_roundsd_epi64 (s.x, 8); ++ res2 = _mm_cvtts_roundsd_i64 (s.x, 8); + + if (s.a[0] > LLONG_MAX) + res2_ref = LLONG_MAX; +@@ -56,7 +56,7 @@ TEST (void) + if (res2 != res2_ref) + abort(); + +- res2 = _mm_cvtts_sd_epi64 (s.x); ++ res2 = _mm_cvtts_sd_i64 (s.x); + + if (s.a[0] > LLONG_MAX) + res2_ref = LLONG_MAX; +--- a/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2usis-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2usis-2.c +@@ -19,7 +19,7 @@ TEST (void) + + s.a[0] = 2.46; + +- res1 = _mm_cvtts_roundsd_epu32 (s.x, 8); ++ res1 = _mm_cvtts_roundsd_u32 (s.x, 8); + + if (s.a[0] > UINT_MAX) + res1_ref = UINT_MAX; +@@ -31,7 +31,7 @@ TEST (void) + if (res1 != res1_ref) + abort(); + +- res1 = _mm_cvtts_sd_epu32 (s.x); ++ res1 = _mm_cvtts_sd_u32 (s.x); + + if (s.a[0] > UINT_MAX) + res1_ref = UINT_MAX; +@@ -44,7 +44,7 @@ TEST (void) + abort(); + + #ifdef __x86_64__ +- res2 = _mm_cvtts_roundsd_epu64 (s.x, 8); ++ res2 = _mm_cvtts_roundsd_u64 (s.x, 8); + + if (s.a[0] > ULONG_MAX) + res2_ref = ULONG_MAX; +@@ -56,7 +56,7 @@ TEST (void) + if (res2 != res2_ref) + abort(); + +- res2 = _mm_cvtts_sd_epu64 (s.x); ++ res2 = _mm_cvtts_sd_u64 (s.x); + + if (s.a[0] > ULONG_MAX) + res2_ref = ULONG_MAX; +--- a/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2sis-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2sis-2.c +@@ -19,7 +19,7 @@ TEST (void) + + s.a[0] = 2.46; + +- res1 = _mm_cvtts_roundss_epi32 (s.x, 8); ++ res1 = _mm_cvtts_roundss_i32 (s.x, 8); + + if (s.a[0] > INT_MAX) + res1_ref = INT_MAX; +@@ -31,7 +31,7 @@ TEST (void) + if (res1 != res1_ref) + abort(); + +- res1 = _mm_cvtts_ss_epi32 (s.x); ++ res1 = _mm_cvtts_ss_i32 (s.x); + + if (s.a[0] > INT_MAX) + res1_ref = INT_MAX; +@@ -44,7 +44,7 @@ TEST (void) + abort(); + + #ifdef __x86_64__ +- res2 = _mm_cvtts_roundss_epi64 (s.x, 8); ++ res2 = _mm_cvtts_roundss_i64 (s.x, 8); + + if (s.a[0] > LLONG_MAX) + res2_ref = LLONG_MAX; +@@ -56,7 +56,7 @@ TEST (void) + if (res2 != res2_ref) + abort(); + +- res2 = _mm_cvtts_ss_epi64 (s.x); ++ res2 = _mm_cvtts_ss_i64 (s.x); + + if (s.a[0] > LLONG_MAX) + res2_ref = LLONG_MAX; +--- a/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2usis-2.c ++++ b/src/gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2usis-2.c +@@ -18,7 +18,7 @@ TEST (void) + + s.a[0] = 2.46; + +- res1 = _mm_cvtts_roundss_epu32 (s.x, 8); ++ res1 = _mm_cvtts_roundss_u32 (s.x, 8); + + if (s.a[0] > UINT_MAX) + res1_ref = UINT_MAX; +@@ -30,7 +30,7 @@ TEST (void) + if (res1 != res1_ref) + abort(); + +- res1 = _mm_cvtts_ss_epu32 (s.x); ++ res1 = _mm_cvtts_ss_u32 (s.x); + + if (s.a[0] > UINT_MAX) + res1_ref = UINT_MAX; +@@ -43,7 +43,7 @@ TEST (void) + abort(); + + #ifdef __x86_64__ +- res2 = _mm_cvtts_roundss_epu64 (s.x, 8); ++ res2 = _mm_cvtts_roundss_u64 (s.x, 8); + + if (s.a[0] > ULONG_MAX) + res2_ref = ULONG_MAX; +@@ -55,7 +55,7 @@ TEST (void) + if (res2 != res2_ref) + abort(); + +- res2 = _mm_cvtts_ss_epu64 (s.x); ++ res2 = _mm_cvtts_ss_u64 (s.x); + + if (s.a[0] > ULONG_MAX) + res2_ref = ULONG_MAX; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx2-pr126446.c +@@ -0,0 +1,14 @@ ++/* PR target/126446 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -mavx2" } */ ++ ++typedef signed char V __attribute__((vector_size (16))); ++ ++signed char ++foo () ++{ ++ V b = {}; ++ long long c = ~2878966870562407444LL; ++ b[c] = 1; ++ return b[0]; ++} +--- a/src/gcc/testsuite/gcc.target/i386/builtin_target.c ++++ b/src/gcc/testsuite/gcc.target/i386/builtin_target.c +@@ -54,6 +54,10 @@ check_detailed () + assert (__builtin_cpu_is ("amd")); + get_amd_cpu (&cpu_model, &cpu_model2, cpu_features2); + break; ++ case VENDOR_HYGON: ++ assert (__builtin_cpu_is ("hygon")); ++ get_hygon_cpu (&cpu_model, &cpu_model2, cpu_features2); ++ break; + default: + break; + } +@@ -127,6 +131,8 @@ quick_check () + + assert (__builtin_cpu_is ("bdver2") >= 0); + ++ assert (__builtin_cpu_is ("c86-4g-m4") >= 0); ++ + return 0; + } + +--- a/src/gcc/testsuite/gcc.target/i386/funcspec-56.inc ++++ b/src/gcc/testsuite/gcc.target/i386/funcspec-56.inc +@@ -239,6 +239,9 @@ extern void test_arch_znver2 (void) __attribute__((__target__("arch= + extern void test_arch_znver3 (void) __attribute__((__target__("arch=znver3"))); + extern void test_arch_znver4 (void) __attribute__((__target__("arch=znver4"))); + extern void test_arch_znver5 (void) __attribute__((__target__("arch=znver5"))); ++extern void test_arch_c86_4g_m4 (void) __attribute__((__target__("arch=c86-4g-m4"))); ++extern void test_arch_c86_4g_m6 (void) __attribute__((__target__("arch=c86-4g-m6"))); ++extern void test_arch_c86_4g_m7 (void) __attribute__((__target__("arch=c86-4g-m7"))); + + extern void test_tune_nocona (void) __attribute__((__target__("tune=nocona"))); + extern void test_tune_core2 (void) __attribute__((__target__("tune=core2"))); +@@ -266,6 +269,9 @@ extern void test_tune_znver2 (void) __attribute__((__target__("tune= + extern void test_tune_znver3 (void) __attribute__((__target__("tune=znver3"))); + extern void test_tune_znver4 (void) __attribute__((__target__("tune=znver4"))); + extern void test_tune_znver5 (void) __attribute__((__target__("tune=znver5"))); ++extern void test_tune_c86_4g_m4 (void) __attribute__((__target__("tune=c86-4g-m4"))); ++extern void test_tune_c86_4g_m6 (void) __attribute__((__target__("tune=c86-4g-m6"))); ++extern void test_tune_c86_4g_m7 (void) __attribute__((__target__("tune=c86-4g-m7"))); + + extern void test_fpmath_sse (void) __attribute__((__target__("sse2,fpmath=sse"))); + extern void test_fpmath_387 (void) __attribute__((__target__("sse2,fpmath=387"))); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr125949.c +@@ -0,0 +1,38 @@ ++/* PR target/125949 */ ++/* On a target with AVX-VNNI-INT8 the vpdpb{ss,su,uu}d[s] instructions only ++ have a VEX encoding. Even under register pressure the compiler must stay ++ within xmm/ymm0-15 for these insns and must not allocate xmm/ymm16-31 and ++ emit an EVEX-encoded vpdpb* using a high register. -mavx512vl exposes the ++ xmm/ymm16-31 register file so the allocator would otherwise be tempted to ++ use it. */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mavxvnniint8 -mavx512vl" } */ ++/* { dg-final { scan-assembler-not "vpdpb\[a-z\]+\[ \\t\]+\[^\n\]*%\[xy\]mm(1\[6-9\]|2\[0-9\]|3\[01\])" } } */ ++ ++#include ++ ++#define NACC 32 ++ ++void ++foo (unsigned int *restrict out, const unsigned char *restrict a, ++ const unsigned char *restrict b, int n) ++{ ++ __m256i acc[NACC]; ++ ++ for (int k = 0; k < NACC; k++) ++ acc[k] = _mm256_setzero_si256 (); ++ ++ for (int i = 0; i < n; i++) ++ { ++ __m256i vb = _mm256_loadu_si256 ((const __m256i *) (b + 32 * (i & 7))); ++ for (int k = 0; k < NACC; k++) ++ { ++ __m256i va ++ = _mm256_loadu_si256 ((const __m256i *) (a + 32 * ((i + k) & 15))); ++ acc[k] = _mm256_dpbuud_epi32 (acc[k], va, vb); ++ } ++ } ++ ++ for (int k = 0; k < NACC; k++) ++ _mm256_storeu_si256 ((__m256i *) (out + 8 * k), acc[k]); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126148.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-options "-O2 -ffast-math -mapxf -mno-80387 -mfpmath=387" } */ ++ ++int foo (int a, double b) { ++ if (a || b) ++ return 1; ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-1a.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#ifndef N ++#define N 4 ++#endif ++ ++typedef float vector[N]; ++ ++extern vector v; ++ ++extern void foo (vector *); ++ ++void ++func (vector a, vector b) ++{ ++ vector r; ++ for (int i = 0; i < N; i++) ++ r[i] = a[i] * b[i]; ++ foo (&r); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-1b.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-32,\[\\t \]*%\[re\]?sp" } } */ ++/* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#define N 8 ++ ++#include "pr126410-1a.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-1c.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#define N 16 ++ ++#include "pr126410-1a.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-2a.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#ifndef N ++#define N 4 ++#endif ++ ++typedef struct { float values[N]; } vector; ++ ++extern vector v; ++ ++extern void foo (vector *); ++ ++void ++func (vector a, vector b) ++{ ++ vector r; ++ for (int i = 0; i < N; i++) ++ r.values[i] = a.values[i] * b.values[i]; ++ foo (&r); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-2b.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-32,\[\\t \]*%\[re\]?sp" } } */ ++/* { dg-final { scan-assembler-not "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#define N 8 ++ ++#include "pr126410-2a.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126410-2c.c +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target *-*-linux* } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -fomit-frame-pointer" } */ ++/* { dg-final { scan-assembler "and\[lq\]?\[\\t \]*\\$-64,\[\\t \]*%\[re\]?sp" } } */ ++ ++#define N 16 ++ ++#include "pr126410-2a.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126429-1.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mavx512bf16 -mavx512dq" } */ ++/* { dg-final { scan-assembler-not "kmovb" } } */ ++ ++#include ++ ++__m512 dp16ps_mask (__m512 src, __mmask16 k, __m512bh a, __m512bh b) ++{ ++ return _mm512_mask_dpbf16_ps (src, k, a, b); ++} ++ ++__m512 dp16ps_maskz (__mmask16 k, __m512 src, __m512bh a, __m512bh b) ++{ ++ return _mm512_maskz_dpbf16_ps (k, src, a, b); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126581-1.c +@@ -0,0 +1,65 @@ ++/* PR target/126581 */ ++/* { dg-do compile { target { *-*-linux* && lp64 } } } */ ++/* { dg-options "-O2 -march=x86-64-v4 -mavx10.2 -Wno-deprecated-declarations" } */ ++/* { dg-final { scan-assembler-times "vcvttss2usis\[ \t]*%xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttss2usis\[ \t]*\{sae\}, %xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \t]*%xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttss2sis\[ \t]*\{sae\}, %xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \t]*%xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \t]*\{sae\}, %xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \t]*%xmm0, %eax" 1 } } */ ++/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \t]*\{sae\}, %xmm0, %eax" 1 } } */ ++ ++#include ++ ++unsigned long long ++func1 (__m128 x) ++{ ++ return _mm_cvtts_ss_epu32 (x); ++} ++ ++unsigned long long ++func2 (__m128 x) ++{ ++ return _mm_cvtts_roundss_epu32 ++ (x, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); ++} ++ ++unsigned long long ++func3 (__m128 x) ++{ ++ return (unsigned int) _mm_cvtts_ss_epi32 (x); ++} ++ ++unsigned long long ++func4 (__m128 x) ++{ ++ return (unsigned int) _mm_cvtts_roundss_epi32 ++ (x, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); ++} ++ ++unsigned long long ++func5 (__m128d x) ++{ ++ return _mm_cvtts_sd_epu32 (x); ++} ++ ++unsigned long long ++func6 (__m128d x) ++{ ++ return _mm_cvtts_roundsd_epu32 ++ (x, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); ++} ++ ++unsigned long long ++func7 (__m128d x) ++{ ++ return (unsigned int) _mm_cvtts_sd_epi32 (x); ++} ++ ++unsigned long long ++func8 (__m128d x) ++{ ++ return (unsigned int) _mm_cvtts_roundsd_epi32 ++ (x, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr126787.c +@@ -0,0 +1,15 @@ ++/* { dg-do assemble { target { apxf && { ! ia32 } } } } */ ++/* { dg-options "-O2 -mapxf -mprefer-avx128 -funroll-loops --param max-unroll-times=4 -ffast-math -ftree-vectorize" } */ ++ ++typedef float f4; ++__attribute__((__target__("avx,fma4"))) ++void smm_avx128_fma4(f4 * restrict c, const f4 * restrict a, ++ const f4 * restrict b, int m, int n, int k) ++{ ++ for (int j = 0; j < n; j++) ++ for (int l = 0; l < k; l++) { ++ f4 bl = b[l + j*k]; ++ for (int i = 0; i < m; i++) ++ c[i + j*m] += a[i + l*m] * bl; ++ } ++} +--- a/src/gcc/testsuite/gcc.target/i386/sse-14.c ++++ b/src/gcc/testsuite/gcc.target/i386/sse-14.c +@@ -1128,15 +1128,19 @@ test_2 (_mm512_maskz_cvtts_roundps_epu64, __m512i, __mmask8, __m256, 8) + test_3 (_mm512_mask_cvtts_roundps_epu64, __m512i, __m512i, __mmask8, __m256, 8) + + /* avx10_2satcvtintrin.h */ +-test_1 (_mm_cvtts_roundsd_epi32, int, __m128d, 8) +-test_1 (_mm_cvtts_roundsd_epu32, unsigned int, __m128d, 8) +-test_1 (_mm_cvtts_roundss_epi32, int, __m128, 8) +-test_1 (_mm_cvtts_roundss_epu32, unsigned int, __m128, 8) ++test_1 (_mm_cvtts_roundsd_i32, int, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_si32, int, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_u32, unsigned int, __m128d, 8) ++test_1 (_mm_cvtts_roundss_i32, int, __m128, 8) ++test_1 (_mm_cvtts_roundss_si32, int, __m128, 8) ++test_1 (_mm_cvtts_roundss_u32, unsigned int, __m128, 8) + #ifdef __x86_64__ +-test_1 (_mm_cvtts_roundsd_epi64, long long, __m128d, 8) +-test_1 (_mm_cvtts_roundsd_epu64, unsigned long long, __m128d, 8) +-test_1 (_mm_cvtts_roundss_epi64, long long, __m128, 8) +-test_1 (_mm_cvtts_roundss_epu64, unsigned long long, __m128, 8) ++test_1 (_mm_cvtts_roundsd_i64, long long, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_si64, long long, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_u64, unsigned long long, __m128d, 8) ++test_1 (_mm_cvtts_roundss_i64, long long, __m128, 8) ++test_1 (_mm_cvtts_roundss_si64, long long, __m128, 8) ++test_1 (_mm_cvtts_roundss_u64, unsigned long long, __m128, 8) + #endif + + /* avx10_2-512minmaxintrin.h */ +--- a/src/gcc/testsuite/gcc.target/i386/sse-22.c ++++ b/src/gcc/testsuite/gcc.target/i386/sse-22.c +@@ -1169,15 +1169,19 @@ test_2 (_mm512_maskz_cvtts_roundps_epu64, __m512i, __mmask8, __m256, 8) + test_3 (_mm512_mask_cvtts_roundps_epu64, __m512i, __m512i, __mmask8, __m256, 8) + + /* avx10_2satcvtintrin.h */ +-test_1 (_mm_cvtts_roundsd_epi32, int, __m128d, 8) +-test_1 (_mm_cvtts_roundsd_epu32, unsigned int, __m128d, 8) +-test_1 (_mm_cvtts_roundss_epi32, int, __m128, 8) +-test_1 (_mm_cvtts_roundss_epu32, unsigned int, __m128, 8) ++test_1 (_mm_cvtts_roundsd_i32, int, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_si32, int, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_u32, unsigned int, __m128d, 8) ++test_1 (_mm_cvtts_roundss_i32, int, __m128, 8) ++test_1 (_mm_cvtts_roundss_si32, int, __m128, 8) ++test_1 (_mm_cvtts_roundss_u32, unsigned int, __m128, 8) + #ifdef __x86_64__ +-test_1 (_mm_cvtts_roundsd_epi64, long long, __m128d, 8) +-test_1 (_mm_cvtts_roundsd_epu64, unsigned long long, __m128d, 8) +-test_1 (_mm_cvtts_roundss_epi64, long long, __m128, 8) +-test_1 (_mm_cvtts_roundss_epu64, unsigned long long, __m128, 8) ++test_1 (_mm_cvtts_roundsd_i64, long long, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_si64, long long, __m128d, 8) ++test_1 (_mm_cvtts_roundsd_u64, unsigned long long, __m128d, 8) ++test_1 (_mm_cvtts_roundss_i64, long long, __m128, 8) ++test_1 (_mm_cvtts_roundss_si64, long long, __m128, 8) ++test_1 (_mm_cvtts_roundss_u64, unsigned long long, __m128, 8) + #endif + + /* avx10_2-512minmaxintrin.h */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/ssse3-pr125611.c +@@ -0,0 +1,12 @@ ++/* PR target/125611 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mssse3 -mno-sse4.1" } */ ++ ++typedef __attribute__((__vector_size__(16))) short V; ++struct __attribute__((__packed__)) { V v[4]; } *u; ++ ++void ++foo (void) ++{ ++ u->v[2] &= __builtin_ia32_pmulhrsw128 (u->v[0], u->v[1]); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/acmp-tst-32bit.c +@@ -0,0 +1,61 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target ilp32 } */ ++ ++/* { dg-options "-O2 -mdejagnu-cpu=power8" } */ ++ ++bool ++word_exchange_qi (signed char *ptr, signed char *expected, signed char *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uqi (unsigned char *ptr, unsigned char *expected, ++ unsigned char *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_hi (short *ptr, short *expected, short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_shi (signed short *ptr, signed short *expected, ++ signed short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uhi (unsigned short *ptr, unsigned short *expected, ++ unsigned short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_si (int *ptr, int *expected, int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_ssi (signed int *ptr, signed int *expected, signed int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_usi (unsigned int *ptr, unsigned int *expected, ++ unsigned int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++/* { dg-final { scan-assembler-times {\mlbarx +[0-9]+,[0-9]+,[0-9]+,1} 2 } } */ ++/* { dg-final { scan-assembler-times {\mlharx +[0-9]+,[0-9]+,[0-9]+,1} 3 } } */ ++/* { dg-final { scan-assembler-times {\mlwarx +[0-9]+,[0-9]+,[0-9]+,1} 3 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/acmp-tst-indexed.c +@@ -0,0 +1,165 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++ ++// Need power8 for larx ++/* { dg-options "-O2 -mdejagnu-cpu=power8" } */ ++ ++typedef struct udt_1 ++{ ++ char *a; ++} udt_1t; ++typedef struct udt_2 ++{ ++ char a; ++ char b; ++} udt_2t; ++typedef struct udt_4 ++{ ++ short a; ++ short b; ++} udt_4t; ++typedef struct udt_8 ++{ ++ int a; ++ int b; ++} udt_8t; ++bool ++word_exchange_nqi (char *ptr, char *expected, char *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_qi (signed char *ptr, signed char *expected, signed char *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uqi (unsigned char *ptr, unsigned char *expected, ++ unsigned char *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_hi (short *ptr, short *expected, short *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_shi (signed short *ptr, signed short *expected, ++ signed short *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uhi (unsigned short *ptr, unsigned short *expected, ++ unsigned short *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_si (int *ptr, int *expected, int *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_ssi (signed int *ptr, signed int *expected, signed int *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_usi (unsigned int *ptr, unsigned int *expected, ++ unsigned int *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_di (long long *ptr, long long *expected, long long *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_sdi (signed long long *ptr, signed long long *expected, ++ signed long long *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udi (unsigned long long *ptr, unsigned long long *expected, ++ unsigned long long *desired, unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_f32 (float *ptr, float *expected, float *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_f64 (double *ptr, double *expected, double *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_1 (udt_1t *ptr, udt_1t *expected, udt_1t *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_2 (udt_2t *ptr, udt_2t *expected, udt_2t *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_4 (udt_4t *ptr, udt_4t *expected, udt_4t *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_8 (udt_8t *ptr, udt_8t *expected, udt_8t *desired, ++ unsigned long long n) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr+n, expected+n, desired+n, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++/* Test if indexed mode addresses are used, r6 must be used which corresponds ++ to the argument n in all functions. */ ++ ++/* { dg-final { scan-assembler-times {\mlbarx +[0-9]+,[0-9]+,6,1} 3 } } */ ++/* { dg-final { scan-assembler-times {\mstbcx. +[0-9]+,[0-9]+,6} 3 } } */ ++ ++/* { dg-final { scan-assembler-times {\mlharx +[0-9]+,[0-9]+,6,1} 4 } } */ ++/* { dg-final { scan-assembler-times {\msthcx. +[0-9]+,[0-9]+,6} 4 } } */ ++ ++/* { dg-final { scan-assembler-times {\mlwarx +[0-9]+,[0-9]+,6,1} 5 } } */ ++/* { dg-final { scan-assembler-times {\mstwcx. +[0-9]+,[0-9]+,6} 5 } } */ ++ ++/* { dg-final { scan-assembler-times {\mldarx +[0-9]+,[0-9]+,6,1} 6 } } */ ++/* { dg-final { scan-assembler-times {\mstdcx. +[0-9]+,[0-9]+,6} 6 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/acmp-tst.c +@@ -0,0 +1,176 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++ ++// Need power8 for larx ++/* { dg-options "-O2 -mdejagnu-cpu=power8" } */ ++ ++typedef struct udt_1 ++{ ++ char *a; ++} udt_1t; ++typedef struct udt_2 ++{ ++ char a; ++ char b; ++} udt_2t; ++typedef struct udt_4 ++{ ++ short a; ++ short b; ++} udt_4t; ++typedef struct udt_8 ++{ ++ int a; ++ int b; ++} udt_8t; ++typedef struct udt_16 ++{ ++ long long a; ++ long long b; ++} udt_16t; ++bool ++word_exchange_nqi (char *ptr, char *expected, char *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_qi (signed char *ptr, signed char *expected, signed char *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uqi (unsigned char *ptr, unsigned char *expected, ++ unsigned char *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_hi (short *ptr, short *expected, short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_shi (signed short *ptr, signed short *expected, ++ signed short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uhi (unsigned short *ptr, unsigned short *expected, ++ unsigned short *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_si (int *ptr, int *expected, int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_ssi (signed int *ptr, signed int *expected, signed int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_usi (unsigned int *ptr, unsigned int *expected, ++ unsigned int *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_di (long long *ptr, long long *expected, long long *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_sdi (signed long long *ptr, signed long long *expected, ++ signed long long *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udi (unsigned long long *ptr, unsigned long long *expected, ++ unsigned long long *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_sti (signed __int128 *ptr, signed __int128 *expected, ++ signed __int128 *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_uti (unsigned __int128 *ptr, unsigned __int128 *expected, ++ unsigned __int128 *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_f32 (float *ptr, float *expected, float *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_f64 (double *ptr, double *expected, double *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_f128 (__ieee128 *ptr, __ieee128 *expected, __ieee128 *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_1 (udt_1t *ptr, udt_1t *expected, udt_1t *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_2 (udt_2t *ptr, udt_2t *expected, udt_2t *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_4 (udt_4t *ptr, udt_4t *expected, udt_4t *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_8 (udt_8t *ptr, udt_8t *expected, udt_8t *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++bool ++word_exchange_udt_16 (udt_16t *ptr, udt_16t *expected, udt_16t *desired) ++{ ++ return __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++/* { dg-final { scan-assembler-times {\mlbarx +[0-9]+,[0-9]+,[0-9]+,1} 3 } } */ ++/* { dg-final { scan-assembler-times {\mlharx +[0-9]+,[0-9]+,[0-9]+,1} 4 } } */ ++/* { dg-final { scan-assembler-times {\mlwarx +[0-9]+,[0-9]+,[0-9]+,1} 5 } } */ ++/* { dg-final { scan-assembler-times {\mldarx +[0-9]+,[0-9]+,[0-9]+,1} 6 } } */ ++/* { dg-final { scan-assembler-times {\mlqarx +[0-9]+,[0-9]+,[0-9]+,1} 4 } } */ +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-1.c +@@ -1035,4 +1035,4 @@ foo156 (vector unsigned short usa) + /* { dg-final { scan-assembler-times {\mvmrglb\M} 3 } } */ + /* { dg-final { scan-assembler-times {\mvmrgew\M} 4 } } */ + /* { dg-final { scan-assembler-times {\mvsplth|xxsplth\M} 4 } } */ +-/* { dg-final { scan-assembler-times {\mxxpermdi\M} 44 } } */ ++/* { dg-final { scan-assembler-times {\mxxpermdi\M} 42 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/mpc860_no_lwsync.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ++/* { dg-options "-mcpu=860 -O2" } */ ++ ++/* Check that we do not emit lwsync when targeting MPC8xx (MPCCORE), ++ since the MPC8xx core does not support and faults on this instruction. */ ++ ++void ++store_release (int *ptr, int val) ++{ ++ __atomic_store_n (ptr, val, __ATOMIC_RELEASE); ++} ++ ++/* { dg-final { scan-assembler-not "\mlwsync\M" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr106895-1.c +@@ -0,0 +1,16 @@ ++/* PR target/106895 */ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target int128 } */ ++/* { dg-options "-O2 -save-temps" } */ ++ ++/* Verify the following generates even/odd register pairs. */ ++ ++typedef __int128 pti __attribute__((mode(PTI))); ++ ++void ++set128 (pti val, pti *mem) ++{ ++ asm ("stq %1,%0" : "=m" (*mem) : "r" (val)); ++} ++ ++/* { dg-final { scan-assembler {\mstq\M} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr106895-2.c +@@ -0,0 +1,24 @@ ++/* PR target/106895 */ ++/* { dg-do run } */ ++/* { dg-require-effective-target int128 } */ ++/* { dg-options "-O2" } */ ++ ++#include ++ ++typedef __int128 ti; ++typedef __int128 pti __attribute__((mode(PTI))); ++ ++volatile ti a = 140; ++volatile pti b; ++volatile ti c; ++ ++int main(void) ++{ ++ b = (pti) a; ++ c = (ti) b; ++ ++ if (c != a) ++ abort(); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr117487.c +@@ -0,0 +1,67 @@ ++/* { dg-do compile { target lp64 } } */ ++/* { dg-options "-mdejagnu-cpu=power9 -O2" } */ ++/* { dg-require-effective-target powerpc_vsx } */ ++ ++#include ++ ++/* ++ * PR target/117487 ++ * ++ * On power8 with the optimization it generates: ++ * ++ * xscvdpspn 0,1 ++ * sldi 9,4,32 ++ * mtvsrd 32,9 ++ * xxland 1,0,32 ++ * xscvspdpn 1,1 ++ * ++ * I.e., it converts the SFmode to the memory format (instead of the DFmode ++ * that is used within the register), converts the mask so that it is in the ++ * vector register in the upper 32-bits, and does a XXLAND (i.e. there is only ++ * one direct move from GPR to vector register). Then after doing this, it ++ * converts the upper 32-bits back to DFmode. ++ * ++ * If the XSCVSPDN instruction took the value in the normal 32-bit scalar in a ++ * vector register, we wouldn't have needed the SLDI of the mask. ++ * ++ * On power9/power10/power11 before the fix wa applied, GCC generated: ++ * ++ * xscvdpspn 0,1 ++ * mfvsrwz 2,0 ++ * and 2,2,4 ++ * mtvsrws 1,2 ++ * xscvspdpn 1,1 ++ * blr ++ * ++ * I.e convert to SFmode representation, move the value to a GPR, do an AND ++ * operation, move the 32-bit value with a splat, and then convert it back to ++ * DFmode format. ++ * ++ * After the patch was applied, it now generates: ++ * ++ * xscvdpspn 0,1 ++ * mtvsrwz 32,2 ++ * xxland 32,0,32 ++ * xxspltw 1,32,1 ++ * xscvspdpn 1,1 ++ * blr ++ */ ++ ++union u { ++ float f; ++ uint32_t u32; ++}; ++ ++float ++math_foo (float x, unsigned int mask) ++{ ++ union u arg; ++ ++ arg.f = x; ++ arg.u32 &= mask; ++ return arg.f; ++} ++ ++/* { dg-final { scan-assembler {\mxxland\M} } } */ ++/* { dg-final { scan-assembler-not {\mmfvsr} } } */ ++/* { dg-final { scan-assembler-not {\mand\M} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr120528.c +@@ -0,0 +1,91 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target int128 } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-require-effective-target power10_ok } */ ++/* { dg-options "-mdejagnu-cpu=power10 -O2" } */ ++ ++#include ++ ++#ifndef TYPE ++#define TYPE unsigned long long ++#endif ++ ++void ++mem_to_vsx (TYPE *p, __uint128_t *q) ++{ ++ /* lxvrdx 0,0,3 ++ stxv 0,0(4) */ ++ ++ __uint128_t x = *p; ++ __asm__ (" # %x0" : "+wa" (x)); ++ *q = x; ++} ++ ++void ++memx_to_vsx (TYPE *p, size_t n, __uint128_t *q) ++{ ++ /* sldi 4,4,3 ++ lxvrdx 0,3,4 ++ stxv 0,0(4) */ ++ ++ __uint128_t x = p[n]; ++ __asm__ (" # %x0" : "+wa" (x)); ++ *q = x; ++} ++ ++void ++mem3_to_vsx (TYPE *p, __uint128_t *q) ++{ ++ /* addi 2,3,24 ++ lxvrdx 0,0,2 ++ stxv 0,0(4) */ ++ ++ __uint128_t x = p[3]; ++ __asm__ (" # %x0" : "+wa" (x)); ++ *q = x; ++} ++ ++void ++mem_to_gpr (TYPE *p, __uint128_t *q) ++{ ++ /* ld 2,0(3) ++ li 3,0 ++ std 2,0(4) ++ std 3,8(8) */ ++ ++ __uint128_t x = *p; ++ __asm__ (" # %0" : "+r" (x)); ++ *q = x; ++} ++ ++void ++memx_to_gpr (TYPE *p, size_t n, __uint128_t *q) ++{ ++ /* sldi 4,4,3 ++ ldx 2,3,4 ++ li 3,0 ++ std 2,0(4) ++ std 3,8(8) */ ++ ++ __uint128_t x = p[n]; ++ __asm__ (" # %0" : "+r" (x)); ++ *q = x; ++} ++ ++void ++mem3_to_gpr (TYPE *p, __uint128_t *q) ++{ ++ /* ld 2,24(3) ++ li 3,0 ++ std 2,0(4) ++ std 3,8(8) */ ++ ++ __uint128_t x = p[3]; ++ __asm__ (" # %0" : "+r" (x)); ++ *q = x; ++} ++ ++/* { dg-final { scan-assembler-times {\maddi\M} 1 } } */ ++/* { dg-final { scan-assembler-times {\mli\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mlxvrdx\M} 3 } } */ ++/* { dg-final { scan-assembler-times {\mstxv\M} 3 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr120681.c +@@ -0,0 +1,34 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_elfv2 } */ ++/* { dg-require-effective-target powerpc_pcrel } */ ++/* { dg-options "-mdejagnu-cpu=power10 -O2 -mcmodel=large" } */ ++ ++/* PR target/120681 -- verify that -mcpu=power10 -mcmodel=large uses PC ++ relative addressing instead of using TOC addressing. */ ++ ++#ifndef TYPE ++#define TYPE unsigned long ++#endif ++ ++extern TYPE global_var; ++ ++void ++set_global (TYPE value) ++{ ++ /* ++ * Generate: ++ * pld 9,global_var@got@pcrel ++ * std 3,0(9) ++ * ++ * Not: ++ * addis 9,2,.LC0@toc@ha ++ * ld 9,.LC0@toc@l(9) ++ * std 3,0(9) ++ */ ++ ++ global_var = value; ++} ++ ++/* { dg-final { scan-assembler {@got@pcrel} } } */ ++/* { dg-final { scan-assembler-not {@toc@ha} } } */ ++/* { dg-final { scan-assembler-not {@toc@l} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr126513-acmp-tst-1.c +@@ -0,0 +1,25 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++ ++// Need power8 for larx ++/* { dg-options "-O2 -mdejagnu-cpu=power8" } */ ++ ++__int128 word_exchange_uti_ptr; ++int word_exchange_uti_expected; ++unsigned word_exchange_uti_desired() { ++ __builtin_ppc_atomic_cas_local( /* { dg-error "argument 2 to '__builtin_ppc_atomic_cas_local' must be a pointer" } */ ++ &word_exchange_uti_ptr, word_exchange_uti_expected, ++ word_exchange_uti_desired, 0, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++unsigned word_exchange_uti_desired_fptr() { ++ __builtin_ppc_atomic_cas_local( /* { dg-error "argument 1 to '__builtin_ppc_atomic_cas_local' must not be a pointer to a function" } */ ++ &word_exchange_uti_desired_fptr, &word_exchange_uti_desired, ++ &word_exchange_uti_desired_fptr, 0, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++unsigned word_exchange_uti_desired_mismatch() { ++ __builtin_ppc_atomic_cas_local( /* { dg-error "size mismatch in argument 2" } */ ++ &word_exchange_uti_ptr, &word_exchange_uti_expected, ++ &word_exchange_uti_ptr, 0, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr126513-acmp-tst-2.c +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++ ++// Need power8 for larx ++/* { dg-options "-O2 -mdejagnu-cpu=power8 -mno-quad-memory-atomic" } */ ++ ++__int128 word_exchange_uti_ptr; ++__int128 word_exchange_uti_ptr_expected; ++__int128 word_exchange_uti_ptr_desired; ++ ++unsigned word_exchange_uti_desired() { ++ __builtin_ppc_atomic_cas_local( /* { dg-error "'__builtin_ppc_atomic_cas_local' requires the '-mquad-memory-atomic' option for 16-byte operands" } */ ++ &word_exchange_uti_ptr, &word_exchange_uti_ptr_expected, ++ &word_exchange_uti_ptr_desired, 0, __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr126513-acmp-tst-3.c +@@ -0,0 +1,176 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++ ++// Need power8 for larx ++/* { dg-options "-O2 -mdejagnu-cpu=power8" } */ ++ ++typedef struct udt_1 ++{ ++ char *a; ++} udt_1t; ++typedef struct udt_2 ++{ ++ char a; ++ char b; ++} udt_2t; ++typedef struct udt_4 ++{ ++ short a; ++ short b; ++} udt_4t; ++typedef struct udt_8 ++{ ++ int a; ++ int b; ++} udt_8t; ++typedef struct udt_16 ++{ ++ long long a; ++ long long b; ++} udt_16t; ++void ++word_exchange_nqi (char *ptr, char *expected, char *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_qi (signed char *ptr, signed char *expected, signed char *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_uqi (unsigned char *ptr, unsigned char *expected, ++ unsigned char *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_hi (short *ptr, short *expected, short *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_shi (signed short *ptr, signed short *expected, ++ signed short *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_uhi (unsigned short *ptr, unsigned short *expected, ++ unsigned short *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_si (int *ptr, int *expected, int *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_ssi (signed int *ptr, signed int *expected, signed int *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_usi (unsigned int *ptr, unsigned int *expected, ++ unsigned int *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_di (long long *ptr, long long *expected, long long *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_sdi (signed long long *ptr, signed long long *expected, ++ signed long long *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udi (unsigned long long *ptr, unsigned long long *expected, ++ unsigned long long *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_sti (signed __int128 *ptr, signed __int128 *expected, ++ signed __int128 *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_uti (unsigned __int128 *ptr, unsigned __int128 *expected, ++ unsigned __int128 *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_f32 (float *ptr, float *expected, float *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_f64 (double *ptr, double *expected, double *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_f128 (__ieee128 *ptr, __ieee128 *expected, __ieee128 *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udt_1 (udt_1t *ptr, udt_1t *expected, udt_1t *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udt_2 (udt_2t *ptr, udt_2t *expected, udt_2t *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udt_4 (udt_4t *ptr, udt_4t *expected, udt_4t *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udt_8 (udt_8t *ptr, udt_8t *expected, udt_8t *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++void ++word_exchange_udt_16 (udt_16t *ptr, udt_16t *expected, udt_16t *desired) ++{ ++ __builtin_ppc_atomic_cas_local (ptr, expected, desired, 0, ++ __ATOMIC_SEQ_CST, __ATOMIC_ACQUIRE); ++} ++ ++/* { dg-final { scan-assembler-times {\mlbarx +[0-9]+,[0-9]+,[0-9]+,1} 3 } } */ ++/* { dg-final { scan-assembler-times {\mlharx +[0-9]+,[0-9]+,[0-9]+,1} 4 } } */ ++/* { dg-final { scan-assembler-times {\mlwarx +[0-9]+,[0-9]+,[0-9]+,1} 5 } } */ ++/* { dg-final { scan-assembler-times {\mldarx +[0-9]+,[0-9]+,[0-9]+,1} 6 } } */ ++/* { dg-final { scan-assembler-times {\mlqarx +[0-9]+,[0-9]+,[0-9]+,1} 4 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr99293.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile { target powerpc*-*-* } } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++/* { dg-options "-O2 -mvsx" } */ ++ ++/* Test for PR 99263, which wants to do: ++ __builtin_vec_splats (__builtin_vec_extract (v, n)) ++ ++ where v is a V2DF or V2DI vector and n is either 0 or 1. Previously the ++ compiler would do a direct move to the GPR registers to select the item and a ++ direct move from the GPR registers to do the splat. */ ++ ++vector long long splat_dup_l_0 (vector long long v) ++{ ++ return __builtin_vec_splats (__builtin_vec_extract (v, 0)); ++} ++ ++vector long long splat_dup_l_1 (vector long long v) ++{ ++ return __builtin_vec_splats (__builtin_vec_extract (v, 1)); ++} ++ ++/* { dg-final { scan-assembler-times "xxpermdi" 2 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126196-1.c +@@ -0,0 +1,29 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gcv_zvksh -mabi=lp64d -O2" { target { rv64 } } } */ ++/* { dg-options "-march=rv32gcv_zvksh -mabi=ilp32d -O2" { target { rv32 } } } */ ++/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" } } */ ++ ++#include ++ ++vuint32m1_t ++f (vuint32m1_t vs2, vuint32m1_t vs1, size_t vl) ++{ ++ return __riscv_vsm3me_vv_u32m1 (vs2, ++ __riscv_vsm3me_vv_u32m1 (vs2, vs1, vl), ++ vl); ++} ++ ++vuint32m1_t ++g (vuint32m1_t a, vuint32m1_t b, vuint32m1_t c, vuint32m1_t d, ++ vuint32m1_t e, vuint32m1_t h, vuint32m1_t i, vuint32m1_t j, ++ size_t vl) ++{ ++ vuint32m1_t r1 = __riscv_vsm3me_vv_u32m1 (a, b, vl); ++ vuint32m1_t r2 = __riscv_vsm3me_vv_u32m1 (c, d, vl); ++ vuint32m1_t r3 = __riscv_vsm3me_vv_u32m1 (e, h, vl); ++ vuint32m1_t r4 = __riscv_vsm3me_vv_u32m1 (i, j, vl); ++ return __riscv_vxor_vv_u32m1 (__riscv_vxor_vv_u32m1 (r1, r2, vl), ++ __riscv_vxor_vv_u32m1 (r3, r4, vl), vl); ++} ++ ++/* { dg-final { scan-assembler-not {vsm3me\.vv\tv([0-9]+),v\1,} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126196-2.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gcv_zvkned_zvksh -mabi=lp64d -O2" { target { rv64 } } } */ ++/* { dg-options "-march=rv32gcv_zvkned_zvksh -mabi=ilp32d -O2" { target { rv32 } } } */ ++/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" } } */ ++ ++#include ++ ++vuint32m1_t ++f (vuint32m1_t a, size_t vl) ++{ ++ return __riscv_vsm3c_vi_u32m1 (a, a, 2, vl); ++} ++ ++vuint32m1_t ++g (vuint32m1_t a, size_t vl) ++{ ++ return __riscv_vaeskf2_vi_u32m1 (a, a, 3, vl); ++} ++ ++/* { dg-final { scan-assembler-not {vsm3c\.vi\tv([0-9]+),v\1,} } } */ ++/* { dg-final { scan-assembler {vaeskf2\.vi\tv([0-9]+),v\1,} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126196-3.c +@@ -0,0 +1,26 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gcv_zvknhb_zvkg -mabi=lp64d -O2" { target { rv64 } } } */ ++/* { dg-options "-march=rv32gcv_zvknhb_zvkg -mabi=ilp32d -O2" { target { rv32 } } } */ ++/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" } } */ ++ ++#include ++ ++vuint32m1_t ++f (vuint32m1_t a, vuint32m1_t b, size_t vl) ++{ ++ vuint32m1_t r = __riscv_vsha2ms_vv_u32m1 (a, a, b, vl); ++ r = __riscv_vsha2ms_vv_u32m1 (r, b, r, vl); ++ r = __riscv_vsha2ch_vv_u32m1 (r, r, b, vl); ++ r = __riscv_vsha2ch_vv_u32m1 (r, b, r, vl); ++ r = __riscv_vsha2cl_vv_u32m1 (r, r, b, vl); ++ r = __riscv_vsha2cl_vv_u32m1 (r, b, r, vl); ++ return __riscv_vghsh_vv_u32m1 (r, r, b, vl); ++} ++ ++/* { dg-final { scan-assembler-not {vsha2ms\.vv\tv([0-9]+),v\1,} } } */ ++/* { dg-final { scan-assembler-not {vsha2ms\.vv\tv([0-9]+),v[0-9]+,v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vsha2ch\.vv\tv([0-9]+),v\1,} } } */ ++/* { dg-final { scan-assembler-not {vsha2ch\.vv\tv([0-9]+),v[0-9]+,v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vsha2cl\.vv\tv([0-9]+),v\1,} } } */ ++/* { dg-final { scan-assembler-not {vsha2cl\.vv\tv([0-9]+),v[0-9]+,v\1\s} } } */ ++/* { dg-final { scan-assembler {vghsh\.vv\tv([0-9]+),v\1,} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126196-4.c +@@ -0,0 +1,41 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gcv_zvkg_zvkned_zvksed -mabi=lp64d -O2" { target { rv64 } } } */ ++/* { dg-options "-march=rv32gcv_zvkg_zvkned_zvksed -mabi=ilp32d -O2" { target { rv32 } } } */ ++/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Os" "-Oz" "-Og" } } */ ++ ++#include ++ ++vuint32m1_t ++f (vuint32m1_t a, size_t vl) ++{ ++ vuint32m1_t r = __riscv_vaesdf_vs_u32m1_u32m1 (a, a, vl); ++ r = __riscv_vaesdm_vs_u32m1_u32m1 (r, r, vl); ++ r = __riscv_vaesef_vs_u32m1_u32m1 (r, r, vl); ++ r = __riscv_vaesem_vs_u32m1_u32m1 (r, r, vl); ++ r = __riscv_vaesz_vs_u32m1_u32m1 (r, r, vl); ++ return __riscv_vsm4r_vs_u32m1_u32m1 (r, r, vl); ++} ++ ++vuint32m1_t ++g (vuint32m1_t a, size_t vl) ++{ ++ vuint32m1_t r = __riscv_vaesdf_vv_u32m1 (a, a, vl); ++ r = __riscv_vaesdm_vv_u32m1 (r, r, vl); ++ r = __riscv_vaesef_vv_u32m1 (r, r, vl); ++ r = __riscv_vaesem_vv_u32m1 (r, r, vl); ++ r = __riscv_vsm4r_vv_u32m1 (r, r, vl); ++ return __riscv_vgmul_vv_u32m1 (r, r, vl); ++} ++ ++/* { dg-final { scan-assembler-not {vaesdf\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vaesdm\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vaesef\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vaesem\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vaesz\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler-not {vsm4r\.vs\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vaesdf\.vv\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vaesdm\.vv\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vaesef\.vv\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vaesem\.vv\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vsm4r\.vv\tv([0-9]+),v\1\s} } } */ ++/* { dg-final { scan-assembler {vgmul\.vv\tv([0-9]+),v\1\s} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126426.c +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "--std=gnu99 -march=rv64gcb" { target rv64 } } */ ++/* { dg-additional-options "--std=gnu99 -march=rv32gcb" { target rv32 } } */ ++ ++typedef union { ++ short mv[2]; ++ unsigned mv32; ++} MotionVector; ++enum { kProjectionMvClamp, kMaxFrameDistance }; ++short kProjectionMvDivisionLookup[] = {0, 6}; ++int SpecGetMvProjectionKernel(int mv, int numerator, int denominator) { ++ int value = mv * numerator * kProjectionMvDivisionLookup[denominator]; ++ if (value >= 0) ++ value += 3; ++ value >>= 4; ++ if (value > 4) ++ value = 1; ++ return value; ++} ++void SpecGetMvProjectionNoClamp(MotionVector mv, int numerator, int denominator, ++ MotionVector *projection_mv) { ++ for (int i = 0; i < 2; ++i) ++ projection_mv->mv[i] = ++ SpecGetMvProjectionKernel(mv.mv[i], numerator, denominator); ++} ++int main() { ++ short mvs[5][2] = {{0}}; ++ for (int j = 0; j < 5; ++j) { ++ short *mv_value = mvs[j]; ++ for (int numerator = -kMaxFrameDistance; numerator; ++numerator) ++ for (int denominator = 0; denominator <= kMaxFrameDistance; ++ ++denominator) { ++ MotionVector mv, spec_projection_mv; ++ mv.mv[0] = mv.mv[1] = mv_value[1]; ++ SpecGetMvProjectionNoClamp(mv, numerator, denominator, ++ &spec_projection_mv); ++ if (spec_projection_mv.mv32) { ++ __builtin_abort (); ++ } ++ } ++ } ++ __builtin_exit (0); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/pr126873.c +@@ -0,0 +1,37 @@ ++/* { dg-do run { target rv64 } } */ ++/* { dg-require-effective-target riscv_v } */ ++/* { dg-require-effective-target rvv_zvl128b_ok } */ ++/* { dg-options "-march=rv64gcv -mabi=lp64d -O1" } */ ++ ++typedef unsigned short u16 __attribute__ ((vector_size (4))); ++ ++unsigned long long g; ++ ++void __attribute__ ((noinline)) ++f1 (unsigned long long a3) ++{ ++ unsigned long long v15 ++ = __builtin_bswap64 ((long long) 10398105857157080808ull ++ / (long long) a3); ++ u16 bc13 = (u16) { 29637 }; ++ if (0 >= bc13[(unsigned int) v15]) ++ __builtin_abort (); ++} ++ ++u16 __attribute__ ((noinline)) ++f2 (u16 in) ++{ ++ in[(unsigned int) g] = 123; ++ return in; ++} ++ ++int ++main (void) ++{ ++ f1 (17752357569705450221ull); ++ g = 0x0b00000000000000ull; ++ u16 r = f2 ((u16) { 1, 2 }); ++ if (r[0] != 123 || r[1] != 2) ++ __builtin_abort (); ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-1.c +@@ -37,4 +37,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-10.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-11.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-11.c +@@ -31,4 +31,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-12.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-12.c +@@ -109,4 +109,4 @@ TEST_LOOP (double, uint64_t) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not "vluxei64\.v" } } */ +-/* { dg-final { scan-assembler-not "vsuxei64\.v" } } */ ++/* { dg-final { scan-assembler-not "vsoxei64\.v" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-2.c +@@ -37,4 +37,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-3.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-3.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-4.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-5.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-6.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-7.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-8.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-9.c +@@ -34,4 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-1.c +@@ -38,4 +38,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-10.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-11.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-11.c +@@ -112,5 +112,5 @@ TEST_LOOP (double, uint64_t) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not "vluxei64\.v" } } */ +-/* { dg-final { scan-assembler-not "vsuxei64\.v" } } */ ++/* { dg-final { scan-assembler-not "vsoxei64\.v" } } */ + /* { dg-final { scan-assembler-not {vlse64\.v\s+v[0-9]+,\s*0\([a-x0-9]+\),\s*zero} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-2.c +@@ -38,4 +38,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-3.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-3.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-4.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-5.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-6.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-7.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-8.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-9.c +@@ -35,4 +35,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-1.c +@@ -38,4 +38,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-10.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-2.c +@@ -38,4 +38,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-3.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-3.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-4.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-5.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-6.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-7.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-8.c +@@ -35,4 +35,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-9.c +@@ -40,4 +40,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-1.c +@@ -37,3 +37,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-10.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-2.c +@@ -37,3 +37,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-3.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-3.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-4.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-5.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-6.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-7.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-8.c +@@ -34,3 +34,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-9.c +@@ -39,3 +39,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-1.c +@@ -37,4 +37,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-10.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-2.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-4.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-5.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-6.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-7.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-8.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-9.c +@@ -34,4 +34,5 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +-/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsoxei64\.v} } } */ ++/* { dg-final { scan-assembler-not {vsuxei32\.v} } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-1.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-1.c +@@ -36,3 +36,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-10.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-10.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-2.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-2.c +@@ -36,3 +36,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-3.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-3.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-4.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-4.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-5.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-5.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-6.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-6.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-7.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-7.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-8.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-8.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-9.c ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-9.c +@@ -33,3 +33,4 @@ TEST_ALL (TEST_LOOP) + /* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ + /* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */ ++/* { dg-final { scan-assembler-not "vsuxei" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125215.c +@@ -0,0 +1,24 @@ ++/* { dg-do run { target { riscv_v } } } */ ++/* { dg-options "-O3 -march=rv64gcv -mabi=lp64d -fno-vect-cost-model" } */ ++ ++#include ++ ++__attribute__((noipa)) ++void foo(uint8_t *d) ++{ ++ d[0] = 128; d[1] = 135; d[2] = 130; d[3] = 149; ++ d[4] = 132; d[5] = 163; d[6] = 134; d[7] = 177; ++ d[8] = 136; d[9] = 191; d[10] = 138; d[11] = 205; ++ d[12] = 140; d[13] = 219; d[14] = 142; d[15] = 233; ++} ++ ++int main() ++{ ++ uint8_t d[16]; ++ uint8_t e[] = {128, 135, 130, 149, 132, 163, 134, 177, 136, 191, 138, 205, 140, 219, 142, 233}; ++ foo(d); ++ for (int i = 0; i < 16; i++) ++ if (d[i] != e[i]) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125478.c +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -mrvv-vector-bits=zvl -fdump-rtl-avlprop-details" } */ ++ ++long long a; ++long b; ++char c[169]; ++int d; ++ ++int main() { ++ for (long g=0; g<13; ++g) ++ for (long h=0; h<13; ++h) ++ c[g*13 +h] = 8; ++ ++ for (unsigned g=0; g<13; g++) ++ for (int h=0; h<13; h +=3) ++ b += (c[g*13+h]) >> c[g*13 +9]; ++ ++ a = (int)b; ++ if (a != 0) ++ __builtin_abort (); ++} ++ ++/* { dg-final { scan-rtl-dump-not "Propagating AVL: \\(const_int 1 \\\[0x1\\\]\\)" "avlprop" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125670.c +@@ -0,0 +1,51 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mcpu=spacemit-x60 -mabi=lp64d -w -std=gnu89" } */ ++ ++unsigned int ++f1 (int diff) ++{ ++ return ((unsigned int) (diff < 0 ? -diff : diff)); ++} ++ ++unsigned int ++f2 (unsigned int diff) ++{ ++ return ((unsigned int) ((signed int) diff < 0 ? -diff : diff)); ++} ++ ++unsigned long long ++f3 (long long diff) ++{ ++ return ((unsigned long long) (diff < 0 ? -diff : diff)); ++} ++ ++unsigned long long ++f4 (unsigned long long diff) ++{ ++ return ((unsigned long long) ((signed long long) diff < 0 ? -diff : diff)); ++} ++ ++main () ++{ ++ int i; ++ for (i = 0; i <= 10; i++) ++ { ++ if (f1 (i) != i) ++ abort (); ++ if (f1 (-i) != i) ++ abort (); ++ if (f2 (i) != i) ++ abort (); ++ if (f2 (-i) != i) ++ abort (); ++ if (f3 ((long long) i) != i) ++ abort (); ++ if (f3 ((long long) -i) != i) ++ abort (); ++ if (f4 ((long long) i) != i) ++ abort (); ++ if (f4 ((long long) -i) != i) ++ abort (); ++ } ++ exit (0); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target riscv_v_ok } */ ++/* { dg-options "-march=rv64gcv -mabi=lp64d -O2 -ftree-vectorize" } */ ++ ++#define NAN (__builtin_nan("")) ++ ++__attribute__ ((noipa)) float ++maxx (float *arr, unsigned int sz) ++{ ++ float val = NAN; ++ unsigned int i; ++ ++ for (i = 0; i < sz; i++) ++ val = __builtin_fmaxf (val, arr[i]); ++ ++ return val; ++} ++ ++int ++main () ++{ ++ float arr[] = { NAN, NAN, NAN, NAN }; ++ float res = maxx (arr, 4); ++ if (!__builtin_isnan (res)) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126550-2.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=rv64gcv_zvl256b -mabi=lp64d" } */ ++ ++#include ++typedef uint16_t v16 __attribute__((vector_size(32))); ++ ++v16 ++foo (v16 x) ++{ ++ return __builtin_shufflevector (x, x, 0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 6, ++ 7, 6, 7); ++} ++ ++/* { dg-final { scan-assembler-not "vmv.v.i\\sv\[0-9\]+,0" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126550.c +@@ -0,0 +1,41 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target rvv_zvl256b_ok } */ ++/* { dg-additional-options "-O3 -march=rv64gcv_zvl256b -mabi=lp64d -fno-vect-cost-model -std=gnu99" } */ ++ ++#include ++ ++struct Pair { uint16_t first, second; }; ++struct S { uint16_t a[2], b[2]; uint32_t r; }; ++ ++__attribute__((noipa)) ++void load(struct S *dst, const struct Pair *src, unsigned long n) ++{ ++ for (unsigned long k = 0; k < n; k++) { ++ dst[k].a[0] = src[k].first; ++ dst[k].a[1] = src[k].second; ++ dst[k].b[0] = src[k].first; ++ dst[k].b[1] = src[k].second; ++ } ++} ++ ++#define N 40 ++static struct Pair src[N]; ++static struct S out[N]; ++ ++int main(void) ++{ ++ for (unsigned i = 0; i < N; i++) { ++ src[i].first = (uint16_t)(i * 2u + 1); ++ src[i].second = (uint16_t)(i * 3u + 2); ++ } ++ load(out, src, N); ++ ++ for (unsigned i = 0; i < N; i++) { ++ uint16_t f = src[i].first, s = src[i].second; ++ if (out[i].a[0] != f || out[i].a[1] != s || ++ out[i].b[0] != f || out[i].b[1] != s) { ++ __builtin_abort (); ++ } ++ } ++ return 0; ++} +deleted file mode 100644 +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-interleave-1.c ++++ /dev/null +@@ -1,17 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gcv_zvl1024b -mabi=lp64d -fno-vect-cost-model -mrvv-max-lmul=m8 -O3 -fdump-tree-optimized-details" } */ +- +-struct S { int a, b; } s[8]; +- +-void +-foo () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = 0; +- s[i].a = i; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 0, 0, 1, 0, 2, 0, ... \}" 1 "optimized" } } */ +deleted file mode 100644 +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-interleave-2.c ++++ /dev/null +@@ -1,18 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gcv_zvl1024b -mabi=lp64d -fno-vect-cost-model -mrvv-max-lmul=m8 -O3 -fdump-tree-optimized-details" } */ +- +-struct S { int a, b; } s[8]; +- +-void +-foo () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = 1; +- s[i].a = i; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 0, 1, 1, 1, 2, 1, ... \}" 1 "optimized" } } */ +-/* { dg-final { scan-assembler-times {slli\t[a-x0-9]+,\s*[a-x0-9]+,\s*32} 1 } } */ +deleted file mode 100644 +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-interleave-3.c ++++ /dev/null +@@ -1,19 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gcv_zvl1024b -mabi=lp64d -fno-vect-cost-model -mrvv-max-lmul=m8 -O3 -fdump-tree-optimized-details" } */ +- +-struct S { int a, b; } s[8]; +- +-void +-foo () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = i*3 + 100; +- s[i].a = i + 200; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 200, 100, 201, 103, 202, 106, ... \}" 1 "optimized" } } */ +-/* { dg-final { scan-assembler-times {vsll\.vx} 1 } } */ +-/* { dg-final { scan-assembler-times {vor\.vv} 1 } } */ +deleted file mode 100644 +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-interleave-4.c ++++ /dev/null +@@ -1,19 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gc_zve32f_zvl1024b -mabi=lp64d -fno-vect-cost-model -mrvv-max-lmul=m8 -O3 -fdump-tree-optimized-details" } */ +- +-struct S { int a, b; } s[8]; +- +-void +-foo () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = i*3 + 100; +- s[i].a = i + 200; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 200, 100, 201, 103, 202, 106, ... \}" 1 "optimized" } } */ +-/* { dg-final { scan-assembler-times {vand\.vi} 1 } } */ +-/* { dg-final { scan-assembler-times {vmseq\.vi} 1 } } */ +deleted file mode 100644 +--- a/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/slp-interleave-5.c ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-options "-march=rv64gcv_zvl1024b -mabi=lp64d -O3 -fdump-tree-optimized-details" } */ +- +-struct S { int a, b; } s[8]; +- +-void +-foo () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = 1; +- s[i].a = i+1; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 1, 1, 2, 1, 3, 1, 4, 1 \}" 1 "optimized" } } */ +-/* { dg-final { scan-assembler {vid\.v} } } */ +-/* { dg-final { scan-assembler {vadd\.v} } } */ +-/* { dg-final { scan-assembler {vor\.v} } } */ +- +-void +-foo2 () +-{ +- int i; +- for (i = 0; i < 8; i++) +- { +- s[i].b = 0; +- s[i].a = i+1; +- } +-} +- +-/* { dg-final { scan-tree-dump-times "\{ 1, 0, 2, 0, 3, 0, 4, 0 \}" 1 "optimized" } } */ +-/* { dg-final { scan-assembler {vid\.v} } } */ +-/* { dg-final { scan-assembler {vadd\.v} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/autovec/ternop/pr126932.c +@@ -0,0 +1,55 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -march=rv64gcv -mabi=lp64d -ffp-contract=off" } */ ++/* { dg-require-effective-target rv64 } */ ++ ++typedef struct { float x, y, z, w; } vec4; ++ ++vec4 mul_add(vec4 a, vec4 b, vec4 c) ++{ ++ vec4 v; ++ v.x = a.x + b.x * c.x; ++ v.y = a.y + b.y * c.y; ++ v.z = a.z + b.z * c.z; ++ v.w = a.w + b.w * c.w; ++ return v; ++} ++ ++vec4 neg_mul_add(vec4 a, vec4 b, vec4 c) ++{ ++ vec4 v; ++ v.x = c.x - a.x * b.x; ++ v.y = c.y - a.y * b.y; ++ v.z = c.z - a.z * b.z; ++ v.w = c.w - a.w * b.w; ++ return v; ++} ++ ++vec4 mul_sub(vec4 a, vec4 b, vec4 c) ++{ ++ vec4 v; ++ v.x = a.x * b.x - c.x; ++ v.y = a.y * b.y - c.y; ++ v.z = a.z * b.z - c.z; ++ v.w = a.w * b.w - c.w; ++ return v; ++} ++ ++vec4 neg_mul_sub(vec4 a, vec4 b, vec4 c) ++{ ++ vec4 v; ++ v.x = -(a.x * b.x) - c.x; ++ v.y = -(a.y * b.y) - c.y; ++ v.z = -(a.z * b.z) - c.z; ++ v.w = -(a.w * b.w) - c.w; ++ return v; ++} ++ ++/* No FMA variants should be emitted with -ffp-contract=off. */ ++/* { dg-final { scan-assembler-not {\tvfmadd\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfmsub\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfnmadd\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfnmsub\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfmacc\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfmsac\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfnmacc\.vv} } } */ ++/* { dg-final { scan-assembler-not {\tvfnmsac\.vv} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/base/sibcall-scalable-frame-indirect.c +@@ -0,0 +1,28 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=rv64gcv -mabi=lp64d" } */ ++ ++#include ++ ++typedef int (*fn_t) (int); ++ ++int __attribute__ ((noinline)) ++victim (float *p, int n, fn_t fn) ++{ ++ register fn_t target asm ("t1") = fn; ++ ++ size_t vl = __riscv_vsetvl_e32m4 (n); ++ volatile vfloat32m4_t v0 = __riscv_vle32_v_f32m4 (p, vl); ++ volatile vfloat32m4_t v1 = __riscv_vle32_v_f32m4 (p + vl, vl); ++ vfloat32m4_t x0 = v0; ++ vfloat32m4_t x1 = v1; ++ ++ x0 = __riscv_vfadd_vv_f32m4 (x0, x1, vl); ++ __riscv_vse32_v_f32m4 (p, x0, vl); ++ asm volatile ("" : "+r" (target)); ++ ++ return target (n); ++} ++ ++/* { dg-final { scan-assembler {csrr\t[^,]+,vlenb} } } */ ++/* { dg-final { scan-assembler {\tjr\t(t[2-6]|a[0-7])\n} } } */ ++/* { dg-final { scan-assembler-not {\tjr\tt[01]\n} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/riscv/rvv/base/sibcall-scalable-frame-weak.c +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fPIC -march=rv64gcv -mabi=lp64d" } */ ++ ++#include ++ ++extern int wrap (int (*)(int), int) __attribute__ ((weak)); ++ ++static int __attribute__ ((noinline)) ++kernel (int x) ++{ ++ return x + 1; ++} ++ ++int __attribute__ ((noinline)) ++victim (float *p, int n) ++{ ++ size_t vl = __riscv_vsetvl_e32m4 (n); ++ volatile vfloat32m4_t v0 = __riscv_vle32_v_f32m4 (p, vl); ++ volatile vfloat32m4_t v1 = __riscv_vle32_v_f32m4 (p + vl, vl); ++ vfloat32m4_t x0 = v0; ++ vfloat32m4_t x1 = v1; ++ ++ x0 = __riscv_vfadd_vv_f32m4 (x0, x1, vl); ++ __riscv_vse32_v_f32m4 (p, x0, vl); ++ ++ return wrap (kernel, n); ++} ++ ++/* { dg-final { scan-assembler "wrap" } } */ ++/* { dg-final { scan-assembler {csrr\t[^,]+,vlenb} } } */ ++/* { dg-final { scan-assembler {\tjr\t(t[2-6]|a[0-7])\n} } } */ ++/* { dg-final { scan-assembler-not {\tjr\tt[01]\n} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/pr125972.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-march=z16 -O3" } */ ++ ++int a, b, c; ++long d, e; ++int *f; ++__int128 g; ++void h() { ++ g = 0; ++ for (; g <= 33; ++g) { ++ int *i = &c; ++ *i = d - a; ++ if (*i) { ++ c = 0; ++ for (; c <= 8; ++c) ++ f = &b; ++ } else ++ ++e; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/pr125992.c +@@ -0,0 +1,41 @@ ++/* PR target/125992 */ ++/* { dg-do run { target s390_useable_hw } } */ ++/* { dg-options "-O2 -march=z13" } */ ++ ++long a, b, c, d[4]; ++ ++[[gnu::noipa]] long ++foo () ++{ ++ return d[c++]; ++} ++ ++[[gnu::noipa]] void ++bar () ++{ ++ long e = 0; ++ for (;;) ++ { ++ e += a; ++ a = foo (); ++ if (b + a > e) ++ return; ++ if (a == 0) ++ break; ++ if (a > 0) ++ b += a; ++ } ++} ++ ++int ++main () ++{ ++ a = 16; ++ b = -64; ++ c = 0; ++ d[0] = 64; ++ d[1] = 128; ++ bar (); ++ if (b != 0) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/pr126054.c +@@ -0,0 +1,19 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-options "-O2" } */ ++ ++int a = 255, b; ++long c = 1, d; ++long *e = &d; ++int main() { ++ long f; ++ unsigned char g; ++ __int128 h = -10; ++ f = (long)h * (unsigned)(c | 56); ++ for (; b;) ++ ; ++ g = (unsigned char) f; ++ *e = 2540LL ^ g; ++ a = 16777215 ^ a ^ d & 255; ++ if ((a ^ (int) 4294967295) != 0xFF0000D5) ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/pr126667.c +@@ -0,0 +1,9 @@ ++/* PR target/126667 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=z14" } */ ++ ++unsigned long ++foo (unsigned long x, unsigned long y, unsigned long *p) ++{ ++ return __builtin_subcl (x, y, 1UL, p); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/sh/pr122948.c +@@ -0,0 +1,67 @@ ++/* Verify that the T bit (carry/borrow) set expression of the subc insn is ++ correct. */ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++extern void abort (void); ++ ++__attribute__ ((noipa)) unsigned int ++foo (unsigned int a, unsigned int b) ++{ ++ if (b - a - 1 <= b) ++ a = 0; ++ return a; ++} ++ ++__attribute__ ((noipa)) unsigned int ++bar (unsigned int a, unsigned int b) ++{ ++ return (b - a - 1) > b; ++} ++ ++__attribute__ ((noipa)) unsigned int ++baz (unsigned int a, unsigned int b) ++{ ++ return (a + b + 1) <= a; ++} ++ ++int ++main (void) ++{ ++ if (foo (0xffffffff, 0x4e92c833) != 0) ++ abort (); ++ ++ if (bar (0xffffffff, 0x4e92c833) != 0) ++ abort (); ++ ++ /* b - a - 1 wraps (borrow) whenever a + 1 > b (unsigned). */ ++ if (bar (5, 3) != 1) ++ abort (); ++ ++ if (bar (0, 0) != 1) ++ abort (); ++ ++ if (bar (0, 5) != 0) ++ abort (); ++ ++ /* addc carry-out: (a + b + 1) <= a. */ ++ /* 0xffffffff + 0 + 1 wraps to 0. */ ++ if (baz (0xffffffff, 0) != 1) ++ abort (); ++ ++ if (baz (0xffffffff, 0xffffffff) != 1) ++ abort (); ++ ++ /* wraps to 0. */ ++ if (baz (0xfffffffe, 1) != 1) ++ abort (); ++ ++ /* 1 <= 0 is false. */ ++ if (baz (0, 0) != 0) ++ abort (); ++ ++ if (baz (1, 2) != 0) ++ abort (); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90 +@@ -0,0 +1,39 @@ ++! { dg-do run } ++! ++! PR fortran/60576 ++! ++! Stack buffer overflow when passing an assumed-rank type(T) dummy argument ++! to an assumed-rank class(T) dummy argument. The caller only allocates ++! storage for dtype.rank dimensions in the descriptor; generating a full ++! GFC_MAX_DIMENSIONS copy caused a stack-buffer-overflow detected by ASan. ++ ++implicit none ++type t ++ integer :: i ++end type ++ ++type(T) :: at(2:3,2:4) ++integer :: i = 0 ++ ++call bar(at) ++if (i /= 2) STOP 1 ++ ++contains ++ subroutine bar(x) ++ type(t) :: x(..) ++ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 2 ++ if (size(x) /= 6) STOP 3 ++ if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 4 ++ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 5 ++ i = i + 1 ++ call foo(x) ++ end subroutine ++ subroutine foo(x) ++ class(t) :: x(..) ++ if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 6 ++ if (size(x) /= 6) STOP 7 ++ if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 8 ++ if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 9 ++ i = i + 1 ++ end subroutine ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/associate_79.f90 +@@ -0,0 +1,34 @@ ++! { dg-do run } ++! ++! Verify that an associate-name whose target is a call to an internal ++! procedure (CONTAINS in a program) gets the correct declared kind from ++! the function's return type, instead of falling back to default kind. ++! ++program demo ++ use, intrinsic :: iso_fortran_env, only: wp => real64 ++ implicit none ++ complex(wp) :: z ++ real(wp) :: re_ref, im_ref ++ ++ z = (1.0_wp, 2.0_wp) ++ re_ref = real (sin (z), wp) ++ im_ref = aimag (sin (z)) ++ ++ associate (k => myfunc (z)) ++ if (kind (k%re) /= kind (1.0_wp)) stop 1 ++ if (kind (k%im) /= kind (1.0_wp)) stop 2 ++ if (kind (aimag (k)) /= kind (1.0_wp)) stop 3 ++ if (abs (k%re - re_ref) > 1.0e-12_wp) stop 4 ++ if (abs (k%im - im_ref) > 1.0e-12_wp) stop 5 ++ if (abs (aimag (k) - im_ref) > 1.0e-12_wp) stop 6 ++ end associate ++ ++contains ++ ++ complex(wp) function myfunc (x) ++ complex(wp), intent(in) :: x ++ myfunc = sin (x) ++ end function myfunc ++ ++end program demo ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/block_18.f90 +@@ -0,0 +1,66 @@ ++! { dg-do compile } ++! ++! PR fortran/126127 - resolution of user-defined operators in named BLOCK ++ ++module geom2d ++ use, intrinsic :: iso_fortran_env, only: wp => real64 ++ implicit none ++ private ++ public :: vec2_t, operator(.dot.) ++ ++ type :: vec2_t ++ real(wp) :: x = 0, y = 0 ++ end type vec2_t ++ ++ interface operator(.dot.) ++ module procedure vec_dot ++ end interface operator(.dot.) ++contains ++ pure function vec_dot(a, b) result(r) ++ type(vec2_t), intent(in) :: a, b ++ real(wp) :: r ++ r = a%x*b%x + a%y*b%y ++ end function vec_dot ++end module ++ ++module consumer ++ use, intrinsic :: iso_fortran_env, only: r8 => real64 ++ use geom2d, only: vec2_t, operator(.dot.) ++ implicit none ++contains ++ subroutine f(id) ++ integer, intent(out) :: id ++ type(vec2_t) :: d ++ real(r8) :: dd ++ id = 0 ++ blk: block ++ dd = d .dot. d ++ end block blk ++ end subroutine f ++ ++ subroutine f2(id) ++ integer, intent(out) :: id ++ type(vec2_t) :: d ++ real(r8) :: dd ++ id = 0 ++ block ++ dd = d .dot. d ++ end block ++ end subroutine f2 ++ ++ subroutine f3(id) ++ integer, intent(out) :: id ++ type(vec2_t) :: d ++ real(r8) :: dd ++ block ++ blk1: block ++ id = 0 ++ block ++ blk2: block ++ dd = d .dot. d ++ end block blk2 ++ end block ++ end block blk1 ++ end block ++ end subroutine f3 ++end module +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/contiguous_17.f90 +@@ -0,0 +1,229 @@ ++! { dg-do run } ++! ++! PR fortran/125998 ++! Check the correct passing of a transposed array to an assumed-shape dummy ++! having the contiguous and target attributes. ++! ++! Original testcase from Federico Perini ++ ++subroutine original ++ real(8) :: a(3,4) ++ integer :: dims(2) ++ character(48) :: iomsg ++ call show(transpose(a),dims) ++ if (any(dims/=shape(transpose(a)))) then ++ write(iomsg,1) 'invalid a^T dims',dims, & ++ ' should be',shape(transpose(a)) ++ error stop iomsg ++ endif ++ 1 format(*(a,' [',i0,',',i0,']')) ++ ++contains ++ ++ subroutine show(x,dims) ++ ! "3 4" with `contiguous` (BUG); "4 3" without ++ real(8), intent(in), target, contiguous :: x(:,:) ++ integer, intent(out) :: dims(2) ++ dims = [size(x,1),size(x,2)] ++ end ++ ++end ++ ++module m ++ implicit none ++ private ++ public :: check_all ++ ++contains ++ ++ subroutine abort_different(lx,x,ly,y,code) ++ character(*), intent(in) :: lx, ly ++ integer, intent(in) :: x(..), y(..), code ++ write(6,'(a," /= ",a)') lx, ly ++ select rank(x) ++ rank(1) ++ write(6,3) lx ++ write(6,*) x ++ rank(2) ++ write(6,3) lx ++ write(6,*) x ++ rank default ++ end select ++ select rank(y) ++ rank(1) ++ write(6,3) ly ++ write(6,*) y ++ rank(2) ++ write(6,3) ly ++ write(6,*) y ++ rank default ++ end select ++ error stop code ++ 3 format(a,":") ++ end subroutine ++ ++ subroutine check_target(x,expected,num_error) ++ integer, intent(in), target, contiguous :: x(:,:) ++ integer, intent(in) :: num_error, expected(:,:) ++ if (any(shape(x) /= shape(expected))) then ++ call abort_different( & ++ "shape(x)",shape(x), & ++ "shape(expected)",shape(expected), & ++ num_error*10+1 & ++ ) ++ end if ++ if (any(x /= expected)) then ++ call abort_different("x",x,"expected",expected,num_error*10+2) ++ end if ++ if (x(2,2) /= expected(2,2)) then ++ call abort_different( & ++ "x(2,2)",x(2,2), & ++ "expected(2,2)",expected(2,2), & ++ num_error*10+3 & ++ ) ++ end if ++ end ++ ++ subroutine check_non_target(x,expected,num_error) ++ integer, intent(in), contiguous :: x(:,:) ++ integer, intent(in) :: num_error, expected(:,:) ++ if (any(shape(x) /= shape(expected))) then ++ call abort_different( & ++ "shape(x)",shape(x), & ++ "shape(expected)",shape(expected), & ++ num_error*10+1 & ++ ) ++ end if ++ if (any(x /= expected)) then ++ call abort_different("x",x,"expected",expected,num_error*10+2) ++ end if ++ if (x(2,2) /= expected(2,2)) then ++ call abort_different( & ++ "x(2,2)",x(2,2), & ++ "expected(2,2)",expected(2,2), & ++ num_error*10+3 & ++ ) ++ end if ++ end ++ ++ subroutine wrapper_target(x,expected,num_error) ++ integer, intent(in), target :: x(:,:) ++ integer, intent(in) :: expected(:,:) ++ integer, intent(in) :: num_error ++ call check_target(x,expected,num_error) ++ end subroutine ++ ++ subroutine wrapper_non_target(x,expected,num_error) ++ integer, intent(in) :: x(:,:), expected(:,:) ++ integer, intent(in) :: num_error ++ call check_non_target(x,expected,num_error) ++ end subroutine ++ ++ subroutine wrapper_transpose_target(x,expected,num_error) ++ integer, intent(in), target :: x(:,:) ++ integer, intent(in) :: expected(:,:) ++ integer, intent(in) :: num_error ++ call check_target(transpose(x),expected,num_error) ++ end subroutine ++ ++ subroutine wrapper_transpose_non_target(x,expected,num_error) ++ integer, intent(in) :: x(:,:), expected(:,:) ++ integer, intent(in) :: num_error ++ call check_non_target(transpose(x),expected,num_error) ++ end subroutine ++ ++ subroutine check_all ++ integer :: a(3,4) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call check_target( & ++ transpose(a), & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 1 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call check_non_target( & ++ transpose(a), & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 2 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_target( & ++ transpose(a), & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 3 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_non_target( & ++ transpose(a), & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 4 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_transpose_target( & ++ a, & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 5 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_transpose_non_target( & ++ a, & ++ reshape([0,2,8,34,1,3,13,55,1,5,21,89],[4,3]), & ++ 6 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_transpose_target( & ++ transpose(a), & ++ reshape([0,1,1,2,3,5,8,13,21,34,55,89],[3,4]), & ++ 7 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_transpose_non_target( & ++ transpose(a), & ++ reshape([0,1,1,2,3,5,8,13,21,34,55,89],[3,4]), & ++ 8 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call check_target( & ++ a(::2,::2), & ++ reshape([0,1,8,21],[2,2]), & ++ 9 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call check_non_target( & ++ a(::2,::2), & ++ reshape([0,1,8,21],[2,2]), & ++ 10 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_target( & ++ a(::2,::2), & ++ reshape([0,1,8,21],[2,2]), & ++ 11 & ++ ) ++ ++ a = reshape([0,1,1,2,3,5,8,13,21,34,55,89],shape(a)) ++ call wrapper_non_target( & ++ a(::2,::2), & ++ reshape([0,1,8,21],[2,2]), & ++ 12 & ++ ) ++ ++ end subroutine ++ ++end module ++ ++use m ++call original ++call check_all ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/inline_matmul_28.f90 +@@ -0,0 +1,21 @@ ++! { dg-do run } ++! { dg-options "-ffrontend-optimize" } ++! PR 126386 - size calculation for allocation of the lhs for matmmul ++! was wrong. Original test case by Christoph Hofer. ++ ++PROGRAM reallocation_bug ++ REAL(8), DIMENSION(:), ALLOCATABLE :: y ++ REAL(8), DIMENSION(3,2) :: A ++ real(8), dimension(3) :: x ++ ++ A(:,1) = [1,-2,3] ++ A(:,2) = [-4,5,6] ++ ++ x = [7,-8,9] ++ ++ ALLOCATE(y(3)) ++ y = matmul(transpose(2*a),x) ++ if (size(y,1) /= 2) stop 1 ++ if (any(y /= [100, -28])) stop 2 ++ ++END PROGRAM reallocation_bug +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/loc_3.f90 +@@ -0,0 +1,36 @@ ++! { dg-do compile } ++! { dg-additional-options "-O1" } ++! ++! PR fortran/125606 ++! ++! Derived from Fujitsu testsuite ++! Reported by David Binderman ++ ++module m ++ implicit none ++ type ty ++ class(*), allocatable :: c1(:) ++ end type ty ++ type tt ++ class(*), allocatable :: node1(:) ++ end type tt ++ type,extends(tt)::tte ++ class(*), allocatable :: c2e(:) ++ end type tte ++contains ++ subroutine put_addr ++ class(*), allocatable :: t(:) ++ integer :: unit ++ select type (t) ++ class is (tt) ++ select type (p=>t(2)%node1) ++ class is (ty) ++ write (unit) loc(p(2)%c1) ++ end select ++ select type (t) ++ type is (tte) ++ write (7) loc(t(2)%c2e) ++ end select ++ end select ++ end subroutine put_addr ++end module m +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr103367.f90 +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! ++! PR fortran/103367 ++! Invalid initialization expressions must not ICE if they survive ++! semantic checking and reach array initializer lowering. ++ ++program p ++ type t ++ integer :: a(1,2) = 3 ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer :: y(1,2) = (x(b)%a) ! { dg-error "does not reduce to a constant expression" } ++ print *, y ++end ++! { dg-prune-output "Legacy Extension: REAL array index" } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr103367_2.f90 +@@ -0,0 +1,37 @@ ++! { dg-do compile } ++subroutine s1 ++ type t ++ integer :: a(1,2) = 3 ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer, parameter :: y(1,2) = (x(1)%a(m,1)) ! { dg-error "does not reduce to a constant expression" } ++ print *, y ++end ++ ++subroutine s2 ++ type t ++ integer :: a(2) = 3! ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer, parameter :: y = x(1)%a(m) ! { dg-error "non-constant initialization expression" } ++ print *, y ++end ++ ++subroutine s3 ++ type t ++ integer :: a(1,2) = 3 ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer, parameter :: y(1,2) = (x(b)%a) ! { dg-error "does not reduce to a constant expression" } ++ print *, y ++end ++ ++subroutine s4 ++ type t ++ integer :: a(1,2) = 3 ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer :: y(1,2) = x(b)%a ! { dg-error "does not reduce to a constant expression" } ++ print *, y ++end ++! { dg-prune-output "Legacy Extension: REAL array index" } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr103367_3.f90 +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! PR103367 Test case from the PR, previously segfaulted. ++program p ++ type t ++ integer :: a(1,2) = 3 ++ end type ++ type(t), parameter :: x(1) = t(4) ++ integer, parameter :: y(2) = x(1)%a(1,:) ++ if (any (y /= [4, 4])) stop 1 ++end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr103367_4.f90 +@@ -0,0 +1,14 @@ ++! { dg-do run } ++! PR103367, this test previously ++! Test case from the PR segfaulted at compile time. ++program p ++ type inner ++ integer :: n = 3 ++ end type ++ type outer ++ type(inner) :: a(2) = inner(1) ++ end type ++ type(outer), parameter :: x(1) = outer(inner(4)) ++ integer, parameter :: y(2) = x(1)%a%n ++ if (any (y /= [4, 4])) stop 1 ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr114021.f90 +@@ -0,0 +1,64 @@ ++! { dg-do run } ++! ++! Test the fix for PR114021 in which the ALLOCATE statement caused an ICE. ++! The test checks that f() is called once per allocation, that the result ++! of the allocation is correct and that a deep copy of w%x1 has been effected ++! in 's2' without freeing it. 's3' is a variant, which produced no fewer than ++! three calls to f() in the course of the assignment and the deep copy of ++! the allocatable component. ++! ++! Contributed by Steve Kargl ++! ++module m1 ++ type y ++ integer, allocatable:: x1(:) ++ end type ++ type(y), target :: w ++ integer :: c = 0 ++contains ++ function f() ++ type(y), pointer :: f ++ f => w ++ c = c + 1 ++ end function ++end ++ ++subroutine s1 ++ use m1 ++ type(y), allocatable :: x ++ allocate(x, source = f()) ++ if ((c /= 1) .or. (allocated (x%x1))) stop 1 ++end ++ ++subroutine s2 ++ use m1 ++ type(y), pointer :: x ++ allocate(x, source = f()) ++ if ((c /= 2) .or. (.not.allocated (x%x1))) stop 2 ++ if (any (abs (x%x1 - [3.0,4.0]) > 1e-6)) stop 3 ++ x%x1 = [5.0,6.0] ++ if (allocated (x%x1)) deallocate (x%x1) ++ if (associated (x)) deallocate (x) ++end ++ ++subroutine s3 ++ use m1 ++ implicit none ++ type(y), allocatable :: x ++ allocate (x) ++ x = f() ++ if (any (abs (x%x1 - [3.0,4.0]) > 1e-6)) stop 4 ++end ++ ++ use m1 ++ call s1 ++ w%x1 = [1.0,2.0] ++ if (c /= 1) stop 5 ++ w%x1 = [3.0,4.0] ++ call s2 ++ if (c /= 2) stop 6 ++ call s3 ++ if (c /= 3) stop 7 ++ if (.not.allocated (w%x1) .or. any (abs (w%x1 - [3.0,4.0]) > 1e-6)) stop 8 ++ if (allocated (w%x1)) deallocate (w%x1) ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr123952.f90 +@@ -0,0 +1,35 @@ ++! { dg-do compile } ++! ++! Test the fix for PR123952, which failed as below. ++! ++! Contributed by Damian.Rouson ++! ++module tensors_1D_m ++ abstract interface ++ function scalar_1D_initializer_i() result(f) ++ double precision, allocatable :: f(:) ++ end function ++ end interface ++ ++ type :: scalar_1D_t ++ integer gradient_operator_1D_ ++ end type ++ ++ interface scalar_1D_t ++ module function construct_1D_scalar_from_function(initializer) result(scalar_1D) ++ procedure(scalar_1D_initializer_i), pointer :: initializer ++ type(scalar_1D_t) scalar_1D ++ end function ++ end interface ++ ++end module tensors_1D_m ++ ++submodule(tensors_1D_m) scalar_1D_s ++contains ++ ++ module procedure construct_1D_scalar_from_function ! "MODULE PROCEDURE at (1) must be ++ ! in a generic module interface" ++ scalar_1D = scalar_1D_t (42) ! "Unexpected assignment statement..." ++ end procedure ! "Expecting END SUBMODULE statement at (1)" ++ ++end submodule scalar_1D_s +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr125263.f90 +@@ -0,0 +1,71 @@ ++! { dg-do run } ++! ++! Test the fix for pr125263, in which the selector expressions were not ++! correctly set after the first two ASSOCIATE constructs below. ++! ++! Conributed by Bastiaan Braams ++! ++program Main ++ implicit none (type, external) ++ type :: Foo_Type ++ integer, allocatable :: x(:) ++ end type Foo_Type ++ class (Foo_Type), allocatable :: fv(:), f, g ++ integer :: nx = 2, nf = 3, i ++ ++ ! Create fv(:) with all component vectors initialized to 0. ++ allocate (Foo_Type::fv(0:nf-1)) ++ do i = 0, nf-1 ++ allocate (fv(i)%x(0:nx-1)) ++ fv(i)%x(:) = 0 ++ end do ++ ++ ! Create f with f%x(:) equal to 1 and g with g%x(:) equal to 2. ++ allocate (Foo_Type::f, g) ++ allocate (f%x(0:nx-1),g%x(0:nx-1)) ++ f%x(:) = 1 ++ g%x(:) = 2 ++ ++ ! Use intrinsic assignment to copy f to fv(0). ++ associate (ft => fv(0)) ++ select type (ft => fv(0)) ++ type is (Foo_Type) ++ ft = f ++ ft%x = [2,3,4] ++ class default ++ error stop 'select type (ft): type error' ++ end select ++ end associate ++ ++ ! Verify the copy on the element x(0) and that f is not overwritten. ++ if (any (fv(0)%x /= [2,3,4])) stop 1 ++ if (any (f%x /= [1,1])) stop 2 ++ ++ ! All scalar selector-exprs have the same problem, not just array elements. ++ f%x(:) = 1 ++ associate (ft => g) ++ select type (ft) ++ type is (Foo_Type) ++ ft = f ++ ft%x = [4,5,6] ++ class default ++ error stop 'select type (ft): type error' ++ end select ++ end associate ++ ! Verify the copy on g and that f is not overwritten. ++ if (any (g%x /= [4,5,6])) stop 3 ++ if (any (f%x /= [1,1])) stop 4 ++ ++ ! Assignment to an element of an array associate name was OK. ++ fv(0)%x(:) = [0,0,0] ++ select type (ft => fv) ++ type is (Foo_Type) ++ ft = f ++ ft(0)%x = [2,3,4] ++ class default ++ error stop 'select type (ft): type error' ++ end select ++ if (any (fv(0)%x /= [2,3,4])) stop 5 ++ if (any (f%x /= [1,1])) stop 6 ++ ++end program Main +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr125866.f90 +@@ -0,0 +1,28 @@ ++! { dg-do compile } ++! ICE: a module procedure with an allocatable, intent(out) ++! derived-type array dummy. Reduced from the original in the PR ++ ++module m ++ interface ++ module subroutine s (a) ++ integer, allocatable, intent(out) :: a ++ end subroutine ++ end interface ++end module ++ ++submodule (m) sm1 ++contains ++ module subroutine s (a) ++ integer, allocatable, intent(out) :: a ++ allocate (a, source = 7) ++ end subroutine ++end submodule ++ ++submodule (m:sm1) sm2 ++contains ++ subroutine caller ++ integer, allocatable :: b ++ call s (b) ++ if (b /= 7) stop 1 ++ end subroutine ++end submodule +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr126116.f90 +@@ -0,0 +1,19 @@ ++! { dg-do run } ++ ++program check ++ implicit none ++ integer :: u ++ character(50) :: chr ++ ++ ! 1. Correctly generate a negative unit via NEWUNIT ++ open(file="test.txt", newunit=u) ! u gets -10 ++ close(u) ! u (-10) is now closed and free ++ ++ ! 2. Internal I/O corrupts the state of unit -10 ++ write(chr, *) "test" ++ ++ ! 3. Redundant CLOSE on the valid unit 'u'. ++ ! This should be a safe no-op according to the standard, ++ ! but it triggers the runtime error/segfault! ++ close(u) ++end program +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr126303.f +@@ -0,0 +1,9 @@ ++! PR fortran/126303 ++! { dg-do compile } ++! { dg-options "-std=legacy" } ++ COMMON FOO(8) ++ DO 10 M=1,8 ++ DO 10 T=0D0,1D0 ++ FOO(M)=1 ++ 10 CONTINUE ++ END +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/stop_function_code_1.f90 +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! PR fortran/126018 - Stop code may be a function call (CHARACTER or INTEGER) ++program p ++ implicit none ++ error stop character_stop () ! was: "must be either INTEGER or CHARACTER" ++ stop integer_stop () ! likewise for integer ++contains ++ character (1) function character_stop () ++ character_stop = "a" ++ end function character_stop ++ integer function integer_stop () ++ integer_stop = 1 ++ end function integer_stop ++end program p +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/array43.adb +@@ -0,0 +1,19 @@ ++-- { dg-do run } ++ ++procedure Array43 is ++ ++ type Arr is array (Integer range <>) of Integer; ++ ++ procedure Fill (B : out Arr; N : Integer) is ++ begin ++ B := (1 .. N => 7); ++ end Fill; ++ ++ V : Arr (5 .. 8) := (others => 0); ++ ++begin ++ Fill (V, V'Length); ++ if V /= (V'First .. V'Last => 7) then ++ raise Program_Error; ++ end if; ++end; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/opt109.adb +@@ -0,0 +1,13 @@ ++-- { dg-do run } ++-- { dg-options "-O" } ++ ++with Opt109_Pkg; use Opt109_Pkg; ++ ++procedure Opt109 is ++ S : constant String := "Hello World!"; ++ R : constant Rec := F (S); ++begin ++ if R.B.Data.all /= S then ++ raise Program_Error; ++ end if; ++end; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/opt109_pkg.adb +@@ -0,0 +1,16 @@ ++package body Opt109_Pkg is ++ ++ function F (Value : String) return Rec is ++ begin ++ if Value'Length > Max then ++ return Result : Rec (Is_Small => False) do ++ Result.B.Data := new String'(Value); ++ end return; ++ else ++ return Result : Rec (Is_Small => True) do ++ Result.S.Data (Value'Length + 1 .. Max) := (others => ' '); ++ end return; ++ end if; ++ end; ++ ++end Opt109_Pkg; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/opt109_pkg.ads +@@ -0,0 +1,33 @@ ++with System; ++ ++package Opt109_Pkg is ++ ++ Max : constant Natural := 7; ++ subtype Small_String_Size is Natural range 0 .. Max; ++ ++ type Small_String is record ++ Is_Small : Boolean; ++ Length : Small_String_Size; ++ Data : aliased String (1 .. Max); ++ end record; ++ ++ type Big_String_Access is access all String; ++ ++ type Big_String is record ++ Data : Big_String_Access := null; ++ end record; ++ ++ for Big_String use record ++ Data at 0 range 0 .. System.Word_Size - 1; ++ end record; ++ ++ type Rec (Is_Small : Boolean := True) is record ++ case Is_Small is ++ when True => S : Small_String; ++ when False => B : Big_String; ++ end case; ++ end record with Unchecked_Union; ++ ++ function F (Value : String) return Rec; ++ ++end Opt109_Pkg; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/opt110.adb +@@ -0,0 +1,106 @@ ++-- { dg-do run } ++-- { dg-options "-O" } ++ ++procedure Opt110 is ++ ++ type REAL is new Long_Float; ++ ++ R : REAL; ++ ++ N : constant := 3; ++ ++ C2, S2 : array ( 0..N) of REAL; ++ C, S : array (-N..0) of REAL; ++ ++ U, V : REAL; ++ ++ procedure ADD (C1, S1, C2L, S2L : REAL; ++ CO, SO : out REAL) is ++ begin ++ CO := C1*C2L - S1*S2L; ++ SO := S1*C2L + C1*S2L; ++ end ADD; ++ ++ procedure TERM (I1, I : Integer; ++ DLC, DLS : REAL) is ++ begin ++ ADD (C2(I1), S2(I1), C(I), S(I), U, V); ++ R := R + DLC*U + DLS*V; ++ end TERM; ++ ++ procedure PERT_1 is ++ COS_M : constant REAL := -0.810937203096633; ++ SIN_M : constant REAL := 0.585133192216790; ++ begin ++ C(-1) := COS_M; ++ S(-1) := -SIN_M; ++ ADD (C(-1), S(-1), C(-1), S(-1), C(-2), S(-2)); ++ TERM (1, -1, 0.00, 0.00); ++ TERM (2, -1, 0.25, -0.09); ++ end PERT_1; ++ ++ procedure PERT_2 is ++ COS_M : constant REAL := -0.977631621135276; ++ SIN_M : constant REAL := 0.210324542924530; ++ begin ++ C(-1) := COS_M; ++ S(-1) := -SIN_M; ++ for I in reverse -(N-1) .. -1 loop ++ ADD (C(I), S(I), C(-1), S(-1), C(I-1), S(I-1)); ++ end loop; ++ TERM (1, 0, 2.37, 2793.23); ++ end PERT_2; ++ ++ procedure PERT_3 is ++ COS_M : constant REAL := 0.682917440967473; ++ SIN_M : constant REAL := 0.730495563862258; ++ begin ++ C(-1) := COS_M; ++ S(-1) := -SIN_M; ++ for I in reverse -2 .. -1 loop ++ ADD (C(I), S(I), C(-1), S(-1), C(I-1), S(I-1)); ++ end loop; ++ TERM (1, -3, -0.65, 1.02); ++ TERM (2, -2, -0.05, 0.04); ++ TERM (2, -3, -0.50, 0.45); ++ end PERT_3; ++ ++ procedure PERT_4 is ++ COS_M : constant REAL := -0.238503621267387; ++ SIN_M : constant REAL := 0.971141607924582; ++ begin ++ C(-1) := COS_M; ++ S(-1) := -SIN_M; ++ for I in reverse -2 .. -1 loop ++ ADD (C(I), S(I), C(-1), S(-1), C(I-1), S(I-1)); ++ end loop; ++ TERM (0, -1, -0.05, 1.56); ++ TERM (1, -1, -2.62, 1.40); ++ TERM (1, -2, -0.47, -0.08); ++ TERM (2, -2, -0.73, -0.51); ++ TERM (2, -3, -0.14, -0.10); ++ TERM (3, -3, -0.01, 0.04); ++ end PERT_4; ++ ++ COS_M : constant REAL := 0.476541619435702; ++ SIN_M : constant REAL := 0.879151912325508; ++ ++begin ++ R := 0.0; ++ C(0) := 1.0; ++ S(0) := 0.0; ++ C2(0) := 1.0; ++ S2(0) := 0.0; ++ C2(1) := COS_M; ++ S2(1) := SIN_M; ++ for I in 2 .. N loop ++ ADD (C2(I-1), S2(I-1), C2(1), S2(1), C2(I), S2(I)); ++ end loop; ++ PERT_1; ++ PERT_2; ++ PERT_3; ++ PERT_4; ++ if Integer(R) /= 2452 then ++ raise Program_Error; ++ end if; ++end; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/unchecked_union5.adb +@@ -0,0 +1,23 @@ ++-- { dg-do compile } ++-- { dg-options "-gnateV" } ++ ++procedure Unchecked_Union5 is ++ ++ type R (Bytes_Mode : Boolean := False) is record ++ case Bytes_Mode is ++ when True => ++ A : Boolean; ++ when False => ++ B : Boolean; ++ end case; ++ end record with Unchecked_Union; ++ ++ type T is record ++ Data : R; ++ end record; ++ ++ function F (Message : T) return Integer is (0); ++ ++begin ++ null; ++end; +--- a/src/gcc/testsuite/gnat.dg/valid_scalars2.adb ++++ b/src/gcc/testsuite/gnat.dg/valid_scalars2.adb +@@ -1,5 +1,5 @@ + -- { dg-do run } +--- { dg-options "-O0 -gnata -gnateV" } ++-- { dg-options "-gnata -gnateV" } + + with Ada.Exceptions; use Ada.Exceptions; + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/valid_scalars3.adb +@@ -0,0 +1,96 @@ ++-- { dg-do compile } ++-- { dg-options "-gnata -gnateV" } ++ ++package body Valid_Scalars3 is ++ procedure Proc_Priv_CW_1 (Param : Tag_1'Class) is begin null; end; ++ procedure Proc_Priv_CW_2 (Param : Tag_2'Class) is begin null; end; ++ procedure Proc_Priv_CW_3 (Param : Tag_3'Class) is begin null; end; ++ procedure Proc_Priv_CW_4 (Param : Tag_4'Class) is begin null; end; ++ procedure Proc_Priv_CW_5 (Param : Tag_5'Class) is begin null; end; ++ procedure Proc_Priv_CW_6 (Param : Tag_6'Class) is begin null; end; ++ ++ procedure Proc_Priv_Rec_1 (Param : Rec_1) is begin null; end; ++ procedure Proc_Priv_Rec_2 (Param : Rec_2) is begin null; end; ++ procedure Proc_Priv_Rec_3 (Param : Rec_3) is begin null; end; ++ procedure Proc_Priv_Rec_4 (Param : Rec_4) is begin null; end; ++ ++ procedure Proc_Priv_Tag_1 (Param : Tag_1) is begin null; end; ++ procedure Proc_Priv_Tag_2 (Param : Tag_2) is begin null; end; ++ procedure Proc_Priv_Tag_3 (Param : Tag_3) is begin null; end; ++ procedure Proc_Priv_Tag_4 (Param : Tag_4) is begin null; end; ++ procedure Proc_Priv_Tag_5 (Param : Tag_5) is begin null; end; ++ procedure Proc_Priv_Tag_6 (Param : Tag_6) is begin null; end; ++ ++ procedure Proc_Vis_CW_1 (Param : Tag_1'Class) is begin null; end; ++ procedure Proc_Vis_CW_2 (Param : Tag_2'Class) is begin null; end; ++ procedure Proc_Vis_CW_3 (Param : Tag_3'Class) is begin null; end; ++ procedure Proc_Vis_CW_4 (Param : Tag_4'Class) is begin null; end; ++ procedure Proc_Vis_CW_5 (Param : Tag_5'Class) is begin null; end; ++ procedure Proc_Vis_CW_6 (Param : Tag_6'Class) is begin null; end; ++ ++ procedure Proc_Vis_Rec_1 (Param : Rec_1) is begin null; end; ++ procedure Proc_Vis_Rec_2 (Param : Rec_2) is begin null; end; ++ procedure Proc_Vis_Rec_3 (Param : Rec_3) is begin null; end; ++ procedure Proc_Vis_Rec_4 (Param : Rec_4) is begin null; end; ++ ++ procedure Proc_Vis_Tag_1 (Param : Tag_1) is begin null; end; ++ procedure Proc_Vis_Tag_2 (Param : Tag_2) is begin null; end; ++ procedure Proc_Vis_Tag_3 (Param : Tag_3) is begin null; end; ++ procedure Proc_Vis_Tag_4 (Param : Tag_4) is begin null; end; ++ procedure Proc_Vis_Tag_5 (Param : Tag_5) is begin null; end; ++ procedure Proc_Vis_Tag_6 (Param : Tag_6) is begin null; end; ++ ++ procedure Call_All is ++ pragma Warnings (Off); ++ Obj_Rec_1 : Rec_1; ++ Obj_Rec_2 : Rec_2; ++ Obj_Rec_3 : Rec_3 (3); ++ Obj_Rec_4 : Rec_4 (4); ++ Obj_Tag_1 : Tag_1; ++ Obj_Tag_2 : Tag_2; ++ Obj_Tag_3 : Tag_3 (3); ++ Obj_Tag_4 : Tag_4 (4); ++ Obj_Tag_5 : Tag_5; ++ Obj_Tag_6 : Tag_6 (6); ++ pragma Warnings (On); ++ ++ begin ++ Proc_Priv_CW_1 (Obj_Tag_1); ++ Proc_Priv_CW_2 (Obj_Tag_2); ++ Proc_Priv_CW_3 (Obj_Tag_3); ++ Proc_Priv_CW_4 (Obj_Tag_4); ++ Proc_Priv_CW_5 (Obj_Tag_5); ++ Proc_Priv_CW_6 (Obj_Tag_6); ++ ++ Proc_Priv_Rec_1 (Obj_Rec_1); ++ Proc_Priv_Rec_2 (Obj_Rec_2); ++ Proc_Priv_Rec_3 (Obj_Rec_3); ++ Proc_Priv_Rec_4 (Obj_Rec_4); ++ ++ Proc_Priv_Tag_1 (Obj_Tag_1); ++ Proc_Priv_Tag_2 (Obj_Tag_2); ++ Proc_Priv_Tag_3 (Obj_Tag_3); ++ Proc_Priv_Tag_4 (Obj_Tag_4); ++ Proc_Priv_Tag_5 (Obj_Tag_5); ++ Proc_Priv_Tag_6 (Obj_Tag_6); ++ ++ Proc_Vis_CW_1 (Obj_Tag_1); ++ Proc_Vis_CW_2 (Obj_Tag_2); ++ Proc_Vis_CW_3 (Obj_Tag_3); ++ Proc_Vis_CW_4 (Obj_Tag_4); ++ Proc_Vis_CW_5 (Obj_Tag_5); ++ Proc_Vis_CW_6 (Obj_Tag_6); ++ ++ Proc_Vis_Rec_1 (Obj_Rec_1); ++ Proc_Vis_Rec_2 (Obj_Rec_2); ++ Proc_Vis_Rec_3 (Obj_Rec_3); ++ Proc_Vis_Rec_4 (Obj_Rec_4); ++ ++ Proc_Vis_Tag_1 (Obj_Tag_1); ++ Proc_Vis_Tag_2 (Obj_Tag_2); ++ Proc_Vis_Tag_3 (Obj_Tag_3); ++ Proc_Vis_Tag_4 (Obj_Tag_4); ++ Proc_Vis_Tag_5 (Obj_Tag_5); ++ Proc_Vis_Tag_6 (Obj_Tag_6); ++ end Call_All; ++end Valid_Scalars3; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/valid_scalars3.ads +@@ -0,0 +1,116 @@ ++package Valid_Scalars3 is ++ procedure Call_All; ++ ++ type Rec_1 is private; ++ procedure Proc_Vis_Rec_1 (Param : Rec_1); ++ ++ type Rec_2 (<>) is private; ++ procedure Proc_Vis_Rec_2 (Param : Rec_2); ++ ++ type Rec_3 (<>) is private; ++ procedure Proc_Vis_Rec_3 (Param : Rec_3); ++ ++ type Rec_4 (Discr : Integer) is private; ++ procedure Proc_Vis_Rec_4 (Param : Rec_4); ++ ++ type Tag_1 is tagged private; ++ procedure Proc_Vis_Tag_1 (Param : Tag_1); ++ procedure Proc_Vis_CW_1 (Param : Tag_1'Class); ++ ++ type Tag_2 (<>) is tagged private; ++ procedure Proc_Vis_Tag_2 (Param : Tag_2); ++ procedure Proc_Vis_CW_2 (Param : Tag_2'Class); ++ ++ type Tag_3 (<>) is tagged private; ++ procedure Proc_Vis_Tag_3 (Param : Tag_3); ++ procedure Proc_Vis_CW_3 (Param : Tag_3'Class); ++ ++ type Tag_4 (Discr : Integer) is tagged private; ++ procedure Proc_Vis_Tag_4 (Param : Tag_4); ++ procedure Proc_Vis_CW_4 (Param : Tag_4'Class); ++ ++ type Tag_5 is new Tag_1 with private; ++ procedure Proc_Vis_Tag_5 (Param : Tag_5); ++ procedure Proc_Vis_CW_5 (Param : Tag_5'Class); ++ ++ type Tag_6 is new Tag_4 with private; ++ procedure Proc_Vis_Tag_6 (Param : Tag_6); ++ procedure Proc_Vis_CW_6 (Param : Tag_6'Class); ++ ++private ++ type Rec_1 is record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Rec_1 (Param : Rec_1); ++ ++ type Rec_2 is record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Rec_2 (Param : Rec_2); ++ ++ type Rec_3 (Discr : Integer) is record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Rec_3 (Param : Rec_3); ++ ++ type Rec_4 (Discr : Integer) is record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Rec_4 (Param : Rec_4); ++ ++ type Tag_1 is tagged record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_1 (Param : Tag_1); ++ procedure Proc_Priv_CW_1 (Param : Tag_1'Class); ++ ++ type Tag_2 is tagged record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_2 (Param : Tag_2); ++ procedure Proc_Priv_CW_2 (Param : Tag_2'Class); ++ ++ type Tag_3 (Discr : Integer) is tagged record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_3 (Param : Tag_3); ++ procedure Proc_Priv_CW_3 (Param : Tag_3'Class); ++ ++ type Tag_4 (Discr : Integer) is tagged record ++ Comp_1 : Integer; ++ Comp_2 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_4 (Param : Tag_4); ++ procedure Proc_Priv_CW_4 (Param : Tag_4'Class); ++ ++ type Tag_5 is new Tag_1 with record ++ Comp_3 : Integer; ++ Comp_4 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_5 (Param : Tag_5); ++ procedure Proc_Priv_CW_5 (Param : Tag_5'Class); ++ ++ type Tag_6 is new Tag_4 with record ++ Comp_3 : Integer; ++ Comp_4 : Boolean; ++ end record; ++ ++ procedure Proc_Priv_Tag_6 (Param : Tag_6); ++ procedure Proc_Priv_CW_6 (Param : Tag_6'Class); ++end Valid_Scalars3; +--- a/src/gcc/testsuite/gnat.dg/validity_check3.adb ++++ b/src/gcc/testsuite/gnat.dg/validity_check3.adb +@@ -1,96 +1,23 @@ + -- { dg-do compile } +--- { dg-options "-gnata -gnateV" } ++-- { dg-options "-gnatVa" } + +-package body Validity_Check3 is +- procedure Proc_Priv_CW_1 (Param : Tag_1'Class) is begin null; end; +- procedure Proc_Priv_CW_2 (Param : Tag_2'Class) is begin null; end; +- procedure Proc_Priv_CW_3 (Param : Tag_3'Class) is begin null; end; +- procedure Proc_Priv_CW_4 (Param : Tag_4'Class) is begin null; end; +- procedure Proc_Priv_CW_5 (Param : Tag_5'Class) is begin null; end; +- procedure Proc_Priv_CW_6 (Param : Tag_6'Class) is begin null; end; ++procedure Validity_Check3 is + +- procedure Proc_Priv_Rec_1 (Param : Rec_1) is begin null; end; +- procedure Proc_Priv_Rec_2 (Param : Rec_2) is begin null; end; +- procedure Proc_Priv_Rec_3 (Param : Rec_3) is begin null; end; +- procedure Proc_Priv_Rec_4 (Param : Rec_4) is begin null; end; +- +- procedure Proc_Priv_Tag_1 (Param : Tag_1) is begin null; end; +- procedure Proc_Priv_Tag_2 (Param : Tag_2) is begin null; end; +- procedure Proc_Priv_Tag_3 (Param : Tag_3) is begin null; end; +- procedure Proc_Priv_Tag_4 (Param : Tag_4) is begin null; end; +- procedure Proc_Priv_Tag_5 (Param : Tag_5) is begin null; end; +- procedure Proc_Priv_Tag_6 (Param : Tag_6) is begin null; end; +- +- procedure Proc_Vis_CW_1 (Param : Tag_1'Class) is begin null; end; +- procedure Proc_Vis_CW_2 (Param : Tag_2'Class) is begin null; end; +- procedure Proc_Vis_CW_3 (Param : Tag_3'Class) is begin null; end; +- procedure Proc_Vis_CW_4 (Param : Tag_4'Class) is begin null; end; +- procedure Proc_Vis_CW_5 (Param : Tag_5'Class) is begin null; end; +- procedure Proc_Vis_CW_6 (Param : Tag_6'Class) is begin null; end; +- +- procedure Proc_Vis_Rec_1 (Param : Rec_1) is begin null; end; +- procedure Proc_Vis_Rec_2 (Param : Rec_2) is begin null; end; +- procedure Proc_Vis_Rec_3 (Param : Rec_3) is begin null; end; +- procedure Proc_Vis_Rec_4 (Param : Rec_4) is begin null; end; +- +- procedure Proc_Vis_Tag_1 (Param : Tag_1) is begin null; end; +- procedure Proc_Vis_Tag_2 (Param : Tag_2) is begin null; end; +- procedure Proc_Vis_Tag_3 (Param : Tag_3) is begin null; end; +- procedure Proc_Vis_Tag_4 (Param : Tag_4) is begin null; end; +- procedure Proc_Vis_Tag_5 (Param : Tag_5) is begin null; end; +- procedure Proc_Vis_Tag_6 (Param : Tag_6) is begin null; end; +- +- procedure Call_All is +- pragma Warnings (Off); +- Obj_Rec_1 : Rec_1; +- Obj_Rec_2 : Rec_2; +- Obj_Rec_3 : Rec_3 (3); +- Obj_Rec_4 : Rec_4 (4); +- Obj_Tag_1 : Tag_1; +- Obj_Tag_2 : Tag_2; +- Obj_Tag_3 : Tag_3 (3); +- Obj_Tag_4 : Tag_4 (4); +- Obj_Tag_5 : Tag_5; +- Obj_Tag_6 : Tag_6 (6); +- pragma Warnings (On); ++ type Selection is (First, Second); + ++ function Next_Value (Text : String; ++ Position : in out Positive) return String is + begin +- Proc_Priv_CW_1 (Obj_Tag_1); +- Proc_Priv_CW_2 (Obj_Tag_2); +- Proc_Priv_CW_3 (Obj_Tag_3); +- Proc_Priv_CW_4 (Obj_Tag_4); +- Proc_Priv_CW_5 (Obj_Tag_5); +- Proc_Priv_CW_6 (Obj_Tag_6); +- +- Proc_Priv_Rec_1 (Obj_Rec_1); +- Proc_Priv_Rec_2 (Obj_Rec_2); +- Proc_Priv_Rec_3 (Obj_Rec_3); +- Proc_Priv_Rec_4 (Obj_Rec_4); +- +- Proc_Priv_Tag_1 (Obj_Tag_1); +- Proc_Priv_Tag_2 (Obj_Tag_2); +- Proc_Priv_Tag_3 (Obj_Tag_3); +- Proc_Priv_Tag_4 (Obj_Tag_4); +- Proc_Priv_Tag_5 (Obj_Tag_5); +- Proc_Priv_Tag_6 (Obj_Tag_6); +- +- Proc_Vis_CW_1 (Obj_Tag_1); +- Proc_Vis_CW_2 (Obj_Tag_2); +- Proc_Vis_CW_3 (Obj_Tag_3); +- Proc_Vis_CW_4 (Obj_Tag_4); +- Proc_Vis_CW_5 (Obj_Tag_5); +- Proc_Vis_CW_6 (Obj_Tag_6); +- +- Proc_Vis_Rec_1 (Obj_Rec_1); +- Proc_Vis_Rec_2 (Obj_Rec_2); +- Proc_Vis_Rec_3 (Obj_Rec_3); +- Proc_Vis_Rec_4 (Obj_Rec_4); +- +- Proc_Vis_Tag_1 (Obj_Tag_1); +- Proc_Vis_Tag_2 (Obj_Tag_2); +- Proc_Vis_Tag_3 (Obj_Tag_3); +- Proc_Vis_Tag_4 (Obj_Tag_4); +- Proc_Vis_Tag_5 (Obj_Tag_5); +- Proc_Vis_Tag_6 (Obj_Tag_6); +- end Call_All; +-end Validity_Check3; ++ Position := Position + 1; ++ return Text; ++ end Next_Value; ++ ++ Position : Positive := 1; ++ Value : constant Selection := ++ Selection'Value (Next_Value ("First", Position)); ++ ++begin ++ if Value /= First then ++ raise Program_Error; ++ end if; ++end; +deleted file mode 100644 +--- a/src/gcc/testsuite/gnat.dg/validity_check3.ads ++++ /dev/null +@@ -1,116 +0,0 @@ +-package Validity_Check3 is +- procedure Call_All; +- +- type Rec_1 is private; +- procedure Proc_Vis_Rec_1 (Param : Rec_1); +- +- type Rec_2 (<>) is private; +- procedure Proc_Vis_Rec_2 (Param : Rec_2); +- +- type Rec_3 (<>) is private; +- procedure Proc_Vis_Rec_3 (Param : Rec_3); +- +- type Rec_4 (Discr : Integer) is private; +- procedure Proc_Vis_Rec_4 (Param : Rec_4); +- +- type Tag_1 is tagged private; +- procedure Proc_Vis_Tag_1 (Param : Tag_1); +- procedure Proc_Vis_CW_1 (Param : Tag_1'Class); +- +- type Tag_2 (<>) is tagged private; +- procedure Proc_Vis_Tag_2 (Param : Tag_2); +- procedure Proc_Vis_CW_2 (Param : Tag_2'Class); +- +- type Tag_3 (<>) is tagged private; +- procedure Proc_Vis_Tag_3 (Param : Tag_3); +- procedure Proc_Vis_CW_3 (Param : Tag_3'Class); +- +- type Tag_4 (Discr : Integer) is tagged private; +- procedure Proc_Vis_Tag_4 (Param : Tag_4); +- procedure Proc_Vis_CW_4 (Param : Tag_4'Class); +- +- type Tag_5 is new Tag_1 with private; +- procedure Proc_Vis_Tag_5 (Param : Tag_5); +- procedure Proc_Vis_CW_5 (Param : Tag_5'Class); +- +- type Tag_6 is new Tag_4 with private; +- procedure Proc_Vis_Tag_6 (Param : Tag_6); +- procedure Proc_Vis_CW_6 (Param : Tag_6'Class); +- +-private +- type Rec_1 is record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Rec_1 (Param : Rec_1); +- +- type Rec_2 is record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Rec_2 (Param : Rec_2); +- +- type Rec_3 (Discr : Integer) is record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Rec_3 (Param : Rec_3); +- +- type Rec_4 (Discr : Integer) is record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Rec_4 (Param : Rec_4); +- +- type Tag_1 is tagged record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_1 (Param : Tag_1); +- procedure Proc_Priv_CW_1 (Param : Tag_1'Class); +- +- type Tag_2 is tagged record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_2 (Param : Tag_2); +- procedure Proc_Priv_CW_2 (Param : Tag_2'Class); +- +- type Tag_3 (Discr : Integer) is tagged record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_3 (Param : Tag_3); +- procedure Proc_Priv_CW_3 (Param : Tag_3'Class); +- +- type Tag_4 (Discr : Integer) is tagged record +- Comp_1 : Integer; +- Comp_2 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_4 (Param : Tag_4); +- procedure Proc_Priv_CW_4 (Param : Tag_4'Class); +- +- type Tag_5 is new Tag_1 with record +- Comp_3 : Integer; +- Comp_4 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_5 (Param : Tag_5); +- procedure Proc_Priv_CW_5 (Param : Tag_5'Class); +- +- type Tag_6 is new Tag_4 with record +- Comp_3 : Integer; +- Comp_4 : Boolean; +- end record; +- +- procedure Proc_Priv_Tag_6 (Param : Tag_6); +- procedure Proc_Priv_CW_6 (Param : Tag_6'Class); +-end Validity_Check3; +--- a/src/gcc/testsuite/lib/target-supports.exp ++++ b/src/gcc/testsuite/lib/target-supports.exp +@@ -5817,6 +5817,29 @@ proc check_effective_target_arm_fp16_alternative_ok { } { + check_effective_target_arm_fp16_alternative_ok_nocache] + } + ++# Return 1 if the target supports executing FP16 alternative format ++# instructions selected by arm_fp16_alternative_ok. ++ ++proc check_effective_target_arm_fp16_alternative_hw { } { ++ if { ! [check_effective_target_arm_fp16_alternative_ok] } { ++ return 0 ++ } ++ ++ global et_arm_fp16_alternative_flags ++ check_runtime arm_fp16_alternative_hw { ++ int ++ main (int argc, char **argv) ++ { ++ __fp16 a = 1.0; ++ float r; ++ asm ("vcvtb.f32.f16 %0, %1" ++ : "=w" (r) : "w" (a) ++ : /* No clobbers. */); ++ return (r == 1.0) ? 0 : 1; ++ } ++ } "$et_arm_fp16_alternative_flags" ++} ++ + # Return 1 if this is an ARM target supports specifying the FP16 none + # format. Some multilibs may be incompatible with the options needed. + +@@ -6055,6 +6078,7 @@ foreach { armfunc armflag armdefs } { + v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__ + v7a "-march=armv7-a+fp" __ARM_ARCH_7A__ + v7a_arm "-march=armv7-a+fp -marm" "__ARM_ARCH_7A__ && !__thumb__" ++ v7a_thumb "-march=armv7-a+fp -mthumb" "__ARM_ARCH_7A__ && __thumb__" + v7a_fp_hard "-march=armv7-a+fp -mfpu=auto -mfloat-abi=hard" __ARM_ARCH_7A__ + v7a_neon "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp" "__ARM_ARCH_7A__ && __ARM_NEON__" + v7a_neon_thumb "-march=armv7-a+simd -mfpu=auto -mfloat-abi=softfp -mthumb" "__ARM_ARCH_7A__ && __ARM_NEON__ && __thumb__" +@@ -6186,6 +6210,21 @@ foreach { armfunc armflag armdefs } { + }] + } + ++# Return 1 if current target supports both single- and double-precision FP ++proc check_effective_target_arm_mixed_fp { } { ++ if { ![istarget arm*-*-*] } { ++ return 0 ++ } ++ ++ return [check_no_compiler_messages arm_mixed_fp assembly { ++ // Mixed FP means we have hw FP, but only for SFmode (ignores HFmode) ++ #if !defined(__ARM_FP) || ((__ARM_FP & 0xc) != 0x4) ++ #error Not mixed FP ++ #endif ++ int main (void) { return 0; } ++ } "" ] ++} ++ + # Return 1 if GCC was configured with --with-mode= + proc check_effective_target_default_mode { } { + +@@ -6870,6 +6909,23 @@ proc check_effective_target_arm_v8_1m_mve_ok { } { + check_effective_target_arm_v8_1m_mve_ok_nocache] + } + ++# Return 1 if the target can link ARMv8.1-M MVE code using the ++# options selected by arm_v8_1m_mve_ok, 0 otherwise. ++ ++proc check_effective_target_arm_v8_1m_mve_link { } { ++ if { ![check_effective_target_arm_v8_1m_mve_ok] } { ++ return 0 ++ } ++ ++ return [check_no_compiler_messages arm_v8_1m_mve_link executable { ++ int ++ main (void) ++ { ++ return 0; ++ } ++ } [add_options_for_arm_v8_1m_mve ""]] ++} ++ + proc add_options_for_arm_v8_1m_mve { flags } { + if { ! [check_effective_target_arm_v8_1m_mve_ok] } { + return "$flags" +@@ -14514,3 +14570,23 @@ proc check_effective_target_valgrind { } { + } + return 0 + } ++ ++# Return 1 if the target runtime can deref null, 0 otherwise. ++# Cache the result. ++ ++proc check_effective_target_can_deref_null { } { ++ return [check_runtime can_deref_null { ++ char __attribute__((noipa)) ++ read_mem (volatile char *p) ++ { ++ return *p; ++ } ++ ++ int ++ main () ++ { ++ read_mem ((char *)0); ++ return 0; ++ } ++ } "-O0 -fno-delete-null-pointer-checks -Wno-null-dereference"] ++} +--- a/src/gcc/tree-affine.cc ++++ b/src/gcc/tree-affine.cc +@@ -1030,10 +1030,11 @@ get_inner_reference_aff (tree ref, aff_tree *addr, poly_widest_int *size) + aff_combination_add (addr, &tmp); + } + +- aff_combination_const (&tmp, sizetype, bits_to_bytes_round_down (bitpos)); ++ poly_int64 bytepos = bits_to_bytes_round_down (bitpos); ++ aff_combination_const (&tmp, sizetype, bytepos); + aff_combination_add (addr, &tmp); + +- *size = bits_to_bytes_round_up (bitsize); ++ *size = bits_to_bytes_round_up (bitpos + bitsize) - bytepos; + + return base; + } +--- a/src/gcc/tree-cfgcleanup.cc ++++ b/src/gcc/tree-cfgcleanup.cc +@@ -200,7 +200,8 @@ cleanup_control_expr_graph (basic_block bb, gimple_stmt_iterator gsi) + + bitmap_set_bit (cfgcleanup_altered_bbs, bb->index); + gsi_remove (&gsi, true); +- taken_edge->flags = EDGE_FALLTHRU; ++ taken_edge->flags &= ~(EDGE_TRUE_VALUE|EDGE_FALSE_VALUE); ++ taken_edge->flags |= EDGE_FALLTHRU; + + return retval; + } +--- a/src/gcc/tree-dfa.cc ++++ b/src/gcc/tree-dfa.cc +@@ -530,30 +530,41 @@ get_ref_base_and_extent (tree exp, poly_int64 *poffset, + index. */ + seen_variable_array_ref = true; + +- int_range_max vr; +- range_query *query; +- query = get_range_query (cfun); ++ /* Try to constrain the access range by using the range of the ++ index expression when we know it. Extra care must be taken ++ when the low bound of the array is not zero, because it may ++ be very large and the index expression may be unsigned and ++ wrap around; in this case, the correct range is that of the ++ difference between the index expression and the low bound, ++ see get_inner_reference for the model computation. */ ++ range_query *query = get_range_query (cfun); ++ range_op_handler minus_op (MINUS_EXPR); ++ int_range_max vr_idx, vr_lb, vr; + + if (TREE_CODE (index) == SSA_NAME + && (low_bound = array_ref_low_bound (exp), +- poly_int_tree_p (low_bound)) ++ TREE_CODE (low_bound) == INTEGER_CST) + && (unit_size = array_ref_element_size (exp), + TREE_CODE (unit_size) == INTEGER_CST) + && query->range_of_expr (vr, index) ++ && (integer_zerop (low_bound) ++ || ((vr_idx = vr, ++ query->range_of_expr (vr_lb, low_bound)) ++ && minus_op.fold_range (vr, TREE_TYPE (index), ++ vr_idx, vr_lb))) + && !vr.varying_p () + && !vr.undefined_p ()) + { + wide_int min = vr.lower_bound (); + wide_int max = vr.upper_bound (); +- poly_offset_int lbound = wi::to_poly_offset (low_bound); + /* Try to constrain maxsize with range information. */ + offset_int omax + = offset_int::from (max, TYPE_SIGN (TREE_TYPE (index))); + if (wi::get_precision (max) <= ADDR_MAX_BITSIZE +- && known_lt (lbound, omax)) ++ && omax >= 0) + { +- poly_offset_int rmaxsize; +- rmaxsize = (omax - lbound + 1) ++ offset_int rmaxsize ++ = (omax + 1) + * wi::to_offset (unit_size) << LOG2_BITS_PER_UNIT; + if (!known_size_p (maxsize) + || known_lt (rmaxsize, maxsize)) +@@ -569,11 +580,10 @@ get_ref_base_and_extent (tree exp, poly_int64 *poffset, + offset_int omin + = offset_int::from (min, TYPE_SIGN (TREE_TYPE (index))); + if (wi::get_precision (min) <= ADDR_MAX_BITSIZE +- && known_le (lbound, omin)) ++ && omin > 0) + { +- poly_offset_int woffset +- = wi::sext (omin - lbound, +- TYPE_PRECISION (sizetype)); ++ offset_int woffset ++ = wi::sext (omin, TYPE_PRECISION (sizetype)); + woffset *= wi::to_offset (unit_size); + woffset <<= LOG2_BITS_PER_UNIT; + bit_offset += woffset; +--- a/src/gcc/tree-sra.cc ++++ b/src/gcc/tree-sra.cc +@@ -2085,16 +2085,20 @@ build_debug_ref_for_model (location_t loc, tree base, HOST_WIDE_INT offset, + } + + /* Construct a memory reference consisting of component_refs and array_refs to +- a part of an aggregate *RES (which is of type TYPE). The requested part +- should have type EXP_TYPE at be the given OFFSET. This function might not +- succeed, it returns true when it does and only then *RES points to something +- meaningful. This function should be used only to build expressions that we +- might need to present to user (e.g. in warnings). In all other situations, ++ a part of an aggregate *RES which is of type TYPE. The requested part ++ should have type EXP_TYPE at the given OFFSET. CUR_SIZE must be the size of ++ *RES unless it is known that *RES alone cannot be the result. This function ++ might not succeed, it returns true when it does and only then *RES points to ++ something meaningful. ++ ++ This function should be used only to build expressions that we might need to ++ present to user (e.g. in warnings). In all other situations, + build_ref_for_model or build_ref_for_offset should be used instead. */ + + static bool + build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset, +- tree exp_type) ++ HOST_WIDE_INT cur_size, tree exp_type, ++ HOST_WIDE_INT exp_size) + { + while (1) + { +@@ -2102,7 +2106,8 @@ build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset, + tree tr_size, index, minidx; + HOST_WIDE_INT el_size; + +- if (offset == 0 && exp_type ++ if (offset == 0 ++ && cur_size == exp_size + && types_compatible_p (exp_type, type)) + return true; + +@@ -2140,7 +2145,8 @@ build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset, + NULL_TREE); + expr_ptr = &expr; + if (build_user_friendly_ref_for_offset (expr_ptr, TREE_TYPE (fld), +- offset - pos, exp_type)) ++ offset - pos, size, ++ exp_type, exp_size)) + { + *res = expr; + return true; +@@ -2163,17 +2169,12 @@ build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset, + *res = build4 (ARRAY_REF, TREE_TYPE (type), *res, index, + NULL_TREE, NULL_TREE); + offset = offset % el_size; ++ cur_size = el_size; + type = TREE_TYPE (type); + break; + + default: +- if (offset != 0) +- return false; +- +- if (exp_type) +- return false; +- else +- return true; ++ return false; + } + } + } +@@ -3064,7 +3065,8 @@ create_artificial_child_access (struct access *parent, struct access *model, + struct access *access = access_pool.allocate (); + memset (access, 0, sizeof (struct access)); + if (!build_user_friendly_ref_for_offset (&expr, TREE_TYPE (expr), new_offset, +- model->type)) ++ parent->size, model->type, ++ model->size)) + { + access->grp_no_warning = true; + expr = build_ref_for_model (EXPR_LOCATION (parent->base), parent->base, +@@ -3205,8 +3207,11 @@ propagate_subaccesses_from_rhs (struct access *lacc, struct access *racc) + tree t = lacc->base; + + lacc->type = racc->type; ++ /* We know racc and lacc are of different types so can pass -1 as ++ cur_size. */ + if (build_user_friendly_ref_for_offset (&t, TREE_TYPE (t), +- lacc->offset, racc->type)) ++ lacc->offset, -1, ++ racc->type, racc->size)) + { + lacc->expr = t; + lacc->grp_same_access_path = true; +@@ -3264,7 +3269,6 @@ propagate_subaccesses_from_rhs (struct access *lacc, struct access *racc) + } + + if (rchild->grp_unscalarizable_region +- || (rchild->size % BITS_PER_UNIT) != 0 + || !budget_for_propagation_access (lacc->base)) + { + if (!lacc->grp_write && access_or_its_child_written (rchild)) +@@ -3324,7 +3328,6 @@ propagate_subaccesses_from_lhs (struct access *lacc, struct access *racc) + HOST_WIDE_INT norm_offset = lchild->offset + norm_delta; + + if (lchild->grp_unscalarizable_region +- || (lchild->size % BITS_PER_UNIT) != 0 + || child_would_conflict_in_acc (racc, norm_offset, lchild->size, + &matching_acc) + || !budget_for_propagation_access (racc->base)) +--- a/src/gcc/tree-ssa-dom.cc ++++ b/src/gcc/tree-ssa-dom.cc +@@ -1429,6 +1429,12 @@ dom_opt_dom_walker::set_global_ranges_from_unreachable_edges (basic_block bb) + || !assert_unreachable_fallthru_edge_p (pred_e)) + return; + ++ // Bail if the condition leading to the assert has 2 ssa-names. ++ // See PR 125501. ++ if ((TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME ++ && TREE_CODE (gimple_cond_rhs (stmt)) == SSA_NAME)) ++ return; ++ + tree name; + FOR_EACH_GORI_EXPORT_NAME (m_ranger->gori_ssa (), pred_e->src, name) + if (all_uses_feed_or_dominated_by_stmt (name, stmt) +--- a/src/gcc/tree-ssa-forwprop.cc ++++ b/src/gcc/tree-ssa-forwprop.cc +@@ -3243,7 +3243,13 @@ optimize_vector_load (gimple_stmt_iterator *gsi) + gimple *use_stmt = USE_STMT (use_p); + if (is_gimple_debug (use_stmt)) + continue; +- if (!is_gimple_assign (use_stmt)) ++ tree use_lhs; ++ if (!is_gimple_assign (use_stmt) ++ /* For alias reasons we move the use to the place of the ++ load. Avoid this when abnormals are involved. */ ++ || ((TREE_CODE ((use_lhs = gimple_assign_lhs (use_stmt))) ++ == SSA_NAME) ++ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (use_lhs))) + { + rewrite = false; + break; +--- a/src/gcc/tree-ssa-math-opts.cc ++++ b/src/gcc/tree-ssa-math-opts.cc +@@ -3711,7 +3711,7 @@ maybe_optimize_guarding_check (vec &mul_stmts, gimple *cond_stmt, + return; + } + gimple_stmt_iterator gsi = gsi_after_labels (bb); +- mul_stmts.quick_push (div_stmt); ++ mul_stmts.safe_push (div_stmt); + if (is_gimple_debug (gsi_stmt (gsi))) + gsi_next_nondebug (&gsi); + unsigned cast_count = 0; +--- a/src/gcc/tree-ssa-phiopt.cc ++++ b/src/gcc/tree-ssa-phiopt.cc +@@ -267,6 +267,8 @@ is_factor_profitable (gimple *def_stmt, basic_block merge, tree arg) + FOR_EACH_IMM_USE_FAST (use_p, iter, arg) + { + gimple *use_stmt = USE_STMT (use_p); ++ if (is_gimple_debug (use_stmt)) ++ continue; + basic_block use_bb = gimple_bb (use_stmt); + if (dominated_by_p (CDI_DOMINATORS, merge, use_bb)) + return true; +@@ -2742,15 +2744,9 @@ spaceship_replacement (basic_block cond_bb, basic_block middle_bb, + must be different for non-swapped operands and same for swapped + operands. */ + if ((lhs2 == lhs1) +- ^ (HONOR_NANS (TREE_TYPE (lhs1)) +- ? ((cmp2 == LT_EXPR || cmp2 == LE_EXPR) +- != (cmp1 == LT_EXPR || cmp1 == LE_EXPR)) +- : (((cond2_phi_edge->flags +- & ((cmp2 == LT_EXPR || cmp2 == LE_EXPR) +- ? EDGE_TRUE_VALUE : EDGE_FALSE_VALUE)) != 0) +- != ((e1->flags +- & ((cmp1 == LT_EXPR || cmp1 == LE_EXPR) +- ? EDGE_TRUE_VALUE : EDGE_FALSE_VALUE)) != 0)))) ++ ^ ((cmp2 == LT_EXPR || cmp2 == LE_EXPR) ++ != (cmp1 == LT_EXPR || cmp1 == LE_EXPR)) ++ ^ ((cond2_phi_edge->flags & EDGE_FALSE_VALUE) != 0)) + return false; + if (!single_pred_p (cond2_bb) || !cond_only_block_p (cond2_bb)) + return false; +--- a/src/gcc/tree-ssa-reassoc.cc ++++ b/src/gcc/tree-ssa-reassoc.cc +@@ -1521,7 +1521,8 @@ insert_stmt_after (gimple *stmt, gimple *insert_point) + return; + } + else if (gimple_code (insert_point) == GIMPLE_ASM +- && gimple_asm_nlabels (as_a (insert_point)) != 0) ++ && gimple_asm_nlabels (as_a (insert_point)) != 0 ++ && !single_succ_p (gimple_bb (insert_point))) + /* We have no idea where to insert - it depends on where the + uses will be placed. */ + gcc_unreachable (); +@@ -4271,7 +4272,7 @@ optimize_vec_cond_expr (tree_code opcode, vec *ops) + + for (i = 0; i < length; ++i) + { +- tree elt0 = (*ops)[i]->op; ++ tree &elt0 = (*ops)[i]->op; + + gassign *stmt0, *vcond0; + bool invert; +@@ -4319,11 +4320,13 @@ optimize_vec_cond_expr (tree_code opcode, vec *ops) + gimple_stmt_iterator gsi = gsi_for_stmt (vcond0); + tree exp = force_gimple_operand_gsi (&gsi, comb, true, NULL_TREE, + true, GSI_SAME_STMT); +- if (invert) +- swap_ssa_operands (vcond0, gimple_assign_rhs2_ptr (vcond0), +- gimple_assign_rhs3_ptr (vcond0)); +- gimple_assign_set_rhs1 (vcond0, exp); +- update_stmt (vcond0); ++ tree res = gimple_build (&gsi, true, GSI_SAME_STMT, UNKNOWN_LOCATION, ++ VEC_COND_EXPR, TREE_TYPE (elt0), exp, ++ constant_boolean_node (true, ++ TREE_TYPE (elt0)), ++ constant_boolean_node (false, ++ TREE_TYPE (elt0))); ++ elt0 = res; + + elt1 = error_mark_node; + any_changes = true; +--- a/src/gcc/tree-ssa-structalias.cc ++++ b/src/gcc/tree-ssa-structalias.cc +@@ -5092,7 +5092,9 @@ find_func_aliases_for_call (struct function *fn, gcall *t) + such operator, then the effects for PTA (in particular + the escaping of the pointer) can be ignored. */ + else if (fndecl ++ && flag_assume_sane_operators_new_delete + && DECL_IS_OPERATOR_DELETE_P (fndecl) ++ && DECL_IS_REPLACEABLE_OPERATOR (fndecl) + && gimple_call_from_new_or_delete (t)) + ; + else +@@ -6782,12 +6784,15 @@ static void + set_uids_in_ptset (bitmap into, bitmap from, struct pt_solution *pt, + tree fndecl) + { ++ const varinfo_t escaped_vi = get_varinfo (find (escaped_id)); ++ const varinfo_t escaped_return_vi = get_varinfo (find (escaped_return_id)); ++ const bool everything_escaped ++ = escaped_vi->solution && bitmap_bit_p (escaped_vi->solution, anything_id); ++ const bool everything_escaped_return ++ = escaped_return_vi->solution ++ && bitmap_bit_p (escaped_return_vi->solution, anything_id); + unsigned int i; + bitmap_iterator bi; +- varinfo_t escaped_vi = get_varinfo (find (escaped_id)); +- varinfo_t escaped_return_vi = get_varinfo (find (escaped_return_id)); +- bool everything_escaped +- = escaped_vi->solution && bitmap_bit_p (escaped_vi->solution, anything_id); + + EXECUTE_IF_SET_IN_BITMAP (from, 0, i, bi) + { +@@ -6803,8 +6808,10 @@ set_uids_in_ptset (bitmap into, bitmap from, struct pt_solution *pt, + pt->vars_contains_escaped = true; + pt->vars_contains_escaped_heap |= vi->is_heap_var; + } +- if (escaped_return_vi->solution +- && bitmap_bit_p (escaped_return_vi->solution, i)) ++ ++ if (everything_escaped_return ++ || (escaped_return_vi->solution ++ && bitmap_bit_p (escaped_return_vi->solution, i))) + pt->vars_contains_escaped_heap |= vi->is_heap_var; + + if (vi->is_restrict_var) +--- a/src/gcc/tree-vect-loop-manip.cc ++++ b/src/gcc/tree-vect-loop-manip.cc +@@ -4149,7 +4149,8 @@ vect_loop_versioning (loop_vec_info loop_vinfo, + && (!loop_outer (loop_to_version)->inner->next + || vect_loop_vectorized_call (loop_to_version)) + && (!loop_outer (loop_to_version)->inner->next +- || !loop_outer (loop_to_version)->inner->next->next)) ++ || !loop_outer (loop_to_version)->inner->next->next) ++ && can_duplicate_loop_p (loop_outer (loop_to_version))) + loop_to_version = loop_outer (loop_to_version); + } + +--- a/src/gcc/tree-vect-stmts.cc ++++ b/src/gcc/tree-vect-stmts.cc +@@ -8728,7 +8728,8 @@ vectorizable_store (vec_info *vinfo, + + /* Transform. */ + +- ensure_base_align (dr_info); ++ if (!costing_p) ++ ensure_base_align (dr_info); + + if (STMT_VINFO_SIMD_LANE_ACCESS_P (stmt_info) >= 3) + { +@@ -10713,7 +10714,8 @@ vectorizable_load (vec_info *vinfo, + /* Transform. */ + + dr_vec_info *dr_info = STMT_VINFO_DR_INFO (stmt_info), *first_dr_info = NULL; +- ensure_base_align (dr_info); ++ if (!costing_p) ++ ensure_base_align (dr_info); + + if (memory_access_type == VMAT_INVARIANT) + { +--- a/src/libcpp/ChangeLog ++++ b/src/libcpp/ChangeLog +@@ -1,3 +1,14 @@ ++2026-08-27 Jakub Jelinek ++ ++ Backported from master: ++ 2026-08-06 Jakub Jelinek ++ ++ PR preprocessor/125048 ++ * macro.cc (replace_args): Remember the position of map ++ in the pfile->line_table->info_macro.maps array and if vostate ++ is DROP, recompute map pointer as expand_arg call could have ++ reallocated the pfile->line_table->info_macro.maps array. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libcpp/macro.cc ++++ b/src/libcpp/macro.cc +@@ -1989,6 +1989,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + location_t *virt_locs = NULL; + unsigned int exp_count; + const line_map_macro *map = NULL; ++ size_t map_idx = 0; + int track_macro_exp; + + /* First, fully macro-expand arguments, calculating the number of +@@ -2099,6 +2100,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + map = linemap_enter_macro (pfile->line_table, node, + expansion_point_loc, + num_macro_tokens); ++ map_idx = map - pfile->line_table->info_macro.maps; + } + i = 0; + vaopt_state vaopt_tracker (pfile, macro->variadic, &args[macro->paramc - 1]); +@@ -2220,6 +2222,11 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, + NULL, 0); + } + } ++ else if (vostate == vaopt_state::DROP && map) ++ /* For the DROP case vaopt_tracker.update (src) can call ++ expand_arg and that can reallocate the maps, so need to ++ update the map pointer. */ ++ map = pfile->line_table->info_macro.maps + map_idx; + continue; + } + +--- a/src/libgcc/ChangeLog ++++ b/src/libgcc/ChangeLog +@@ -1,3 +1,28 @@ ++2026-08-13 Piotr Kubaj ++ ++ PR target/125803 ++ * config/rs6000/freebsd-unwind.h (TOC_SAVE_SLOT): New macro, ++ defined according to _CALL_ELF. ++ (frob_update_context): Use TOC_SAVE_SLOT instead of the ++ hard-coded ELFv1 offset 40 when checking for and locating the ++ saved TOC, so that r2 is restored correctly under ELFv2. Guard ++ the ELFv1-only PLT stub and function pointer call sequences ++ with _CALL_ELF != 2, mirroring linux-unwind.h. ++ ++2026-07-04 Iain Sandoe ++ ++ Backported from master: ++ 2026-07-04 Iain Sandoe ++ ++ PR libgcc/123976 ++ * config/t-darwin-ehs: Add md-unwind-def.h as a ++ pre-requisite. ++ ++2026-06-12 Ramin Moussavi ++ ++ * config.host (microblaze*-linux*): Set md_unwind_header. ++ * config/microblaze/linux-unwind.h: New file. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -1052,6 +1052,7 @@ mcore-*-elf) + ;; + microblaze*-linux*) + tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit t-slibgcc-libgcc" ++ md_unwind_header=microblaze/linux-unwind.h + ;; + microblaze*-*-elf) + tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit" +--- a/src/libgcc/config/avr/libf7/ChangeLog ++++ b/src/libgcc/config/avr/libf7/ChangeLog +@@ -1,3 +1,49 @@ ++2026-08-24 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-08-24 Georg-Johann Lay ++ ++ PR target/127024 ++ * libf7-asm.sx (to_integer): Don't skip XJMP ++ if __AVR_ERRATA_SKIP_JMP_CALL__. ++ ++2026-06-28 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-28 Georg-Johann Lay ++ ++ PR target/125752 ++ * libf7.c (d_to_ufx, d_to_sfx): Remove prototypes. ++ (__fractdfda, __fractdfuda, __fractdfta, __fractdfuta) ++ (__fractdfdq, __fractdfudq): Move implementation to... ++ * libf7-asm.sx: ...here. ++ (d_to_fx64): Remove. ++ * libf7-common.mk (F7_ASM_PARTS): Add D2dq, D2udq, D2da, ++ D2uda, D2ta, D2uta. ++ (F7F_asm): Remove d_to_fx64. ++ * t-libf7 (LIBF7_DF_CONV): Remove fractdfda, fractdfta, ++ fractdfdq, fractdfuda, fractdfuta, fractdfudq. ++ * f7-renames.h: Rebuild. ++ ++2026-06-12 Georg-Johann Lay ++ ++ Backported from master: ++ 2026-06-11 Georg-Johann Lay ++ ++ PR target/125752 ++ * libf7-asm.sx (ufx64_to_d, d_to_fx64): New DEFUNs. ++ (__fractdadf, __fractudadf, __fracttadf, __fractutadf) ++ (__fractdqdf, __fractudqdf): New _DEFUNs. ++ * libf7-common.mk (F7_ASM_PARTS) Add: fx2D, D2fx, ++ dq2D, udq2D, da2D, uda2D, ta2D uta2D. ++ (F7F): Add d_to_fx64, ufx64_to_d, sfx64_to_d. ++ * libf7.c (d_to_ufx, d_to_sfx): New protos. ++ (__fractdfda, __fractdfuda, __fractdfta, __fractdfuta) ++ (__fractdfdq, __fractdfudq): New modules. ++ * t-libf7 (LIBF7_DF_CONV): Add fractdfda, ++ fractdfta, fractdfdq, fractdfuda, fractdfuta, fractdfudq. ++ * f7-renames.h: Rebuild. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libgcc/config/avr/libf7/f7-renames.h ++++ b/src/libgcc/config/avr/libf7/f7-renames.h +@@ -222,6 +222,8 @@ + #define f7_sqrt16_floor_asm __f7_sqrt16_floor_asm + #define f7_lshrdi3_asm __f7_lshrdi3_asm + #define f7_ashldi3_asm __f7_ashldi3_asm ++#define f7_ufx64_to_d_asm __f7_ufx64_to_d_asm ++#define f7_sfx64_to_d_asm __f7_sfx64_to_d_asm + #define f7_class_D_asm __f7_class_D_asm + #define f7_call_ddd_asm __f7_call_ddd_asm + #define f7_call_xdd_asm __f7_call_xdd_asm +--- a/src/libgcc/config/avr/libf7/libf7-asm.sx ++++ b/src/libgcc/config/avr/libf7/libf7-asm.sx +@@ -602,12 +602,21 @@ DEFUN to_integer + brmi .Lsaturate.T ; > INTxx_MAX => saturate + + brtc 9f ; >= 0 => return ++#ifdef __AVR_ERRATA_SKIP_JMP_CALL__ ++ ;; Some cores have a problem skipping 2-word instructions. ++ sbrs Mask, 5 ++ rjmp 0f ++ XJMP __negdi2 ++0: sbrs Mask, 4 ++ rjmp 1f ++ XJMP __negsi2 ++1: ++#else + sbrc Mask, 5 +- .global __negdi2 + XJMP __negdi2 + sbrc Mask, 4 +- .global __negsi2 + XJMP __negsi2 ++#endif /* __AVR_ERRATA_SKIP_JMP_CALL__ */ + neg C6 + neg C5 + sbci C6, 0 +@@ -2308,8 +2317,85 @@ _ENDF __fractqqdf + #endif /* F7MOD_qq2D_ */ + + ++#ifdef F7MOD_fx2D_ ++;;; Convert an [un]signed 64-bit fixed point value R18[] to double. ++;;; double ufx64_to_d (ufx64_t R18, uint8_t fbit R30); ++;;; double sfx64_to_d (sfx64_t R18, uint8_t fbit R30); ++;;; FBIT accounts for the fractional bits of the fixed point type, ++;;; e.g. pass __DA_FBIT__ for long accum etc. ++DEFUN ufx64_to_d ++ push r30 ++ XCALL __floatundidf ++ rjmp 1f ++ ++LABEL sfx64_to_d ++ push r30 ++ XCALL __floatdidf ++1: pop r30 ++ ++ ;; The MSB indicates a value of 0. Notice that at this point, ++ ;; we have a normal floating point number with a biased exponent ++ ;; that won't underflow below. ++ tst r25 ++ breq 0f ++ ++ ;; Subtract fbit from the double exponent. R30[] = fbit << 4. ++ swap r30 ++ mov r31, r30 ++ andi r30, lo8 (0x0ff0) ++ andi r31, hi8 (0x0ff0) ++ sub r24, r30 ++ sbc r25, r31 ++ ++0: ret ++ENDF ufx64_to_d ++#endif /* F7MOD_fx2D_ */ ++ ++#ifdef F7MOD_da2D_ ++_DEFUN __fractdadf ++ ldi r30, __DA_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fractdadf ++#endif /* F7MOD_da2D_ */ ++ ++#ifdef F7MOD_uda2D_ ++_DEFUN __fractudadf ++ ldi r30, __UDA_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractudadf ++#endif /* F7MOD_uda2D_ */ ++ ++#ifdef F7MOD_ta2D_ ++_DEFUN __fracttadf ++ ldi r30, __TA_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fracttadf ++#endif /* F7MOD_ta2D_ */ ++ ++#ifdef F7MOD_uta2D_ ++_DEFUN __fractutadf ++ ldi r30, __UTA_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractutadf ++#endif /* F7MOD_uta2D_ */ ++ ++#ifdef F7MOD_dq2D_ ++_DEFUN __fractdqdf ++ ldi r30, __DQ_FBIT__ ++ F7jmp sfx64_to_d ++_ENDF __fractdqdf ++#endif /* F7MOD_dq2D_ */ ++ ++#ifdef F7MOD_udq2D_ ++_DEFUN __fractudqdf ++ ldi r30, __UDQ_FBIT__ ++ F7jmp ufx64_to_d ++_ENDF __fractudqdf ++#endif /* F7MOD_udq2D_ */ ++ ++ + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +-;;; Fixed-point -> double conversions. ++;;; Double -> fixed-point conversions. + + #ifdef F7MOD_D2qq_ + _DEFUN __fractdfqq +@@ -2388,6 +2474,57 @@ _DEFUN __fractdfusa + _ENDF __fractdfusa + #endif /* F7MOD_D2usa_ */ + ++#ifdef F7MOD_D2da_ ++_DEFUN __fractdfda ++ ;; Multiply with 2^FBIT to get a DA result in r25:r18. ++ subi r24, dex_lo (-__DA_FBIT__) ++ sbci r25, dex_hi (-__DA_FBIT__) ++ XJMP __fixdfdi ++_ENDF __fractdfda ++#endif /* F7MOD_D2da_ */ ++ ++#ifdef F7MOD_D2uda_ ++_DEFUN __fractdfuda ++ ;; Multiply with 2^FBIT to get an UDA result in r25:r18. ++ subi r25, dex_hi (-__UDA_FBIT__) ++ XJMP __fixunsdfdi ++_ENDF __fractdfuda ++#endif /* F7MOD_D2uda_ */ ++ ++#ifdef F7MOD_D2ta_ ++_DEFUN __fractdfta ++ ;; Multiply with 2^FBIT to get a TA result in r25:r18. ++ subi r24, dex_lo (-__TA_FBIT__) ++ sbci r25, dex_hi (-__TA_FBIT__) ++ XJMP __fixdfdi ++_ENDF __fractdfta ++#endif /* F7MOD_D2ta_ */ ++ ++#ifdef F7MOD_D2uta_ ++_DEFUN __fractdfuta ++ ;; Multiply with 2^FBIT to get an UTA result in r25:r18. ++ subi r25, dex_hi (-__UTA_FBIT__) ++ XJMP __fixunsdfdi ++_ENDF __fractdfuta ++#endif /* F7MOD_D2uta_ */ ++ ++#ifdef F7MOD_D2dq_ ++_DEFUN __fractdfdq ++ ;; Multiply with 2^FBIT to get a DQ result in r25:r18. ++ subi r24, dex_lo (-__DQ_FBIT__) ++ sbci r25, dex_hi (-__DQ_FBIT__) ++ XJMP __fixdfdi ++_ENDF __fractdfdq ++#endif /* F7MOD_D2dq_ */ ++ ++#ifdef F7MOD_D2udq_ ++_DEFUN __fractdfudq ++ ;; Multiply with 2^FBIT to get an UDQ result in r25:r18. ++ subi r25, dex_hi (-__UDQ_FBIT__) ++ XJMP __fixunsdfdi ++_ENDF __fractdfudq ++#endif /* F7MOD_D2udq_ */ ++ + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;;; [u]int32_t -> double conversions. +--- a/src/libgcc/config/avr/libf7/libf7-common.mk ++++ b/src/libgcc/config/avr/libf7/libf7-common.mk +@@ -29,12 +29,13 @@ F7_ASM_PARTS += D_cmp D_eq D_ne D_ge D_gt D_le D_lt D_unord D_fminfmax + F7_ASM_PARTS += call_dd call_ddd + + # Fixed-point -> double conversions +-F7_ASM_PARTS += qq2D uqq2D sq2D usq2D +-F7_ASM_PARTS += ha2D uha2D sa2D usa2D ++F7_ASM_PARTS += qq2D uqq2D sq2D usq2D dq2D udq2D ++F7_ASM_PARTS += ha2D uha2D sa2D usa2D da2D uda2D ta2D uta2D ++F7_ASM_PARTS += fx2D + + # Double -> fixed-point conversions +-F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq +-F7_ASM_PARTS += D2ha D2uha D2sa D2usa ++F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq D2dq D2udq ++F7_ASM_PARTS += D2ha D2uha D2sa D2usa D2da D2uda D2ta D2uta + + # Integer -> double conversions + F7_ASM_PARTS += D_floatsidf D_floatunsidf +@@ -107,7 +108,7 @@ F7F_asm += set_u64 set_s64 addsub_mant_scaled mul_mant + F7F_asm += to_integer to_unsigned clr_mant_lsbs + F7F_asm += div sqrt_approx sqrt16_round sqrt16_floor + F7F_asm += lshrdi3 ashldi3 +- ++F7F_asm += ufx64_to_d sfx64_to_d + F7F_asm += class_D + + F7F_asm += call_ddd call_xdd call_ddx +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/microblaze/linux-unwind.h +@@ -0,0 +1,102 @@ ++/* DWARF2 EH unwinding support for MicroBlaze Linux. ++ Copyright (C) 2026 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ ++#ifndef inhibit_libc ++ ++/* Do code reading to identify a signal frame, and set the frame state ++ data appropriately. See unwind-dw2.c for the structs. */ ++ ++#include ++#include ++#include ++ ++#define MD_FALLBACK_FRAME_STATE_FOR microblaze_fallback_frame_state ++ ++static _Unwind_Reason_Code ++microblaze_fallback_frame_state (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs) ++{ ++ const unsigned int *pc = (const unsigned int *) context->ra; ++ struct sigcontext *sc; ++ _Unwind_Ptr new_cfa; ++ int i; ++ ++ /* The outermost frame of a thread may leave a null or near-null ++ return address; do not dereference it looking for the ++ trampoline. */ ++ if ((unsigned long) pc < 4096) ++ return _URC_END_OF_STACK; ++ ++ /* The kernel writes the signal trampoline onto the stack ++ (struct rt_sigframe.tramp): ++ ++ addik r12, r0, __NR_rt_sigreturn ++ brki r14, 0x8 ++ ++ and sets the saved r15 to the trampoline address minus 8 (the ++ handler returns with "rtsd r15, 8"), so the unwound return ++ address points 8 bytes before the trampoline. */ ++ if (pc[0] == (0x31800000 | __NR_rt_sigreturn) && pc[1] == 0xb9cc0008) ++ ; ++ else if (pc[2] == (0x31800000 | __NR_rt_sigreturn) && pc[3] == 0xb9cc0008) ++ pc += 2; ++ else ++ return _URC_END_OF_STACK; ++ ++ /* The trampoline is the last member of the kernel's rt_sigframe and ++ the ucontext sits directly in front of it. Anchor there rather ++ than at the CFA so the layout of the frame head does not matter ++ (the kernel may insert an ABI argument-home gap at the front). ++ uClibc's ucontext_t matches the kernel's struct ucontext. */ ++ ucontext_t *uc = (ucontext_t *) ((_Unwind_Ptr) pc - sizeof (ucontext_t)); ++ ++ sc = (struct sigcontext *) &uc->uc_mcontext; ++ ++ new_cfa = sc->regs.r1; ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ fs->regs.cfa_reg = 1; /* r1, the stack pointer. */ ++ fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa; ++ ++ /* pt_regs holds r0..r31 consecutively. */ ++ for (i = 0; i < 32; i++) ++ { ++ fs->regs.how[i] = REG_SAVED_OFFSET; ++ fs->regs.reg[i].loc.offset ++ = (_Unwind_Ptr) &sc->regs.r0 + i * sizeof (unsigned long) - new_cfa; ++ } ++ ++ /* The interrupted PC goes into the alternate return column ++ (DWARF_ALT_FRAME_RETURN_COLUMN, defined as 36 in ++ gcc/config/microblaze/microblaze.h), one past the hard registers; ++ column 15 above keeps the interrupted r15. */ ++ fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__] = REG_SAVED_OFFSET; ++ fs->regs.reg[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__].loc.offset ++ = (_Unwind_Ptr) &sc->regs.pc - new_cfa; ++ fs->retaddr_column = __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__; ++ fs->signal_frame = 1; ++ ++ return _URC_NO_REASON; ++} ++ ++#endif +--- a/src/libgcc/config/rs6000/freebsd-unwind.h ++++ b/src/libgcc/config/rs6000/freebsd-unwind.h +@@ -24,6 +24,14 @@ + + #define R_LR 65 + ++#ifdef __powerpc64__ ++#if _CALL_ELF == 2 ++#define TOC_SAVE_SLOT 24 ++#else ++#define TOC_SAVE_SLOT 40 ++#endif ++#endif ++ + #define MD_FROB_UPDATE_CONTEXT frob_update_context + + static void +@@ -40,9 +48,13 @@ frob_update_context (struct _Unwind_Context *context, + figure out if it was saved. The big problem here is that the + code that does the save/restore is generated by the linker, so + we have no good way to determine at compile time what to do. */ +- if (pc[0] == 0xF8410028 ++ if (pc[0] == 0xF8410000 + TOC_SAVE_SLOT ++#if _CALL_ELF != 2 ++ /* The ELFv2 linker never generates the old PLT stub form. */ + || ((pc[0] & 0xFFFF0000) == 0x3D820000 +- && pc[1] == 0xF8410028)) ++ && pc[1] == 0xF8410000 + TOC_SAVE_SLOT) ++#endif ++ ) + { + /* We are in a plt call stub or r2 adjusting long branch stub, + before r2 has been saved. Keep REG_UNSAVED. */ +@@ -51,18 +63,21 @@ frob_update_context (struct _Unwind_Context *context, + { + unsigned int *insn + = (unsigned int *) _Unwind_GetGR (context, R_LR); +- if (insn && *insn == 0xE8410028) +- _Unwind_SetGRPtr (context, 2, context->cfa + 40); ++ if (insn && *insn == 0xE8410000 + TOC_SAVE_SLOT) ++ _Unwind_SetGRPtr (context, 2, context->cfa + TOC_SAVE_SLOT); ++#if _CALL_ELF != 2 ++ /* ELFv2 does not use this function pointer call sequence. */ + else if (pc[0] == 0x4E800421 +- && pc[1] == 0xE8410028) ++ && pc[1] == 0xE8410000 + TOC_SAVE_SLOT) + { + /* We are at the bctrl instruction in a call via function + pointer. gcc always emits the load of the new R2 just + before the bctrl so this is the first and only place + we need to use the stored R2. */ + _Unwind_Word sp = _Unwind_GetGR (context, 1); +- _Unwind_SetGRPtr (context, 2, (void *)(sp + 40)); ++ _Unwind_SetGRPtr (context, 2, (void *)(sp + TOC_SAVE_SLOT)); + } ++#endif + } + } + #endif +--- a/src/libgcc/config/t-darwin-ehs ++++ b/src/libgcc/config/t-darwin-ehs +@@ -3,5 +3,5 @@ + + LIBEHSOBJS = unwind-dw2_s.o unwind-dw2-fde-darwin_s.o unwind-c_s.o + +-unwind-dw2_s.o: gthr-default.h md-unwind-support.h unwind.h ++unwind-dw2_s.o: gthr-default.h md-unwind-support.h md-unwind-def.h unwind.h + $(LIBEHSOBJS): libgcc_tm.h +--- a/src/libgfortran/ChangeLog ++++ b/src/libgfortran/ChangeLog +@@ -1,3 +1,23 @@ ++2026-07-10 Jerry DeLisle ++ ++ Backported from master: ++ 2026-07-08 Jerry DeLisle ++ ++ PR libfortran/126116 ++ * io/io.h (struct gfc_unit): Add bool for tracking. ++ Fix some white space problems. ++ * io/unit.c (close_unit_1): Add a declaration for this ++ function so it can be called before it has been defined. ++ Use the new bool. ++ (is_internal_reserved): New helper function. Returns true ++ only if the unit is not null and the internal unit kind is zero ++ meaning its not a character string. ++ (find_unit): Use the new helper function ++ (find_or_create_unit): Use the new helper. ++ (get_unit): Set the new bool. ++ (close_unit): Update the close_unit_1 argument list. ++ (close_units): Likewise. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libgfortran/io/io.h ++++ b/src/libgfortran/io/io.h +@@ -534,7 +534,7 @@ typedef struct st_parameter_dt + character string is being read so don't use commas to shorten a + formatted field width. */ + unsigned sf_read_comma : 1; +- /* A namelist specific flag used to enable reading input from ++ /* A namelist specific flag used to enable reading input from + line_buffer for logical reads. */ + unsigned line_buffer_enabled : 1; + /* An internal unit specific flag used to identify that the associated +@@ -648,7 +648,7 @@ typedef struct gfc_unit + { + int unit_number; + stream *s; +- ++ + /* Treap links. */ + struct gfc_unit *left, *right; + int priority; +@@ -705,10 +705,10 @@ typedef struct gfc_unit + + /* The format hash table. */ + struct format_hash_entry format_hash_table[FORMAT_HASH_SIZE]; +- ++ + /* Formatting buffer. */ + struct fbuf *fbuf; +- ++ + /* Function pointer, points to list_read worker functions. */ + int (*next_char_fn_ptr) (st_parameter_dt *); + void (*push_char_fn_ptr) (st_parameter_dt *, int); +@@ -719,6 +719,9 @@ typedef struct gfc_unit + gfc_array_char *string_unit_desc; + int internal_unit_kind; + ++ /* Track when a gfc_unit is reserved for an internal unit. */ ++ bool internal_reserved; ++ + /* DTIO Parent/Child procedure, 0 = parent, >0 = child level. */ + int child_dtio; + +@@ -1012,7 +1015,7 @@ predec_waiting_locked (gfc_unit *u) + + if (predec_waiting_locked (u) == 0) + // destroy u +- ++ + could be further optimized by making this be an __ATOMIC_RELEASE, + and then inserting a + +--- a/src/libgfortran/io/unit.c ++++ b/src/libgfortran/io/unit.c +@@ -443,17 +443,45 @@ found: + } + + ++static int close_unit_1 (gfc_unit *, int, bool); ++ ++ ++/* Helper to check if an internal unit is reserved. */ ++ ++static inline bool ++is_internal_reserved (gfc_unit *u) ++{ ++ return u->internal_reserved && u->internal_unit_kind == 0; ++} ++ ++ + gfc_unit * + find_unit (int n) + { +- return get_gfc_unit (n, 0); ++ gfc_unit *u = get_gfc_unit (n, 0); ++ ++ if (u != NULL && is_internal_reserved (u)) ++ { ++ unlock_unit (u); ++ return NULL; ++ } ++ ++ return u; + } + + + gfc_unit * + find_or_create_unit (int n) + { +- return get_gfc_unit (n, 1); ++ gfc_unit *u = get_gfc_unit (n, 1); ++ ++ if (u != NULL && is_internal_reserved (u)) ++ { ++ close_unit_1 (u, 0, false); ++ u = get_gfc_unit (n, 1); ++ } ++ ++ return u; + } + + +@@ -589,6 +617,7 @@ get_unit (st_parameter_dt *dtp, int do_create) + dtp->u.p.unit_is_internal = 1; + dtp->common.unit = newunit_alloc (); + unit = get_gfc_unit (dtp->common.unit, do_create); ++ unit->internal_reserved = true; + set_internal_unit (dtp, unit, kind); + fbuf_init (unit, 128); + return unit; +@@ -751,7 +780,7 @@ init_units (void) + + + static int +-close_unit_1 (gfc_unit *u, int locked) ++close_unit_1 (gfc_unit *u, int locked, bool free_newunit) + { + int i, rc; + +@@ -781,7 +810,7 @@ close_unit_1 (gfc_unit *u, int locked) + free_format_hash_table (u); + fbuf_destroy (u); + +- if (u->unit_number <= NEWUNIT_START) ++ if (free_newunit && u->unit_number <= NEWUNIT_START) + newunit_free (u->unit_number); + + if (!locked) +@@ -817,7 +846,7 @@ unlock_unit (gfc_unit *u) + int + close_unit (gfc_unit *u) + { +- return close_unit_1 (u, 0); ++ return close_unit_1 (u, 0, true); + } + + +@@ -833,7 +862,7 @@ close_units (void) + { + WRLOCK (&unit_rwlock); + while (unit_root != NULL) +- close_unit_1 (unit_root, 1); ++ close_unit_1 (unit_root, 1, true); + RWUNLOCK (&unit_rwlock); + + free (newunits); +--- a/src/libsanitizer/ChangeLog ++++ b/src/libsanitizer/ChangeLog +@@ -1,3 +1,12 @@ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-20 Jakub Jelinek ++ ++ PR sanitizer/126307 ++ * tsan/tsan_trace.h: Cherry-pick llvm-project revision ++ cdfdb06c9155080ec97d6e4f4dd90b6e7cefb0ca. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libsanitizer/tsan/tsan_trace.h ++++ b/src/libsanitizer/tsan/tsan_trace.h +@@ -190,7 +190,7 @@ struct Trace { + Mutex mtx; + IList parts; + // First node non-queued into ctx->trace_part_recycle. +- TracePart* local_head; ++ TracePart* local_head = nullptr; + // Final position in the last part for finished threads. + Event* final_pos = nullptr; + // Number of trace parts allocated on behalf of this trace specifically. +--- a/src/libstdc++-v3/ChangeLog ++++ b/src/libstdc++-v3/ChangeLog +@@ -1,3 +1,266 @@ ++2026-09-14 Jonathan Wakely ++ ++ Backported from master: ++ 2026-09-10 Jonathan Wakely ++ ++ PR libstdc++/127220 ++ * include/std/format (__format::_Arg_t): Move definition ++ earlier. ++ (basic_format_parse_context::check_dynamic_spec): Construct ++ array of _Arg_t from template parameter list. ++ (basic_format_parse_context::check_dynamic_spec_integral): ++ Construct array of _Arg_t based on supported types. ++ (basic_format_parse_context::check_dynamic_spec_string): ++ Likewise. ++ (basic_format_parse_context::__check_dynamic_spec): Replace ++ template parameter list with span function ++ parameter and simplify accordingly. Define in class body. ++ (basic_format_parse_context::_Scan_parse_context): New struct ++ the replaces _Scanner::_Parse_context. ++ (__format::_Scanner::_M_pc): Change type to _Scan_parse_context. ++ ++2026-09-14 Steven Sudit ++ ++ Backported from master: ++ 2026-09-09 Steven Sudit ++ ++ PR libstdc++/127219 ++ * include/std/format ++ (basic_format_parse_context::__valid_types_for_check_dynamic_spec): ++ Make static, so that the static_assert in check_dynamic_spec does ++ not use this. ++ ++2026-09-14 Tomasz Kamiński ++ ++ Backported from master: ++ 2026-09-10 Tomasz Kamiński ++ Marco Falke ++ ++ PR libstdc++/126949 ++ * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash) ++ (_Hashtable_base::_M_equal, _Hashtable_alloc::_M_alloc): ++ Value initialized members in NSDMI. ++ * testsuite/23_containers/unordered_map/cons/default.cc: Check ++ default construction with an hash, equality and allocator with ++ explicit constructor. ++ * testsuite/23_containers/unordered_set/cons/default.cc: Likewise. ++ ++2026-09-07 Tomasz Kamiński ++ ++ Backported from master: ++ 2026-08-27 Tomasz Kamiński ++ ++ PR libstdc++/123510 ++ * src/c++20/tzdb.cc (at_time::is_indicator): Add case labels ++ for uppercase letters. ++ (operator>>(istream&, years_from_to)): Check for 'M' and 'O', ++ (chrono::reload_tzdb): Add case labels for lowercase letters, ++ and normalize first letter of type. ++ (operator>>(istream&, abbrev_month&)): Match all cases in ++ switch and days_chars. ++ (operator>>(istream&, on_month_day&)): Check for 'L'. ++ * testsuite/std/time/tzdb/name_matching.cc: New test. ++ ++2026-09-07 Tomasz Kamiński ++ ++ Backported from master: ++ 2026-09-07 Tomasz Kamiński ++ ++ PR libstdc++/118665 ++ * include/bits/uniform_int_dist.h (uniform_int_distribution::_S_nd): ++ Substract __min (_Urbg::min()) from each generator invocation. ++ * testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc: ++ Add testDiscreteDist for shifted (with non-zero min()) engine. ++ ++2026-09-05 Pietro Monteiro ++ ++ Backported from master: ++ 2026-08-17 Pietro Monteiro ++ ++ * config/os/bsd/openbsd/ctype_base.h: Use static_cast when ++ setting the masks. ++ ++2026-09-05 Pietro Monteiro ++ ++ Backported from master: ++ 2026-08-15 Pietro Monteiro ++ ++ * config/os/bsd/openbsd/ctype_base.h: Use _CTYPE prefixed ++ macros if available. ++ ++2026-08-25 Jonathan Wakely ++ ++ Backported from master: ++ 2026-08-24 Jonathan Wakely ++ ++ PR libstdc++/127006 ++ * include/std/spanstream (basic_ospanstream(span, openmode)): ++ Add correct openmode value to parameter. ++ * testsuite/27_io/spanstream/127006.cc: New test. ++ ++2026-08-18 Jonathan Wakely ++ ++ Backported from master: ++ 2026-07-29 Jonathan Wakely ++ ++ PR libstdc++/126452 ++ * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Use LC_ALL_C and ++ match both "Warning" and "warning" in ld output. ++ * configure: Regenerate. ++ ++2026-08-17 Jonathan Wakely ++ ++ Backported from master: ++ 2026-08-17 Jonathan Wakely ++ ++ PR libstdc++/126849 ++ * include/std/numbers: Fix preprocessor check for ++ std::bfloat16_t support. ++ ++2026-08-01 Jakub Jelinek ++ ++ Backported from master: ++ 2026-07-28 Jakub Jelinek ++ ++ * include/bits/deque.tcc (std::__uninitialized_copy_a): Remove unused ++ variable __sres. ++ ++2026-07-31 Tomasz Kamiński ++ ++ Backported from master: ++ 2026-07-20 Tomasz Kamiński ++ ++ PR libstdc++/116110 ++ * src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Correct ++ condition for stopping zone expansion before STD zone. ++ * testsuite/std/time/time_zone/116110.cc (test_dawson): ++ Add test for America/Dawson August 1945 transition. ++ ++2026-07-31 Tomasz Kamiński ++ ++ Backported from master: ++ 2026-05-18 Tomasz Kamiński ++ ++ PR libstdc++/124852 ++ * src/c++20/tzdb.cc (on_month_day::on_day_t, on_month_day::on_day): ++ Remove. ++ (operator>>(istream&, on_month_day::day_t&)): Inlined into... ++ (operator>>(istream&, on_month_day)): Inlined on_month_day::on_day. ++ Avoid modifying on.month if MONTH is not present. Report failure ++ on failure to parse day for LessEq / GreaterEq. ++ ++2026-07-31 Álvaro Begué ++ ++ Backported from master: ++ 2026-05-13 Álvaro Begué ++ Tomasz Kamiński ++ ++ PR libstdc++/124852 ++ * src/c++20/tzdb.cc (on_day): Rename to... ++ (on_day_month): Rename from on_day. ++ (on_day_month::on_day_t, on_day_month::on_day): Define. ++ (operator>>(istream&, on_day_t&&)): Factored out of ++ operator>>(istream&, on_day&). ++ (operator>>(istream&, on_day&)): Use on_day_t parser. ++ (operator>>(istream&, ZoneInfo&)): Replace the integer DAY ++ parser with on_day_t for the UNTIL field. ++ * testsuite/std/time/time_zone/until_day_on.cc: New test. ++ ++2026-07-29 Álvaro Begué ++ ++ Backported from master: ++ 2026-05-13 Álvaro Begué ++ ++ PR libstdc++/124851 ++ * src/c++20/tzdb.cc (ZoneInfo::ZoneInfo(sys_info&&)): Store ++ stdoff only in m_offset (subtract info.save). ++ (ZoneInfo::ZoneInfo(const pair&)): ++ Likewise. ++ (ZoneInfo::offset()): Document new semantics. ++ (ZoneInfo::to(sys_info&)): Add m_save back to offset() when ++ populating sys_info::offset. ++ * testsuite/std/time/time_zone/numeric_save.cc: New test. ++ ++2026-07-16 Jonathan Wakely ++ ++ Backported from master: ++ 2026-07-15 Jonathan Wakely ++ ++ PR libstdc++/126111 ++ * include/std/format (__format::__write_escape_seq): Remove ++ unnecessary alias declaration. ++ * include/std/spanstream (wspanbuf, wispanstream, wospanstream) ++ (wspanstream): Only declare for _GLIBCXX_USE_WCHAR_T. ++ * include/std/syncstream (wsyncbuf wosyncstream): Likewise. ++ * src/c++23/std.cc.in: Add preprocessor checks for ++ _GLIBCXX_USE_WCHAR_T to names which depend on it. ++ ++2026-07-02 Yi Chen ++ ++ Backported from master: ++ 2026-07-01 Yi Chen ++ ++ * src/c++11/random.cc (random_device::_M_init): Add signature_HYGON_ebx to ++ the RDSEED and RDRAND CPUID vendor allowlists. For the default device on ++ Hygon, prefer RDRAND via a dedicated check at the top of the function. ++ ++2026-07-02 Jonathan Wakely ++ ++ Backported from master: ++ 2026-06-25 Jonathan Wakely ++ ++ PR libstdc++/125956 ++ * src/c++20/format.cc [_GLIBCXX_HAVE_ICONV] (iconv_input): New ++ concept. ++ (__encoding::conv) [_GLIBCXX_HAVE_ICONV]: Use iconv_input to ++ decide which type to cast the input pointer to. ++ ++2026-07-02 Jonathan Wakely ++ ++ Backported from master: ++ 2026-06-24 Jonathan Wakely ++ ++ PR libstdc++/118158 ++ * testsuite/27_io/filesystem/operations/pr118158.cc: Add ++ dg-require-mkfifo. ++ ++2026-06-25 Jakub Jelinek ++ ++ Backported from master: ++ 2026-06-25 Jakub Jelinek ++ ++ * src/c++23/Makefile.am (stamp-modules-bits): Use abs_builddir instead ++ of abs_srcdir. ++ * src/c++23/Makefile.in: Regenerate. ++ ++2026-06-24 Alexandre Oliva ++ ++ Backported from master: ++ 2026-06-24 Alexandre Oliva ++ ++ * src/c++23/Makefile.am (libstdc++.modules.json): Rewrite ++ without abspath make function. ++ (stamp-modules-bits): Likewise. ++ * src/c++23/Makefile.in: Rebuilt. ++ ++2026-06-23 Jonathan Wakely ++ ++ Backported from master: ++ 2026-06-23 Jonathan Wakely ++ ++ * include/bits/chrono.h (std::chrono_literals): Fix typo in ++ comment. ++ ++2026-06-23 Jonathan Wakely ++ ++ Backported from master: ++ 2026-06-23 Jonathan Wakely ++ ++ * doc/xml/manual/debug_mode.xml: Remove 404 link to stlport ++ website and modernise some text about debug modes in other ++ implementations. ++ * doc/html/manual/debug_mode_design.html: Regenerate. ++ + 2026-06-12 Release Manager + + * GCC 15.3.0 released. +--- a/src/libstdc++-v3/acinclude.m4 ++++ b/src/libstdc++-v3/acinclude.m4 +@@ -253,8 +253,8 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[[Ww]]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +--- a/src/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h ++++ b/src/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h +@@ -42,17 +42,33 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + +- static const mask upper = _U; +- static const mask lower = _L; +- static const mask alpha = _U | _L; +- static const mask digit = _N; +- static const mask xdigit = _N | _X; +- static const mask space = _S; +- static const mask print = _P | _U | _L | _N | _B; +- static const mask graph = _P | _U | _L | _N; +- static const mask cntrl = _C; +- static const mask punct = _P; +- static const mask alnum = _U | _L | _N; ++#ifdef _CTYPE_S ++ // OpenBSD 7.5 uses this style of define. ++ static const mask upper = static_cast(_CTYPE_U); ++ static const mask lower = static_cast(_CTYPE_L); ++ static const mask alpha = static_cast(_CTYPE_U | _CTYPE_L); ++ static const mask digit = static_cast(_CTYPE_N); ++ static const mask xdigit = static_cast(_CTYPE_N | _CTYPE_X); ++ static const mask space = static_cast(_CTYPE_S); ++ static const mask print = static_cast(_CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B); ++ static const mask graph = static_cast(_CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N); ++ static const mask cntrl = static_cast(_CTYPE_C); ++ static const mask punct = static_cast(_CTYPE_P); ++ static const mask alnum = static_cast(_CTYPE_U | _CTYPE_L | _CTYPE_N); ++#else ++ // Older versions use this style. ++ static const mask upper = static_cast(_U); ++ static const mask lower = static_cast(_L); ++ static const mask alpha = static_cast(_U | _L); ++ static const mask digit = static_cast(_N); ++ static const mask xdigit = static_cast(_N | _X); ++ static const mask space = static_cast(_S); ++ static const mask print = static_cast(_P | _U | _L | _N | _B); ++ static const mask graph = static_cast(_P | _U | _L | _N); ++ static const mask cntrl = static_cast(_C); ++ static const mask punct = static_cast(_P); ++ static const mask alnum = static_cast(_U | _L | _N); ++#endif + #if __cplusplus >= 201103L + static const mask blank = space; + #endif +--- a/src/libstdc++-v3/configure ++++ b/src/libstdc++-v3/configure +@@ -23015,8 +23015,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -28882,8 +28882,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -32061,8 +32061,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -38279,8 +38279,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -38567,8 +38567,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -39032,8 +39032,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -42474,8 +42474,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -45869,8 +45869,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +@@ -46082,8 +46082,8 @@ rm -f core conftest.err conftest.$ac_objext \ + rm -f conftest.c + touch conftest.c + if $CC -c conftest.c; then +- if $LD --gc-sections -o conftest conftest.o 2>&1 | \ +- grep "Warning: gc-sections option ignored" > /dev/null; then ++ if LC_ALL=C $LD --gc-sections -o conftest conftest.o 2>&1 | \ ++ grep "[Ww]arning: gc-sections option ignored" > /dev/null; then + ac_gcsections=no + fi + fi +--- a/src/libstdc++-v3/doc/html/manual/debug_mode_design.html ++++ b/src/libstdc++-v3/doc/html/manual/debug_mode_design.html +@@ -390,16 +390,18 @@ test02() + Library (STL), implemented by Cay S. Horstmann on top of the + Hewlett-Packard STL. Though it inspired much work in this area, it + has not been kept up-to-date for use with modern compilers or C++ +- standard library implementations.

  • STLport: STLport is a free ++ standard library implementations.

  • STLport: STLport was a free + implementation of the C++ standard library derived from the SGI implementation, and +- ported to many other platforms. It includes a debug mode that uses a ++ ported to many other platforms. It included a debug mode that used a + wrapper model (that in some ways inspired the libstdc++ debug mode +- design), although at the time of this writing the debug mode is +- somewhat incomplete and meets only the "Full user recompilation" (2) ++ design), although its debug mode was ++ somewhat incomplete and met only the "Full user recompilation" (2) + recompilation guarantee by requiring the user to link against a + different library in debug mode vs. release mode.

  • Metrowerks CodeWarrior: The C++ standard library +- that ships with Metrowerks CodeWarrior includes a debug mode. It is ++ that shipped with Metrowerks CodeWarrior included a debug mode. It was + a full debug-mode implementation (including debugging for +- CodeWarrior extensions) and is easy to use, although it meets only ++ CodeWarrior extensions) and was easy to use, although it met only + the "Full recompilation" (1) recompilation +- guarantee.

  • Prev Up Next
    Using Home Chapter 18. Parallel Mode
    +\ No newline at end of file ++ guarantee.

  • The MSVC STL and LLVM libc++ implementations of the ++ C++ Standard Library both include some form of debug mode. ++

  • +\ No newline at end of file +--- a/src/libstdc++-v3/doc/xml/manual/debug_mode.xml ++++ b/src/libstdc++-v3/doc/xml/manual/debug_mode.xml +@@ -883,21 +883,25 @@ test02() + has not been kept up-to-date for use with modern compilers or C++ + standard library implementations. + +- STLport: STLport is a free ++ STLport: STLport was a free + implementation of the C++ standard library derived from the SGI implementation, and +- ported to many other platforms. It includes a debug mode that uses a ++ ported to many other platforms. It included a debug mode that used a + wrapper model (that in some ways inspired the libstdc++ debug mode +- design), although at the time of this writing the debug mode is +- somewhat incomplete and meets only the "Full user recompilation" (2) ++ design), although its debug mode was ++ somewhat incomplete and met only the "Full user recompilation" (2) + recompilation guarantee by requiring the user to link against a + different library in debug mode vs. release mode. + + Metrowerks CodeWarrior: The C++ standard library +- that ships with Metrowerks CodeWarrior includes a debug mode. It is ++ that shipped with Metrowerks CodeWarrior included a debug mode. It was + a full debug-mode implementation (including debugging for +- CodeWarrior extensions) and is easy to use, although it meets only ++ CodeWarrior extensions) and was easy to use, although it met only + the "Full recompilation" (1) recompilation + guarantee. ++ ++ The MSVC STL and LLVM libc++ implementations of the ++ C++ Standard Library both include some form of debug mode. ++ + + + +--- a/src/libstdc++-v3/include/bits/chrono.h ++++ b/src/libstdc++-v3/include/bits/chrono.h +@@ -1352,7 +1352,7 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2) + * for example `1.5e2ms` might be equivalent to + * `chrono::duration(1.5e2)`. + * +- * @since C+14 ++ * @since C++14 + * @ingroup chrono + */ + inline namespace chrono_literals +--- a/src/libstdc++-v3/include/bits/deque.tcc ++++ b/src/libstdc++-v3/include/bits/deque.tcc +@@ -1567,7 +1567,6 @@ _GLIBCXX_END_NAMESPACE_CONTAINER + __n = __last._M_cur - __from; + else + __n = __first._M_last - __from; +- _OTp* __sres = __result._M_cur; + __n = std::min(__n, __result._M_last - __result._M_cur); + std::uninitialized_copy(__from, __from + __n, __result._M_cur); + __first += __n; +--- a/src/libstdc++-v3/include/bits/hashtable_policy.h ++++ b/src/libstdc++-v3/include/bits/hashtable_policy.h +@@ -1053,7 +1053,8 @@ namespace __detail + { return _M_hash._M_obj; } + + protected: +- [[__no_unique_address__]] _Hashtable_ebo_helper<_Hash> _M_hash{}; ++ [[__no_unique_address__]] ++ _Hashtable_ebo_helper<_Hash> _M_hash = _Hashtable_ebo_helper<_Hash>(); + + using __hash_code = size_t; + +@@ -1390,7 +1391,8 @@ namespace __detail + using __hash_code = typename __hash_code_base::__hash_code; + + protected: +- [[__no_unique_address__]] _Hashtable_ebo_helper<_Equal> _M_equal{}; ++ [[__no_unique_address__]] ++ _Hashtable_ebo_helper<_Equal> _M_equal = _Hashtable_ebo_helper<_Equal>(); + + _Hashtable_base() = default; + +@@ -1472,7 +1474,8 @@ namespace __detail + struct _Hashtable_alloc + { + private: +- [[__no_unique_address__]] _Hashtable_ebo_helper<_NodeAlloc> _M_alloc{}; ++ [[__no_unique_address__]] ++ _Hashtable_ebo_helper<_NodeAlloc> _M_alloc = _Hashtable_ebo_helper<_NodeAlloc>(); + + template + struct __get_value_type; +--- a/src/libstdc++-v3/include/bits/uniform_int_dist.h ++++ b/src/libstdc++-v3/include/bits/uniform_int_dist.h +@@ -262,18 +262,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + static_assert(!_Wp_traits::__is_signed, "W must be unsigned"); + static_assert(_Wp_traits::__digits == (2 * _Up_traits::__digits), + "W must be twice as wide as U"); ++ constexpr auto __min = _Urbg::min(); + + // reference: Fast Random Integer Generation in an Interval + // ACM Transactions on Modeling and Computer Simulation 29 (1), 2019 + // https://arxiv.org/abs/1805.10941 +- _Wp __product = _Wp(__g()) * _Wp(__range); ++ _Wp __product = _Wp(__g() - __min) * _Wp(__range); + _Up __low = _Up(__product); + if (__low < __range) + { + _Up __threshold = -__range % __range; + while (__low < __threshold) + { +- __product = _Wp(__g()) * _Wp(__range); ++ __product = _Wp(__g() - __min) * _Wp(__range); + __low = _Up(__product); + } + } +--- a/src/libstdc++-v3/include/std/format ++++ b/src/libstdc++-v3/include/std/format +@@ -266,6 +266,25 @@ namespace __format + + template class _Scanner; + ++ enum _Arg_t : unsigned char { ++ _Arg_none, _Arg_bool, _Arg_c, _Arg_i, _Arg_u, _Arg_ll, _Arg_ull, ++ _Arg_flt, _Arg_dbl, _Arg_ldbl, _Arg_str, _Arg_sv, _Arg_ptr, _Arg_handle, ++ _Arg_i128, _Arg_u128, ++ _Arg_bf16, _Arg_f16, _Arg_f32, _Arg_f64, // These are unused. ++#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT ++ _Arg_next_value_, ++ _Arg_f128 = _Arg_ldbl, ++ _Arg_ibm128 = _Arg_next_value_, ++#else ++ _Arg_f128, ++#endif ++ _Arg_max_ ++ }; ++ ++ template ++ consteval _Arg_t ++ __to_arg_t_enum() noexcept; ++ + } // namespace __format + /// @endcond + +@@ -326,7 +345,7 @@ namespace __format + __format::__invalid_arg_id_in_format_string(); + } + +-#if __cpp_lib_format >= 202305L ++#if __cpp_lib_format >= 202305L // >= C++26 + template + constexpr void + check_dynamic_spec(size_t __id) noexcept +@@ -334,17 +353,22 @@ namespace __format + static_assert(__valid_types_for_check_dynamic_spec<_Ts...>(), + "template arguments for check_dynamic_spec(id) " + "must be unique and must be one of the allowed types"); +- if consteval { +- __check_dynamic_spec<_Ts...>(__id); +- } ++ if constexpr (sizeof...(_Ts)) ++ if consteval { ++ const __format::_Arg_t __t[] = { ++ __format::__to_arg_t_enum<_CharT, _Ts>()... ++ }; ++ __check_dynamic_spec(__id, __t); ++ } + } + + constexpr void + check_dynamic_spec_integral(size_t __id) noexcept + { + if consteval { +- __check_dynamic_spec(__id); ++ using enum __format::_Arg_t; ++ const __format::_Arg_t __t[] = { _Arg_i, _Arg_u, _Arg_ll, _Arg_ull }; ++ __check_dynamic_spec(__id, __t); + } + } + +@@ -352,7 +376,9 @@ namespace __format + check_dynamic_spec_string(size_t __id) noexcept + { + if consteval { +- __check_dynamic_spec>(__id); ++ using enum __format::_Arg_t; ++ const __format::_Arg_t __t[] = { _Arg_str, _Arg_sv }; ++ __check_dynamic_spec(__id, __t); + } + } + +@@ -362,7 +388,7 @@ namespace __format + static constexpr bool __once = (is_same_v<_Tp, _Ts> + ...) == 1; + + template +- consteval bool ++ static consteval bool + __valid_types_for_check_dynamic_spec() + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS +@@ -392,14 +418,31 @@ namespace __format + } + } + +- template +- consteval void +- __check_dynamic_spec(size_t __id) noexcept; ++ // Common implementation of check_dynamic_spec{,_string,_integral} ++ consteval void ++ __check_dynamic_spec(size_t __id, ++ span __types) noexcept ++ { ++ if (__id >= _M_num_args) ++ __format::__invalid_arg_id_in_format_string(); ++ ++ // This static_cast is safe because all parse contexts created by the ++ // library are _Scan_parse_context (or a type derived from that). ++ // User code can only create basic_format_parse_context objects with ++ // _M_num_args == 0 and those will be rejected by the condition above. ++ if (auto* __args = static_cast<_Scan_parse_context*>(this)->_M_types) ++ { ++ for (auto __t : __types) ++ if (__args[__id] == __t) ++ return; ++ ++ __invalid_dynamic_spec("arg(id) type does not match"); ++ } ++ // else this is a formatting scanner, do not do any type checks. ++ } + + // This must not be constexpr. + static void __invalid_dynamic_spec(const char*); +- +- friend __format::_Scanner<_CharT>; + #endif + + // This constructor should only be used by the implementation. +@@ -416,6 +459,18 @@ namespace __format + _Indexing _M_indexing = _Unknown; + size_t _M_next_arg_id = 0; + size_t _M_num_args = 0; ++ ++ // Derived parse context used by Scanner when checking format strings. ++ struct _Scan_parse_context; ++ friend __format::_Scanner<_CharT>; ++ }; ++ ++ template ++ struct basic_format_parse_context<_CharT>::_Scan_parse_context ++ : basic_format_parse_context<_CharT> ++ { ++ using basic_format_parse_context<_CharT>::basic_format_parse_context; ++ const __format::_Arg_t* _M_types = nullptr; + }; + + /// @cond undocumented +@@ -1011,7 +1066,6 @@ namespace __format + __write_escape_seq(_Out __out, uint_least32_t __val, + basic_string_view<_CharT> __prefix) + { +- using _Str_view = basic_string_view<_CharT>; + constexpr size_t __max = 8; + char __buf[__max]; + const string_view __narrow( +@@ -1026,10 +1080,10 @@ namespace __format + #ifdef _GLIBCXX_USE_WCHAR_T + else + { +- _CharT __wbuf[__max]; ++ wchar_t __wbuf[__max]; + const size_t __n = __narrow.size(); + std::__to_wstring_numeric(__narrow.data(), __n, __wbuf); +- __out = __format::__write(__out, _Str_view(__wbuf, __n)); ++ __out = __format::__write(__out, wstring_view(__wbuf, __n)); + } + #endif + *__out = _Separators<_CharT>::_S_braces()[1]; +@@ -3565,21 +3619,6 @@ namespace __format + } + }; + +- enum _Arg_t : unsigned char { +- _Arg_none, _Arg_bool, _Arg_c, _Arg_i, _Arg_u, _Arg_ll, _Arg_ull, +- _Arg_flt, _Arg_dbl, _Arg_ldbl, _Arg_str, _Arg_sv, _Arg_ptr, _Arg_handle, +- _Arg_i128, _Arg_u128, +- _Arg_bf16, _Arg_f16, _Arg_f32, _Arg_f64, // These are unused. +-#ifdef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT +- _Arg_next_value_, +- _Arg_f128 = _Arg_ldbl, +- _Arg_ibm128 = _Arg_next_value_, +-#else +- _Arg_f128, +-#endif +- _Arg_max_ +- }; +- + template + struct _Arg_value + { +@@ -4445,11 +4484,7 @@ namespace __format + { + using iterator = typename basic_format_parse_context<_CharT>::iterator; + +- struct _Parse_context : basic_format_parse_context<_CharT> +- { +- using basic_format_parse_context<_CharT>::basic_format_parse_context; +- const _Arg_t* _M_types = nullptr; +- } _M_pc; ++ typename basic_format_parse_context<_CharT>::_Scan_parse_context _M_pc; + + constexpr explicit + _Scanner(basic_string_view<_CharT> __str, size_t __nargs = (size_t)-1) +@@ -4770,33 +4805,6 @@ namespace __format + } // namespace __format + /// @endcond + +-#if __cpp_lib_format >= 202305L // >= C++26 +- /// @cond undocumented +- // Common implementation of check_dynamic_spec{,_string,_integral} +- template +- template +- consteval void +- basic_format_parse_context<_CharT>:: +- __check_dynamic_spec(size_t __id) noexcept +- { +- if (__id >= _M_num_args) +- __format::__invalid_arg_id_in_format_string(); +- if constexpr (sizeof...(_Ts) != 0) +- { +- using _Parse_ctx = __format::_Scanner<_CharT>::_Parse_context; +- auto __arg = static_cast<_Parse_ctx*>(this)->_M_types[__id]; +- __format::_Arg_t __types[] = { +- __format::__to_arg_t_enum<_CharT, _Ts>()... +- }; +- for (auto __t : __types) +- if (__arg == __t) +- return; +- } +- __invalid_dynamic_spec("arg(id) type does not match"); +- } +- /// @endcond +-#endif +- + template + template + requires convertible_to> +--- a/src/libstdc++-v3/include/std/numbers ++++ b/src/libstdc++-v3/include/std/numbers +@@ -222,7 +222,7 @@ __glibcxx_numbers (_Float64, F64); + __glibcxx_numbers (_Float128, F128); + #endif + +-#ifdef __STDCPP_BFLOAT128_T__ ++#ifdef __STDCPP_BFLOAT16_T__ + __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16); + #endif + +--- a/src/libstdc++-v3/include/std/spanstream ++++ b/src/libstdc++-v3/include/std/spanstream +@@ -224,7 +224,9 @@ template + { __x.swap(__y); } + + using spanbuf = basic_spanbuf; ++#ifdef _GLIBCXX_USE_WCHAR_T + using wspanbuf = basic_spanbuf; ++#endif + + template + class basic_ispanstream +@@ -318,7 +320,9 @@ template + { __x.swap(__y); } + + using ispanstream = basic_ispanstream; ++#ifdef _GLIBCXX_USE_WCHAR_T + using wispanstream = basic_ispanstream; ++#endif + + template + class basic_ospanstream +@@ -338,7 +342,7 @@ template + basic_ospanstream(std::span<_CharT> __s, + ios_base::openmode __which = ios_base::out) + : __ostream_type(std::__addressof(_M_sb)), +- _M_sb(__s, __which | ios_base::in) ++ _M_sb(__s, __which | ios_base::out) + { } + + basic_ospanstream(const basic_ospanstream&) = delete; +@@ -388,7 +392,9 @@ template + { __x.swap(__y); } + + using ospanstream = basic_ospanstream; ++#ifdef _GLIBCXX_USE_WCHAR_T + using wospanstream = basic_ospanstream; ++#endif + + template + class basic_spanstream +@@ -458,7 +464,9 @@ template + { __x.swap(__y); } + + using spanstream = basic_spanstream; ++#ifdef _GLIBCXX_USE_WCHAR_T + using wspanstream = basic_spanstream; ++#endif + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace std +--- a/src/libstdc++-v3/include/std/syncstream ++++ b/src/libstdc++-v3/include/std/syncstream +@@ -309,10 +309,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { __x.swap(__y); } + + using syncbuf = basic_syncbuf; +- using wsyncbuf = basic_syncbuf; +- + using osyncstream = basic_osyncstream; ++#ifdef _GLIBCXX_USE_WCHAR_T ++ using wsyncbuf = basic_syncbuf; + using wosyncstream = basic_osyncstream; ++#endif + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace std + #endif // __cpp_lib_syncbuf +--- a/src/libstdc++-v3/src/c++11/random.cc ++++ b/src/libstdc++-v3/src/c++11/random.cc +@@ -390,14 +390,35 @@ namespace std _GLIBCXX_VISIBILITY(default) + } + #endif // _GLIBCXX_USE_CRT_RAND_S + ++#ifdef USE_RDRAND ++ // For the default device on Hygon prefer RDRAND (faster than RDSEED for ++ // bulk generation); an explicit "rdseed" token still selects rdseed below. ++ if (which == any) ++ { ++ unsigned int eax, ebx, ecx, edx; ++ if (__get_cpuid_max(0, &ebx) > 0 && ebx == signature_HYGON_ebx) ++ { ++ // CPUID.01H:ECX.RDRAND[bit 30] ++ __cpuid(1, eax, ebx, ecx, edx); ++ if (ecx & bit_RDRND) ++ { ++ _M_func = &__x86_rdrand; ++ return; ++ } ++ } ++ } ++#endif // USE_RDRAND ++ + #ifdef USE_RDSEED + if (which & rdseed) + { + unsigned int eax, ebx, ecx, edx; + // Check availability of cpuid and, for now at least, also the +- // CPU signature for Intel and AMD. ++ // CPU signature for Intel, AMD and Hygon. + if (__get_cpuid_max(0, &ebx) > 0 +- && (ebx == signature_INTEL_ebx || ebx == signature_AMD_ebx)) ++ && (ebx == signature_INTEL_ebx ++ || ebx == signature_AMD_ebx ++ || ebx == signature_HYGON_ebx)) + { + // CPUID.(EAX=07H, ECX=0H):EBX.RDSEED[bit 18] + __cpuid_count(7, 0, eax, ebx, ecx, edx); +@@ -425,9 +446,11 @@ namespace std _GLIBCXX_VISIBILITY(default) + { + unsigned int eax, ebx, ecx, edx; + // Check availability of cpuid and, for now at least, also the +- // CPU signature for Intel and AMD. ++ // CPU signature for Intel, AMD and Hygon. + if (__get_cpuid_max(0, &ebx) > 0 +- && (ebx == signature_INTEL_ebx || ebx == signature_AMD_ebx)) ++ && (ebx == signature_INTEL_ebx ++ || ebx == signature_AMD_ebx ++ || ebx == signature_HYGON_ebx)) + { + // CPUID.01H:ECX.RDRAND[bit 30] + __cpuid(1, eax, ebx, ecx, edx); +--- a/src/libstdc++-v3/src/c++20/format.cc ++++ b/src/libstdc++-v3/src/c++20/format.cc +@@ -58,6 +58,15 @@ struct mutex + }; + #endif + ++#ifdef _GLIBCXX_HAVE_ICONV ++// Detect whether type T* can be used as the second argument to iconv. ++// SUSv2 used 'const char**', but POSIX.1-2003 uses 'char**'. ++template ++ concept iconv_input = requires (::iconv_t cd, T in, size_t n, char** out) { ++ ::iconv(cd, &in, &n, out, &n); ++ }; ++#endif ++ + // A non-standard locale::facet that caches the locale's std::text_encoding + // and an iconv descriptor for converting from that encoding to UTF-8. + struct __encoding : locale::facet +@@ -111,8 +120,9 @@ struct __encoding : locale::facet + bool done = false; + + auto overwrite = [&](char* p, size_t n) { ++ using input_t = __conditional_t, char*, const char*>; + auto inbytes +- = const_cast(input.data()) + input.size() - inbytesleft; ++ = const_cast(input.data()) + input.size() - inbytesleft; + char* outbytes = p + written; + size_t outbytesleft = n - written; + size_t res = ::iconv(_M_cd, &inbytes, &inbytesleft, +--- a/src/libstdc++-v3/src/c++20/tzdb.cc ++++ b/src/libstdc++-v3/src/c++20/tzdb.cc +@@ -206,7 +206,7 @@ namespace std::chrono + constinit atomic tzdb_list::_Node::_S_head_cache{nullptr}; + #endif + +- // The data structures defined in this file (Rule, on_day, at_time etc.) ++ // The data structures defined in this file (Rule, on_month_day, at_time etc.) + // are used to represent the information parsed from the tzdata.zi file + // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES + +@@ -250,14 +250,20 @@ namespace std::chrono + switch (c) + { + case 's': ++ case 'S': + return {Standard, true}; + case 'u': ++ case 'U': + case 'g': ++ case 'G': + case 'z': ++ case 'Z': + return {Universal, true}; + case 'w': ++ case 'W': + return {Wall, true}; + case 'd': ++ case 'D': + return {Daylight, true}; + default: + return {Wall, false}; +@@ -295,7 +301,7 @@ namespace std::chrono + }; + + // The IN and ON fields of a RULE record, e.g. "March lastSunday". +- struct on_day ++ struct on_month_day + { + using rep = uint_least16_t; + // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday, +@@ -359,7 +365,8 @@ namespace std::chrono + return ymd; + } + +- friend istream& operator>>(istream&, on_day&); ++ ++ friend istream& operator>>(istream&, on_month_day&); + }; + + // Wrapper for two chrono::year values, which reads the FROM and TO +@@ -376,7 +383,7 @@ namespace std::chrono + { + string s; + auto c = ws(in).peek(); +- if (c == 'm') [[unlikely]] // keyword "minimum" ++ if (c == 'm' || c == 'M') [[unlikely]] // keyword "minimum" + { + in >> s; // extract the rest of the word + yy.from = year(1900); +@@ -385,12 +392,12 @@ namespace std::chrono + yy.from = year{num}; + + c = ws(in).peek(); +- if (c == 'm') // keyword "maximum" ++ if (c == 'm' || c == 'M') // keyword "maximum" + { + in >> s; // extract the rest of the word + yy.to = year::max(); + } +- else if (c == 'o') // keyword "only" ++ else if (c == 'o' || c == 'O') // keyword "only" + { + in >> s; // extract the rest of the word + yy.to = yy.from; +@@ -470,12 +477,13 @@ namespace std::chrono + + ZoneInfo(sys_info&& info) + : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save), +- m_offset(info.offset), m_until(info.end) ++ m_offset(info.offset - seconds(info.save)), m_until(info.end) + { } + + ZoneInfo(const pair& info) +- : m_expanded(true), m_save(info.first.save), m_offset(info.first.offset), +- m_until(info.first.end) ++ : m_expanded(true), m_save(info.first.save), ++ m_offset(info.first.offset - seconds(info.first.save)), ++ m_until(info.first.end) + { + if (info.second.size()) + { +@@ -486,7 +494,7 @@ namespace std::chrono + m_buf += info.first.abbrev; + } + +- // STDOFF: Seconds from UTC during standard time. ++ // STDOFF: Seconds from UTC during standard time (without any save). + seconds + offset() const noexcept { return m_offset; } + +@@ -531,7 +539,7 @@ namespace std::chrono + return false; + + info.end = until(); +- info.offset = offset(); ++ info.offset = offset() + seconds(m_save); + info.save = minutes(m_save); + info.abbrev = format(); + format_abbrev_str(info); // expand %z +@@ -581,9 +589,9 @@ namespace std::chrono + // A RULE record from the tzdata.zi timezone info file. + struct Rule + { +- // This allows on_day to reuse padding of at_time. ++ // This allows on_month_day to reuse padding of at_time. + // This keeps the size to 8 bytes and the alignment to 4 bytes. +- struct datetime : at_time { on_day day; }; ++ struct datetime : at_time { on_month_day day; }; + + // TODO combining name+letters into a single string (like in ZoneInfo) + // would save sizeof(string) and make Rule fit in a single cacheline. +@@ -645,17 +653,17 @@ namespace std::chrono + << ' ' << r.when.day.get_month() << ' '; + switch (r.when.day.kind) + { +- case on_day::DayOfMonth: ++ case on_month_day::DayOfMonth: + out << (unsigned)r.when.day.get_day(); + break; +- case on_day::LastWeekday: ++ case on_month_day::LastWeekday: + out << "last" << weekday(r.when.day.day_of_week); + break; +- case on_day::LessEq: ++ case on_month_day::LessEq: + out << weekday(r.when.day.day_of_week) << " <= " + << r.when.day.day_of_month; + break; +- case on_day::GreaterEq: ++ case on_month_day::GreaterEq: + out << weekday(r.when.day.day_of_week) << " >= " + << r.when.day.day_of_month; + break; +@@ -1008,10 +1016,10 @@ namespace std::chrono + result_index = new_infos.size() - 1; + else if (result_index >= 0 && !merged) + { +- // Finish on a DST sys_info if possible, so that if we resume ++ // Finish before a STD sys_info if possible, so that if we resume + // generating sys_info objects after this time point, save=0 + // should be correct for the next sys_info. +- if (num_after > 1 || info.save != 0min) ++ if (num_after > 1 || !next_rule || next_rule->save == 0s) + --num_after; + } + +@@ -1530,28 +1538,37 @@ namespace std::chrono + { + case '#': + break; ++ case 'r': + case 'R': + { + // Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S + is >> type; // extract the "Rule" or "R" marker ++ type[0] = 'R'; ++ + Rule rule; + is >> rule; + node->rules.push_back(std::move(rule)); + break; + } ++ case 'l': + case 'L': + { + // Link TARGET LINK-NAME + is >> type; // extract the "Link" or "L" marker ++ type[0] = 'L'; ++ + time_zone_link link(nullptr); + is >> quoted(link._M_target) >> quoted(link._M_name); + node->db.links.push_back(std::move(link)); + break; + } ++ case 'z': + case 'Z': + { + // Zone NAME STDOFF RULES FORMAT [UNTIL] + is >> type; // extract the "Zone" or "Z" marker ++ type[0] = 'Z'; ++ + time_zone tz(std::make_unique(node)); + is >> quoted(tz._M_name); + node->db.zones.push_back(time_zone(std::move(tz))); +@@ -1935,60 +1952,76 @@ namespace std::chrono + in >> s; + switch (s[0]) + { ++ case 'j': + case 'J': + switch (s[1]) + { + case 'a': ++ case 'A': + am.m = January; + return in; + case 'u': ++ case 'U': + switch (s[2]) + { + case 'n': ++ case 'N': + am.m = June; + return in; + case 'l': ++ case 'L': + am.m = July; + return in; + } + break; + } + break; ++ case 'f': + case 'F': + am.m = February; + return in; ++ case 'm': + case 'M': +- if (s[1] == 'a') [[likely]] ++ if (s[1] == 'a' || s[1] == 'A') [[likely]] + switch (s[2]) + { + case 'r': ++ case 'R': + am.m = March; + return in; + case 'y': ++ case 'Y': + am.m = May; + return in; + } + break; ++ case 'a': + case 'A': + switch (s[1]) + { + case 'p': ++ case 'P': + am.m = April; + return in; + case 'u': ++ case 'U': + am.m = August; + return in; + } + break; ++ case 's': + case 'S': + am.m = September; + return in; ++ case 'o': + case 'O': + am.m = October; + return in; ++ case 'n': + case 'N': + am.m = November; + return in; ++ case 'd': + case 'D': + am.m = December; + return in; +@@ -2012,37 +2045,46 @@ namespace std::chrono + // Just peek at one char at a time. + switch (in.peek()) + { ++ case 'm': + case 'M': + aw.wd = Monday; + break; ++ case 't': + case 'T': + in.ignore(1); // Discard the 'T' + switch (in.peek()) + { + case 'u': ++ case 'U': + aw.wd = Tuesday; + break; + case 'h': ++ case 'H': + aw.wd = Thursday; + break; + default: + in.setstate(ios::failbit); + } + break; ++ case 'w': + case 'W': + aw.wd = Wednesday; + break; ++ case 'f': + case 'F': + aw.wd = Friday; + break; ++ case 's': + case 'S': + in.ignore(1); // Discard the 'S' + switch (in.peek()) + { + case 'a': ++ case 'A': + aw.wd = Saturday; + break; + case 'u': ++ case 'U': + aw.wd = Sunday; + break; + default: +@@ -2055,7 +2097,7 @@ namespace std::chrono + in.ignore(1); // Discard whichever char we just looked at. + + // Discard any remaining chars from weekday, e.g. "onday". +- string_view day_chars = "ondayesritu"; ++ string_view day_chars = "ondayesrituONDAYESRITU"; + auto is_day_char = [&day_chars](int c) { + return c != char_traits::eof() + && day_chars.find((char)c) != day_chars.npos; +@@ -2067,55 +2109,49 @@ namespace std::chrono + } + }; + +- istream& operator>>(istream& in, on_day& to) ++ // Read the MONTH DAY. Three forms are accepted for DAY: ++ // * a plain day-of-month number (DayOfMonth), ++ // * "lastWww" where Www is a weekday name (LastWeekday), ++ // * "Www<=N" or "Www>=N" (LessEq / GreaterEq). ++ // On failure to read either MONTH or DAY this function sets ++ // failbit. If DAY is not parsed, only `on.month` is modified, ++ // otherwise `on` is left unchanged. ++ istream& operator>>(istream& in, on_month_day& on) + { +- on_day on{}; +- abbrev_month m{}; +- in >> m; +- on.month = static_cast(m.m); +- int c = ws(in).peek(); +- if ('0' <= c && c <= '9') +- { +- on.kind = on_day::DayOfMonth; +- unsigned d; +- in >> d; +- if (d <= 31) [[likely]] +- { +- on.day_of_month = d; +- to = on; +- return in; +- } +- } +- else if (c == 'l') // lastSunday, lastWed, ... ++ using enum on_month_day::Kind; ++ if (abbrev_month m{}; in >> m) + { +- in.ignore(4); +- if (abbrev_weekday w{}; in >> w) [[likely]] ++ on.month = static_cast(m.m); ++ if (int c = ws(in).peek(); '0' <= c && c <= '9') + { +- on.kind = on_day::LastWeekday; +- on.day_of_week = w.wd.c_encoding(); +- to = on; +- return in; ++ if (unsigned d; (in >> d) && (d <= 31)) [[likely]] ++ { ++ on.kind = DayOfMonth; ++ on.day_of_month = d; ++ return in; ++ } + } +- } +- else +- { +- abbrev_weekday w; +- in >> w; +- if (auto c = in.get(); c == '<' || c == '>') ++ else if (c == 'l' || c == 'L') // lastSunday, lastWed, ... + { +- if (in.get() == '=') ++ in.ignore(4); ++ if (abbrev_weekday w{}; in >> w) [[likely]] + { +- on.kind = c == '<' ? on_day::LessEq : on_day::GreaterEq; ++ on.kind = LastWeekday; + on.day_of_week = w.wd.c_encoding(); +- unsigned d; +- in >> d; +- if (d <= 31) [[likely]] ++ return in; ++ } ++ } ++ else if (abbrev_weekday w; in >> w) [[likely]] ++ { ++ if (c = in.get(); c == '<' || c == '>') ++ if (in.get() == '=') ++ if (unsigned d; (in >> d) && (d <= 31)) [[likely]] + { ++ on.kind = c == '<' ? LessEq : GreaterEq; ++ on.day_of_week = w.wd.c_encoding(); + on.day_of_month = d; +- to = on; + return in; + } +- } + } + } + in.setstate(ios::failbit); +@@ -2224,12 +2260,12 @@ namespace std::chrono + in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent. + if (int y = int(year::max()); in >> y) + { +- abbrev_month m{January}; +- int d = 1; ++ on_month_day on{ .kind = on_month_day::DayOfMonth, ++ .month = 1, .day_of_month = 1 }; + at_time t{}; +- // XXX DAY should support ON format, e.g. lastSun or Sun>=8 +- in >> m >> d >> t; +- inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time); ++ in >> on >> t; ++ year_month_day ymd = on.pin(year(y)); ++ inf.m_until = sys_days(ymd) + seconds(t.time); + if (t.indicator != at_time::Universal) + { // UNTIL uses "the rules in effect just before the transition" + // adjust by STDOFF +--- a/src/libstdc++-v3/src/c++23/Makefile.am ++++ b/src/libstdc++-v3/src/c++23/Makefile.am +@@ -34,8 +34,8 @@ includebits_DATA = std.cc std.compat.cc + # The manifest to be installed uses the relative path between install dirs. + libstdc++.modules.json: libstdc++.modules.json.in + relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \ +- $(abspath $(toolexeclibdir)) \ +- $(abspath $(includebitsdir))) && \ ++ $(toolexeclibdir) \ ++ $(includebitsdir)) && \ + sed "s,@MODPATH@,$$relpath," $< > $@ + + # The uninstalled manifest uses the relative path to builddir. +@@ -54,7 +54,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in + # Also put the interface units in the build-includes bits directory. + stamp-modules-bits: $(includebits_DATA) + @-mkdir -p $(top_builddir)/include/bits +- -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null ++ -for f in $(includebits_DATA); do \ ++ $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \ ++ done 2>/dev/null + @$(STAMP) $@ + + all-local: stamp-module-manifest stamp-modules-bits +--- a/src/libstdc++-v3/src/c++23/Makefile.in ++++ b/src/libstdc++-v3/src/c++23/Makefile.in +@@ -827,8 +827,8 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA + # The manifest to be installed uses the relative path between install dirs. + libstdc++.modules.json: libstdc++.modules.json.in + relpath=$$($(toplevel_srcdir)/contrib/relpath.sh \ +- $(abspath $(toolexeclibdir)) \ +- $(abspath $(includebitsdir))) && \ ++ $(toolexeclibdir) \ ++ $(includebitsdir)) && \ + sed "s,@MODPATH@,$$relpath," $< > $@ + + # The uninstalled manifest uses the relative path to builddir. +@@ -847,7 +847,9 @@ std.compat.cc: std.compat.cc.in std-clib.cc.in + # Also put the interface units in the build-includes bits directory. + stamp-modules-bits: $(includebits_DATA) + @-mkdir -p $(top_builddir)/include/bits +- -cd $(top_builddir)/include/bits && $(LN_S) $(abspath $?) . 2>/dev/null ++ -for f in $(includebits_DATA); do \ ++ $(LN_S) $(abs_builddir)/$$f $(top_builddir)/include/bits; \ ++ done 2>/dev/null + @$(STAMP) $@ + + all-local: stamp-module-manifest stamp-modules-bits +--- a/src/libstdc++-v3/src/c++23/std.cc.in ++++ b/src/libstdc++-v3/src/c++23/std.cc.in +@@ -1329,17 +1329,19 @@ export namespace std + #endif + using std::formatter; + using std::make_format_args; +- using std::make_wformat_args; + #if __cpp_lib_format >= 202311L // >= C++26 + using std::runtime_format; + #endif + using std::vformat; + using std::vformat_to; + using std::visit_format_arg; ++#ifdef _GLIBCXX_USE_WCHAR_T ++ using std::make_wformat_args; + using std::wformat_args; + using std::wformat_context; + using std::wformat_parse_context; + using std::wformat_string; ++#endif + #ifdef __cpp_lib_format_ranges + using std::format_kind; + using std::range_format; +@@ -1374,10 +1376,12 @@ export namespace std + using std::ifstream; + using std::ofstream; + using std::swap; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wfilebuf; + using std::wfstream; + using std::wifstream; + using std::wofstream; ++#endif + } + + // +@@ -1564,7 +1568,9 @@ export namespace std + using std::streamsize; + using std::unitbuf; + using std::uppercase; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wios; ++#endif + } + + // +@@ -1583,9 +1589,11 @@ export namespace std + using std::basic_syncbuf; + using std::osyncstream; + using std::syncbuf; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wosyncstream; + using std::wsyncbuf; + #endif ++#endif + } + + // +@@ -1595,10 +1603,12 @@ export namespace std + using std::cin; + using std::clog; + using std::cout; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wcerr; + using std::wcin; + using std::wclog; + using std::wcout; ++#endif + } + + // +@@ -1608,8 +1618,10 @@ export namespace std + using std::basic_istream; + using std::iostream; + using std::istream; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wiostream; + using std::wistream; ++#endif + using std::ws; + using std::operator>>; + } +@@ -2116,7 +2128,9 @@ export namespace std + using std::ends; + using std::flush; + using std::ostream; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wostream; ++#endif + using std::operator<<; + #ifdef __cpp_lib_syncbuf + using std::emit_on_flush; +@@ -2537,9 +2551,11 @@ export namespace std + using std::ssub_match; + using std::sub_match; + using std::swap; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wcsub_match; + using std::wregex; + using std::wssub_match; ++#endif + using std::operator==; + using std::operator<=>; + using std::operator<<; +@@ -2555,20 +2571,24 @@ export namespace std + using std::smatch; + using std::sregex_iterator; + using std::sregex_token_iterator; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wcmatch; + using std::wcregex_iterator; + using std::wcregex_token_iterator; + using std::wsmatch; + using std::wsregex_iterator; + using std::wsregex_token_iterator; ++#endif + namespace pmr + { + #if _GLIBCXX_USE_CXX11_ABI + using std::pmr::cmatch; + using std::pmr::match_results; + using std::pmr::smatch; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::pmr::wcmatch; + using std::pmr::wsmatch; ++#endif + #endif + } + } +@@ -2637,17 +2657,19 @@ export namespace std + export namespace std + { + using std::basic_spanbuf; +- using std::spanbuf; +- using std::wspanbuf; + using std::basic_ispanstream; +- using std::ispanstream; +- using std::wispanstream; + using std::basic_ospanstream; +- using std::ospanstream; +- using std::wospanstream; + using std::basic_spanstream; ++ using std::spanbuf; ++ using std::ispanstream; ++ using std::ospanstream; + using std::spanstream; ++#ifdef _GLIBCXX_USE_WCHAR_T ++ using std::wspanbuf; ++ using std::wispanstream; ++ using std::wospanstream; + using std::wspanstream; ++#endif + } + #endif + +@@ -2663,10 +2685,12 @@ export namespace std + using std::stringbuf; + using std::stringstream; + using std::swap; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wistringstream; + using std::wostringstream; + using std::wstringbuf; + using std::wstringstream; ++#endif + } + + // +@@ -2761,7 +2785,9 @@ export namespace std + { + using std::basic_streambuf; + using std::streambuf; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wstreambuf; ++#endif + } + + // +@@ -2788,7 +2814,9 @@ export namespace std + using std::stoull; + using std::string; + using std::to_string; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::to_wstring; ++#endif + using std::u16string; + using std::u32string; + using std::u8string; +@@ -2853,9 +2881,11 @@ export namespace std + using std::basic_osyncstream; + using std::osyncstream; + using std::syncbuf; ++#ifdef _GLIBCXX_USE_WCHAR_T + using std::wosyncstream; + using std::wsyncbuf; + #endif ++#endif + } + + // 19.5 +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc +@@ -49,3 +49,52 @@ Map4 m4{m}; + Map4 m5{m, a}; + Map4 m6{std::move(m)}; + Map4 m7{std::move(m6), a}; ++ ++// PR libstdc++/126949 ++struct ExplicitHash ++{ ++ explicit ExplicitHash(bool = false) { } ++ ++ std::size_t operator()(int value) const ++ { return value; } ++}; ++ ++struct ExplicitEqual ++{ ++ explicit ExplicitEqual(bool = false) { } ++ ++ bool operator()(int lhs, int rhs) const ++ { return lhs == rhs; } ++}; ++ ++template ++ struct ExplicitAlloc ++ { ++ using value_type = T; ++ ++ explicit ExplicitAlloc(bool = false) noexcept { } ++ ++ template ++ ExplicitAlloc(const ExplicitAlloc&) { } ++ ++ T *allocate(std::size_t n) ++ { return std::allocator().allocate(n); } ++ ++ void deallocate(T *p, std::size_t n) ++ { std::allocator().deallocate(p, n); } ++ ++ bool operator==(const ExplicitAlloc&) const { return true; } ++ bool operator!=(const ExplicitAlloc&) const { return false; } ++ }; ++ ++void ++test_hash() ++{ ++ std::unordered_map map1; ++ std::unordered_map, ExplicitEqual> map2; ++ std::unordered_map, std::equal_to, ++ ExplicitAlloc>> map3; ++ std::unordered_map>> map4; ++ ++} +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc +@@ -48,3 +48,51 @@ Set4 s4{s}; + Set4 s5{s, a}; + Set4 s6{std::move(s)}; + Set4 s7{std::move(s6), a}; ++ ++// PR libstdc++/126949 ++struct ExplicitHash ++{ ++ explicit ExplicitHash(bool = false) { } ++ ++ std::size_t operator()(int value) const ++ { return value; } ++}; ++ ++struct ExplicitEqual ++{ ++ explicit ExplicitEqual(bool = false) { } ++ ++ bool operator()(int lhs, int rhs) const ++ { return lhs == rhs; } ++}; ++ ++template ++ struct ExplicitAlloc ++ { ++ using value_type = T; ++ ++ explicit ExplicitAlloc(bool = false) noexcept { } ++ ++ template ++ ExplicitAlloc(const ExplicitAlloc&) { } ++ ++ T *allocate(std::size_t n) ++ { return std::allocator().allocate(n); } ++ ++ void deallocate(T *p, std::size_t n) ++ { std::allocator().deallocate(p, n); } ++ ++ bool operator==(const ExplicitAlloc&) const { return true; } ++ bool operator!=(const ExplicitAlloc&) const { return false; } ++ }; ++ ++void ++test_explicit_hash() ++{ ++ std::unordered_set set1; ++ std::unordered_set, ExplicitEqual> set2; ++ std::unordered_set, std::equal_to, ++ ExplicitAlloc> set3; ++ std::unordered_set> set4; ++} +--- a/src/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc ++++ b/src/libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc +@@ -21,6 +21,7 @@ + // 26.5.8.2.1 Class template uniform_int_distribution [rand.dist.uni.int] + + #include ++#include + #include + #include + +@@ -32,6 +33,19 @@ + # define ARGS + #endif + ++template ++struct shifted ++{ ++ using result_type = std::uint64_t; ++ static constexpr result_type min() { return Offset; } ++ static constexpr result_type max() { return Offset + std::mt19937::max(); } ++ ++ result_type operator()() ++ { return Offset + eng(); } ++ ++ std::mt19937 eng; ++}; ++ + void test01() + { + using namespace __gnu_test; +@@ -49,6 +63,14 @@ void test01() + std::uniform_int_distribution<> uid3(1, 20); + auto buid3 = std::bind(uid3, eng); + testDiscreteDist(buid3, [](int n) { return uniform_int_pdf(n, 1, 20); } ); ++ ++ shifted<(std::uint64_t(1) << 16)> s16e; ++ auto buid4 = std::bind(uid3, s16e); ++ testDiscreteDist(buid4, [](int n) { return uniform_int_pdf(n, 1, 20); } ); ++ ++ shifted<(std::uint64_t(1) << 32)> s32e; ++ auto buid5 = std::bind(uid3, s32e); ++ testDiscreteDist(buid5, [](int n) { return uniform_int_pdf(n, 1, 20); } ); + } + + int main() +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/operations/pr118158.cc +@@ -1,5 +1,6 @@ + // { dg-do run { target c++17 } } + // { dg-require-filesystem-ts "" } ++// { dg-require-mkfifo "" } + + #include + #include +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/27_io/spanstream/127006.cc +@@ -0,0 +1,30 @@ ++// { dg-do run { target c++23 } } ++ ++#include ++#include ++ ++void ++test_pr127006_out() ++{ ++ // PR libstdc++/127006 ++ char buf[3]{}; ++ std::ospanstream s(buf, std::ios::openmode{}); ++ VERIFY( s << 'x' ); ++ VERIFY( buf[0] == 'x' ); ++} ++ ++void ++test_pr127006_in() ++{ ++ char buf[3]{'x'}; ++ std::ispanstream s(buf, std::ios::openmode{}); ++ char x; ++ VERIFY( s >> x ); ++ VERIFY( x == 'x' ); ++} ++ ++int main() ++{ ++ test_pr127006_out(); ++ test_pr127006_in(); ++} +--- a/src/libstdc++-v3/testsuite/std/time/time_zone/116110.cc ++++ b/src/libstdc++-v3/testsuite/std/time/time_zone/116110.cc +@@ -78,9 +78,50 @@ test_apia() + VERIFY( info.abbrev == "+14" ); + } + ++void ++test_dawson() ++{ ++ /* 1945 August rule change changes letters (abbrev) ++ and remains in DST: ++ R Y 1942 o - F 9 2 1 W ++ R Y 1945 o - Au 14 23u 1 P ++ R Y 1945 o - S 30 2 0 S ++ Z America/Dawson -9:17:40 - LMT 1900 Au 20 ++ -9 Y Y%sT 1965 ++ -9 Yu Y%sT 1973 O 28 ++ */ ++ ++ auto* tz = locate_zone("America/Dawson"); ++ ++ // Triggers rule transitions from the start. ++ sys_info info = tz->get_info(sys_days(1900y/August/20) + 10h); ++ VERIFY( info.offset == -9h ); ++ VERIFY( info.save == 0min ); ++ VERIFY( info.abbrev == "YST" ); ++ ++ // Check YWT transition at 02:00 + 9h UT, that is DST ++ info = tz->get_info(sys_days(1942y/February/9) + 11h); ++ VERIFY( info.offset == -8h ); ++ VERIFY( info.save == 60min ); ++ VERIFY( info.abbrev == "YWT" ); ++ ++ // Check YPT transition at 23:00 UT, remains DST ++ info = tz->get_info(sys_days(1945y/August/14) + 23h); ++ VERIFY( info.offset == -8h ); ++ VERIFY( info.save == 60min ); ++ VERIFY( info.abbrev == "YPT" ); ++ ++ // Check YST transition at 02:00 + 8h UT, switches to STD ++ info = tz->get_info(sys_days(1945y/September/30) + 10h); ++ VERIFY( info.offset == -9h ); ++ VERIFY( info.save == 0min ); ++ VERIFY( info.abbrev == "YST" ); ++} ++ + int main() + { + test_broken_hill(); + test_kiritimati(); + test_apia(); ++ test_dawson(); + } +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc +@@ -0,0 +1,58 @@ ++// { dg-do run { target c++20 } } ++// { dg-require-effective-target tzdb } ++// { dg-require-effective-target cxx11_abi } ++// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } } ++ ++// When a Zone line specifies a numeric value as its RULES field, that ++// value is the constant DST save value for that zone line. Per ++// [time.zone.info.sys] sys_info::offset is the total UTC offset ++// (stdoff + save). ++ ++#include ++#include ++#include ++ ++static bool override_used = false; ++ ++namespace __gnu_cxx ++{ ++ const char* zoneinfo_dir_override() { ++ override_used = true; ++ return "./"; ++ } ++} ++ ++int ++main() ++{ ++ using namespace std::chrono; ++ ++ std::ofstream("tzdata.zi") << R"(# version test_numeric_save ++Z Test/Gaborone 2 - CAT 1943 Sep 19 2 ++ 2 1 CAST 1944 Mar 19 2 ++ 2 - CAT ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_numeric_save" ); ++ ++ auto* tz = locate_zone("Test/Gaborone"); ++ ++ // Sample well inside the CAST (numeric-save) zone line. ++ auto info = tz->get_info(sys_days(1943y/December/15)); ++ VERIFY( info.offset == 3h ); // stdoff +2h + save +1h ++ VERIFY( info.save == 60min ); ++ VERIFY( info.abbrev == "CAST" ); ++ ++ // Bordering zone lines should report the standard offset with save 0. ++ auto before = tz->get_info(sys_days(1943y/September/1)); ++ VERIFY( before.offset == 2h ); ++ VERIFY( before.save == 0min ); ++ VERIFY( before.abbrev == "CAT" ); ++ ++ auto after = tz->get_info(sys_days(1944y/April/15)); ++ VERIFY( after.offset == 2h ); ++ VERIFY( after.save == 0min ); ++ VERIFY( after.abbrev == "CAT" ); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc +@@ -0,0 +1,222 @@ ++// { dg-do run { target c++20 } } ++// { dg-require-effective-target tzdb } ++// { dg-require-effective-target cxx11_abi } ++// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } } ++ ++// The DAY portion of a Zone line's UNTIL field accepts not only a ++// numeric day-of-month but also "lastXxx" (last weekday in the month) ++// and "Xxx<=N" / "Xxx>=N" forms, just like the ON field of a Rule line. ++// ++// Real-world example: Europe/Simferopol has ++// 3 - MSK 1997 Mar lastSu 1u ++// which places the boundary on 1997-03-30 (the last Sunday of March). ++ ++#include ++#include ++#include ++ ++static bool override_used = false; ++ ++namespace __gnu_cxx ++{ ++ const char* zoneinfo_dir_override() { ++ override_used = true; ++ return "./"; ++ } ++} ++ ++void ++test_lastsu() ++{ ++ using namespace std::chrono; ++ ++ std::ofstream("tzdata.zi") << R"(# version test_lastsu ++Z Test/LastSu 3 - MSK 1997 Mar lastSu 1u ++ 3 - X ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_lastsu" ); ++ ++ auto* tz = locate_zone("Test/LastSu"); ++ ++ // True boundary: 1997-03-30 01:00 UTC (lastSu of March 1997 is Mar 30, ++ // and the indicator is 'u' = Universal so no offset adjustment). ++ sys_seconds boundary = sys_days{1997y/March/30} + 1h; ++ ++ // Just before: still in the MSK line. ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "MSK" ); ++ VERIFY( before.offset == 3h ); ++ ++ // At/after the boundary: in the X line. ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "X" ); ++ ++ // Check that the lastSu day is parsed correctly, and not defaulted ++ // to the 1st: a March 15 query must still be in the MSK line. ++ auto mid_march = tz->get_info(sys_days{1997y/March/15}); ++ VERIFY( mid_march.abbrev == "MSK" ); ++ VERIFY( mid_march.offset == 3h ); ++} ++ ++void ++test_sun_ge_n() ++{ ++ using namespace std::chrono; ++ ++ std::ofstream("tzdata.zi") << R"(# version test_sun_ge_n ++Z Test/SunGE 0 - A 1990 Jun Sun>=8 0u ++ 0 - B ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_sun_ge_n" ); ++ ++ auto* tz = locate_zone("Test/SunGE"); ++ ++ // First Sunday >= June 8 1990 = June 10 (June 8 1990 was a Friday). ++ sys_seconds boundary = sys_days{1990y/June/10}; ++ ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "A" ); ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "B" ); ++ ++ // Check that Sun>=8 is parsed correctly, and not defaulted to the 1st. ++ auto early = tz->get_info(sys_days{1990y/June/1}); ++ VERIFY( early.abbrev == "A" ); ++} ++ ++void ++test_sun_le_n() ++{ ++ using namespace std::chrono; ++ ++ std::ofstream("tzdata.zi") << R"(# version test_sun_le_n ++Z Test/SunLE 0 - A 1990 Jun Sun<=15 0u ++ 0 - B ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_sun_le_n" ); ++ ++ auto* tz = locate_zone("Test/SunLE"); ++ ++ // Last Sunday <= June 15 1990 = June 10. ++ sys_seconds boundary = sys_days{1990y/June/10}; ++ ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "A" ); ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "B" ); ++} ++ ++void ++test_year_only() ++{ ++ using namespace std::chrono; ++ ++ // MONTH, DAY and TIME default to January 1st 00:00 if not specified. ++ std::ofstream("tzdata.zi") << R"(# version test_year_only ++Z Test/YearOnly 0 - A 1990 ++ 0 - B ++Z Test/YearOnlyC 4 - C 1995 # comment ++ 4 - D ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_year_only" ); ++ ++ auto* tz = locate_zone("Test/YearOnly"); ++ sys_seconds boundary = sys_days{1990y/January/1}; ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "A" ); ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "B" ); ++ ++ tz = locate_zone("Test/YearOnlyC"); ++ boundary = sys_days{1995y/January/1} - 4h; ++ before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "C" ); ++ at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "D" ); ++} ++ ++void ++test_year_month_only() ++{ ++ using namespace std::chrono; ++ ++ // DAY and TIME default to the 1st 00:00 if not specified. ++ std::ofstream("tzdata.zi") << R"(# version test_year_month_only ++Z Test/YearMonth 0 - A 1990 Jul ++ 0 - B ++Z Test/YearMonthC 3 - C 1995 Apr # comment ++ 3 - D ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_year_month_only" ); ++ ++ auto* tz = locate_zone("Test/YearMonth"); ++ sys_seconds boundary = sys_days{1990y/July/1}; ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "A" ); ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "B" ); ++ ++ tz = locate_zone("Test/YearMonthC"); ++ boundary = sys_days{1995y/April/1} - 3h; ++ before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "C" ); ++ at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "D" ); ++} ++ ++void ++test_year_month_day_only() ++{ ++ using namespace std::chrono; ++ ++ std::ofstream("tzdata.zi") << R"(# version test_day_only ++Z Test/DayOnly 0 - A 1997 Mar 12 ++ 0 - B ++Z Test/DayOnlyC 5 - C 1998 Jun 14 # comment ++ 5 - D ++)"; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == "test_day_only" ); ++ ++ auto* tz = locate_zone("Test/DayOnly"); ++ sys_seconds boundary = sys_days{1997y/March/12}; ++ auto before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "A" ); ++ auto at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "B" ); ++ ++ tz = locate_zone("Test/DayOnlyC"); ++ boundary = sys_days{1998y/June/14} - 5h; ++ before = tz->get_info(boundary - 1s); ++ VERIFY( before.abbrev == "C" ); ++ at = tz->get_info(boundary); ++ VERIFY( at.abbrev == "D" ); ++} ++ ++int ++main() ++{ ++ test_lastsu(); ++ test_sun_ge_n(); ++ test_sun_le_n(); ++ test_year_only(); ++ test_year_month_only(); ++ test_year_month_day_only(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/std/time/tzdb/name_matching.cc +@@ -0,0 +1,318 @@ ++// { dg-do run { target c++20 } } ++// { dg-require-effective-target tzdb } ++// { dg-require-effective-target cxx11_abi } ++// { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } } ++ ++#include ++#include ++#include ++#include ++#include ++ ++static bool override_used = false; ++ ++namespace __gnu_cxx ++{ ++ const char* zoneinfo_dir_override() { ++ override_used = true; ++ return "./"; ++ } ++} ++ ++using namespace std::chrono; ++ ++template ++ void ++ test_combinations(Functor&& func, std::string_view txt, size_t min, Args&&... args) ++ { ++ std::string lower(txt); ++ std::string upper(txt); ++ for (char& c : upper) ++ c = std::toupper(c); ++ ++ func(lower.substr(0, min), args...); ++ func(upper.substr(0, min), args...); ++ func(lower, args...); ++ func(upper, args...); ++ } ++ ++void ++test_day(std::string_view name, weekday wd) ++{ ++ constexpr const char* templ = R"(# version test_day_{0} ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ Zone Test 0 - Z1 2000 May last{0} ++ 0 - Z2 2010 May {0}>=10 ++ 0 - Z3 ++ )"; ++ ++ std::string input = std::format(templ, name); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ ++ std::string_view ver = db.version; ++ VERIFY( ver.starts_with("test_day_") ); ++ ver.remove_prefix(9); ++ VERIFY( ver == name ); ++ ++ sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1)); ++ VERIFY( info.begin == sys_days(2000y/May/wd[last]) ); ++ year_month_day ymd(ceil(info.end)); ++ VERIFY( ymd.year() == 2010y ); ++ VERIFY( ymd.month() == May ); ++ VERIFY( ymd.day() >= day(10) ); ++ VERIFY( weekday(ymd) == wd ); ++} ++ ++void ++test_last(std::string_view name) ++{ ++ constexpr const char* templ = R"(# version test_{0} ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ Zone Test 0 - Z1 2000 July {0}Mon ++ 0 - Z3 ++ )"; ++ ++ std::string input = std::format(templ, name); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ ++ std::string_view ver = db.version; ++ VERIFY( ver.starts_with("test_") ); ++ ver.remove_prefix(5); ++ VERIFY( ver == name ); ++ ++ sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1)); ++ VERIFY( info.begin == sys_days(2000y/July/Monday[last]) ); ++} ++ ++void ++test_days() ++{ ++ test_combinations(test_day, "monday", 1, Monday); ++ test_combinations(test_day, "tuesday", 2, Tuesday); ++ test_combinations(test_day, "wednesday", 1, Wednesday); ++ test_combinations(test_day, "thursday", 2, Thursday); ++ test_combinations(test_day, "friday", 1, Friday); ++ test_combinations(test_day, "saturday", 2, Saturday); ++ test_combinations(test_day, "sunday", 2, Sunday); ++ ++ test_last("last"); ++ test_last("LAST"); ++} ++ ++void ++test_month(std::string_view name, month m) ++{ ++ constexpr const char* templ = R"(# version test_month_{0} ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ Zone Test 0 - Z1 2000 {0} 13 ++ 0 - Z2 2010 {0} ++ 0 - Z3 ++ )"; ++ ++ std::string input = std::format(templ, name); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ ++ std::string_view ver = db.version; ++ VERIFY( ver.starts_with("test_month_") ); ++ ver.remove_prefix(11); ++ VERIFY( ver == name ); ++ ++ sys_info info = locate_zone("Test")->get_info(sys_days(2005y/January/1)); ++ VERIFY( info.begin == sys_days(2000y/m/13) ); ++ VERIFY( info.end == sys_days(2010y/m/1) ); ++} ++ ++void ++test_months() ++{ ++ test_combinations(test_month, "january", 2, January); ++ test_combinations(test_month, "february", 1, February); ++ test_combinations(test_month, "march", 3, March); ++ test_combinations(test_month, "april", 2, April); ++ test_combinations(test_month, "may", 3, May); ++ test_combinations(test_month, "june", 3, June); ++ test_combinations(test_month, "july", 3, July); ++ test_combinations(test_month, "august", 3, August); ++ test_combinations(test_month, "september", 1, September); ++ test_combinations(test_month, "october", 1, October); ++ test_combinations(test_month, "november", 1, November); ++ test_combinations(test_month, "december", 1, December); ++} ++ ++void ++test_year(std::string_view min, std::string_view max, std::string_view only) ++{ ++ constexpr const char* templ = R"(# version {0} ++ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S ++ Rule Rule {1} 2020 - Jan 10 0u 0 S ++ Rule Rule 2000 {2} - Nov 12 0u 1 D ++ Rule Rule 2010 {3} - Aug 11 0u 2 O ++ Rule Rule 2020 {2} - Jan 13 0u 0 S ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ Zone Test 0 - Z1 1800 Jan 1 0u ++ 0 Rule Z%s 3001 Jan 1 0u ++ 0 - Zl ++ )"; ++ ++ const std::string ver = std::format("test_{}_{}_{}", min, max, only); ++ std::string input = std::format(templ, ver, min, max, only); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == ver ); ++ ++ const time_zone* zone = locate_zone("Test"); ++ ++ // min applies since 1900, check first transition ++ sys_info info = zone->get_info(sys_days(1900y/January/1)); ++ VERIFY( info.begin == sys_days(1800y/January/1) ); ++ VERIFY( info.end == sys_days(1900y/January/10) ); ++ ++ // Check 2010 only rule does not apply in 2009 ++ info = zone->get_info(sys_days(2009y/February/1)); ++ VERIFY( info.begin == sys_days(2009y/January/10) ); ++ VERIFY( info.end == sys_days(2009y/November/12) ); ++ ++ // Check 2010 only rule in 2010 ++ info = zone->get_info(sys_days(2010y/February/1)); ++ VERIFY( info.begin == sys_days(2010y/January/10) ); ++ VERIFY( info.end == sys_days(2010y/August/11) ); ++ ++ info = zone->get_info(sys_days(2010y/October/1)); ++ VERIFY( info.begin == sys_days(2010y/August/11) ); ++ VERIFY( info.end == sys_days(2010y/November/12) ); ++ ++ // Check 2010 only rule does not apply in 2011 ++ info = zone->get_info(sys_days(2011y/February/1)); ++ VERIFY( info.begin == sys_days(2011y/January/10) ); ++ VERIFY( info.end == sys_days(2011y/November/12) ); ++ ++ // max rule applies forever ++ info = zone->get_info(sys_days(2500y/February/1)); ++ VERIFY( info.begin == sys_days(2500y/January/13) ); ++ VERIFY( info.end == sys_days(2500y/November/12) ); ++ ++ info = zone->get_info(sys_days(3000y/December/1)); ++ VERIFY( info.begin == sys_days(3000y/November/12) ); ++ VERIFY( info.end == sys_days(3001y/January/1) ); ++} ++ ++void ++test_years() ++{ ++ test_year("min", "max", "only"); ++ test_year("m", "m", "o"); ++ test_year("MIN", "MAX", "ONLY"); ++ test_year("M", "M", "O"); ++} ++ ++void ++test_time(char s, char u, char w, char d) ++{ ++ constexpr const char* templ = R"(# version test_time_{0}{1}{2}{3} ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ Zone Test 1 0 Zs 2000 Jan 11 10{0} ++ 3 1 Zu 2005 Feb 12 11{1} ++ 5 1 Zw 2010 Mar 13 12{2} ++ 7 1 Zd 2015 Apr 14 13{3} ++ 9 0 Su 2020 May 15 14{1} ++ 10 0 Sw 2025 Jun 16 15{2} ++ 11 - Zl ++ )"; ++ ++ std::string input = std::format(templ, s, u, w, d); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ ++ std::string_view ver = db.version; ++ VERIFY( ver.starts_with("test_time_") ); ++ VERIFY( ver[10] == s ); ++ VERIFY( ver[11] == u ); ++ VERIFY( ver[12] == w ); ++ VERIFY( ver[13] == d ); ++ ++ const time_zone* zone = locate_zone("Test"); ++ sys_info info = zone->get_info(sys_days(2002y/January/1)); ++ VERIFY( info.begin == sys_days(2000y/January/11) + 10h - 1h ); ++ VERIFY( info.end == sys_days(2005y/February/12) + 11h ); ++ ++ info = zone->get_info(sys_days(2012y/January/1)); ++ VERIFY( info.begin == sys_days(2010y/March/13) + 12h - 6h ); ++ VERIFY( info.end == sys_days(2015y/April/14) + 13h - 8h ); ++ ++ info = zone->get_info(sys_days(2022y/January/1)); ++ VERIFY( info.begin == sys_days(2020y/May/15) + 14h ); ++ VERIFY( info.end == sys_days(2025y/June/16) + 15h - 10h ); ++} ++ ++void ++test_times() ++{ ++ test_time('s', 'u', 'w', 'd'); ++ test_time('S', 'U', 'W', 'D'); ++ // Alternate spelling for Universal ++ test_time('s', 'g', 'w', 'd'); ++ test_time('s', 'G', 'w', 'd'); ++ test_time('s', 'z', 'w', 'd'); ++ test_time('s', 'Z', 'w', 'd'); ++} ++ ++void ++test_line(std::string_view rule, std::string_view zone, std::string_view link) ++{ ++ constexpr const char* templ = R"(# version {0} ++ # Rule NAME FROM TO - IN ON AT SAVE LETTER/S ++ {1} Rule min max - Jan 13 0u 0 D ++ {1} Rule min max - Oct 12 0u 1 S ++ # Zone NAME STDOFF RULES FORMAT [UNTIL] ++ {2} Test 0 - Z1 2000 Jan 13 ++ 0 Rule Z%s ++ # Link TARGET LINK-NAME ++ {3} Test Link ++ )"; ++ ++ const std::string ver = std::format("test_{}_{}_{}", rule, zone, link); ++ std::string input = std::format(templ, ver, rule, zone, link); ++ std::ofstream("tzdata.zi") << input; ++ ++ const auto& db = reload_tzdb(); ++ VERIFY( override_used ); // If this fails then XFAIL for the target. ++ VERIFY( db.version == ver ); ++ ++ sys_info info = locate_zone("Test")->get_info(sys_days(2005y/February/1)); ++ VERIFY( info.begin == sys_days(2005y/January/13) ); ++ VERIFY( info.end == sys_days(2005y/October/12) ); ++ ++ const time_zone* target = locate_zone("Link"); ++ VERIFY( target->name() == "Test" ); ++} ++ ++void ++test_lines() ++{ ++ test_line("rule", "zone", "link"); ++ test_line("r", "z", "l"); ++ test_line("RULE", "ZONE", "LINK"); ++ test_line("R", "Z", "L"); ++} ++ ++int main() ++{ ++ test_days(); ++ test_months(); ++ test_years(); ++ test_times(); ++ test_lines(); ++} diff --git a/patches/gm2-texinfo.diff b/patches/gm2-texinfo.diff new file mode 100644 index 0000000..b7c1505 --- /dev/null +++ b/patches/gm2-texinfo.diff @@ -0,0 +1,30 @@ +# DP: gm2.texi: Define our own gcctabopt macro, needed for dfsg builds. + +--- a/src/gcc/doc/gm2.texi ++++ b/src/gcc/doc/gm2.texi +@@ -51,6 +51,25 @@ man page gfdl(7). + @versionsubtitle + @author Gaius Mulley + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @page + @vskip 0pt plus 1filll + Published by the Free Software Foundation @* diff --git a/patches/go-testsuite.diff b/patches/go-testsuite.diff new file mode 100644 index 0000000..b424eb5 --- /dev/null +++ b/patches/go-testsuite.diff @@ -0,0 +1,19 @@ +# DP: Skip Go testcase on AArch64 which hangs on the buildds. + +--- a/src/gcc/testsuite/go.test/go-test.exp ++++ b/src/gcc/testsuite/go.test/go-test.exp +@@ -460,6 +460,14 @@ proc go-gc-tests { } { + continue + } + ++ # Hangs on the buildds ++ if { [istarget "aarch64*-*-*"] } { ++ if { [file tail $test] == "pprof.go" } { ++ untested $test ++ continue ++ } ++ } ++ + if { [file tail $test] == "init1.go" } { + # This tests whether GC runs during init, which for gccgo + # it currently does not. diff --git a/patches/hppa64-libgcov-fallback.diff b/patches/hppa64-libgcov-fallback.diff new file mode 100644 index 0000000..58e4410 --- /dev/null +++ b/patches/hppa64-libgcov-fallback.diff @@ -0,0 +1,15 @@ +--- a/src/libgcc/libgcov.h ++++ b/src/libgcc/libgcov.h +@@ -45,6 +45,12 @@ + #include "libgcc_tm.h" + #include "gcov.h" + ++/* hppa64-linux-gnu does not have this header, use the fallback. */ ++#if defined(__LP64__) && defined(_PA_RISC2_0) ++#undef HAVE_SYS_MMAN_H ++#define HAVE_SYS_MMAN_H 0 ++#endif ++ + #if HAVE_SYS_MMAN_H + #include + #endif diff --git a/patches/hurd-changes.diff b/patches/hurd-changes.diff new file mode 100644 index 0000000..ca4d820 --- /dev/null +++ b/patches/hurd-changes.diff @@ -0,0 +1,20 @@ +# DP: Traditional GNU systems don't have a /usr directory. However, Debian +# DP: systems do, and we support both having a /usr -> . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. + +--- + config.gcc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. diff --git a/patches/hurd-multiarch.diff b/patches/hurd-multiarch.diff new file mode 100644 index 0000000..e45b1af --- /dev/null +++ b/patches/hurd-multiarch.diff @@ -0,0 +1,16 @@ +--- a/src/gcc/config/i386/t-gnu64 ++++ b/src/gcc/config/i386/t-gnu64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-gnu) ++endif diff --git a/patches/hurd-multilib-multiarch.diff b/patches/hurd-multilib-multiarch.diff new file mode 100644 index 0000000..5b9f167 --- /dev/null +++ b/patches/hurd-multilib-multiarch.diff @@ -0,0 +1,23 @@ +--- a/src/gcc/config/i386/t-gnu64 ++++ b/src/gcc/config/i386/t-gnu64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) diff --git a/patches/ignore-pie-specs-when-not-enabled.diff b/patches/ignore-pie-specs-when-not-enabled.diff new file mode 100644 index 0000000..8f5cc09 --- /dev/null +++ b/patches/ignore-pie-specs-when-not-enabled.diff @@ -0,0 +1,56 @@ +# DP: Ignore dpkg's pie specs when pie is not enabled. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3715,6 +3715,36 @@ handle_foffload_option (const char *arg) + } + } + ++static bool ignore_pie_specs_when_not_enabled(const char *envvar, ++ const char *specname) ++{ ++ const char *envval = secure_getenv(envvar); ++ char *hardening; ++ bool ignore; ++ ++ if (strstr (specname, "/pie-compile.specs") == NULL ++ && strstr (specname, "/pie-link.specs") == NULL) ++ return false; ++ if (envval == NULL || strstr (envval, "hardening=") == NULL) ++ return true; ++ ignore = true; ++ hardening = (char *) xmalloc (strlen(envval) + 1); ++ strcpy (hardening, strstr (envval, "hardening=")); ++ if (strchr (hardening, ' ')) ++ *strchr (hardening, ' ') = '\0'; ++ if (strstr(hardening, "+all")) ++ { ++ if (strstr(hardening, "-pie") == NULL) ++ ignore = false; ++ } ++ else if (strstr(hardening, "+pie")) ++ { ++ ignore = false; ++ } ++ free (hardening); ++ return ignore; ++} ++ + /* Handle a driver option; arguments and return value as for + handle_option. */ + +@@ -3989,6 +4019,12 @@ driver_handle_option (struct gcc_options + break; + + case OPT_specs_: ++ if (ignore_pie_specs_when_not_enabled("DEB_BUILD_MAINT_OPTIONS", arg) ++ && ignore_pie_specs_when_not_enabled("DEB_BUILD_OPTIONS", arg)) ++ { ++ inform (0, "pie specs %s ignored when pie is not enabled", arg); ++ return true; ++ } + { + struct user_specs *user = XNEW (struct user_specs); + diff --git a/patches/libasan-sparc.diff b/patches/libasan-sparc.diff new file mode 100644 index 0000000..4b52ac2 --- /dev/null +++ b/patches/libasan-sparc.diff @@ -0,0 +1,163 @@ +# DP: Re-apply sanitizer patch for sparc, dropped upstream + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. + +libsanitizer/ + +2014-10-14 David S. Miller + + * sanitizer_common/sanitizer_platform_limits_linux.cc (time_t): + Define at __kernel_time_t, as needed for sparc. + (struct __old_kernel_stat): Don't check if __sparc__ is defined. + * libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h + (__sanitizer): Define struct___old_kernel_stat_sz, + struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc. + (__sanitizer_ipc_perm): Adjust for sparc targets. + (__sanitizer_shmid_ds): Likewsie. + (__sanitizer_sigaction): Likewsie. + (IOC_SIZE): Likewsie. + +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216224) +@@ -72,6 +72,14 @@ + const unsigned struct_kernel_stat_sz = 144; + #endif + const unsigned struct_kernel_stat64_sz = 104; ++#elif defined(__sparc__) && defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 104; ++ const unsigned struct_kernel_stat64_sz = 144; ++#elif defined(__sparc__) && !defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 64; ++ const unsigned struct_kernel_stat64_sz = 104; + #endif + struct __sanitizer_perf_event_attr { + unsigned type; +@@ -94,7 +102,7 @@ + + #if defined(__powerpc64__) + const unsigned struct___old_kernel_stat_sz = 0; +-#else ++#elif !defined(__sparc__) + const unsigned struct___old_kernel_stat_sz = 32; + #endif + +@@ -173,6 +181,18 @@ + unsigned short __pad1; + unsigned long __unused1; + unsigned long __unused2; ++#elif defined(__sparc__) ++# if defined(__arch64__) ++ unsigned mode; ++ unsigned short __pad1; ++# else ++ unsigned short __pad1; ++ unsigned short mode; ++ unsigned short __pad2; ++# endif ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else + unsigned short mode; + unsigned short __pad1; +@@ -190,6 +210,26 @@ + + struct __sanitizer_shmid_ds { + __sanitizer_ipc_perm shm_perm; ++ #if defined(__sparc__) ++ # if !defined(__arch64__) ++ u32 __pad1; ++ # endif ++ long shm_atime; ++ # if !defined(__arch64__) ++ u32 __pad2; ++ # endif ++ long shm_dtime; ++ # if !defined(__arch64__) ++ u32 __pad3; ++ # endif ++ long shm_ctime; ++ uptr shm_segsz; ++ int shm_cpid; ++ int shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __glibc_reserved1; ++ unsigned long __glibc_reserved2; ++ #else + #ifndef __powerpc__ + uptr shm_segsz; + #elif !defined(__powerpc64__) +@@ -227,6 +267,7 @@ + uptr __unused4; + uptr __unused5; + #endif ++#endif + }; + #elif SANITIZER_FREEBSD + struct __sanitizer_ipc_perm { +@@ -523,9 +564,13 @@ + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ ++#if defined(__sparc__) ++ unsigned long sa_flags; ++#else + int sa_flags; + #endif + #endif ++#endif + #if SANITIZER_LINUX + void (*sa_restorer)(); + #endif +@@ -745,7 +790,7 @@ + + #define IOC_NRBITS 8 + #define IOC_TYPEBITS 8 +-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) ++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__) + #define IOC_SIZEBITS 13 + #define IOC_DIRBITS 3 + #define IOC_NONE 1U +@@ -775,7 +820,17 @@ + #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) + #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) + #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) ++ ++#if defined(__sparc__) ++// In sparc the 14 bits SIZE field overlaps with the ++// least significant bit of DIR, so either IOC_READ or ++// IOC_WRITE shall be 1 in order to get a non-zero SIZE. ++# define IOC_SIZE(nr) \ ++ ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ ++ 0 : (((nr) >> 16) & 0x3fff)) ++#else + #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) ++#endif + + extern unsigned struct_arpreq_sz; + extern unsigned struct_ifreq_sz; +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216224) +@@ -36,6 +36,7 @@ + #define uid_t __kernel_uid_t + #define gid_t __kernel_gid_t + #define off_t __kernel_off_t ++#define time_t __kernel_time_t + // This header seems to contain the definitions of _kernel_ stat* structs. + #include + #undef ino_t +@@ -60,7 +61,7 @@ + } // namespace __sanitizer + + #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ +- && !defined(__mips__) ++ && !defined(__mips__) && !defined(__sparc__) + COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); + #endif + diff --git a/patches/libffi-race-condition.diff b/patches/libffi-race-condition.diff new file mode 100644 index 0000000..4e18c82 --- /dev/null +++ b/patches/libffi-race-condition.diff @@ -0,0 +1,33 @@ +From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:49:48 +0200 +Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies + execsize + +--- + src/closures.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -897,16 +897,11 @@ dlmmap (void *start, size_t length, int + MREMAP_DUP and prot at this point. */ + } + +- if (execsize == 0 || execfd == -1) +- { +- pthread_mutex_lock (&open_temp_exec_file_mutex); +- ptr = dlmmap_locked (start, length, prot, flags, offset); +- pthread_mutex_unlock (&open_temp_exec_file_mutex); ++ pthread_mutex_lock (&open_temp_exec_file_mutex); ++ ptr = dlmmap_locked (start, length, prot, flags, offset); ++ pthread_mutex_unlock (&open_temp_exec_file_mutex); + +- return ptr; +- } +- +- return dlmmap_locked (start, length, prot, flags, offset); ++ return ptr; + } + + /* Release memory at the given address, as well as the corresponding diff --git a/patches/libffi-ro-eh_frame_sect.diff b/patches/libffi-ro-eh_frame_sect.diff new file mode 100644 index 0000000..3653876 --- /dev/null +++ b/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,13 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -296,6 +296,8 @@ if test "x$GCC" = "xyes"; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi ++ # FIXME: see PR libffi/47248 ++ libffi_cv_ro_eh_frame=yes + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then diff --git a/patches/libgo-cleanfiles.diff b/patches/libgo-cleanfiles.diff new file mode 100644 index 0000000..59b1b04 --- /dev/null +++ b/patches/libgo-cleanfiles.diff @@ -0,0 +1,26 @@ +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1361,7 +1361,9 @@ mostlyclean-local: + find . -name '*-testsum' -print | xargs rm -f + find . -name '*-testlog' -print | xargs rm -f + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + + clean-local: + find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1199,7 +1199,9 @@ MOSTLYCLEANFILES = \ + libcalls-list \ + runtime.inc runtime.inc.tmp2 runtime.inc.tmp3 runtime.inc.raw + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + MULTISRCTOP = + MULTIBUILDTOP = + MULTIDIRS = diff --git a/patches/libgo-hurd-hack.diff b/patches/libgo-hurd-hack.diff new file mode 100644 index 0000000..c25f8c1 --- /dev/null +++ b/patches/libgo-hurd-hack.diff @@ -0,0 +1,22 @@ +# FIXME: #1005297, PR 104660 + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -67372,6 +67372,8 @@ all-flex: maybe-all-build-texinfo + all-m4: maybe-all-build-texinfo + configure-target-libgo: maybe-configure-target-libffi + all-target-libgo: maybe-all-target-libffi ++all-target-libgo: maybe-all-target-libbacktrace ++all-target-libgo: maybe-all-target-libatomic + configure-target-libphobos: maybe-configure-target-libbacktrace + configure-stage1-target-libphobos: maybe-configure-stage1-target-libbacktrace + configure-stage2-target-libphobos: maybe-configure-stage2-target-libbacktrace +@@ -67539,8 +67541,6 @@ all-m4: maybe-all-intl + configure-target-fastjar: maybe-configure-target-zlib + all-target-fastjar: maybe-all-target-zlib + configure-target-libgo: maybe-all-target-libstdc++-v3 +-all-target-libgo: maybe-all-target-libbacktrace +-all-target-libgo: maybe-all-target-libatomic + configure-target-libgm2: maybe-all-target-libstdc++-v3 + all-target-libgm2: maybe-all-target-libatomic + configure-target-liboffloadmic: maybe-configure-target-libgomp diff --git a/patches/libgo-revert-timeout-exp.diff b/patches/libgo-revert-timeout-exp.diff new file mode 100644 index 0000000..af0b838 --- /dev/null +++ b/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,10 @@ +--- a/src/libgo/testsuite/lib/libgo.exp ++++ b/src/libgo/testsuite/lib/libgo.exp +@@ -49,7 +49,6 @@ load_gcc_lib wrapper.exp + load_gcc_lib target-supports.exp + load_gcc_lib target-utils.exp + load_gcc_lib gcc-defs.exp +-load_gcc_lib timeout.exp + load_gcc_lib go.exp + + proc libgo_init { args } { diff --git a/patches/libgo-setcontext-config.diff b/patches/libgo-setcontext-config.diff new file mode 100644 index 0000000..f6d105d --- /dev/null +++ b/patches/libgo-setcontext-config.diff @@ -0,0 +1,19 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -802,6 +802,14 @@ main () + CFLAGS="$CFLAGS_hold" + LIBS="$LIBS_hold" + ]) ++dnl overwrite for the mips* 64bit multilibs, fails on some buildds ++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ case "$target" in ++ mips*-linux-*) ++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) ++ libgo_cv_lib_setcontext_clobbers_tls=no ;; ++ esac ++fi + if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then + AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, + [Define if setcontext clobbers TLS variables]) diff --git a/patches/libgo-testsuite.diff b/patches/libgo-testsuite.diff new file mode 100644 index 0000000..8369b5d --- /dev/null +++ b/patches/libgo-testsuite.diff @@ -0,0 +1,76 @@ +# DP: Only run the libgo testsuite for flags configured in CHECK_MULTISUBDIRS + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -948,21 +948,29 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=; \ ++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ ++ run_check=yes; \ ++ fi; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ + else \ + if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ +- echo "PASS: $(@D)" >> $@-testlog; \ +- echo "PASS: $(@D)"; \ +- echo "PASS: $(@D)" > $@-testsum; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + else \ +- echo "FAIL: $(@D)" >> $@-testlog; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ + cat $@-testlog; \ +- echo "FAIL: $(@D)" > $@-testsum; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ ++ else \ ++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ + fi + + # Build all packages before checking any. +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1066,21 +1066,29 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=; \ ++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ ++ run_check=yes; \ ++ fi; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ + else \ + if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ +- echo "PASS: $(@D)" >> $@-testlog; \ +- echo "PASS: $(@D)"; \ +- echo "PASS: $(@D)" > $@-testsum; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ ++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + else \ +- echo "FAIL: $(@D)" >> $@-testlog; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ + cat $@-testlog; \ +- echo "FAIL: $(@D)" > $@-testsum; \ ++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ ++ else \ ++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ + fi + + diff --git a/patches/libgomp-omp_h-multilib.diff b/patches/libgomp-omp_h-multilib.diff new file mode 100644 index 0000000..7f2cfa2 --- /dev/null +++ b/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,32 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +2015-03-25 Matthias Klose + + * omp.h.in (omp_nest_lock_t): Limit the fix Linux. + +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -52,8 +52,19 @@ typedef struct + + typedef struct + { ++ /* ++ Derive OMP_NEST_LOCK_SIZE and OMP_NEST_LOCK_ALIGN, don't hard ++ code the values because the header is used for all multilibs. ++ OMP_NEST_LOCK_SIZE = @OMP_NEST_LOCK_SIZE@ ++ OMP_NEST_LOCK_ALIGN = @OMP_NEST_LOCK_ALIGN@ ++ */ ++#if defined(__linux__) && !(defined(__hppa__) || defined(__alpha__)) ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); ++#else + unsigned char _x[@OMP_NEST_LOCK_SIZE@] + __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++#endif + } omp_nest_lock_t; + #endif + diff --git a/patches/libitm-no-fortify-source.diff b/patches/libitm-no-fortify-source.diff new file mode 100644 index 0000000..fe0c705 --- /dev/null +++ b/patches/libitm-no-fortify-source.diff @@ -0,0 +1,17 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +--- a/src/libitm/configure.tgt ++++ b/src/libitm/configure.tgt +@@ -124,6 +124,12 @@ EOF + ;; + esac + ++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++esac ++ + # For the benefit of top-level configure, determine if the cpu is supported. + test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 + diff --git a/patches/libphobos-ppc64el.diff b/patches/libphobos-ppc64el.diff new file mode 100644 index 0000000..51a501a --- /dev/null +++ b/patches/libphobos-ppc64el.diff @@ -0,0 +1,16 @@ +# DP: build libphobos for IEEE long double on ppc64el + +--- a/src/libphobos/libdruntime/core/stdc/stdio.d ++++ b/src/libphobos/libdruntime/core/stdc/stdio.d +@@ -1350,9 +1350,9 @@ + alias vprintf = __vprintfieee128; + /// + pragma(scanf) +- int __isoc99_vfscanfieee128(scope const char* format, va_list arg); ++ int __isoc99_vscanfieee128(scope const char* format, va_list arg); + /// +- alias vscanf = __isoc99_vfscanfieee128; ++ alias vscanf = __isoc99_vscanfieee128; + /// + pragma(printf) + int __printfieee128(scope const char* format, scope const ...); diff --git a/patches/libphobos-unittest.diff b/patches/libphobos-unittest.diff new file mode 100644 index 0000000..fdbead6 --- /dev/null +++ b/patches/libphobos-unittest.diff @@ -0,0 +1,13 @@ +# DP: https://github.com/dlang/phobos/pull/10586 + +--- a/src/libphobos/src/std/process.d ++++ b/src/libphobos/src/std/process.d +@@ -2835,7 +2835,7 @@ void kill(Pid pid, int codeOrSignal) + do { s = tryWait(pid); } while (!s.terminated); + version (Windows) assert(s.status == 123); + else version (Posix) assert(s.status == -SIGKILL); +- assertThrown!ProcessException(kill(pid)); // Already terminated ++ assert(pid.processID == Pid.terminated); + } + + @system unittest // wait() and kill() detached process diff --git a/patches/libphobos-zlib.diff b/patches/libphobos-zlib.diff new file mode 100644 index 0000000..ddf7c95 --- /dev/null +++ b/patches/libphobos-zlib.diff @@ -0,0 +1,72 @@ +# DP: Build zlib in any case to have a fall back for missing libz multilibs + +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -142,6 +142,7 @@ DRUNTIME_LIBRARIES_BACKTRACE + DRUNTIME_LIBRARIES_DLOPEN + DRUNTIME_LIBRARIES_ZLIB + DRUNTIME_INSTALL_DIRECTORIES ++dnl fake change to regenerate the configure file + + # Add dependencies for libgphobos.spec file + SPEC_PHOBOS_DEPS="$LIBS" +--- a/src/libphobos/m4/druntime/libraries.m4 ++++ b/src/libphobos/m4/druntime/libraries.m4 +@@ -52,19 +52,45 @@ AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], + [ + AC_ARG_WITH(target-system-zlib, + AS_HELP_STRING([--with-target-system-zlib], +- [use installed libz (default: no)])) ++ [use installed libz (default: no)]), ++ [system_zlib=yes],[system_zlib=no]) + +- system_zlib=false +- AS_IF([test "x$with_target_system_zlib" = "xyes"], [ +- AC_CHECK_LIB([z], [deflate], [ +- system_zlib=yes +- ], [ +- AC_MSG_ERROR([System zlib not found]) +- ]) +- ], [ +- AC_MSG_CHECKING([for zlib]) +- AC_MSG_RESULT([just compiled]) +- ]) ++ AC_MSG_CHECKING([for system zlib]) ++ save_LIBS=$LIBS ++ LIBS="$LIBS -lz" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LANG_PUSH(C) ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[gzopen("none", "rb")])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ gzFile file = gzopen("none", "rb"); ++ return 0; ++ } ++ ]])], ++ [system_zlib_found=yes], ++ [system_zlib_found=no], ++ dnl no system zlib for cross builds ... ++ [system_zlib_found=no] ++ ) ++ ], ++ [system_zlib_found=no]) ++ if test x$system_zlib = xyes; then ++ if test x$system_zlib_found = xyes; then ++ AC_MSG_RESULT([found]) ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not found, disabled]) ++ system_zlib=no ++ fi ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not enabled]) ++ fi ++ AC_LANG_POP + + AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) + ]) diff --git a/patches/libsanitizer-static-tls.diff b/patches/libsanitizer-static-tls.diff new file mode 100644 index 0000000..3d68495 --- /dev/null +++ b/patches/libsanitizer-static-tls.diff @@ -0,0 +1,19 @@ +# DP: [TSan] Fix determining static TLS blocks + +https://github.com/llvm/llvm-project/pull/183106 + +--- a/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp ++++ b/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp +@@ -503,10 +503,10 @@ __attribute__((unused)) static void GetStaticTlsBoundary(uptr *addr, uptr *size, + // loader places static TLS blocks this way not to waste space. + uptr l = one; + *align = ranges[l].align; +- while (l != 0 && ranges[l].begin < ranges[l - 1].end + ranges[l].align) ++ while (l != 0 && ranges[l].begin <= ranges[l - 1].end + ranges[l].align) + *align = Max(*align, ranges[--l].align); + uptr r = one + 1; +- while (r != len && ranges[r].begin < ranges[r - 1].end + ranges[r].align) ++ while (r != len && ranges[r].begin <= ranges[r - 1].end + ranges[r].align) + *align = Max(*align, ranges[r++].align); + *addr = ranges[l].begin; + *size = ranges[r - 1].end - ranges[l].begin; diff --git a/patches/libstdc++-doclink.diff b/patches/libstdc++-doclink.diff new file mode 100644 index 0000000..a34b325 --- /dev/null +++ b/patches/libstdc++-doclink.diff @@ -0,0 +1,61 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -27,10 +27,10 @@ +

    Generated on @DATE@.

    + +

    There are two types of documentation for libstdc++. One is the +- distribution documentation, which can be read online +- here +- or offline from the file doc/html/index.html in the library source +- directory. ++ distribution documentation, which can be read ++ offline in the documentation directory ++ or ++ online. +

    + +

    The other type is the source documentation, of which this is the first page. +@@ -82,8 +82,11 @@ + +

    License, Copyright, and Other Lawyerly Verbosity

    +

    The libstdc++ documentation is released under ++ these terms ++ (read offline or + +- these terms. ++ read online. ++ ). +

    +

    Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: +--- a/src/libstdc++-v3/doc/html/api.html ++++ b/src/libstdc++-v3/doc/html/api.html +@@ -20,6 +20,8 @@ + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. +

    ++The API documentation, rendered into HTML, can be viewed offline. ++

    Porting libstdc++-v3

    +
    +


    +Node: Top, +Next: , +Up: (dir) +
    +
    + +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + diff --git a/reduce-test-diff.awk b/reduce-test-diff.awk new file mode 100755 index 0000000..0e438de --- /dev/null +++ b/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} diff --git a/rules b/rules new file mode 100755 index 0000000..f49ea84 --- /dev/null +++ b/rules @@ -0,0 +1,100 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# Build rules for gcc (>= 2.95) and gcc-snapshot +# Targets found in this makefile: +# - unpack tarballs +# - patch sources +# - (re)create the control file +# - create a debian/rules.parameters file, which is included +# by debian/rules2 +# All other targets are passed to the debian/rules2 file + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES + +default: build + +include debian/rules.defs +include debian/rules.unpack +include debian/rules.patch + +control: $(control_dependencies) + @echo "Build environment: derivative=$(derivative), release=$(distrelease)" + -mkdir -p $(stampdir) + $(MAKE) -f debian/rules.conf $@ + +configure: control $(unpack_stamp) $(patch_stamp) + $(MAKE) -f debian/rules2 $@ + +pre-build: +# no backport support for these releases ..., keep conditionals for +# Debian: jessie stretch buster bullseye ... +# UBuntu: precise trusty xenial bionic focal groovy hirsute ... +ifneq (,$(filter $(distrelease),lenny squeeze wheezy hardy lucid)) + @echo explicitely fail the build for $(distribution)/$(distrelease) on $(DEB_TARGET_ARCH). + @echo no bug report required. please figure out the back port yourself. + false +endif +#ifeq ($(PKGSOURCE),gcc-15) +# ifneq (,$(findstring native, $(build_type))) +# ifneq (,$(findstring mips, $(TARGET_ALIAS))) +# @echo "native compiler for $(TARGET_ALIAS) not built from this source." +# @echo "See https://lists.debian.org/debian-gcc/2021/05/msg00011.html" +# false +# endif +# endif +#endif + +build: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-arch: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-indep: pre-build control + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nogcn nocheck nopgo nolto" \ + $(MAKE) $(NJOBS) -f debian/rules2 $@ + +check: $(check_stamp) +$(check_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +clean: + rm -rf $(stampdir) +# remove temporary dirs used for unpacking + rm -rf $(gcc_srcdir) $(gdc_srcdir) $(newlib_srcdir) $(binutils_srcdir) + -$(MAKE) -f debian/rules2 $@ + rm -rf $(srcdir)* $(builddir)* debian/tmp* html + rm -f bootstrap-* test-protocol* first-move-stamp + rm -f debian/*.tmp + rm -f debian/soname-cache + find debian -name '.#*' | xargs -r rm -f + rm -f $(series_file)* + rm -rf .pc + dh_clean + +install: + $(MAKE) -f debian/rules2 $@ + +html-docs doxygen-docs update-doxygen-docs update-ada-files xxx: + $(MAKE) -f debian/rules2 $@ + +binary-arch binary: build-arch + $(MAKE) -f debian/rules2 $@ + +binary-indep: build-indep + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nocheck nopgo nolto" \ + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.NOTPARALLEL: +.PHONY: build clean binary-indep binary-arch binary release diff --git a/rules.conf b/rules.conf new file mode 100644 index 0000000..d1269a6 --- /dev/null +++ b/rules.conf @@ -0,0 +1,1382 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs +include debian/rules.sonames + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) +include $(binutils_srcdir)/debian/rules.defs +endif + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + ifeq ($(DEB_TARGET_ARCH),m68k) + GCC_SONAME := 2 + endif + ifeq ($(DEB_TARGET_ARCH),hppa) + GCC_SONAME := 4 + endif +else + GCC_SONAME := 1 +endif +DEB_LIBGCC_SOVERSION := $(DEB_SOVERSION) +DEB_LIBGCC_VERSION := $(DEB_VERSION) + +_soname_map = gcc-s=$(GCC_SONAME) gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) \ + gomp=$(GOMP_SONAME) ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \ + itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \ + go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \ + atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \ + tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) hwasan=$(HWASAN_SONAME) \ + vtv=$(VTV_SONAME) gm2=$(GM2_SONAME) gcobol=$(GCOBOL_SONAME) \ + gphobos=$(GPHOBOS_SONAME) gdiagnostics=$(DIAGNOSTICS_SONAME) \ + ga68=$(GA68_SONAME) +_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map))) + +rel_on_dev := $(if $(cross_lib_arch),>=,=) +# $(call _lib_name,,,) +_lib_name = $(subst $(SPACE),, \ + lib$(2)$(1) \ + $(if $(filter dev,$(3)),,$(call _soname,$(1))) \ + $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \ + $(if $(3),-$(3))$(LS)$(AQ)) +# $(call _lib_vers,,) +_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2)) + +# Helper to generate biarch/triarch dependencies. +# For example, $(eval $(call gen_multilib_deps,gomp)) will create the +# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} +# variables if biarch{32,64,n32} is set to yes. + +define gen_multilib_deps + lib$1biarch64$2 := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarch32$2 := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3)) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + endif + ifeq ($$(biarch32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2) + else + lib$1biarch$2 := $$(lib$1biarch32$2) + endif + endif + ifeq ($$(biarchx32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2) + else + lib$1biarch$2 := $$(lib$1biarchx32$2) + endif + endif + ifeq ($$(biarchn32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2) + else + lib$1biarch$2 := $$(lib$1biarchn32$2) + endif + endif +endef +ifeq ($(with_shared_libgcc),yes) + LIBGCC_DEP := libgcc-s$(GCC_SONAME)$(LS)$(AQ) (>= $${gcc:Version}) + $(eval $(call gen_multilib_deps,gcc-s,,$$$${gcc:Version})) +endif +LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $${gcc:Version}) +$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan ubsan hwasan quadmath go vtv, \ + $(eval $(call gen_multilib_deps,$(x),,$$$${gcc:Version}))) +$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dev,$$$${gcc:Version}))) +$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dbg,$$$${gcc:Version}))) + +# Helper to generate _no_archs variables. +# For example, $(eval $(call gen_no_archs,go)) will create the go_no_archs +# variable, using the go_no_cpu and go_no_systems variables. +define gen_no_archs + $1_no_archs := + ifneq (,$$($1_no_cpus)) + $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 arm,$$($1_no_cpus)),!$$(cpu)) + ifneq (,$$(filter i386,$$($1_no_cpus))) + $1_no_archs += !i386 !hurd-i386 + endif + ifneq (,$$(filter amd64,$$($1_no_cpus))) + $1_no_archs += !amd64 !hurd-amd64 + endif + ifneq (,$$(filter arm,$$($1_no_cpus))) + $1_no_archs += !arm !armel !armhf + endif + ifneq (,$$(strip $3)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE)) + $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system)))) + endif + endif + ifneq (,$$($1_no_systems)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE)) + $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system)))) + endif + $1_no_archs := $$(strip $$($1_no_archs)) +endef +base_deb_cpus := amd64 i386 +base_deb_systems := +$(foreach x,ada cobol d fortran go m2 rs libgphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems)))) +linux_no_archs := !hurd-any + +GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER)))) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') +GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/') +GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/') +GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/') +NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) +NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1) +NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) + +ifeq ($(single_package),yes) + BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([0-9]*\).*/\1/') +endif + +GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//') +NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') + +MAINTAINER = Debian GCC Maintainers +ifeq ($(distribution),Ubuntu) + MAINTAINER = Ubuntu Core developers +endif +UPLOADERS = Matthias Klose + +DPKGV = 1.14.15 +ifeq ($(with_multiarch_lib),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq ($(multiarch_stage1),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq (,$(filter $(distrelease), precise trusty)) + DPKGV = 1.17.14 +endif +DPKG_BUILD_DEP = dpkg-dev (>= $(DPKGV)), + +ifeq ($(DEB_HOST_ARCH),$(DEB_TARGET_ARCH)) + TARGET_QUAL = :$(DEB_TARGET_ARCH) +endif + +ifneq (,$(filter $(distrelease), precise trusty xenial)) + LOCALES = locales +else + LOCALES = locales-all +endif + +# The binutils version needed. +# The oldest suitable versions for the various platforms can be found in +# INSTALL/specific.html ; we take a tighter dependency if possible to be on +# the safe side (something like newest( version in stable, versions for the +# various platforms in INSTALL/specific.html) ). +# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode. +# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html +ifeq ($(trunk_build),yes) + BINUTILSBDV = 2.23 +else + BINUTILSBDV = 2.22 + ifneq (,$(filter $(distrelease),precise)) + BINUTILSBDV = 2.22-6~ + else ifneq (,$(filter $(distrelease),trusty)) + BINUTILSBDV = 2.24-5~ + else ifneq (,$(filter $(distrelease),jessie)) + BINUTILSBDV = 2.25-7~ + else ifneq (,$(filter $(distrelease),xenial)) + BINUTILSBDV = 2.26.1 + else ifneq (,$(filter $(distrelease),stretch)) + BINUTILSBDV = 2.28 + else ifneq (,$(filter $(distrelease),bionic)) + BINUTILSBDV = 2.30 + else ifneq (,$(filter $(distrelease),buster focal)) + BINUTILSBDV = 2.34 + else ifneq (,$(filter $(distrelease),groovy)) + BINUTILSBDV = 2.35 + else ifneq (,$(filter $(distrelease),bullseye)) + BINUTILSBDV = 2.35.2 + else ifneq (,$(filter $(distrelease),hirsute)) + BINUTILSBDV = 2.36 + else ifneq (,$(filter $(distrelease),jammy)) + BINUTILSBDV = 2.38 + else ifneq (,$(filter $(distrelease),$(no_sframe_distreleases))) + BINUTILSBDV = 2.39 + else + BINUTILSBDV = 2.45 + endif +endif +ifeq ($(DEB_CROSS),yes) + ifneq (,$(filter $(distrelease),stretch jessie precise trusty xenial)) + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + else + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), debhelper (>= 11) + endif + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') +else + BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) + ifneq (,$(findstring cross-build-,$(build_type))) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + else + BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + endif +endif +# for riscv64, more recent binutils versions are needed for backports +ifneq (,$(filter $(distrelease),stretch buster bullseye bionic focal jammy)) + BINUTILS_BUILD_DEP +=$(COMMA) binutils$(TS)$(NT) (>= 2.40) [riscv64] +endif + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + BINUTILS_BUILD_DEP += , $(binutils_hppa64)$(NT) (>= $(BINUTILSBDV)) [$(hppa64_archs)] +endif +ifeq (,$(BINUTILSV)) + BINUTILSV := $(BINUTILSBDV) +endif +# gcc/configure.ac enables some features based on the binutils version. The most +# recently checked binutils version is 2.36 for GCC 14. For now it is safe to +# derive the binutils runtime dependency from the binutils build dependency. +BINUTILSV := $(BINUTILSBDV) + +# libc-dev dependencies +libc_ver := 2.23 +libc_dev_ver := $(libc_ver) +ifeq ($(with_multiarch_lib),yes) + ifeq ($(derivative),Debian) + libc_dev_ver := 2.23-1~ + else + libc_dev_ver := 2.13-0ubuntu6 + endif +endif +# first set LIBC_DEP/LIBC_DEV_DEP for native builds only +ifeq ($(DEB_TARGET_ARCH_OS),linux) + LIBC_DEP = $(if $(filter alpha ia64, $(DEB_TARGET_ARCH)),libc6.1,libc6) + ifneq (,$(findstring musl-linux-,$(DEB_TARGET_ARCH))) + LIBC_DEP = musl + libc_ver = 0.9 + libc_dev_ver = 0.9 + endif +else ifeq ($(DEB_TARGET_ARCH_OS),hurd) + LIBC_DEP = libc0.3 +else ifeq ($(DEB_TARGET_ARCH),uclibc) + LIBC_DEP = libuclibc +endif +LIBC_DEV_DEP := $(LIBC_DEP)-dev + +# this is about Debian archs name, *NOT* GNU target triplet +biarch_deb_map := \ + i386=amd64 amd64=i386 \ + mips=mips64 mipsel=mips64el \ + mipsn32=mips mipsn32el=mipsel \ + mips64=mips mips64el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \ + mips64r6=mipsr6 mips64r6el=mipsr6el \ + powerpc=ppc64 ppc64=powerpc \ + sparc=sparc64 sparc64=sparc\ + s390=s390x s390x=s390 +biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + LIBC_BIARCH_DEP := $${shlibs:Depends} + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_dev_ver)) + # amd64, x32, i386 + ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386)) + ifeq ($(biarch64)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch64)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch32)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + endif + # mips* + ifneq (,$(findstring mips, $(DEB_TARGET_ARCH))) + ifeq ($(biarchn32)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarch64)$(biarch32),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + ifeq ($(biarchn32)$(biarch64),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)), + LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) + endif + endif +endif + +# now add the cross suffix and required version +LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ) +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, +endif + +# TODO: make this automatic, there must be a better way to define LIBC_DEP. +ifneq ($(DEB_CROSS),yes) + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-amd64 hurd-i386] | libc6-dev (>= $(libc_dev_ver)) + LIBC_BIARCH_BUILD_DEP = \ + libc6-dev-amd64 [i386 x32], \ + libc6-dev-sparc64 [sparc], \ + libc6-dev-sparc [sparc64], \ + $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ + libc6-dev-s390x [s390], \ + libc6-dev-i386 [amd64 x32], \ + libc6-dev-powerpc [ppc64], \ + libc6-dev-ppc64 [powerpc], \ + lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el$(if $(findstring s390x, $(biarch32archs)),s390x) sparc64 x32], \ + libn32gcc-s1 [mips mipsel mips64 mips64el], \ + lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], \ + libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], \ + libc6-dev-mipsn32 [mips mipsel mips64 mips64el], \ + libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], + ifeq (yes,$(MIPS_R6_ENABLED)) + LIBC_BIARCH_BUILD_DEP = \ + libc6-dev-amd64 [i386 x32], \ + libc6-dev-sparc64 [sparc], \ + libc6-dev-sparc [sparc64], \ + $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ + libc6-dev-s390x [s390], \ + libc6-dev-i386 [amd64 x32], \ + libc6-dev-powerpc [ppc64], \ + libc6-dev-ppc64 [powerpc], \ + lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el$(if $(findstring s390x, $(biarch32archs)), s390x) sparc64 x32], \ + libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ + lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], \ + libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], \ + libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ + libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], + endif + ifneq (,$(findstring amd64,$(biarchx32archs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], + endif + # FIXME: needed for backports + #LIBC_BIARCH_BUILD_DEP := $(subst gcc-s,gcc,$(LIBC_BIARCH_BUILD_DEP)) +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +# needed for the include/asm symlink to run the testsuite for +# non default multilibs +ifneq (,$(multilib_archs)) + GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), +endif + +LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + LIBUNWIND_DEV_DEP := # nothing +endif + +GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), +MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), + +ISL_BUILD_DEP = libisl-dev, +ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) + ISL_BUILD_DEP = libisl-dev (>= 0.20), +endif + +ifneq (,$(filter $(distrelease), precise)) + MPC_BUILD_DEP = libmpc-dev, +else + MPC_BUILD_DEP = libmpc-dev (>= 1.0), +endif + +SOURCE_BUILD_DEP := +ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), +endif + +ifneq (,$(filter $(distrelease), precise)) + CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]), git, +else + CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]) ,\ + git$(if $(check_no_archs), [$(check_no_archs)]) , +endif +no_rustc_archs = alpha hppa m68k sh4 x32 +ifeq (,$(filter $(distrelease),stretch buster bullseye trixie trusty xenial bionic focal jammy noble plucky)) + ifeq ($(derivative),Ubuntu) + no_rustc_archs += i386 + endif + # python3-check-jsonschema has unpackaged dependencies + CHECK_BUILD_DEP += python3-pytest [$(foreach a,$(no_rustc_archs),!$(a))] , \ + python3-check-jsonschema [$(foreach a,$(no_rustc_archs),!$(a))] , +endif + +AUTO_BUILD_DEP := m4, libtool, +autoconf_version = 2.69 +ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) + autoconf_version = +endif +AUTO_BUILD_DEP += autoconf$(autoconf_version), + +ifeq (,$(filter $(distrelease), precise trusty)) + SDT_BUILD_DEP = systemtap-sdt-dev [linux-any], +endif + +# ensure that the common libs, built from the next GCC version are available +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + ifneq ($(with_common_libs),yes) + BASE_BUILD_DEP = gcc-16-base, + endif +endif + +ifeq (,$(filter $(distrelease), precise)) + OFFLOAD_BUILD_DEP += nvptx-tools [$(nvptx_archs)], +endif +OFFLOAD_BUILD_DEP += $(AMDGCN_TOOLS_DEP) + +PHOBOS_BUILD_DEP = lib32z1-dev [amd64], lib64z1-dev [i386], +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise)) + PHOBOS_BUILD_DEP += libx32z1-dev [amd64 i386], + endif +endif +PHOBOS_BUILD_DEP += unzip , + +ifeq ($(with_m2),yes) + GM2_BUILD_DEP = python3:any, +endif + +ifeq ($(usage_stats),yes) + ifeq (,$(no_usage_archs)) + USAGE_BUILD_DEP = python3:any, python3-psutil, python3-matplotlib, + else + USAGE_BUILD_DEP = python3:any, \ + python3-psutil [$(foreach a,$(no_usage_archs),!$(a))], \ + python3-matplotlib [$(foreach a,$(no_usage_archs),!$(a))], + endif +endif + +DEBHELPER_BUILD_DEP = debhelper (>= 11), + +PKGCONF_BUILD_DEP = pkgconf, +ifneq (,$(filter $(distrelease),wheezy jessie stretch buster bullseye bookworm precise trusty xenial bionic focal jammy)) + PKGCONF_BUILD_DEP = pkg-config, +endif + +ifneq ($(DEB_CROSS),yes) +# all archs for which to create b-d's +any_archs := alpha amd64 armel armhf arm64 i386 loong64 mips mipsel mips64 mips64el mipsn32 powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 +ifeq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic)) + any_archs := $(filter-out mips, $(any_archs)) +endif +ifneq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic jammy)) + any_archs := $(filter-out loong64, $(any_archs)) +endif +ifeq (yes,$(MIPS_R6_ENABLED)) + any_archs += mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el +endif +ifeq (,$(filter $(DEB_HOST_ARCH),$(any_archs))) + any_archs += $(DEB_HOST_ARCH) +endif + +arch_gnutype_map := $(foreach a,$(any_archs),$(a)=$(shell CC=true dpkg-architecture -f -a$(a) -qDEB_HOST_GNU_TYPE)) +_gnu_type = $(subst $1=,,$(filter $1=%,$(arch_gnutype_map))) +_gnu_suffix = -$(subst _,-,$(call _gnu_type,$1)) + +ifneq (,$(filter $(distrelease),precise trusty)) + TARGET_TOOL_BUILD_DEP = bash, # non-empty line + pf_cross = + pf_ncross = +else + TARGET_TOOL_BUILD_DEP = \ + g++-$(BASE_VERSION)-for-host , \ + gobjc-$(BASE_VERSION)-for-host [!avr] , \ + gfortran-$(BASE_VERSION)-for-host , \ + gdc-$(BASE_VERSION)-for-host $(if $(d_no_archs),[$(d_no_archs)] ), \ + gccgo-$(BASE_VERSION)-for-host $(if $(go_no_archs),[$(go_no_archs)] ), \ + gnat-$(BASE_VERSION)-for-host $(if $(ada_no_archs),[$(ada_no_archs)] ), \ + gm2-$(BASE_VERSION)-for-host $(if $(m2_no_archs),[$(m2_no_archs)] ), \ + gcobol-$(BASE_VERSION)-for-host $(if $(cobol_no_archs),[$(cobol_no_archs)] ), \ + ga68-$(BASE_VERSION)-for-host $(if $(algol_no_archs),[$(algol_no_archs)] ), + # FIXME: gccrs not yet built as a cross compiler, macros constraints + pf_cross = $(SPACE) + pf_ncross = $(SPACE) + NT = :native +endif + +LIBSTDCXX_BUILD_INDEP = doxygen , graphviz , \ + ghostscript , texlive-latex-base , xsltproc , \ + libxml2-utils , docbook-xsl-ns , + +GO_BUILD_DEP := netbase, + +RS_BUILD_DEP := cargo [$(rs_no_archs)], + +# try to build with itself, or with the last version +# require at least GCC 9 for the bootstrap, anything else is untested +ifneq (,$(filter $(distrelease), buster bullseye precise trusty)) + gnat_build_dep := gnat-9$(NT) [$(ada_no_archs)], g++-9$(NT) + gdc_build_dep := gdc-9$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), bookworm xenial)) + gnat_build_dep := gnat-11$(NT) [$(ada_no_archs)], g++-11$(NT) + gdc_build_dep := gdc-11$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), bionic focal jammy noble)) + gnat_build_dep := gnat-13$(NT) [$(ada_no_archs)], g++-13$(NT) + gdc_build_dep := gdc-13$(NT) [$(d_no_archs)] +else ifneq (,$(filter $(distrelease), trixie)) + gnat_build_dep := gnat-14$(NT) [$(ada_no_archs)], g++-14$(NT) + gdc_build_dep := gdc-14$(NT) [$(d_no_archs)] +else + gnat_build_dep := gnat-15$(NT) [$(ada_no_archs)], g++-15$(NT) + gdc_build_dep := gdc-15$(NT) [$(d_no_archs)] +endif +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + gnat_build_dep := + gdc_build_dep := +endif + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + # Build gnat as part of the combined gcc-x.y source package. Do not fail + # if gnat is not present on unsupported architectures; the build scripts + # will not use gnat anyway. + GNAT_BUILD_DEP := $(gnat_build_dep), + GDC_BUILD_DEP := $(gdc_build_dep), +else ifeq ($(single_package),yes) + # Ditto, as part of the gcc-snapshot package. + GNAT_BUILD_DEP := $(gnat_build_dep), + GDC_BUILD_DEP := $(gdc_build_dep), +endif + + +else +# build cross compiler + CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch), +ifneq (,$(findstring cross-build-,$(build_type))) + CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch), +endif + SOURCE_BUILD_DEP := + ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), + endif + GNAT_BUILD_DEP := gnat-$(BASE_VERSION), + ifneq (,$(filter !$(DEB_TARGET_ARCH),$(ada_no_archs))) + GNAT_BUILD_DEP := + endif + GDC_BUILD_DEP := gdc-$(BASE_VERSION), + ifneq (,$(filter !$(DEB_TARGET_ARCH),$(d_no_archs))) + GDC_BUILD_DEP := + endif + ifeq (yes_,$(with_m2)_$(filter !$(DEB_TARGET_ARCH),$(m2_no_archs))) + GM2_BUILD_DEP += gm2-$(BASE_VERSION), + endif + ifeq (yes_,$(with_cobol)_$(filter !$(DEB_TARGET_ARCH),$(cobol_no_archs))) + COBOL_BUILD_DEP += gcobol-$(BASE_VERSION), + endif + ifeq (yes_,$(with_ga68)_$(filter !$(DEB_TARGET_ARCH),$(algol_no_archs))) + GA68_BUILD_DEP += ga68-$(BASE_VERSION), + endif + arch_gnutype_map = $(DEB_TARGET_ARCH)=$(TARGET_ALIAS) +endif # cross compiler + +BASE_BREAKS := gnat (<< 7) +# these would need proper updates, and are only needed for upgrades +ifneq (,$(filter $(distrelease),stretch jessie trusty xenial bionic)) + BASE_BREAKS := +endif + +# FIXME: can these be dropped? In the end the libgcc_s.so.1 remained in the same location. +ifneq (,$(filter $(DEB_HOST_ARCH), arm64 s390x sparc64)) + ifeq (,$(filter $(distrelease), jessie stretch buster trusty xenial bionic)) + LIBGCC_BREAKS := libgcc-9-dev (<< 9.2.1-26), libgcc-8-dev (<< 8.3.0-27), libgcc-7-dev (<< 7.5.0-4), + endif +endif +ifneq (,$(filter $(distrelease),sid bullseye focal)) + LIBGCC_BREAKS += cryptsetup-initramfs (<< 2:2.2.2-3~), +endif + +# The numeric part of the gcc version number (x.yy.zz) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') +# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION +# or TARGET_ALIAS changes), or last version available for all architectures +DEB_GCC_SOFT_VERSION := 15 +DEB_GNAT_SOFT_VERSION := 15 + +ifeq ($(with_d),yes) + GDC_VERSION := $(BASE_VERSION) + DEB_GDC_VERSION := $(DEB_VERSION) +endif + +ifeq ($(with_m2),yes) + GM2_VERSION := $(BASE_VERSION) + DEB_GM2_VERSION := $(DEB_VERSION) +endif + +# semiautomatic ... +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 5 +DEB_SOEVERSION := $(EPOCH):5 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := $(DEB_SOVERSION) + +DEB_GCC_VERSION := $(DEB_VERSION) + +DEB_GNAT_VERSION := $(DEB_VERSION) + +GNAT_VERSION := $(BASE_VERSION) + +LIBGNAT_DEP := +ifeq ($(with_libgnat),yes) + LIBGNAT_DEP := libgnat-$(GNAT_VERSION)$(LS)$(AQ) (>= $${gcc:Version}) +endif + +pkg_ver := -$(BASE_VERSION) + +ctrl_flags = \ + -DBINUTILSV=$(BINUTILSV) \ + -DBINUTILSBDV=$(BINUTILSBDV) \ + -DSRCNAME=$(PKGSOURCE) \ + -D__$(DEB_TARGET_GNU_CPU)__ \ + -DARCH=$(DEB_TARGET_ARCH) \ + -DDIST=$(distribution) \ + -DLOCALES=$(LOCALES) \ + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ + -DLIBC_DBG_DEP="$(LIBC_DBG_DEP)" \ + -DBASE_BUILD_DEP="$(BASE_BUILD_DEP)" \ + -DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \ + -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ + -DGO_BUILD_DEP="$(GO_BUILD_DEP)" \ + -DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \ + -DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ + -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ + -DSDT_BUILD_DEP="$(SDT_BUILD_DEP)" \ + -DISL_BUILD_DEP="$(ISL_BUILD_DEP)" \ + -DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \ + -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ + -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ + -DDEBHELPER_BUILD_DEP="$(DEBHELPER_BUILD_DEP)" \ + -DPKGCONF_BUILD_DEP="$(PKGCONF_BUILD_DEP)" \ + -DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \ + -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ + -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ + -DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \ + -DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \ + -DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \ + -DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \ + -DRS_BUILD_DEP="$(RS_BUILD_DEP)" \ + -DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \ + -DUSAGE_BUILD_DEP="$(USAGE_BUILD_DEP)" \ + -DAMDGCN_TOOLS_DEP="$(AMDGCN_TOOLS_DEP)" \ + -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \ + -DMULTILIB_ARCHS="$(multilib_archs)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) \ + -DAQ=$(AQ) \ + -DNT=$(NT) + +ifeq ($(DEB_CROSS),yes) + ctrl_flags += \ + -DTARGET=$(DEB_TARGET_ARCH) \ + -DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \ + -DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)" + ifeq ($(DEB_STAGE),rtlibs) + ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH) + endif +else + # add '-DPRI=optional' to ctrl_flags if this is not the default compiler + # ctrl_flags += \ + # -DPRI=optional +endif + +ifeq ($(with_base_only),yes) + ctrl_flags += \ + -DBASE_ONLY=yes +endif + +ifeq ($(with_multiarch_lib),yes) + ctrl_flags += \ + -DMULTIARCH=yes +endif + +ctrl_flags += -DBUILD_DEP_FOR_BINUTILS="$(if $(filter yes, $(with_binutils)),$(bd_binutils_only))" + +control: control-file readme-bugs-file parameters-file symbols-files copyright-file substvars-file versioned-files check-versions + +# stage1 and stage2 compilers are only C +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + languages = c + addons = gccbase cdev plugindev + ifeq ($(with_gcclbase),yes) + addons += gcclbase + endif + ifeq ($(multilib),yes) + addons += multilib + endif + addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) + ifeq ($(DEB_STAGE),stage2) + addons += libgcc + ifeq ($(multilib),yes) + addons += lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + endif + else + LIBC_BIARCH_DEV_DEP := + endif +else +languages = c c++ fortran objc objpp +ifeq ($(DEB_STAGE),rtlibs) + ifeq (,$(filter libgfortran, $(with_rtlibs))) + languages := $(filter-out fortran, $(languages)) + endif + ifeq (,$(filter libobjc, $(with_rtlibs))) + languages := $(filter-out objc objpp, $(languages)) + endif +endif +ifeq ($(with_dbg),yes) + addons += libdbg +endif +ifeq ($(with_gccbase),yes) + addons += gccbase +endif +ifeq ($(with_gcclbase),yes) + addons += gcclbase +endif +ifneq ($(DEB_STAGE),rtlibs) + addons += cdev c++dev source multilib + ifeq ($(build_type),build-native) + addons += testresults + endif + ifneq (,$(filter fortran, $(languages))) + addons += fdev + endif + ifneq (,$(filter objc, $(languages))) + addons += objcdev + endif + ifneq (,$(filter objpp, $(languages))) + addons += objppdev + endif + addons += plugindev +endif +addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) +ifeq ($(with_libgcc),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + ifeq ($(with_libcompatgcc),yes) + addons += libcompatgcc + endif +endif +ifeq ($(with_libcxx),yes) + addons += libcxx lib32cxx lib64cxx libn32cxx + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cxx) +endif +addons += $(if $(findstring amd64,$(biarchx32archs)),libx32dbgcxx) +ifeq ($(with_libgfortran),yes) + addons += libgfortran lib32gfortran lib64gfortran libn32gfortran + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gfortran) +endif +ifeq ($(with_libobjc),yes) + addons += libobjc lib32objc lib64objc libn32objc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32objc) +endif +ifeq ($(with_libgomp),yes) + addons += libgomp lib32gomp lib64gomp libn32gomp + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gomp) +endif +ifeq ($(with_libitm),yes) + addons += libitm lib32itm lib64itm libn32itm + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32itm) +endif +ifeq ($(with_libatomic),yes) + addons += libatomic lib32atomic lib64atomic libn32atomic + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32atomic) +endif +ifeq ($(with_libbacktrace),yes) + addons += libbtrace lib32btrace lib64btrace libn32btrace + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32btrace) +endif +ifeq ($(with_libasan),yes) + addons += libasan lib32asan lib64asan libn32asan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32asan) +endif +ifeq ($(with_liblsan),yes) + addons += liblsan + ifneq (,$(filter $(distrelease),lunar jammy focal)) + addons += lib32lsan lib64lsan libn32lsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32lsan) + endif +endif +ifeq ($(with_libtsan),yes) + addons += libtsan + addons += libtsan #lib32tsan lib64tsan libn32tsan + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32tsan) +endif +ifeq ($(with_libubsan),yes) + addons += libubsan lib32ubsan lib64ubsan libn32ubsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ubsan) +endif +ifeq ($(with_libhwasan),yes) + addons += libhwasan +endif +ifeq ($(with_vtv),yes) + addons += libvtv lib32vtv lib64vtv #libn32vtv + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32vtv) +endif +ifeq ($(with_libqmath),yes) + addons += libqmath lib32qmath lib64qmath libn32qmath + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath) +endif +ifeq ($(with_jit),yes) + addons += jit gdiag +endif +ifeq ($(with_libgccjit),yes) + addons += libjit +endif +ifeq ($(with_libdiag),yes) + addons += libdiag +endif +ifeq ($(with_offload_nvptx),yes) + addons += olnvptx gompnvptx +endif +ifeq ($(with_offload_gcn),yes) + addons += olgcn gompgcn +endif +ifeq ($(with_offload_hsa),yes) + addons += olhsa gomphsa +endif +ifeq ($(with_libcc1),yes) + addons += libcc1 +endif +ifeq ($(with_d),yes) + languages += d + ifeq ($(with_libphobos),yes) + addons += libphobos libn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) + endif + ifeq ($(with_libphobosdev),yes) + addons += libdevphobos libdevn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libdevx32phobos) + endif +endif +ifeq ($(with_go),yes) + addons += ggo godev + ifeq ($(with_libgo),yes) + addons += libggo lib32ggo lib64ggo libn32ggo + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + endif +endif +ifeq ($(with_m2),yes) + languages += m2 + addons += libdevgm2 + ifeq ($(with_libgm2),yes) + addons += libgm2 # lib32gm2 lib64gm2 libn32gm2 + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) + endif +endif +ifeq ($(with_cobol),yes) + languages += cobol + addons += libdevgcobol + ifeq ($(with_libgcobol),yes) + addons += libgcobol # lib32gcobol lib64gcobol libn32gcobol + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcobol) + endif +endif +ifeq ($(with_algol),yes) + languages += algol + addons += libdevga68 + ifeq ($(with_libga68),yes) + addons += libga68 # lib32ga68 lib64ga68 libn32ga68 + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ga68) + endif +endif +ifeq ($(with_rs),yes) + languages += rust + #addons += libdevgrs + #ifeq ($(with_libgrs),yes) + # addons += libgrs # lib32gm2 lib64gm2 libn32gm2 + # #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) + #endif +endif +ifeq ($(with_ada),yes) + languages += ada + addons += libgnat libs # libgmath libnof lib64gnat ssp + ifeq ($(with_gnatsjlj),yes) + addons += adasjlj + endif +endif + + ifneq ($(DEB_CROSS),yes) + endif # DEB_CROSS + ifeq ($(with_separate_libgo),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out go,$(languages)) + addons := $(filter-out ggo godev libggo lib64ggo lib32ggo libn32ggo libx32ggo,$(addons)) + endif + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + languages = go + addons = ggo godev libggo lib64ggo lib32ggo libn32ggo gccbase multilib + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + ifeq ($(with_standalone_go),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + ifeq ($(with_libcc1),yes) + addons += libcc1 + endif + endif + endif + endif + ifeq ($(with_standalone_go),yes) + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + ctrl_flags += -DSTANDALONEGO + endif + endif + ifneq ($(DEB_CROSS),yes) # no docs for cross compilers + ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc + endif + endif +endif # not stage + +control-file: + echo "addons: $(addons)"; \ + m4 $(ctrl_flags) \ + -DPV=$(pkg_ver) \ + -DCXX_SO=$(CXX_SONAME) \ + -DGCC_SO=$(GCC_SONAME) \ + -DOBJC_SO=$(OBJC_SONAME) \ + -DFORTRAN_SO=$(FORTRAN_SONAME) \ + -DGNAT_SO=$(GNAT_SONAME) \ + -DGNAT_V=$(GNAT_VERSION) \ + -DPHOBOS_V=$(GPHOBOS_SONAME) \ + -DGM2_V=$(GM2_SONAME) \ + -DGDRUNTIME_V=$(GDRUNTIME_SONAME) \ + -DGCOBOL_V=$(GCOBOL_SONAME) \ + -DGA68_V=$(GA68_SONAME) \ + -DGOMP_SO=$(GOMP_SONAME) \ + -DITM_SO=$(ITM_SONAME) \ + -DATOMIC_SO=$(ATOMIC_SONAME) \ + -DBTRACE_SO=$(BTRACE_SONAME) \ + -DASAN_SO=$(ASAN_SONAME) \ + -DLSAN_SO=$(LSAN_SONAME) \ + -DTSAN_SO=$(TSAN_SONAME) \ + -DUBSAN_SO=$(UBSAN_SONAME) \ + -DHWASAN_SO=$(HWASAN_SONAME) \ + -DVTV_SO=$(VTV_SONAME) \ + -DQMATH_SO=$(QUADMATH_SONAME) \ + -DSSP_SO=$(SSP_SONAME) \ + -DGO_SO=$(GO_SONAME) \ + -DCC1_SO=$(CC1_SONAME) \ + -DGCCJIT_SO=$(GCCJIT_SONAME) \ + -DDIAGNOSTICS_SO=$(DIAGNOSTICS_SONAME) \ + -Denabled_languages="$(languages) $(addons)" \ + -Dada_no_archs="$(ada_no_archs)" \ + -Dfortran_no_archs="$(fortran_no_archs)" \ + -Dgo_no_archs="$(go_no_archs)" \ + -Dd_no_archs="$(d_no_archs)" \ + -Dm2_no_archs="$(m2_no_archs)" \ + -Drs_no_archs="$(rs_no_archs)" \ + -Dcobol_no_archs="$(cobol_no_archs)" \ + -Dalgol68_no_archs="$(algol68_no_archs)" \ + -Dlibgc_no_archs="$(libgc_no_archs)" \ + -Dlibphobos_archs="$(phobos_archs)" \ + -Dlibphobos_no_archs="$(phobos_no_archs)" \ + -Dcheck_no_archs="$(check_no_archs)" \ + -Dlocale_no_archs="$(locale_no_archs)" \ + -Dlinux_gnu_archs="$(linux_gnu_archs)" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \ + -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \ + -Dbiarchx32_archs="$(strip $(subst /, ,$(biarchx32archs)))" \ + -Dnvptx_archs="$(nvptx_archs)" \ + -Dgcn_archs="$(gcn_archs)" \ + -Dbiarch32_conflicts="$(biarch32_conflicts)" \ + -Dadd_built_using=$(add_built_using) \ + -DGCC_PORTS_BUILD=$(GCC_PORTS_BUILD) \ + $(if $(findstring build-native, $(build_type)), \ + $(if $(filter $(distrelease),jessie stretch buster xenial bionic focal),,-DLIBGCCPROTECTED=1)) \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 | grep -v '^ *, *$$' | sed -E '/^Build/s/ *, +/, /g;/^ /s/, +/, /g;/^ /s/ *,/,/g; s/ +$$//' \ + $(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \ + > debian/control.tmp + rm -f debian/control.tmp2 + [ -e debian/control ] \ + && cmp -s debian/control debian/control.tmp \ + && rm -f debian/control.tmp && exit 0; \ + mv debian/control.tmp debian/control; touch $(control_stamp) + +readme-bugs-file: + m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ + debian/README.Bugs.m4 > debian/README.Bugs + +copyright-file: + rm -f debian/copyright + if echo $(SOURCE_VERSION) | grep -E ^'[0-9][0-9]*\.[0-9]-[0-9]{8}' ; \ + then SVN_BRANCH="trunk" ; \ + else \ + SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ + fi ; \ + sed debian/copyright.in \ + -e "s/@BV@/$(BASE_VERSION)/g" \ + -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ + > debian/copyright + +substvars-file: control-file + rm -f debian/substvars.local.tmp + ( \ + echo 'libgcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ + echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ + echo 'gm2:Version=$(DEB_GM2_VERSION)'; \ + echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ + echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \ + echo 'gcobol:Version=$(DEB_GCC_VERSION)'; \ + echo 'ga68:Version=$(DEB_GCC_VERSION)'; \ + echo 'binutils:Version=$(BINUTILSV)'; \ + echo 'dep:libgcc=$(LIBGCC_DEP)'; \ + echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \ + echo 'dep:libgccbiarch=$(libgcc-sbiarch)'; \ + echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \ + echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \ + echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ + echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ + echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ + echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ + echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \ + echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ + echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ + echo 'base:Breaks=$(BASE_BREAKS)'; \ + echo 'libgcc:Breaks=$(LIBGCC_BREAKS)'; \ + echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \ + ) > debian/substvars.local.tmp +ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) + ( \ + echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ + ) >> debian/substvars.local.tmp +endif +ifeq ($(with_gold),yes) + echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_gomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_itm),yes) + echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_atomic),yes) + echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libbacktrace),yes) + echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_asan),yes) + echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lsan),yes) + echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_tsan),yes) + echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_ubsan),yes) + echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_hwasan),yes) + echo 'dep:libhwasan=libhwasan$(HWASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_vtv),yes) + echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_qmath),yes) + echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(distribution),Debian) + echo 'dep:libx32z=$(if $(filter $(distribution), Debian),,libx32z1-dev)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(multilib),yes) + echo 'dep:libgfortranbiarchdev=$(libgfortranbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libobjcbiarchdev=$(libobjcbiarchdev)' \ + >> debian/substvars.local.tmp + ifeq ($(with_phobos),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libssp),yes) + echo 'dep:libsspbiarch=$(libsspbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_gomp),yes) + echo 'dep:libgompbiarch=$(libgompbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_itm),yes) + echo 'dep:libitmbiarch=$(libitmbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_atomic),yes) + echo 'dep:libatomicbiarch=$(libatomicbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libbacktrace),yes) + echo 'dep:libbtracebiarch=$(libbtracebiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_asan),yes) + echo 'dep:libasanbiarch=$(libasanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_lsan),yes) + #echo 'dep:liblsanbiarch=$(liblsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_tsan),yes) + #echo 'dep:libtsanbiarch=$(libtsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_ubsan),yes) + echo 'dep:libubsanbiarch=$(libubsanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_hwasan),yes) + # amd64 hwasan not available for 32/x32 + ifeq ($(DEB_TARGET_ARCH),amd64) + else + echo 'dep:libhwasanbiarch=$(libhwasanbiarch)' \ + >> debian/substvars.local.tmp + endif + endif + ifeq ($(with_vtv),yes) + echo 'dep:libvtvbiarch=$(libvtvbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_qmath),yes) + echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_go),yes) + echo 'dep:libgobiarchdev=$(libgobiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libgobiarch=$(libgobiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_CROSS),yes) + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_phobos),yes) + echo 'dep:phobosdev=libgphobos$(pkg_ver)-dev$(LS)$(AQ) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + ifeq ($(DEB_CROSS),yes) + : # FIXME: make the cross gdc aware of both include paths + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libphobosdev),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libphobosbiarch=$(libgphobosbiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(with_cc1),yes) + ifneq (,$(findstring build-cross, $(build_type))) + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:SoftVersion})' \ + >> debian/substvars.local.tmp + else + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_HOST_ARCH),hppa) + echo 'dep:prctl=prctl' >> debian/substvars.local.tmp +endif +ifeq ($(derivative)-$(DEB_HOST_ARCH),Debian-amd64) + echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp +endif +ifeq ($(with_multiarch_lib),yes) + echo 'multiarch:breaks=gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp +endif + echo 'golang:Conflicts=golang-go (<< 2:1.3.3-1ubuntu2)' >> debian/substvars.local.tmp +ifeq ($(add_built_using),yes) + echo "Built-Using=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W gcc$(pkg_ver)-source)" \ + >> debian/substvars.local.tmp +endif + v=`sed -n '/^#define MOD_VERSION/s/.* "\([0-9]*\)"/\1/p' \ + $(srcdir)/gcc/fortran/module.cc`; \ + echo "fortran:mod-version=gfortran-mod-$$v" >> debian/substvars.local.tmp + + [ -e debian/substvars.local ] \ + && cmp -s debian/substvars.local debian/substvars.local.tmp \ + && rm -f debian/substvars.local.tmp && exit 0; \ + mv debian/substvars.local.tmp debian/substvars.local; \ + touch $(control_stamp) + +parameters-file: + rm -f debian/rules.parameters.tmp + ( \ + echo '# configuration parameters taken from upstream source files'; \ + echo 'GCC_VERSION := $(GCC_VERSION)'; \ + echo 'NEXT_GCC_VERSION := $(NEXT_GCC_VERSION)'; \ + echo 'BASE_VERSION := $(BASE_VERSION)'; \ + echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ + echo 'DEB_VERSION := $(DEB_VERSION)'; \ + echo 'DEB_EVERSION := $(DEB_EVERSION)'; \ + echo 'DEB_GDC_VERSION := $(DEB_GDC_VERSION)'; \ + echo 'DEB_SOVERSION := $(DEB_SOVERSION)'; \ + echo 'DEB_SOEVERSION := $(DEB_SOEVERSION)'; \ + echo 'DEB_LIBGCC_SOVERSION := $(DEB_LIBGCC_SOVERSION)'; \ + echo 'DEB_LIBGCC_VERSION := $(DEB_LIBGCC_VERSION)'; \ + echo 'DEB_STDCXX_SOVERSION := $(DEB_STDCXX_SOVERSION)'; \ + echo 'DEB_GOMP_SOVERSION := $(DEB_GOMP_SOVERSION)'; \ + echo 'GCC_SONAME := $(GCC_SONAME)'; \ + echo 'CXX_SONAME := $(CXX_SONAME)'; \ + echo 'FORTRAN_SONAME := $(FORTRAN_SONAME)'; \ + echo 'OBJC_SONAME := $(OBJC_SONAME)'; \ + echo 'GDC_VERSION := $(GDC_VERSION)'; \ + echo 'GNAT_VERSION := $(GNAT_VERSION)'; \ + echo 'GNAT_SONAME := $(GNAT_SONAME)'; \ + echo 'FFI_SONAME := $(FFI_SONAME)'; \ + echo 'SSP_SONAME := $(SSP_SONAME)'; \ + echo 'GOMP_SONAME := $(GOMP_SONAME)'; \ + echo 'ITM_SONAME := $(ITM_SONAME)'; \ + echo 'ATOMIC_SONAME := $(ATOMIC_SONAME)'; \ + echo 'BTRACE_SONAME := $(BTRACE_SONAME)'; \ + echo 'ASAN_SONAME := $(ASAN_SONAME)'; \ + echo 'LSAN_SONAME := $(LSAN_SONAME)'; \ + echo 'TSAN_SONAME := $(TSAN_SONAME)'; \ + echo 'UBSAN_SONAME := $(UBSAN_SONAME)'; \ + echo 'HWASAN_SONAME := $(HWASAN_SONAME)'; \ + echo 'VTV_SONAME := $(VTV_SONAME)'; \ + echo 'QUADMATH_SONAME := $(QUADMATH_SONAME)'; \ + echo 'GO_SONAME := $(GO_SONAME)'; \ + echo 'CC1_SONAME := $(CC1_SONAME)'; \ + echo 'GCCJIT_SONAME := $(GCCJIT_SONAME)'; \ + echo 'GPHOBOS_SONAME := $(GPHOBOS_SONAME)'; \ + echo 'GDRUNTIME_SONAME := $(GDRUNTIME_SONAME)'; \ + echo 'GM2_SONAME := $(GM2_SONAME)'; \ + echo 'DIAGNOSTICS_SONAME:= $(DIAGNOSTICS_SONAME)'; \ + echo 'GCOBOL_SONAME := $(GCOBOL_SONAME)'; \ + echo 'GA68_SONAME := $(GA68_SONAME)'; \ + echo 'LIBC_DEP := $(LIBC_DEP)'; \ + ) > debian/rules.parameters.tmp + [ -e debian/rules.parameters ] \ + && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ + && rm -f debian/rules.parameters.tmp && exit 0; \ + mv debian/rules.parameters.tmp debian/rules.parameters; \ + touch $(control_stamp) + +symbols-files: control-file +ifeq ($(DEB_CROSS),yes) + ifneq ($(DEB_STAGE),rtlibs) + test -n "$(LS)" + set -e; \ + for p in $$(dh_listpackages -i | grep '^lib'); do \ + p=$${p%$(LS)}; \ + if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \ + f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \ + elif [ -f debian/$$p.symbols ]; then \ + f=debian/$$p.symbols; \ + else \ + continue; \ + fi; \ + link=debian/$$p$(LS).symbols; \ + if [ -L $$link ]; then \ + echo >&2 "removing left over symbols file link: $$link"; \ + rm -f $$link; \ + fi; \ + ln -s $$f $$link; \ + done + endif +endif + +versioned-files: + fs=`echo debian/*BV* debian/*CXX* debian/*LC* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -f $$f ] || continue; \ + if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@CXX@/$(CXX_SONAME)/g' \ + -e 's/@LC@/$(GCC_SONAME)/g' \ + -e 's/@SRC@/$(PKGSOURCE)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ + -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ + -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done + for t in ar nm ranlib; do \ + sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \ + debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \ + done + +# don't encode versioned build dependencies in the control file, but check +# these here instead. +check-versions: + v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \ + if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \ + echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \ + exit 1; \ + fi + v=$$(dpkg-query -l binutils binutils-multiarch 2>/dev/null | awk '/^.i/ {print $$3;exit}'); \ + if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \ + echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \ + exit 1; \ + fi + +.PRECIOUS: $(stampdir)/%-stamp diff --git a/rules.d/binary-ada.mk b/rules.d/binary-ada.mk new file mode 100644 index 0000000..52a6cc2 --- /dev/null +++ b/rules.d/binary-ada.mk @@ -0,0 +1,263 @@ +ifeq ($(with_libgnat),yes) + # During native builds, gnat-BV Depends: + # * libgnat because of the development symlink. + # During cross builds, gnat1 is linked statically. Only the latter remains. + $(lib_binaries) += libgnat +endif + +arch_binaries := $(arch_binaries) ada-nat ada-host +ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) ada + indep_binaries := $(indep_binaries) ada-build +endif +ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) ada-doc + endif +endif + +p_gbase = $(p_xbase) +p_glbase = $(p_lbase) + +p_gnat_n = gnat-$(GNAT_VERSION)-$(subst _,-,$(TARGET_ALIAS)) +p_gnat_h = gnat-$(GNAT_VERSION)-for-host +p_gnat_b = gnat-$(GNAT_VERSION)-for-build +p_gnat = gnat-$(GNAT_VERSION) +p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) +p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch) +p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_gnatd = $(p_gnat)-doc + +d_gbase = debian/$(p_gbase) +d_gnat_n = debian/$(p_gnat_n) +d_gnat_h = debian/$(p_gnat_h) +d_gnat_b = debian/$(p_gnat_b) +d_gnat = debian/$(p_gnat) +d_gnatsjlj = debian/$(p_gnatsjlj) +d_lgnat = debian/$(p_lgnat) +d_gnatd = debian/$(p_gnatd) + +GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatkr gnatlink \ + gnatls gnatmake gnatname gnatprep gnathtml + +dirs_gnat_n = \ + $(docdir)/$(p_gbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir)/{adalib,adainclude} \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_gnat = \ + $(docdir)/$(p_gbase)/ada \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_gnat_n = \ + $(gcc_lexec_dir)/gnat1 \ + $(gcc_lib_dir)/ada_target_properties \ + $(gcc_lib_dir)/adainclude/*.ad[bs] \ + $(gcc_lib_dir)/adainclude/*.h \ + $(gcc_lib_dir)/adalib/*.ali \ + $(gcc_lib_dir)/adalib/lib*.a \ + $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) + +# Strip unreproducible -f*-prefix-map= options from installed .ali +# files until the proper solution BUILD_PATH_PREFIX_MAP is accepted. +sed_ali_strip_prefix_map := sed -i '/^A -f[a-z]+-prefix-map=/d' + +$(binary_stamp)-libgnat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + : # libgnat + rm -rf $(d_lgnat) + + dh_install -p$(p_lgnat) $(gcc_lib_dir)/adalib/libgna{t,rl}-$(GNAT_SONAME).so $(usr_lib) + + debian/dh_doclink -p$(p_lgnat) $(p_glbase) + + debian/dh_rmemptydirs -p$(p_lgnat) + + b=libgnat; \ + v=$(GNAT_VERSION); \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) \ + -V '$(p_lgnat) (>= $(shell echo $(DEB_VERSION) | sed 's/-.*//'))' + $(call cross_mangle_shlibs,$(p_lgnat)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + mkdir -p $(d_lgnat)/usr/share/lintian/overrides + echo package-name-doesnt-match-sonames > \ + $(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat) +endif + +# The subst Make command below could be simplified, but ensures +# consistency with libraries building non-default multilib packages. + $(call do_strip_lib_dbg, $(p_lgnat), $(p_lgnat_dbg), $(v_dbg),,) + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \ + $(call shlibdirs_to_search, \ + $(subst gnat-$(GNAT_SONAME),gcc-s$(GCC_SONAME),$(p_lgnat)) \ + $(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnat)) + +ifeq ($(with_dbg),yes) + : # $(p_lgnat_dbg) + debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) +endif + echo $(p_lgnat) $(if $(with_dbg), $(p_lgnat_dbg)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat_n) + rm -rf $(d_gnat_n) + dh_installdirs -p$(p_gnat_n) $(dirs_gnat_n) + : # Upstream does not install gnathtml. + cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + $(dh_compat2) dh_movefiles -p$(p_gnat_n) $(files_gnat_n) + +ifeq ($(with_libgnat),yes) + # Similar links specific to Debian. FIXME: what is their purpose? + dh_link -p$(p_gnat_n) $(foreach lib,libgnat libgnarl,\ + $(usr_lib)/$(lib)-$(GNAT_SONAME).so $(gcc_lib_dir)/adalib/$(lib).so) +endif + debian/dh_doclink -p$(p_gnat_n) $(p_gbase) + for i in $(GNAT_TOOLS); do \ + case "$$i" in \ + gnat) cp -p debian/gnat.1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \ + *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \ + esac; \ + done + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gnat_n)/$(gcc_lexec_dir)/gnat1 +endif + dh_strip -p$(p_gnat_n) + find $(d_gnat_n) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) + find $(d_gnat_n) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnat_n) + ( \ + echo '$(p_gnat_n) binary: hardening-no-pie'; \ + echo '$(p_gnat_n) binary: non-standard-file-perm' \ + ) > $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat_n) binary: binary-without-manpage' \ + >> $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) +endif + + debian/dh_rmemptydirs -p$(p_gnat_n) + + echo $(p_gnat_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gnat_h) + debian/dh_doclink -p$(p_gnat_h) $(p_xbase) + echo $(p_gnat_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gnat_b) + debian/dh_doclink -p$(p_gnat_b) $(p_cpp_b) + echo $(p_gnat_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ada: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat) + rm -rf $(d_gnat) + dh_installdirs -p$(p_gnat) $(dirs_gnat) + +ifeq ($(with_gnatsjlj),yes) + dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) + $(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude +endif + + debian/dh_doclink -p$(p_gnat) $(p_gbase) +ifeq ($(with_gnatsjlj),yes) + debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) +endif + cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/. + cp -p debian/ada/README.gnat $(d_gnat)/$(docdir)/$(p_gbase)/ada/. + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + : # ship the versioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat) binary: binary-without-manpage' \ + >> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +endif + + debian/dh_rmemptydirs -p$(p_gnat) + + echo $(p_gnat) >> debian/arch_binaries + +ifeq ($(with_gnatsjlj),yes) + dh_strip -p$(p_gnatsjlj) + find $(d_gnatsjlj) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) + find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnatsjlj) + echo $(p_gnatsjlj) >> debian/arch_binaries +endif + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(build_gnatdoc_stamp): $(build_stamp) + mkdir -p html + rm -f html/*.info + echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'cd html && \ + echo "generating {}-$(GNAT_VERSION).info"; \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -I $(builddir)/gcc \ + -o {}-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/{}.texi' + touch $@ + +$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnatd) + dh_installdirs -p$(p_gnatd) \ + $(PF)/share/info + cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/. + dh_installdocs -p$(p_gnatd) \ + html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html + echo $(p_gnatd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-algol68.mk b/rules.d/binary-algol68.mk new file mode 100644 index 0000000..364f37b --- /dev/null +++ b/rules.d/binary-algol68.mk @@ -0,0 +1,307 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) ga68-multi + endif + endif + arch_binaries := $(arch_binaries) ga68-nat ga68-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) ga68 + indep_binaries := $(indep_binaries) ga68-build + endif + + ifeq ($(with_algoldev),yes) + $(lib_binaries) += libga68-dev + endif + ifeq ($(with_libga68),yes) + $(lib_binaries) += libga68 + endif + + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) ga68-doc + endif + + ifeq (0,1) + ifeq ($(with_lib64ga68dev),yes) + $(lib_binaries) += lib64ga68-dev + endif + ifeq ($(with_lib32ga68dev),yes) + $(lib_binaries) += lib32ga68-dev + endif + ifeq ($(with_libn32ga68dev),yes) + $(lib_binaries) += libn32ga68-dev + endif + ifeq ($(with_libx32ga68dev),yes) + $(lib_binaries) += libx32ga68-dev + endif + + ifeq ($(with_lib64ga68),yes) + $(lib_binaries) += lib64ga68 + endif + ifeq ($(with_lib32ga68),yes) + $(lib_binaries) += lib32ga68 + endif + ifeq ($(with_libn32ga68),yes) + $(lib_binaries) += libn32ga68 + endif + ifeq ($(with_libx32ga68),yes) + $(lib_binaries) += libx32ga68 + endif + endif +endif + +p_ga68_n = ga68$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_ga68_h = ga68$(pkg_ver)-for-host +p_ga68_b = ga68$(pkg_ver)-for-build +p_ga68 = ga68$(pkg_ver) +p_ga68_m = ga68$(pkg_ver)-multilib$(cross_bin_arch) +p_libga68 = libga68-$(GA68_SONAME) +p_libga68dev = libga68$(pkg_ver)-dev +p_ga68d = ga68$(pkg_ver)-doc + +d_ga68_n = debian/$(p_ga68_n) +d_ga68_h = debian/$(p_ga68_h) +d_ga68_b = debian/$(p_ga68_b) +d_ga68 = debian/$(p_ga68) +d_ga68_m = debian/$(p_ga68_m) +d_libga68 = debian/$(p_libga68) +d_libga68dev = debian/$(p_libga68dev) +d_ga68d = debian/$(p_ga68d) + +dirs_ga68_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_ga68_n += \ +# $(ga68_include_dir) +#endif + +dirs_ga68 = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(docdir)/$(p_xbase)/Algol68 + +files_ga68_n = \ + $(PF)/bin/$(cmd_prefix)ga68$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)ga68$(pkg_ver).1 \ + $(gcc_lexec_dir)/a681 + +dirs_libga68 = \ + $(PF)/lib \ + $(ga68_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-ga68-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68_n) + dh_installdirs -p$(p_ga68_n) $(dirs_ga68_n) + + $(dh_compat2) dh_movefiles -p$(p_ga68_n) $(files_ga68_n) + + mv $(d)/$(usr_lib)/libga68.spec $(d_ga68_n)/$(gcc_lib_dir)/ + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_ga68_n)/$(gcc_lexec_dir)/a681 +endif + dh_strip -p$(p_ga68_n) \ + $(if $(unstripped_exe),-X/a681 -X/ga68) + dh_shlibdeps -p$(p_ga68_n) + + mkdir -p $(d_ga68_n)/usr/share/lintian/overrides + echo '$(p_ga68_n) binary: hardening-no-pie' \ + > $(d_ga68_n)/usr/share/lintian/overrides/$(p_ga68_n) + + debian/dh_doclink -p$(p_ga68_n) $(p_xbase) + + echo $(p_ga68_n) >> debian/arch_binaries + + find $(d_ga68_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_ga68_h) + debian/dh_doclink -p$(p_ga68_h) $(p_xbase) + echo $(p_ga68_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_ga68_b) + debian/dh_doclink -p$(p_ga68_b) $(p_cpp_b) + echo $(p_ga68_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68) + dh_installdirs -p$(p_ga68) $(dirs_ga68) + +# cp -p $(srcdir)/gcc/algol68/ChangeLog \ +# $(d_ga68)/$(docdir)/$(p_xbase)/Algol68/changelog.algol68 + + debian/dh_doclink -p$(p_ga68) $(p_xbase) + + ln -sf $(cmd_prefix)ga68$(pkg_ver) \ + $(d_ga68)/$(PF)/bin/ga68$(pkg_ver) + ln -sf $(cmd_prefix)ga68$(pkg_ver).1.gz \ + $(d_ga68)/$(PF)/share/man/man1/ga68$(pkg_ver).1.gz + debian/dh_rmemptydirs -p$(p_ga68) + + echo $(p_ga68) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-ga68-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68_m) + dh_installdirs -p$(p_ga68_m) $(docdir) + + debian/dh_doclink -p$(p_ga68_m) $(p_xbase) + + dh_strip -p$(p_ga68_m) + dh_shlibdeps -p$(p_ga68_m) + echo $(p_ga68_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libga68 + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libga68.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libga68.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ga68$(GA68_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst ga68$(GA68_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_ga68_lib(lib,soname,flavour,package) +define install_ga68_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/$(1).a +endef + +define __do_libga68_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_ga68_lib calls needed? + $(call install_ga68_lib,libga68,$(GA68_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libga68 = $(call __do_libga68,lib$(1)ga68-$(GA68_SONAME),$(1)) +do_libga68_dev = $(call __do_libga68_dev,lib$(1)ga68-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-ga68-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ga68d) + dh_installdirs -p$(p_ga68d) \ + $(docdir)/$(p_xbase)/Algol68 \ + $(PF)/share/info + cp -p $(d)/$(PF)/share/info/ga68.info \ + $(d_ga68d)/$(PF)/share/info/ga68-$(BASE_VERSION).info + cp -p $(d)/$(PF)/share/info/ga68-internals.info \ + $(d_ga68d)/$(PF)/share/info/ga68-internals-$(BASE_VERSION).info + cp -p html/ga68.html $(d_ga68d)/$(docdir)/$(p_xbase)/Algol68/ga68-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_ga68d) $(p_xbase) + dh_installdocs -p$(p_ga68d) + rm -f $(d_ga68d)/$(docdir)/$(p_xbase)/copyright + + echo $(p_ga68d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libga68: $(install_stamp) + $(call do_libga68,) + +$(binary_stamp)-lib64ga68: $(install_stamp) + $(call do_libga68,64) + +$(binary_stamp)-lib32ga68: $(install_stamp) + $(call do_libga68,32) + +$(binary_stamp)-libn32ga68: $(install_stamp) + $(call do_libga68,n32) + +$(binary_stamp)-libx32ga68: $(install_stamp) + $(call do_libga68,x32) + + +$(binary_stamp)-libga68-dev: $(install_stamp) + $(call do_libga68_dev,) + +$(binary_stamp)-lib64ga68-dev: $(install_stamp) + $(call do_libga68_dev,64) + +$(binary_stamp)-lib32ga68-dev: $(install_stamp) + $(call do_libga68_dev,32) + +$(binary_stamp)-libx32ga68-dev: $(install_stamp) + $(call do_libga68_dev,x32) + +$(binary_stamp)-libn32ga68-dev: $(install_stamp) + $(call do_libga68_dev,n32) diff --git a/rules.d/binary-base.mk b/rules.d/binary-base.mk new file mode 100644 index 0000000..c6f589b --- /dev/null +++ b/rules.d/binary-base.mk @@ -0,0 +1,49 @@ +arch_binaries += base +ifeq ($(with_gcclbase),yes) + ifneq ($(with_base_only),yes) + indep_binaries += lbase + endif +endif + +# --------------------------------------------------------------------------- +# gcc-base + +$(binary_stamp)-base: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_base) + dh_installdirs -p$(p_base) + +ifeq ($(with_base_only),yes) + dh_installdocs -p$(p_base) debian/README.Debian +else + dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH) +endif + rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian + dh_installchangelogs -p$(p_base) + dh_compress -p$(p_base) + dh_fixperms -p$(p_base) +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + $(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +else + dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +endif + dh_installdeb -p$(p_base) + dh_md5sums -p$(p_base) + dh_builddeb -p$(p_base) + touch $@ + +$(binary_stamp)-lbase: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_lbase) + dh_installdocs -p$(p_lbase) debian/README.Debian + rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian + dh_installchangelogs -p$(p_lbase) + dh_compress -p$(p_lbase) + dh_fixperms -p$(p_lbase) + dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_lbase) + dh_md5sums -p$(p_lbase) + dh_builddeb -p$(p_lbase) + touch $@ diff --git a/rules.d/binary-cobol.mk b/rules.d/binary-cobol.mk new file mode 100644 index 0000000..22b05a7 --- /dev/null +++ b/rules.d/binary-cobol.mk @@ -0,0 +1,328 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gcobol-multi + endif + endif + arch_binaries := $(arch_binaries) gcobol-nat gcobol-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gcobol + indep_binaries := $(indep_binaries) gcobol-build + endif + + ifeq ($(with_coboldev),yes) + $(lib_binaries) += libgcobol-dev + endif + ifeq ($(with_libgcobol),yes) + $(lib_binaries) += libgcobol + endif + + ifeq (0,1) + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) gcobol-doc + endif + endif + + ifeq (0,1) + ifeq ($(with_lib64gcoboldev),yes) + $(lib_binaries) += lib64gcobol-dev + endif + ifeq ($(with_lib32gcoboldev),yes) + $(lib_binaries) += lib32gcobol-dev + endif + ifeq ($(with_libn32gcoboldev),yes) + $(lib_binaries) += libn32gcobol-dev + endif + ifeq ($(with_libx32gcoboldev),yes) + $(lib_binaries) += libx32gcobol-dev + endif + + ifeq ($(with_lib64gcobol),yes) + $(lib_binaries) += lib64gcobol + endif + ifeq ($(with_lib32gcobol),yes) + $(lib_binaries) += lib32gcobol + endif + ifeq ($(with_libn32gcobol),yes) + $(lib_binaries) += libn32gcobol + endif + ifeq ($(with_libx32gcobol),yes) + $(lib_binaries) += libx32gcobol + endif + endif +endif + +p_gcobol_n = gcobol$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gcobol_h = gcobol$(pkg_ver)-for-host +p_gcobol_b = gcobol$(pkg_ver)-for-build +p_gcobol = gcobol$(pkg_ver) +p_gcobol_m = gcobol$(pkg_ver)-multilib$(cross_bin_arch) +p_libgcobol = libgcobol$(GCOBOL_SONAME) +p_libgcoboldev = libgcobol$(pkg_ver)-dev +p_gcobold = gcobol$(pkg_ver)-doc + +d_gcobol_n = debian/$(p_gcobol_n) +d_gcobol_h = debian/$(p_gcobol_h) +d_gcobol_b = debian/$(p_gcobol_b) +d_gcobol = debian/$(p_gcobol) +d_gcobol_m = debian/$(p_gcobol_m) +d_libgcobol = debian/$(p_libgcobol) +d_libgcoboldev = debian/$(p_libgcoboldev) +d_gcobold = debian/$(p_gcobold) + +dirs_gcobol_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_gcobol_n += \ +# $(gcobol_include_dir) +#endif + +dirs_gcobol = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(docdir)/$(p_xbase)/COBOL + +files_gcobol_n = \ + $(PF)/bin/$(cmd_prefix)gcobol$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcobc$(pkg_ver) \ + $(gcc_lexec_dir)/cobol1 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gcobol_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gcobol$(pkg_ver).1 +endif + +dirs_libgcobol = \ + $(PF)/lib \ + $(gcobol_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gcobol-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol_n) + dh_installdirs -p$(p_gcobol_n) $(dirs_gcobol_n) + + $(dh_compat2) dh_movefiles -p$(p_gcobol_n) $(files_gcobol_n) + + mv $(d)/$(usr_lib)/libgcobol.spec $(d_gcobol_n)/$(gcc_lib_dir)/ + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcobol_n)/$(gcc_lexec_dir)/cobol1 +endif + dh_strip -p$(p_gcobol_n) \ + $(if $(unstripped_exe),-X/cobol1 -X/gcobol) + dh_shlibdeps -p$(p_gcobol_n) + + mkdir -p $(d_gcobol_n)/usr/share/lintian/overrides + ( \ + echo '$(p_gcobol_n) binary: hardening-no-pie'; \ + echo '$(p_gcobol_n) binary: no-manual-page'; \ + ) > $(d_gcobol_n)/usr/share/lintian/overrides/$(p_gcobol_n) + + debian/dh_doclink -p$(p_gcobol_n) $(p_xbase) + + echo $(p_gcobol_n) >> debian/arch_binaries + + find $(d_gcobol_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcobol_h) + debian/dh_doclink -p$(p_gcobol_h) $(p_xbase) + echo $(p_gcobol_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcobol_b) + debian/dh_doclink -p$(p_gcobol_b) $(p_cpp_b) + echo $(p_gcobol_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol) + dh_installdirs -p$(p_gcobol) $(dirs_gcobol) + +# cp -p $(srcdir)/gcc/cobol/ChangeLog \ +# $(d_gcobol)/$(docdir)/$(p_xbase)/COBOL/changelog.cobol + + ln -sf $(cmd_prefix)gcobc$(pkg_ver) \ + $(d_gcobol)/$(PF)/bin/gcobc$(pkg_ver) + ln -sf $(cmd_prefix)gcobol$(pkg_ver) \ + $(d_gcobol)/$(PF)/bin/gcobol$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gcobol$(pkg_ver).1.gz \ + $(d_gcobol)/$(PF)/share/man/man1/gcobol$(pkg_ver).1.gz +endif + debian/dh_doclink -p$(p_gcobol) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_gcobol) + + echo $(p_gcobol) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcobol-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobol_m) + dh_installdirs -p$(p_gcobol_m) $(docdir) + + debian/dh_doclink -p$(p_gcobol_m) $(p_xbase) + + dh_strip -p$(p_gcobol_m) + dh_shlibdeps -p$(p_gcobol_m) + echo $(p_gcobol_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgcobol + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgcobol.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgcobol.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gcobol$(GCOBOL_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst gcobol$(GCOBOL_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_gcobol_lib(lib,soname,flavour,package) +define install_gcobol_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).a +endef + +define __do_libgcobol_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(if $(findstring native, $(build_type)), + $(if $(2),, + mkdir -p $(d_l)/$(PF)/share/man/man3 + mv $(d)/$(PF)/share/man/man3/$(cmd_prefix)gcobol-io$(pkg_ver).3 \ + $(d_l)/$(PF)/share/man/man3/. + )) + + : # install_gcobol_lib calls needed? + $(call install_gcobol_lib,libgcobol,$(GCOBOL_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcobol = $(call __do_libgcobol,lib$(1)gcobol$(GCOBOL_SONAME),$(1)) +do_libgcobol_dev = $(call __do_libgcobol_dev,lib$(1)gcobol-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcobol-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcobold) + dh_installdirs -p$(p_gcobold) \ + $(docdir)/$(p_gcobol) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/gcobol.info \ + $(d_gcobold)/$(PF)/share/info/gcobol-$(BASE_VERSION).info + cp -p html/gcobol.html \ + $(d_gcobold)/$(docdir)/$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html + ln -sf ../$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html \ + $(d_gcobold)/$(docdir)/$(p_gcobol)/gcobol-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_gcobold) $(p_xbase) + dh_installdocs -p$(p_gcobold) + rm -f $(d_gcobold)/$(docdir)/$(p_xbase)/copyright + + echo $(p_gcobold) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgcobol: $(install_stamp) + $(call do_libgcobol,) + +$(binary_stamp)-lib64gcobol: $(install_stamp) + $(call do_libgcobol,64) + +$(binary_stamp)-lib32gcobol: $(install_stamp) + $(call do_libgcobol,32) + +$(binary_stamp)-libn32gcobol: $(install_stamp) + $(call do_libgcobol,n32) + +$(binary_stamp)-libx32gcobol: $(install_stamp) + $(call do_libgcobol,x32) + + +$(binary_stamp)-libgcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,) + +$(binary_stamp)-lib64gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,64) + +$(binary_stamp)-lib32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,32) + +$(binary_stamp)-libx32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,x32) + +$(binary_stamp)-libn32gcobol-dev: $(install_stamp) + $(call do_libgcobol_dev,n32) diff --git a/rules.d/binary-cpp.mk b/rules.d/binary-cpp.mk new file mode 100644 index 0000000..d7ee242 --- /dev/null +++ b/rules.d/binary-cpp.mk @@ -0,0 +1,143 @@ +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) cpp-nat cpp-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cpp + indep_binaries := $(indep_binaries) cpp-build + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) cpp-doc + endif + endif +endif + +p_cpp = cpp$(pkg_ver) +p_cpp_n = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cpp_h = cpp$(pkg_ver)-for-host +p_cpp_d = cpp$(pkg_ver)-doc + +d_cpp = debian/$(p_cpp) +d_cpp_n = debian/$(p_cpp_n) +d_cpp_h = debian/$(p_cpp_h) +d_cpp_b = debian/$(p_cpp_b) +d_cpp_d = debian/$(p_cpp_d) + +dirs_cpp_n = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_cpp = \ + $(docdir) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_cpp_n = \ + $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ + $(gcc_lexec_dir)/cc1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cpp_n += \ + $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp_n) + dh_installdirs -p$(p_cpp_n) $(dirs_cpp_n) + $(dh_compat2) dh_movefiles -p$(p_cpp_n) $(files_cpp_n) + + echo '$(p_cpp_n) binary: hardening-no-pie' \ + > $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cpp_n) binary: binary-without-manpage' \ + >> $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) +endif + + debian/dh_doclink -p$(p_cpp_n) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) $(d_cpp_n)/$(gcc_lexec_dir)/cc1 +endif + dh_strip -p$(p_cpp_n) \ + $(if $(unstripped_exe),-X/cc1) + dh_shlibdeps -p$(p_cpp_n) + + echo $(p_cpp_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cpp_h) + debian/dh_doclink -p$(p_cpp_h) $(p_xbase) + echo $(p_cpp_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cpp_b) + dh_installdocs -p$(p_cpp_b) debian/README.Debian + dh_installchangelogs -p$(p_cpp_b) + dh_compress -p$(p_cpp_b) + dh_fixperms -p$(p_cpp_b) + echo $(p_cpp_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cpp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp) + dh_installdirs -p$(p_cpp) $(dirs_cpp) + + ln -sf $(cmd_prefix)cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 +else + echo '$(p_cpp) binary: binary-without-manpage' \ + >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +endif + + debian/dh_doclink -p$(p_cpp) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp) + + echo $(p_cpp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp_d) + dh_installdirs -p$(p_cpp_d) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_cpp_d) \ + $(PF)/share/info/cpp* + + debian/dh_doclink -p$(p_cpp_d) $(p_xbase) + dh_installdocs -p$(p_cpp_d) html/cpp.html html/cppinternals.html + rm -f $(d_cpp_d)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_cpp_d) + echo $(p_cpp_d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-cxx.mk b/rules.d/binary-cxx.mk new file mode 100644 index 0000000..fc947d4 --- /dev/null +++ b/rules.d/binary-cxx.mk @@ -0,0 +1,142 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) cxx-multi + endif + arch_binaries := $(arch_binaries) cxx-nat cxx-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) cxx + indep_binaries := $(indep_binaries) cxx-build + endif +endif + +p_cxx = g++$(pkg_ver) +p_cxx_n = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_cxx_h = g++$(pkg_ver)-for-host +p_cxx_b = g++$(pkg_ver)-for-build + +d_cxx = debian/$(p_cxx) +d_cxx_n = debian/$(p_cxx_n) +d_cxx_h = debian/$(p_cxx_h) +d_cxx_b = debian/$(p_cxx_b) + +dirs_cxx_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_cxx = \ + $(docdir)/$(p_xbase)/C++ \ + $(PF)/bin \ + $(PF)/share/info \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +files_cxx_n = \ + $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ + $(gcc_lexec_dir)/cc1plus \ + $(gcc_lexec_dir)/g++-mapper-server + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cxx_n += \ + $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 +endif + +p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch) +d_cxx_m = debian/$(p_cxx_m) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_n) + dh_installdirs -p$(p_cxx_n) $(dirs_cxx_n) + $(dh_compat2) dh_movefiles -p$(p_cxx_n) $(files_cxx_n) + + echo '$(p_cxx_n) binary: hardening-no-pie' \ + > $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx_n) binary: binary-without-manpage' \ + >> $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) +endif + + debian/dh_doclink -p$(p_cxx_n) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_n) + + dh_shlibdeps -p$(p_cxx_n) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_cxx_n)/$(gcc_lexec_dir)/cc1plus +endif + dh_strip -p$(p_cxx_n) $(if $(unstripped_exe),-X/cc1plus) + echo $(p_cxx_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cxx_h) + debian/dh_doclink -p$(p_cxx_h) $(p_xbase) + echo $(p_cxx_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_cxx_b) + debian/dh_doclink -p$(p_cxx_b) $(p_cpp_b) + echo $(p_cxx_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + + ln -sf $(cmd_prefix)g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/g++$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx) binary: binary-without-manpage' \ + >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +endif + + debian/dh_doclink -p$(p_cxx) $(p_xbase) + cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/ + cp -p $(srcdir)/gcc/cp/ChangeLog \ + $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog + debian/dh_rmemptydirs -p$(p_cxx) + + echo $(p_cxx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_m) + dh_installdirs -p$(p_cxx_m) \ + $(docdir) + + debian/dh_doclink -p$(p_cxx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_m) + + dh_strip -p$(p_cxx_m) + dh_shlibdeps -p$(p_cxx_m) + echo $(p_cxx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-d.mk b/rules.d/binary-d.mk new file mode 100644 index 0000000..2adc8c2 --- /dev/null +++ b/rules.d/binary-d.mk @@ -0,0 +1,314 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) + arch_binaries := $(arch_binaries) gdc-multi + endif + arch_binaries := $(arch_binaries) gdc-nat gdc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gdc + indep_binaries := $(indep_binaries) gdc-build + endif + + ifeq ($(with_libphobosdev),yes) + $(lib_binaries) += libphobos-dev + endif + ifeq ($(with_libphobos),yes) + $(lib_binaries) += libphobos + endif + + ifeq ($(with_lib64phobosdev),yes) + $(lib_binaries) += lib64phobos-dev + endif + ifeq ($(with_lib32phobosdev),yes) + $(lib_binaries) += lib32phobos-dev + endif + ifeq ($(with_libn32phobosdev),yes) + $(lib_binaries) += libn32phobos-dev + endif + ifeq ($(with_libx32phobosdev),yes) + $(lib_binaries) += libx32phobos-dev + endif + + ifeq ($(with_lib64phobos),yes) + $(lib_binaries) += lib64phobos + endif + ifeq ($(with_lib32phobos),yes) + $(lib_binaries) += lib32phobos + endif + ifeq ($(with_libn32phobos),yes) + $(lib_binaries) += libn32phobos + endif + ifeq ($(with_libx32phobos),yes) + $(lib_binaries) += libx32phobos + endif +endif + +p_gdc_n = gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gdc_h = gdc$(pkg_ver)-for-host +p_gdc_b = gdc$(pkg_ver)-for-build +p_gdc = gdc$(pkg_ver) +p_gdc_m = gdc$(pkg_ver)-multilib$(cross_bin_arch) +p_libphobos = libgphobos$(GPHOBOS_SONAME) +p_libphobosdev = libgphobos$(pkg_ver)-dev + +d_gdc_n = debian/$(p_gdc_n) +d_gdc_h = debian/$(p_gdc_h) +d_gdc_b = debian/$(p_gdc_b) +d_gdc = debian/$(p_gdc) +d_gdc_m = debian/$(p_gdc_m) +d_libphobos = debian/$(p_libphobos) +d_libphobosdev = debian/$(p_libphobosdev) + +ifeq ($(DEB_CROSS),yes) + gdc_include_dir := $(gcc_lib_dir)/include/d +else + gdc_include_dir := $(PF)/include/d/$(BASE_VERSION) +endif +# FIXME: always here? +gdc_include_dir := $(gcc_lib_dir)/include/d + +dirs_gdc_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir) \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_gdc = \ + $(PF)/bin \ + $(PF)/share/man/man1 + +ifneq ($(DEB_CROSS),yes) + dirs_gdc_n += \ + $(gdc_include_dir) +endif + +files_gdc_n = \ + $(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \ + $(gcc_lexec_dir)/d21 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gdc_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1 +endif + +dirs_libphobos = \ + $(PF)/lib \ + $(gdc_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gdc-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc_n) + dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n) + + debian/dh_doclink -p$(p_gdc_n) $(p_xbase) + + $(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n) + +ifeq ($(with_phobos),yes) + mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/ +endif + +# FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package +## # Always needed by gdc. +## mkdir -p $(d_gdc_n)/$(gdc_include_dir) +## cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \ +## $(d_gdc_n)/$(gdc_include_dir)/. +#ifneq ($(DEB_CROSS),yes) +# dh_link -p$(p_gdc_n) \ +# /$(gdc_include_dir) \ +# /$(dir $(gdc_include_dir))/$(GCC_VERSION) +#endif + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gdc_n)/$(gcc_lexec_dir)/d21 +endif + dh_strip -p$(p_gdc_n) \ + $(if $(unstripped_exe),-X/d21) + dh_shlibdeps -p$(p_gdc_n) + + echo '$(p_gdc_n) binary: hardening-no-pie' \ + > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n) + + echo $(p_gdc_n) >> debian/arch_binaries + + find $(d_gdc_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gdc_h) + debian/dh_doclink -p$(p_gdc_h) $(p_xbase) + echo $(p_gdc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gdc_b) + debian/dh_doclink -p$(p_gdc_b) $(p_cpp_b) + echo $(p_gdc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc) + dh_installdirs -p$(p_gdc) $(dirs_gdc) + + dh_installdocs -p$(p_gdc) + dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog + + ln -sf $(cmd_prefix)gdc$(pkg_ver) \ + $(d_gdc)/$(PF)/bin/gdc$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \ + $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz +endif + + dh_link -p$(p_gdc) \ + /$(docdir)/$(p_xbase)/README.Bugs \ + /$(docdir)/$(p_gdc)/README.Bugs + + echo $(p_gdc) >> debian/arch_binaries + + find $(d_gdc) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc_m) + dh_installdirs -p$(p_gdc_m) $(docdir) + + debian/dh_doclink -p$(p_gdc_m) $(p_xbase) + + dh_strip -p$(p_gdc_m) + dh_shlibdeps -p$(p_gdc_m) + echo $(p_gdc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libphobos + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgphobos.so.* \ + $(usr_lib$(2))/libgdruntime.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgphobos.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gphobos$(GPHOBOS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + $(if $(filter $(DEB_TARGET_ARCH), amd64), + $(if $(2), + echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + , + echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + $(if $(2), + echo "$(p_l) binary: embedded-library" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libphobos_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(call install_gcc_lib,libgdruntime,$(GDRUNTIME_SONAME),$(2),$(p_l)) + $(call install_gcc_lib,libgphobos,$(GPHOBOS_SONAME),$(2),$(p_l)) + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gdc_include_dir) + ) + +## : # included in gdc package +## rm -f $(d_l)/$(gdc_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# don't put this as a comment within define/endef +# $(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l)) + +do_libphobos = $(call __do_libphobos,lib$(1)gphobos$(GPHOBOS_SONAME),$(1)) +do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)gphobos-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libphobos: $(install_stamp) + $(call do_libphobos,) + +$(binary_stamp)-lib64phobos: $(install_stamp) + $(call do_libphobos,64) + +$(binary_stamp)-lib32phobos: $(install_stamp) + $(call do_libphobos,32) + +$(binary_stamp)-libn32phobos: $(install_stamp) + $(call do_libphobos,n32) + +$(binary_stamp)-libx32phobos: $(install_stamp) + $(call do_libphobos,x32) + + +$(binary_stamp)-libphobos-dev: $(install_stamp) + $(call do_libphobos_dev,) + +$(binary_stamp)-lib64phobos-dev: $(install_stamp) + $(call do_libphobos_dev,64) + +$(binary_stamp)-lib32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,32) + +$(binary_stamp)-libx32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,x32) + +$(binary_stamp)-libn32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,n32) diff --git a/rules.d/binary-fortran.mk b/rules.d/binary-fortran.mk new file mode 100644 index 0000000..f2aa9e5 --- /dev/null +++ b/rules.d/binary-fortran.mk @@ -0,0 +1,309 @@ +ifeq ($(with_libgfortran),yes) + $(lib_binaries) += libgfortran +endif +ifeq ($(with_fdev),yes) + $(lib_binaries) += libgfortran-dev +endif +ifeq ($(with_lib64gfortran),yes) + $(lib_binaries) += lib64fortran +endif +ifeq ($(with_lib64gfortrandev),yes) + $(lib_binaries) += lib64gfortran-dev +endif +ifeq ($(with_lib32gfortran),yes) + $(lib_binaries) += lib32fortran +endif +ifeq ($(with_lib32gfortrandev),yes) + $(lib_binaries) += lib32gfortran-dev +endif +ifeq ($(with_libn32gfortran),yes) + $(lib_binaries) += libn32fortran +endif +ifeq ($(with_libn32gfortrandev),yes) + $(lib_binaries) += libn32gfortran-dev +endif +ifeq ($(with_libx32gfortran),yes) + $(lib_binaries) += libx32fortran +endif +ifeq ($(with_libx32gfortrandev),yes) + $(lib_binaries) += libx32gfortran-dev +endif + +ifeq ($(with_fdev),yes) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) fdev-multi + endif + arch_binaries := $(arch_binaries) fdev-nat fdev-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) fdev + indep_binaries := $(indep_binaries) fdev-build + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) fortran-doc + endif + endif +endif + +p_g95_n = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_g95_h = gfortran$(pkg_ver)-for-host +p_g95_b = gfortran$(pkg_ver)-for-build +p_g95 = gfortran$(pkg_ver) +p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch) +p_g95d = gfortran$(pkg_ver)-doc +p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch) + +d_g95_n = debian/$(p_g95_n) +d_g95_h = debian/$(p_g95_h) +d_g95_b = debian/$(p_g95_b) +d_g95 = debian/$(p_g95) +d_g95_m = debian/$(p_g95_m) +d_g95d = debian/$(p_g95d) + +dirs_g95_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_g95 = \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/bin \ + $(PF)/share/man/man1 + +files_g95_n = \ + $(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \ + $(gcc_lib_dir)/finclude \ + $(gcc_lexec_dir)/f951 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_g95_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +define __do_fortran + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgfortran.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gfortran$(FORTRAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst gfortran$(FORTRAN_SONAME),quadmath$(QUADMATH_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) + + +define __do_libgfortran_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libcaf_single.a + $(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l)) + + $(if $(2),, \ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/include/ISO_Fortran_binding.h) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef +# ---------------------------------------------------------------------- + +do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libgfortran: $(install_stamp) + $(call do_fortran,) + +$(binary_stamp)-lib64fortran: $(install_stamp) + $(call do_fortran,64) + +$(binary_stamp)-lib32fortran: $(install_stamp) + $(call do_fortran,32) + +$(binary_stamp)-libn32fortran: $(install_stamp) + $(call do_fortran,n32) + +$(binary_stamp)-libx32fortran: $(install_stamp) + $(call do_fortran,x32) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_n) + dh_installdirs -p$(p_g95_n) $(dirs_g95_n) + + $(dh_compat2) dh_movefiles -p$(p_g95_n) $(files_g95_n) + + mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95_n)/$(gcc_lib_dir)/ + + ( \ + echo '$(p_g95_n) binary: hardening-no-pie'; \ + echo '$(p_g95_n) binary: missing-prerequisite-for-gfortran-module'; \ + ) \ + > $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_g95_n) binary: binary-without-manpage' \ + >> $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) +endif + + debian/dh_doclink -p$(p_g95_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_g95_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_g95_n)/$(gcc_lexec_dir)/f951 +endif + dh_strip -p$(p_g95_n) \ + $(if $(unstripped_exe),-X/f951) + dh_shlibdeps -p$(p_g95_n) + + echo $(p_g95_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_g95_h) + debian/dh_doclink -p$(p_g95_h) $(p_xbase) + echo $(p_g95_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_g95_b) + debian/dh_doclink -p$(p_g95_b) $(p_cpp_b) + echo $(p_g95_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-fdev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95) + dh_installdirs -p$(p_g95) $(dirs_g95) + + ln -sf $(cmd_prefix)gfortran$(pkg_ver) \ + $(d_g95)/$(PF)/bin/gfortran$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \ + $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1 +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + mkdir -p $(d_g95)/usr/share/lintian/overrides + echo '$(p_g95) binary: binary-without-manpage' \ + > $(d_g95)/usr/share/lintian/overrides/$(p_g95) +endif + + debian/dh_doclink -p$(p_g95) $(p_xbase) + + cp -p $(srcdir)/gcc/fortran/ChangeLog \ + $(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog + debian/dh_rmemptydirs -p$(p_g95) + + echo $(p_g95) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_m) + dh_installdirs -p$(p_g95_m) $(docdir) + + debian/dh_doclink -p$(p_g95_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_g95_m) + dh_strip -p$(p_g95_m) + dh_shlibdeps -p$(p_g95_m) + echo $(p_g95_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95d) + dh_installdirs -p$(p_g95d) \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_g95d) \ + $(PF)/share/info/gfortran* + + debian/dh_doclink -p$(p_g95d) $(p_xbase) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_g95d) + rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright + cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/ +endif + echo $(p_g95d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,) + +$(binary_stamp)-lib64gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,64) + +$(binary_stamp)-lib32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,32) + +$(binary_stamp)-libn32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,n32) + +$(binary_stamp)-libx32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,x32) diff --git a/rules.d/binary-gcc.mk b/rules.d/binary-gcc.mk new file mode 100644 index 0000000..36edf54 --- /dev/null +++ b/rules.d/binary-gcc.mk @@ -0,0 +1,385 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gcc-multi + endif + ifeq ($(with_plugins),yes) + arch_binaries := $(arch_binaries) gcc-plugindev + endif + + arch_binaries := $(arch_binaries) gcc-nat gcc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gcc + indep_binaries := $(indep_binaries) gcc-build + endif + + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) gcc-doc + endif + ifeq ($(with_nls),yes) + indep_binaries := $(indep_binaries) gcc-locales + endif + endif + + ifeq ($(build_type),build-native) + arch_binaries := $(arch_binaries) testresults + endif +endif + +# gcc must be moved after g77 and g++ +# not all files $(PF)/include/*.h are part of gcc, +# but it becomes difficult to name all these files ... + +p_gcc = gcc$(pkg_ver) +p_gcc_n = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gcc_h = gcc$(pkg_ver)-for-host +p_gcc_b = gcc$(pkg_ver)-for-build +p_gcc_d = gcc$(pkg_ver)-doc + +d_gcc = debian/$(p_gcc) +d_gcc_n = debian/$(p_gcc_n) +d_gcc_h = debian/$(p_gcc_h) +d_gcc_b = debian/$(p_gcc_b) +d_gcc_d = debian/$(p_gcc_d) + +dirs_gcc_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 $(libgcc_dir) \ + usr/share/lintian/overrides + +dirs_gcc = \ + $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +# XXX: what about triarch mapping? +files_gcc_n = \ + $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump,lto-dump}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(with_libcc1_plugin),yes) + files_gcc_n += \ + $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} +endif + +files_gcc_n += \ + $(gcc_lexec_dir)/liblto_plugin.so + +ifeq ($(DEB_STAGE),stage1) + files_gcc_n += \ + $(gcc_lib_dir)/include +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcc_n += \ + $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)lto-dump$(pkg_ver).1 +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) + +p_loc = gcc$(pkg_ver)-locales +d_loc = debian/$(p_loc) + +p_gcc_m = gcc$(pkg_ver)-multilib$(cross_bin_arch) +d_gcc_m = debian/$(p_gcc_m) + +p_pld = gcc$(pkg_ver)-plugin-dev$(cross_bin_arch) +d_pld = debian/$(p_pld) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-nat: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_n) + dh_installdirs -p$(p_gcc_n) $(dirs_gcc_n) + +ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_itm),yes) + mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_asan),yes) + mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_hwasan),yes) + mv $(d)/$(usr_lib)/libhwasan_preinit.o $(d_gcc_n)/$(gcc_lib_dir)/ +endif +ifeq ($(with_cc1),yes) + rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so + dh_link -p$(p_gcc_n) \ + /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ + /$(gcc_lib_dir)/libcc1.so +endif + + $(dh_compat2) dh_movefiles -p$(p_gcc_n) $(files_gcc_n) + : # keep the lto_plugin.so link in the old place for a while + dh_link -p$(p_gcc_n) \ + /$(gcc_lexec_dir)/liblto_plugin.so /$(gcc_lib_dir)/liblto_plugin.so + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc_n) $(p_xbase) + + echo '$(p_gcc_n) binary: hardening-no-pie' \ + > $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc_n) binary: binary-without-manpage' \ + >> $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) +endif + + debian/dh_rmemptydirs -p$(p_gcc_n) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcc_n)/$(gcc_lexec_dir)/lto1 \ + $(d_gcc_n)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_gcc_n)/$(gcc_lexec_dir)/collect2 +endif + dh_strip -p$(p_gcc_n) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_gcc_n) + echo $(p_gcc_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc-host: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcc_h) + debian/dh_doclink -p$(p_gcc_h) $(p_xbase) + echo $(p_gcc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc-build: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gcc_b) + debian/dh_doclink -p$(p_gcc_b) $(p_cpp_b) + echo $(p_gcc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + +ifeq ($(with_libssp),yes) + cp -p $(srcdir)/libssp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog +endif +ifeq ($(with_gomp),yes) + cp -p $(srcdir)/libgomp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog +endif +ifeq ($(with_itm),yes) + cp -p $(srcdir)/libitm/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog +endif +ifeq ($(with_qmath),yes) + cp -p $(srcdir)/libquadmath/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog +endif +ifeq ($(with_asan),yes) + cp -p $(srcdir)/libsanitizer/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog +endif + + for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib lto-dump; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-dump gcov-tool lto-dump; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done +endif + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_xbase) + cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_xbase)/. + cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_xbase)/ + cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_xbase)/NEWS + cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_xbase)/NEWS.html + cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog + cp -p $(srcdir)/gcc/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + ( \ + echo "The comparision of the stage2 and stage3 object files shows differences."; \ + echo "The Debian package was modified to ignore these differences."; \ + echo ""; \ + echo "The following files differ:"; \ + echo ""; \ + cat $(builddir)/gcc/.bad_compare; \ + ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ + fi + +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc) binary: binary-without-manpage' \ + >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +endif + + debian/dh_rmemptydirs -p$(p_gcc) + echo $(p_gcc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-gcc-multi: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_m) + dh_installdirs -p$(p_gcc_m) $(docdir) + + debian/dh_doclink -p$(p_gcc_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_gcc_m) + + dh_strip -p$(p_gcc_m) + dh_shlibdeps -p$(p_gcc_m) + echo $(p_gcc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-plugindev: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pld) + dh_installdirs -p$(p_pld) \ + $(docdir) \ + $(gcc_lib_dir)/plugin + $(dh_compat2) dh_movefiles -p$(p_pld) \ + $(gcc_lib_dir)/plugin/include \ + $(gcc_lib_dir)/plugin/gtype.state \ + $(gcc_lexec_dir)/plugin/gengtype + + debian/dh_doclink -p$(p_pld) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pld) + dh_strip -p$(p_pld) + dh_shlibdeps -p$(p_pld) + mkdir -p $(d_pld)/usr/share/lintian/overrides + echo '$(p_pld) binary: hardening-no-pie' \ + > $(d_pld)/usr/share/lintian/overrides/$(p_pld) + echo $(p_pld) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-locales: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_loc) + dh_installdirs -p$(p_loc) \ + $(docdir) + $(dh_compat2) dh_movefiles -p$(p_loc) \ + $(PF)/share/locale/*/*/cpplib*.* \ + $(PF)/share/locale/*/*/gcc*.* + + debian/dh_doclink -p$(p_loc) $(p_xbase) + debian/dh_rmemptydirs -p$(p_loc) + echo $(p_loc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +# ---------------------------------------------------------------------- + +$(binary_stamp)-testresults: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_tst) + dh_installdirs -p$(p_tst) $(docdir) + + debian/dh_doclink -p$(p_tst) $(p_xbase) + + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test +ifeq ($(with_check),yes) + cd $(d_tst) && tar xvf ../../installed-testlogs.tar +else + echo "Nothing to compare (testsuite not run)" + echo 'Test run disabled, reason: $(with_check)' \ + > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled +endif + + debian/dh_rmemptydirs -p$(p_tst) + + echo $(p_tst) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_d) + dh_installdirs -p$(p_gcc_d) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_gcc_d) \ + $(PF)/share/info/cpp{,internals}-* \ + $(PF)/share/info/gcc{,int}-* \ + $(PF)/share/info/lib{gomp,itm}-* \ + $(if $(with_qmath),$(PF)/share/info/libquadmath-*) + rm -f $(d_gcc_d)/$(PF)/share/info/gccinst* + +ifeq ($(with_gomp),yes) + $(MAKE) -C $(buildlibdir)/libgomp stamp-build-info + cp -p $(buildlibdir)/libgomp/$(cmd_prefix)libgomp$(pkg_ver).info \ + $(d_gcc_d)/$(PF)/share/info/libgomp$(pkg_ver).info +endif +ifeq ($(with_itm),yes) + -$(MAKE) -C $(buildlibdir)/libitm stamp-build-info + if [ -f $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info ]; then \ + cp -p $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info \ + $(d_gcc_d)/$(PF)/share/info/libitm$(pkg_ver).info; \ + fi +endif + + debian/dh_doclink -p$(p_gcc_d) $(p_xbase) + dh_installdocs -p$(p_gcc_d) html/gcc.html html/gccint.html +ifeq ($(with_gomp),yes) + cp -p html/libgomp.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif +ifeq ($(with_itm),yes) + cp -p html/libitm.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif +ifeq ($(with_qmath),yes) + cp -p html/libquadmath.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ +endif + rm -f $(d_gcc_d)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_gcc_d) + echo $(p_gcc_d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-gcn.mk b/rules.d/binary-gcn.mk new file mode 100644 index 0000000..7ae4eaa --- /dev/null +++ b/rules.d/binary-gcn.mk @@ -0,0 +1,124 @@ +ifeq ($(with_offload_gcn),yes) + arch_binaries := $(arch_binaries) gcn + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) gcn-plugin + endif +endif + +p_gcn = gcc$(pkg_ver)-offload-amdgcn +d_gcn = debian/$(p_gcn) + +p_pl_gcn = libgomp-plugin-amdgcn1 +d_pl_gcn = debian/$(p_pl_gcn) + +dirs_gcn = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lib_dir)/accel \ + $(gcc_lexec_dir)/accel + +files_gcn = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver) \ + $(gcc_lib_dir)/accel/$(gcn_target_name) \ + $(gcc_lexec_dir)/accel/$(gcn_target_name) + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/amdgcn-none + +# are these needed? +# $(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcn += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-gcn: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcn) + dh_installdirs -p$(p_gcn) $(dirs_gcn) + tar -c -C $(d)-gcn -f - $(files_gcn) \ + | tar -x -v -C $(d_gcn) -f - + +ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_gcn) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib +else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_gcn) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + mkdir -p $(d_gcn)/usr/$(gcn_target_name)/bin + dh_link -p$(p_gcn) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /usr/$(gcn_target_name)/bin/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /usr/$(gcn_target_name)/bin/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /usr/$(gcn_target_name)/bin/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /usr/$(gcn_target_name)/bin/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /usr/$(gcn_target_name)/bin/ranlib +endif + + mkdir -p $(d_gcn)/usr/share/lintian/overrides + ( \ + echo '$(p_gcn) binary: hardening-no-pie'; \ + echo '$(p_gcn) binary: non-standard-dir-in-usr'; \ + echo '$(p_gcn) binary: file-in-unusual-dir'; \ + echo '$(p_gcn) binary: binary-from-other-architecture'; \ + ) > $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcn) binary: binary-without-manpage' \ + >> $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) +endif + + debian/dh_doclink -p$(p_gcn) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_gcn) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcn)/$(gcc_lexec_dir)/accel/$(gcn_target_name)/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_gcn) \ + $(if $(unstripped_exe),-X/lto1) -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared,stdc++}.a + dh_shlibdeps -p$(p_gcn) + echo $(p_gcn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcn-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_gcn) + dh_installdirs -p$(p_pl_gcn) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_gcn) \ + $(usr_lib)/libgomp-plugin-gcn.so.* + + mkdir -p $(d_pl_gcn)/usr/share/lintian/overrides + ( \ + echo '$(p_pl_gcn) binary: package-name-doesnt-match-sonames'; \ + ) > $(d_pl_gcn)/usr/share/lintian/overrides/$(p_pl_gcn) + debian/dh_doclink -p$(p_pl_gcn) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_gcn) + + dh_strip -p$(p_pl_gcn) + dh_makeshlibs -p$(p_pl_gcn) + dh_shlibdeps -p$(p_pl_gcn) + echo $(p_pl_gcn) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-go.mk b/rules.d/binary-go.mk new file mode 100644 index 0000000..b8e2c93 --- /dev/null +++ b/rules.d/binary-go.mk @@ -0,0 +1,423 @@ +ifeq ($(with_libgo),yes) + $(lib_binaries) += libgo +endif +ifeq ($(with_godev),yes) + $(lib_binaries) += libgo-dev +endif +ifeq ($(with_lib64go),yes) + $(lib_binaries) += lib64go +endif +ifeq ($(with_lib64godev),yes) + $(lib_binaries) += lib64go-dev +endif +ifeq ($(with_lib32go),yes) + $(lib_binaries) += lib32go +endif +ifeq ($(with_lib32godev),yes) + $(lib_binaries) += lib32go-dev +endif +ifeq ($(with_libn32go),yes) + $(lib_binaries) += libn32go +endif +ifeq ($(with_libn32godev),yes) + $(lib_binaries) += libn32go-dev +endif +ifeq ($(with_libx32go),yes) + $(lib_binaries) += libx32go +endif +ifeq ($(with_libx32godev),yes) + $(lib_binaries) += libx32go-dev +endif + +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) gccgo-nat gccgo-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gccgo + indep_binaries := $(indep_binaries) gccgo-build + endif + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gccgo-multi + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) go-doc + endif + endif +endif + +p_go_n = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_go_h = gccgo$(pkg_ver)-for-host +p_go_b = gccgo$(pkg_ver)-for-build +p_go = gccgo$(pkg_ver) +p_go_m = gccgo$(pkg_ver)-multilib$(cross_bin_arch) +p_god = gccgo$(pkg_ver)-doc +p_golib = libgo$(GO_SONAME)$(cross_lib_arch) + +d_go_n = debian/$(p_go_n) +d_go_h = debian/$(p_go_h) +d_go_b = debian/$(p_go_b) +d_go = debian/$(p_go) +d_go_m = debian/$(p_go_m) +d_god = debian/$(p_god) +d_golib = debian/$(p_golib) + +dirs_go_n = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 \ + usr/share/lintian/overrides + +dirs_go = \ + $(docdir)/$(p_xbase)/go \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + +files_go_n = \ + $(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \ + $(gcc_lexec_dir)/go1 + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + files_go_n += \ + $(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \ + $(gcc_lexec_dir)/cgo \ + $(gcc_lexec_dir)/{buildid,test2json,vet} \ + $(PF)/share/man/man1/$(cmd_prefix){go,gofmt}$(pkg_ver).1 +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1 +endif + +ifeq ($(with_standalone_go),yes) + + dirs_go_n += \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + dirs_go += \ + $(PF)/share/man/man1 + +# XXX: what about triarch mapping? + files_go_n += \ + $(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \ + $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ + $(header_files) \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + + ifeq ($(with_cc1),yes) + files_go_n += \ + $(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0} + endif + + ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go_n += \ + $(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1 + endif + + ifeq ($(biarch64),yes) + files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarch32),yes) + files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o} + endif + ifeq ($(biarchn32),yes) + files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarchx32),yes) + files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o} + endif +endif + +# ---------------------------------------------------------------------- +define __do_libgo + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgo.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo '$(p_l) binary: unstripped-binary-or-object' \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + : # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html + : # dh_strip -p$(p_l) --dbg-package=$(p_d) + : # $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst go$(GO_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define install_gccgo_lib + mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/ + if [ -f $(d)/$(usr_lib$(3))/$(1)libbegin.a ]; then \ + mv $(d)/$(usr_lib$(3))/$(1)libbegin.a debian/$(4)/$(gcc_lib_dir$(3))/; \ + fi + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so +endef + +# __do_gccgo_libgcc(flavour,package,todir,fromdir) +define __do_gccgo_libgcc + $(if $(findstring gccgo,$(PKGSOURCE)), + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so.$(GCC_SONAME); \ + fi; \ + $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ + $(gcc_lib_dir)/libgcc_s_$(1).so;) + ) +endef + +define __do_libgo_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) \ + $(usr_lib$(2)) + mv $(d)/$(usr_lib$(2))/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir$(2))/ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/{libgobegin,libgolibbegin}.a \ + $(usr_lib$(2))/go + $(call install_gccgo_lib,libgo,$(GO_SONAME),$(2),$(p_l)) + + $(if $(filter yes, $(with_standalone_go)), \ + $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(2),$(p_l))) + $(call __do_gccgo_libgcc,$(2),$(p_l),$(gcc_lib_dir$(2)),$(d)/$(usr_lib$(2))) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgo = $(call __do_libgo,lib$(1)go$(GO_SONAME),$(1)) +do_libgo_dev = $(call __do_libgo_dev,lib$(1)go-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgo: $(install_stamp) + $(call do_libgo,) + +$(binary_stamp)-lib64go: $(install_stamp) + $(call do_libgo,64) + +$(binary_stamp)-lib32go: $(install_stamp) + $(call do_libgo,32) + +$(binary_stamp)-libn32go: $(install_stamp) + $(call do_libgo,n32) + +$(binary_stamp)-libx32go: $(install_stamp) + $(call do_libgo,x32) + +$(binary_stamp)-libgo-dev: $(install_stamp) + $(call do_libgo_dev,) + +$(binary_stamp)-lib64go-dev: $(install_stamp) + $(call do_libgo_dev,64) + +$(binary_stamp)-lib32go-dev: $(install_stamp) + $(call do_libgo_dev,32) + +$(binary_stamp)-libx32go-dev: $(install_stamp) + $(call do_libgo_dev,x32) + +$(binary_stamp)-libn32go-dev: $(install_stamp) + $(call do_libgo_dev,n32) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_n) + dh_installdirs -p$(p_go_n) $(dirs_go_n) + + $(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n) + +ifneq (,$(findstring gccgo,$(PKGSOURCE))) + rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk + rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h +endif + +ifeq ($(with_standalone_go),yes) + ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/ + endif + ifeq ($(with_cc1),yes) + rm -f $(d)/$(usr_lib)/libcc1.so + dh_link -p$(p_go_n) \ + /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so + endif +endif + + echo '$(p_go_n) binary: unstripped-binary-or-object' \ + > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) + echo '$(p_go_n) binary: hardening-no-pie' \ + >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_go_n) binary: binary-without-manpage' \ + >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) +endif + + debian/dh_doclink -p$(p_go_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_go_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_go_n)/$(gcc_lexec_dir)/go1 +endif + dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \ + -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1) + dh_shlibdeps -p$(p_go_n) + echo $(p_go_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_go_h) + debian/dh_doclink -p$(p_go_h) $(p_xbase) + echo $(p_go_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_go_b) + debian/dh_doclink -p$(p_go_b) $(p_cpp_b) + echo $(p_go_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gccgo: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go) + dh_installdirs -p$(p_go) $(dirs_go) + + ln -sf $(cmd_prefix)gccgo$(pkg_ver) \ + $(d_go)/$(PF)/bin/gccgo$(pkg_ver) + ln -sf $(cmd_prefix)go$(pkg_ver) \ + $(d_go)/$(PF)/bin/go$(pkg_ver) + ln -sf $(cmd_prefix)gofmt$(pkg_ver) \ + $(d_go)/$(PF)/bin/gofmt$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz + endif + ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz + ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz + +ifeq ($(with_standalone_go),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_go)/$(PF)/bin/$$i$(pkg_ver); \ + done + ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \ + $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + endif +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + mkdir -p $(d_go)/usr/share/lintian/overrides + echo '$(p_go) binary: binary-without-manpage' \ + > $(d_go)/usr/share/lintian/overrides/$(p_go) +endif + + debian/dh_doclink -p$(p_go) $(p_xbase) + +# cp -p $(srcdir)/gcc/go/ChangeLog \ +# $(d_go)/$(docdir)/$(p_base)/go/changelog + debian/dh_rmemptydirs -p$(p_go) + + echo $(p_go) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_m) + dh_installdirs -p$(p_go_m) $(docdir) + + mkdir -p $(d_go_m)/usr/share/lintian/overrides + echo '$(p_go_m) binary: non-multi-arch-lib-dir' \ + > $(d_go_m)/usr/share/lintian/overrides/$(p_go_m) + + debian/dh_doclink -p$(p_go_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_go_m) + dh_strip -p$(p_go_m) + dh_shlibdeps -p$(p_go_m) + echo $(p_go_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_god) + dh_installdirs -p$(p_god) \ + $(docdir)/$(p_xbase)/go \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_god) \ + $(PF)/share/info/gccgo* + + debian/dh_doclink -p$(p_god) $(p_xbase) + dh_installdocs -p$(p_god) + rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright + cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/ + echo $(p_god) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-hppa64.mk b/rules.d/binary-hppa64.mk new file mode 100644 index 0000000..36f91f5 --- /dev/null +++ b/rules.d/binary-hppa64.mk @@ -0,0 +1,39 @@ +arch_binaries := $(arch_binaries) hppa64 + +# ---------------------------------------------------------------------- +$(binary_stamp)-hppa64: $(install_hppa64_stamp) + dh_testdir + dh_testroot + +# dh_installdirs -p$(p_hppa64) + + rm -f $(d_hppa64)/usr/lib/libiberty.a + -find $(d_hppa64) ! -type d + + : # provide as and ld links + dh_link -p $(p_hppa64) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld + + debian/dh_doclink -p$(p_hppa64) $(p_xbase) + debian/dh_rmemptydirs -p$(p_hppa64) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/cc1 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/collect2 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto-wrapper \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto1 +endif + dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a + dh_shlibdeps -p$(p_hppa64) + + mkdir -p $(d_hppa64)/usr/share/lintian/overrides + cp -p debian/$(p_hppa64).overrides \ + $(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64) + + echo $(p_hppa64) >> debian/arch_binaries + + touch $@ diff --git a/rules.d/binary-libasan.mk b/rules.d/binary-libasan.mk new file mode 100644 index 0000000..5876d9b --- /dev/null +++ b/rules.d/binary-libasan.mk @@ -0,0 +1,72 @@ +$(lib_binaries) += libasan +ifeq ($(with_lib64asan),yes) + $(lib_binaries) += lib64asan +endif +ifeq ($(with_lib32asan),yes) + $(lib_binaries) += lib32asan +endif +ifeq ($(with_libn32asan),yes) + $(lib_binaries) += libn32asan +endif +ifeq ($(with_libx32asan),yes) + $(lib_binaries) += libx32asan +endif + +define __do_asan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(2), \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst asan$(ASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1)) + +$(binary_stamp)-libasan: $(install_stamp) + $(call do_asan,) + +$(binary_stamp)-lib64asan: $(install_stamp) + $(call do_asan,64) + +$(binary_stamp)-lib32asan: $(install_stamp) + $(call do_asan,32) + +$(binary_stamp)-libn32asan: $(install_stamp) + $(call do_asan,n32) + +$(binary_stamp)-libx32asan: $(install_stamp) + $(call do_asan,x32) diff --git a/rules.d/binary-libatomic.mk b/rules.d/binary-libatomic.mk new file mode 100644 index 0000000..522a9b6 --- /dev/null +++ b/rules.d/binary-libatomic.mk @@ -0,0 +1,56 @@ +$(lib_binaries) += libatomic +ifeq ($(with_lib64atomic),yes) + $(lib_binaries) += lib64atomic +endif +ifeq ($(with_lib32atomic),yes) + $(lib_binaries) += lib32atomic +endif +ifeq ($(with_libn32atomic),yes) + $(lib_binaries) += libn32atomic +endif +ifeq ($(with_libx32atomic),yes) + $(lib_binaries) += libx32atomic +endif + +define __do_atomic + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libatomic.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1)) + +$(binary_stamp)-libatomic: $(install_stamp) + $(call do_atomic,) + +$(binary_stamp)-lib64atomic: $(install_stamp) + $(call do_atomic,64) + +$(binary_stamp)-lib32atomic: $(install_stamp) + $(call do_atomic,32) + +$(binary_stamp)-libn32atomic: $(install_stamp) + $(call do_atomic,n32) + +$(binary_stamp)-libx32atomic: $(install_stamp) + $(call do_atomic,x32) diff --git a/rules.d/binary-libcc1.mk b/rules.d/binary-libcc1.mk new file mode 100644 index 0000000..1dba145 --- /dev/null +++ b/rules.d/binary-libcc1.mk @@ -0,0 +1,31 @@ +ifeq ($(with_libcc1),yes) + ifneq ($(DEB_CROSS),yes) + arch_binaries := $(arch_binaries) libcc1 + endif +endif + +p_cc1 = libcc1-$(CC1_SONAME) +d_cc1 = debian/$(p_cc1) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libcc1: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cc1) + dh_installdirs -p$(p_cc1) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_cc1) \ + $(usr_lib)/libcc1.so.* + + debian/dh_doclink -p$(p_cc1) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cc1) + + dh_strip -p$(p_cc1) + dh_makeshlibs -p$(p_cc1) + dh_shlibdeps -p$(p_cc1) + echo $(p_cc1) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libdiag.mk b/rules.d/binary-libdiag.mk new file mode 100644 index 0000000..1d04281 --- /dev/null +++ b/rules.d/binary-libdiag.mk @@ -0,0 +1,146 @@ +ifeq ($(with_libdiag),yes) + $(lib_binaries) += libdiag +endif + +$(lib_binaries) += libdiagdev + +arch_binaries := $(arch_binaries) diag + +ifneq ($(DEB_CROSS),yes) +# indep_binaries := $(indep_binaries) libdiagdoc +endif + +p_diag = gcc$(pkg_ver)-diagnostics +p_diaglib = libgdiagnostics$(DIAGNOSTICS_SONAME) +p_diagdbg = libgdiagnostics$(DIAGNOSTICS_SONAME)-dbg +p_diagdev = libgdiagnostics$(pkg_ver)-dev +p_diagdoc = libgdiagnostics$(pkg_ver)-doc + +d_diag = debian/$(p_diag) +d_diaglib = debian/$(p_diaglib) +d_diagdev = debian/$(p_diagdev) +d_diagdbg = debian/$(p_diagdbg) +d_diagdoc = debian/$(p_diagdoc) + +$(binary_stamp)-libdiag: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diaglib) $(d_diagdbg) + dh_installdirs -p$(p_diaglib) \ + $(usr_lib) +ifeq ($(with_dbg),yes) + dh_installdirs -p$(p_diagdbg) +endif + + $(dh_compat2) dh_movefiles -p$(p_diaglib) \ + $(usr_lib)/libgdiagnostics.so.* + rm -f $(d)/$(usr_lib)/libgdiagnostics.so + + debian/dh_doclink -p$(p_diaglib) $(p_base) +ifeq ($(with_dbg),yes) + debian/dh_doclink -p$(p_diagdbg) $(p_base) +endif + + $(call do_strip_lib_dbg, $(p_diaglib), $(p_diagdbg), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs -p$(p_diaglib) + $(call cross_mangle_shlibs,$(p_diaglib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diaglib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_diaglib)) + echo $(p_diaglib) $(if $(with_dbg), $(p_diagdbg)) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libdiagdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diagdev) + dh_installdirs -p$(p_diagdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgdiagnostics.so + + $(dh_compat2) dh_movefiles -p$(p_diagdev) \ + $(gcc_lib_dir)/include/libgdiagnostics*.h + dh_link -p$(p_diagdev) \ + $(usr_lib)/libgdiagnostics.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgdiagnostics.so + + debian/dh_doclink -p$(p_diagdev) $(p_base) + + echo $(p_diagdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libdiagdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diagdoc) + dh_installdirs -p$(p_diagdoc) \ + $(PF)/share/info + + $(dh_compat2) dh_movefiles -p$(p_diagdoc) \ + $(PF)/share/info/libgdiagnostics* + + debian/dh_doclink -p$(p_diagdoc) $(p_base) + echo $(p_diagdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-diag: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_diag) + dh_installdirs -p$(p_diag) \ + $(PF)/bin \ + $(PF)/share/man/man1 + + $(dh_compat2) dh_movefiles -p$(p_diag) \ + $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) + dh_link -p$(p_diag) \ + $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) $(PF)/bin/sarif-replay$(pkg_ver) + + if which help2man >/dev/null 2>&1; then \ + LD_LIBRARY_PATH=$(CURDIR)/$(d_diaglib)/$(usr_lib):/usr/lib/$(DEB_HOST_MULTIARCH)/libfakeroot${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ + help2man --no-discard-stderr --help-option=--usage --no-info \ + --version-string=$(BASE_VERSION) \ + --name="Replay results from one or more .sarif files as if they were GCC diagnostics" \ + $(d_diag)/$(PF)/bin/sarif-replay$(pkg_ver) > debian/sarif-replay.1; \ + fi + cp debian/sarif-replay.1 \ + $(d_diag)/$(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 + dh_link -p$(p_diag) \ + $(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 \ + $(PF)/share/man/man1/sarif-replay$(pkg_ver).1 + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_diag)/$(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) +endif + dh_strip -p$(p_diag) + + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diag) \ + -L$(p_diaglib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + + mkdir -p $(d_diag)/usr/share/lintian/overrides + echo '$(p_diag) binary: hardening-no-pie' \ + > $(d_diag)/usr/share/lintian/overrides/$(p_diag) + + debian/dh_doclink -p$(p_diag) $(p_base) + + echo $(p_diag) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ diff --git a/rules.d/binary-libgcc.mk b/rules.d/binary-libgcc.mk new file mode 100644 index 0000000..2632bff --- /dev/null +++ b/rules.d/binary-libgcc.mk @@ -0,0 +1,318 @@ +ifeq ($(with_libgcc),yes) + $(lib_binaries) += libgcc +endif +ifeq ($(with_lib64gcc),yes) + $(lib_binaries) += lib64gcc +endif +ifeq ($(with_lib32gcc),yes) + $(lib_binaries) += lib32gcc +endif +ifeq ($(with_libn32gcc),yes) + $(lib_binaries) += libn32gcc +endif +ifeq ($(with_libx32gcc),yes) + $(lib_binaries) += libx32gcc +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_cdev),yes) + $(lib_binaries) += libgcc-dev + endif + ifeq ($(with_lib64gccdev),yes) + $(lib_binaries) += lib64gcc-dev + endif + ifeq ($(with_lib32gccdev),yes) + $(lib_binaries) += lib32gcc-dev + endif + ifeq ($(with_libn32gccdev),yes) + $(lib_binaries) += libn32gcc-dev + endif + ifeq ($(with_libx32gccdev),yes) + $(lib_binaries) += libx32gcc-dev + endif +endif + +p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) +p_lgccdbg = libgcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lgccdev = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lgcc = debian/$(p_lgcc) +d_lgccdbg = debian/$(p_lgccdbg) +d_lgccdev = debian/$(p_lgccdev) + +p_l32gcc = lib32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_l32gccdbg = lib32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l32gccdev = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l32gcc = debian/$(p_l32gcc) +d_l32gccdbg = debian/$(p_l32gccdbg) +d_l32gccdev = debian/$(p_l32gccdev) + +p_l64gcc = lib64gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_l64gccdbg = lib64gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l64gccdev = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l64gcc = debian/$(p_l64gcc) +d_l64gccdbg = debian/$(p_l64gccdbg) +d_l64gccdev = debian/$(p_l64gccdev) + +p_ln32gcc = libn32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_ln32gccdbg = libn32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_ln32gccdev = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_ln32gcc = debian/$(p_ln32gcc) +d_ln32gccdbg = debian/$(p_ln32gccdbg) +d_ln32gccdev = debian/$(p_ln32gccdev) + +p_lx32gcc = libx32gcc-s$(GCC_SONAME)$(cross_lib_arch) +p_lx32gccdbg = libx32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lx32gccdev = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lx32gcc = debian/$(p_lx32gcc) +d_lx32gccdbg = debian/$(p_lx32gccdbg) +d_lx32gccdev = debian/$(p_lx32gccdev) + +# __do_gcc_devels(flavour,package,todir,fromdir) +define __do_gcc_devels + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + test -n "$(2)" + rm -rf debian/$(2) + dh_installdirs -p$(2) $(docdir) #TODO + dh_installdirs -p$(2) $(3) + + $(call __do_gcc_devels2,$(1),$(2),$(3),$(4)) + + debian/dh_doclink -p$(2) $(p_lbase) + debian/dh_rmemptydirs -p$(2) + + dh_strip -p$(2) + $(cross_shlibdeps) dh_shlibdeps -p$(2) + $(call cross_mangle_substvars,$(2)) + echo $(2) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# __do_gcc_devels2(flavour,package,todir,fromdir) +define __do_gcc_devels2 +# stage1 builds static libgcc only + $(if $(filter $(DEB_STAGE),stage1),, + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + rm -f $(d)/$(3)/libgcc_s.so; \ + ( \ + echo '/* GNU ld script'; \ + echo ' Use a trivial linker script instead of a symlink. */'; \ + echo 'GROUP ( libgcc_s.so.$(GCC_SONAME) )'; \ + ) > $(d)/$(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + fi; \ + ) + $(dh_compat2) dh_movefiles -p$(2) \ + $(3)/{libgcc*,libgcov.a,*.o} \ + $(if $(1),,$(gcc_lib_dir)/include/*.h $(gcc_lib_dir)/include/sanitizer/*.h) # Only move headers for the "main" package + $(if $(1),, for h in ISO_Fortran_binding.h libgccjit.h libgccjit++.h libdiagnostics.h libdiagnostics++.h; do \ + if [ -f debian/$(2)/$(gcc_lib_dir)/include/$$h ]; then \ + mv debian/$(2)/$(gcc_lib_dir)/include/$$h $(d)/$(gcc_lib_dir)/include/.; \ + fi; done) + + : # libbacktrace not installed by default + $(if $(filter yes, $(with_backtrace)), + if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \ + debian/$(2)/$(gcc_lib_dir)/$(1); \ + fi; \ + $(if $(1),, + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + fi + )) + + : # If building a flavour, add a lintian override + $(if $(1), + #TODO: use a file instead of a hacky echo + # but do we want to use one override file (in the source package) per + # flavour or not since they are essentially the same? + mkdir -p debian/$(2)/usr/share/lintian/overrides + echo "$(2) binary: binary-from-other-architecture" \ + >> debian/$(2)/usr/share/lintian/overrides/$(2) + ) + $(if $(filter yes, $(with_lib$(1)gmath)), + $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_libssp)), + $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_ssp)), + mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/; + ) + $(if $(filter yes, $(with_gomp)), + $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_itm)), + $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_atomic)), + $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_asan)), + $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2)) + mv $(4)/libasan_preinit.o debian/$(2)/$(3)/; + ) + $(if $(1),,$(if $(filter yes, $(with_lsan)), + $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2)) + mv $(4)/liblsan_preinit.o debian/$(2)/$(3)/; + )) + $(if $(1),,$(if $(filter yes, $(with_tsan)), + $(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2)) + mv $(4)/libtsan_preinit.o debian/$(2)/$(3)/; + )) + $(if $(filter yes, $(with_ubsan)), + $(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2)) + ) + $(if $(1),,$(if $(filter yes, $(with_hwasan)), + $(call install_gcc_lib,libhwasan,$(HWASAN_SONAME),$(1),$(2)) + )) + $(if $(filter yes, $(with_vtv)), + $(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_cilkrts)), + $(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_qmath)), + $(call install_gcc_lib,libquadmath,$(QUADMATH_SONAME),$(1),$(2)) + ) +endef + +# do_gcc_devels(flavour) +define do_gcc_devels + $(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1))) +endef + + +define __do_libgcc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + + dh_installdirs -p$(p_l) \ + $(docdir)/$(p_l) \ + $(libgcc_dir$(2)) + + $(if $(filter yes,$(with_shared_libgcc)), + mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + $(if $(filter yes, $(with_internal_libunwind)), + mv $(d)/$(usr_lib$(2))/libunwind.* \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase)) + debian/dh_rmemptydirs -p$(p_l) + $(if $(with_dbg), + debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase)) + debian/dh_rmemptydirs -p$(p_d) + ) + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + + # see Debian #533843 for the __aeabi symbol handling; this construct is + # just to include the symbols for dpkg versions older than 1.15.3 which + # didn't allow bypassing the symbol blacklist + $(if $(filter yes,$(with_shared_libgcc)), + $(if $(findstring gcc-s1,$(p_l)), \ + ln -sf libgcc-s.symbols debian/$(p_l).symbols \ + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -v$(DEB_LIBGCC_VERSION) -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)), + if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \ + grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \ + || cat debian/libgcc.symbols.aeabi \ + >> $(d_l)/DEBIAN/symbols; \ + fi + ) + ) + + $(if $(DEB_STAGE),, + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + ) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2),, # only for native + mkdir -p $(d_l)/usr/share/lintian/overrides + echo '$(p_l): package-name-doesnt-match-sonames' \ + > $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + $(if $(filter yes,$(with_libcompatgcc)), + debian/dh_doclink -p$(subst gcc-s,gcc,$(p_l)) $(if $(3),$(3),$(p_lbase)) + $(if $(with_dbg), + debian/dh_doclink -p$(subst gcc-s,gcc,$(p_d)) $(if $(3),$(3),$(p_lbase)) + ) + + $(if $(2),, + mkdir -p $(subst gcc-s,gcc,$(d_l))/$(libgcc_dir$(2)) + cp -p $(d_l)/$(libgcc_dir$(2))/libgcc_s.so.$(GCC_SONAME) \ + $(subst gcc-s,gcc,$(d_l))/lib/. + mkdir -p $(subst gcc-s,gcc,$(d_l))/DEBIAN + cp -p $(d_l)/DEBIAN/{symbols,shlibs} \ + $(subst gcc-s,gcc,$(d_l))/DEBIAN/. + cp -p $(d_l).substvars $(subst gcc-s,gcc,$(d_l)).substvars + mkdir -p $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides + ( \ + echo '$(subst gcc-s,gcc,$(p_l)): package-name-doesnt-match-sonames'; \ + echo '$(subst gcc-s,gcc,$(p_l)): shlibs-declares-dependency-on-other-package'; \ + echo '$(subst gcc-s,gcc,$(p_l)): symbols-declares-dependency-on-other-package'; \ + ) > $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides/$(subst gcc-s,gcc,$(p_l)) + ) + + echo $(subst gcc-s,gcc,$(p_l) $(if $(with_dbg), $(p_d))) >> debian/$(lib_binaries).epoch + ) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcc = $(call __do_libgcc,lib$(1)gcc-s$(GCC_SONAME),$(1),$(2)) +# ---------------------------------------------------------------------- + +$(binary_stamp)-libgcc: $(install_dependencies) + $(call do_libgcc,,) + +$(binary_stamp)-lib64gcc: $(install_dependencies) + $(call do_libgcc,64,) + +$(binary_stamp)-lib32gcc: $(install_dependencies) + $(call do_libgcc,32,) + +$(binary_stamp)-libn32gcc: $(install_dependencies) + $(call do_libgcc,n32,) + +$(binary_stamp)-libx32gcc: $(install_dependencies) + $(call do_libgcc,x32,) + +$(binary_stamp)-libgcc-dev: $(install_dependencies) + $(call do_gcc_devels,) + +$(binary_stamp)-lib64gcc-dev: $(install_dependencies) + $(call do_gcc_devels,64) + +$(binary_stamp)-lib32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,32) + +$(binary_stamp)-libn32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,n32) + +$(binary_stamp)-libx32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,x32) diff --git a/rules.d/binary-libgccjit.mk b/rules.d/binary-libgccjit.mk new file mode 100644 index 0000000..9441a49 --- /dev/null +++ b/rules.d/binary-libgccjit.mk @@ -0,0 +1,95 @@ +ifeq ($(with_libgccjit),yes) + $(lib_binaries) += libgccjit +endif + +$(lib_binaries) += libgccjitdev + +ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libgccjitdoc +endif + +p_jitlib = libgccjit$(GCCJIT_SONAME) +p_jitdbg = libgccjit$(GCCJIT_SONAME)-dbg +p_jitdev = libgccjit$(pkg_ver)-dev +p_jitdoc = libgccjit$(pkg_ver)-doc + +d_jitlib = debian/$(p_jitlib) +d_jitdev = debian/$(p_jitdev) +d_jitdbg = debian/$(p_jitdbg) +d_jitdoc = debian/$(p_jitdoc) + +$(binary_stamp)-libgccjit: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitlib) $(d_jitdbg) + dh_installdirs -p$(p_jitlib) \ + $(usr_lib) +ifeq ($(with_dbg),yes) + dh_installdirs -p$(p_jitdbg) +endif + + $(dh_compat2) dh_movefiles -p$(p_jitlib) \ + $(usr_lib)/libgccjit.so.* + rm -f $(d)/$(usr_lib)/libgccjit.so + + debian/dh_doclink -p$(p_jitlib) $(p_base) +ifeq ($(with_dbg),yes) + debian/dh_doclink -p$(p_jitdbg) $(p_base) +endif + + $(call do_strip_lib_dbg, $(p_jitlib), $(p_jitdbg), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib) + $(call cross_mangle_shlibs,$(p_jitlib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_jitlib)) + echo $(p_jitlib) $(if $(with_dbg), $(p_jitdbg)) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdev) + dh_installdirs -p$(p_jitdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgccjit.so + + $(dh_compat2) dh_movefiles -p$(p_jitdev) \ + $(gcc_lib_dir)/include/libgccjit*.h + dh_link -p$(p_jitdev) \ + $(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so + + debian/dh_doclink -p$(p_jitdev) $(p_base) + + echo $(p_jitdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdoc) + dh_installdirs -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit-figures + + $(dh_compat2) dh_movefiles -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit* + cp -p $(srcdir)/gcc/jit/docs/_build/texinfo/libgccjit-figures/*.png \ + $(d_jitdoc)/$(PF)/share/info/libgccjit-figures/. + + debian/dh_doclink -p$(p_jitdoc) $(p_base) + echo $(p_jitdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ diff --git a/rules.d/binary-libgomp.mk b/rules.d/binary-libgomp.mk new file mode 100644 index 0000000..b6e994e --- /dev/null +++ b/rules.d/binary-libgomp.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libgomp +ifeq ($(with_lib64gomp),yes) + $(lib_binaries) += lib64gomp +endif +ifeq ($(with_lib32gomp),yes) + $(lib_binaries) += lib32gomp +endif +ifeq ($(with_libn32gomp),yes) + $(lib_binaries) += libn32gomp +endif +ifeq ($(with_libx32gomp),yes) + $(lib_binaries) += libx32gomp +endif + +define __do_gomp + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libgomp.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) + +$(binary_stamp)-libgomp: $(install_stamp) + $(call do_gomp,) + +$(binary_stamp)-lib64gomp: $(install_stamp) + $(call do_gomp,64) + +$(binary_stamp)-lib32gomp: $(install_stamp) + $(call do_gomp,32) + +$(binary_stamp)-libn32gomp: $(install_stamp) + $(call do_gomp,n32) + +$(binary_stamp)-libx32gomp: $(install_stamp) + $(call do_gomp,x32) diff --git a/rules.d/binary-libhwasan.mk b/rules.d/binary-libhwasan.mk new file mode 100644 index 0000000..86c2cdd --- /dev/null +++ b/rules.d/binary-libhwasan.mk @@ -0,0 +1,71 @@ +$(lib_binaries) += libhwasan +ifeq ($(with_lib64hwasan),yes) + $(lib_binaries) += lib64hwasan +endif +ifeq ($(with_lib32hwasan),yes) + $(lib_binaries) += lib32hwasan +endif +ifeq ($(with_libn32hwasan),yes) + $(lib_binaries) += libn32hwasan +endif +ifeq ($(with_libx32hwasan),yes) + $(lib_binaries) += libx32hwasan +endif + +define __do_hwasan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libhwasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + $(if $(2), \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst hwasan$(HWASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst hwasan$(HWASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_hwasan = $(call __do_hwasan,lib$(1)hwasan$(HWASAN_SONAME),$(1)) + +$(binary_stamp)-libhwasan: $(install_stamp) + $(call do_hwasan,) + +$(binary_stamp)-lib64hwasan: $(install_stamp) + $(call do_hwasan,64) + +$(binary_stamp)-lib32hwasan: $(install_stamp) + $(call do_hwasan,32) + +$(binary_stamp)-libn32hwasan: $(install_stamp) + $(call do_hwasan,n32) + +$(binary_stamp)-libx32hwasan: $(install_stamp) + $(call do_hwasan,x32) diff --git a/rules.d/binary-libitm.mk b/rules.d/binary-libitm.mk new file mode 100644 index 0000000..1553364 --- /dev/null +++ b/rules.d/binary-libitm.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libitm +ifeq ($(with_lib64itm),yes) + $(lib_binaries) += lib64itm +endif +ifeq ($(with_lib32itm),yes) + $(lib_binaries) += lib32itm +endif +ifeq ($(with_libn32itm),yes) + $(lib_binaries) += libn32itm +endif +ifeq ($(with_libx32itm),yes) + $(lib_binaries) += libx32itm +endif + +define __do_itm + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libitm.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1)) + +$(binary_stamp)-libitm: $(install_stamp) + $(call do_itm,) + +$(binary_stamp)-lib64itm: $(install_stamp) + $(call do_itm,64) + +$(binary_stamp)-lib32itm: $(install_stamp) + $(call do_itm,32) + +$(binary_stamp)-libn32itm: $(install_stamp) + $(call do_itm,n32) + +$(binary_stamp)-libx32itm: $(install_stamp) + $(call do_itm,x32) diff --git a/rules.d/binary-liblsan.mk b/rules.d/binary-liblsan.mk new file mode 100644 index 0000000..fa8001c --- /dev/null +++ b/rules.d/binary-liblsan.mk @@ -0,0 +1,67 @@ +$(lib_binaries) += liblsan +ifeq ($(with_lib64lsan),yes) + $(lib_binaries) += lib64lsan +endif +ifeq ($(with_lib32lsan),yes) + $(lib_binaries) += lib32lsan +endif +ifeq ($(with_libn32lsan),yes) + $(lib_binaries) += libn32lsan +endif +ifeq ($(with_libx32lsan),yes) + $(lib_binaries) += libx32lsan +endif + +define __do_lsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst lsan$(LSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1)) + +$(binary_stamp)-liblsan: $(install_stamp) + $(call do_lsan,) + +$(binary_stamp)-lib64lsan: $(install_stamp) + $(call do_lsan,64) + +$(binary_stamp)-lib32lsan: $(install_stamp) + $(call do_lsan,32) + +$(binary_stamp)-libn32lsan: $(install_stamp) + $(call do_lsan,n32) + +$(binary_stamp)-libx32lsan: $(install_stamp) + $(call do_lsan,x32) diff --git a/rules.d/binary-libobjc.mk b/rules.d/binary-libobjc.mk new file mode 100644 index 0000000..345e6ea --- /dev/null +++ b/rules.d/binary-libobjc.mk @@ -0,0 +1,137 @@ +ifeq ($(with_libobjc),yes) + $(lib_binaries) += libobjc +endif +ifeq ($(with_objcdev),yes) + $(lib_binaries) += libobjc-dev +endif +ifeq ($(with_lib64objc),yes) + $(lib_binaries) += lib64objc +endif +ifeq ($(with_lib64objcdev),yes) + $(lib_binaries) += lib64objc-dev +endif +ifeq ($(with_lib32objc),yes) + $(lib_binaries) += lib32objc +endif +ifeq ($(with_lib32objcdev),yes) + $(lib_binaries) += lib32objc-dev +endif +ifeq ($(with_libn32objc),yes) + $(lib_binaries) += libn32objc +endif +ifeq ($(with_libn32objcdev),yes) + $(lib_binaries) += libn32objc-dev +endif +ifeq ($(with_libx32objc),yes) + $(lib_binaries) += libx32objc +endif +ifeq ($(with_libx32objcdev),yes) + $(lib_binaries) += libx32objc-dev +endif + +files_lobjcdev= \ + $(gcc_lib_dir)/include/objc + +files_lobjc = \ + $(usr_lib$(2))/libobjc.so.* +ifeq ($(with_objc_gc),yes) + files_lobjc += \ + $(usr_lib$(2))/libobjc_gc.so.* +endif + +define __do_libobjc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjc) + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + rm -f debian/$(p_l).symbols + $(if $(2), + ln -sf libobjc.symbols debian/$(p_l).symbols , + fgrep -v libobjc.symbols.gc debian/libobjc.symbols > debian/$(p_l).symbols + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + +define __do_libobjc_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjcdev) + + $(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l)) + $(if $(filter yes,$(with_objc_gc)), + $(if $(2),, + dh_link -p$(p_l) \ + /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \ + /$(gcc_lib_dir$(2))/libobjc_gc.so + )) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + + +# ---------------------------------------------------------------------- + +do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) +do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libobjc: $(install_stamp) + $(call do_libobjc,) + +$(binary_stamp)-lib64objc: $(install_stamp) + $(call do_libobjc,64) + +$(binary_stamp)-lib32objc: $(install_stamp) + $(call do_libobjc,32) + +$(binary_stamp)-libn32objc: $(install_stamp) + $(call do_libobjc,n32) + +$(binary_stamp)-libx32objc: $(install_stamp) + $(call do_libobjc,x32) + + +$(binary_stamp)-libobjc-dev: $(install_stamp) + $(call do_libobjc_dev,) + +$(binary_stamp)-lib64objc-dev: $(install_stamp) + $(call do_libobjc_dev,64) + +$(binary_stamp)-lib32objc-dev: $(install_stamp) + $(call do_libobjc_dev,32) + +$(binary_stamp)-libx32objc-dev: $(install_stamp) + $(call do_libobjc_dev,x32) + +$(binary_stamp)-libn32objc-dev: $(install_stamp) + $(call do_libobjc_dev,n32) diff --git a/rules.d/binary-libquadmath.mk b/rules.d/binary-libquadmath.mk new file mode 100644 index 0000000..e5db688 --- /dev/null +++ b/rules.d/binary-libquadmath.mk @@ -0,0 +1,57 @@ +$(lib_binaries) += libqmath +ifeq ($(with_lib64qmath),yes) + $(lib_binaries) += lib64qmath +endif +ifeq ($(with_lib32qmath),yes) + $(lib_binaries) += lib32qmath +endif +ifeq ($(with_libn32qmath),yes) + $(lib_binaries) += libn32qmath +endif +ifeq ($(with_libx32qmath),yes) + $(lib_binaries) += libx32qmath +endif + +define __do_qmath + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libquadmath.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_qmath = $(call __do_qmath,lib$(1)quadmath$(QUADMATH_SONAME),$(1)) + +$(binary_stamp)-libqmath: $(install_stamp) + $(call do_qmath,) + +$(binary_stamp)-lib64qmath: $(install_stamp) + $(call do_qmath,64) + +$(binary_stamp)-lib32qmath: $(install_stamp) + $(call do_qmath,32) + +$(binary_stamp)-libn32qmath: $(install_stamp) + $(call do_qmath,n32) + +$(binary_stamp)-libx32qmath: $(install_stamp) + $(call do_qmath,x32) diff --git a/rules.d/binary-libssp.mk b/rules.d/binary-libssp.mk new file mode 100644 index 0000000..e2c873a --- /dev/null +++ b/rules.d/binary-libssp.mk @@ -0,0 +1,155 @@ +arch_binaries := $(arch_binaries) libssp +ifeq ($(with_lib64ssp),yes) + arch_binaries := $(arch_binaries) lib64ssp +endif +ifeq ($(with_lib32ssp),yes) + arch_binaries := $(arch_binaries) lib32ssp +endif +ifeq ($(with_libn32ssp),yes) + arch_binaries := $(arch_binaries) libn32ssp +endif +ifeq ($(with_libx32ssp),yes) + arch_binaries := $(arch_binaries) libx32ssp +endif + +p_ssp = libssp$(SSP_SONAME) +p_ssp32 = lib32ssp$(SSP_SONAME) +p_ssp64 = lib64ssp$(SSP_SONAME) +p_sspx32 = libx32ssp$(SSP_SONAME) +p_sspd = libssp$(SSP_SONAME)-dev + +d_ssp = debian/$(p_ssp) +d_ssp32 = debian/$(p_ssp32) +d_ssp64 = debian/$(p_ssp64) +d_sspx32 = debian/$(p_sspx32) +d_sspd = debian/$(p_sspd) + +dirs_ssp = \ + $(docdir)/$(p_base) \ + $(PF)/$(libdir) +files_ssp = \ + $(PF)/$(libdir)/libssp.so.* + +dirs_sspd = \ + $(docdir) \ + $(PF)/include \ + $(PF)/$(libdir) +files_sspd = \ + $(gcc_lib_dir)/include/ssp \ + $(PF)/$(libdir)/libssp.{a,so} \ + $(PF)/$(libdir)/libssp_nonshared.a + +ifeq ($(with_lib32ssp),yes) + dirs_sspd += $(lib32) + files_sspd += $(lib32)/libssp.{a,so} + files_sspd += $(lib32)/libssp_nonshared.a +endif +ifeq ($(with_lib64ssp),yes) + dirs_sspd += $(PF)/lib64 + files_sspd += $(PF)/lib64/libssp.{a,so} + files_sspd += $(PF)/lib64/libssp_nonshared.a +endif + +$(binary_stamp)-libssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp) + dh_installdirs -p$(p_ssp) + + $(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp) + debian/dh_doclink -p$(p_ssp) $(p_lbase) + + debian/dh_rmemptydirs -p$(p_ssp) + + dh_strip -p$(p_ssp) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))' + dh_shlibdeps -p$(p_ssp) + echo $(p_ssp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp64) + dh_installdirs -p$(p_ssp64) \ + $(PF)/lib64 + $(dh_compat2) dh_movefiles -p$(p_ssp64) \ + $(PF)/lib64/libssp.so.* + + debian/dh_doclink -p$(p_ssp64) $(p_lbase) + + dh_strip -p$(p_ssp64) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp64) + echo $(p_ssp64) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp32) + dh_installdirs -p$(p_ssp32) \ + $(lib32) + $(dh_compat2) dh_movefiles -p$(p_ssp32) \ + $(lib32)/libssp.so.* + + debian/dh_doclink -p$(p_ssp32) $(p_lbase) + + dh_strip -p$(p_ssp32) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp32) + echo $(p_ssp32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libn32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspn32) + dh_installdirs -p$(p_sspn32) \ + $(PF)/$(libn32) + $(dh_compat2) dh_movefiles -p$(p_sspn32) \ + $(PF)/$(libn32)/libssp.so.* + + debian/dh_doclink -p$(p_sspn32) $(p_lbase) + + dh_strip -p$(p_sspn32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspn32) + echo $(p_sspn32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libx32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspx32) + dh_installdirs -p$(p_sspx32) \ + $(PF)/$(libx32) + $(dh_compat2) dh_movefiles -p$(p_sspx32) \ + $(PF)/$(libx32)/libssp.so.* + + debian/dh_doclink -p$(p_sspx32) $(p_lbase) + + dh_strip -p$(p_sspx32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspx32) + echo $(p_sspx32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libstdcxx.mk b/rules.d/binary-libstdcxx.mk new file mode 100644 index 0000000..52eee7a --- /dev/null +++ b/rules.d/binary-libstdcxx.mk @@ -0,0 +1,526 @@ +ifeq ($(with_libcxx),yes) + $(lib_binaries) += libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + $(lib_binaries) += lib64stdcxx +endif +ifeq ($(with_lib32cxx),yes) + $(lib_binaries) += lib32stdcxx +endif +ifeq ($(with_libn32cxx),yes) + $(lib_binaries) += libn32stdcxx +endif +ifeq ($(with_libx32cxx),yes) + $(lib_binaries) += libx32stdcxx +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_lib64cxxdev),yes) + $(lib_binaries) += lib64stdcxx-dev + endif + ifeq ($(with_lib64cxxdbg),yes) + $(lib_binaries) += lib64stdcxxdbg + endif + ifeq ($(with_lib32cxxdev),yes) + $(lib_binaries) += lib32stdcxx-dev + endif + ifeq ($(with_lib32cxxdbg),yes) + $(lib_binaries) += lib32stdcxxdbg + endif + ifeq ($(with_libn32cxxdev),yes) + $(lib_binaries) += libn32stdcxx-dev + endif + ifeq ($(with_libn32cxxdbg),yes) + $(lib_binaries) += libn32stdcxxdbg + endif + ifeq ($(with_libx32cxxdev),yes) + $(lib_binaries) += libx32stdcxx-dev + endif + ifeq ($(with_libx32cxxdbg),yes) + $(lib_binaries) += libx32stdcxxdbg + endif + + ifeq ($(with_cxxdev),yes) + $(lib_binaries) += libstdcxx-dev + ifeq ($(with_libcxx_doc),yes) + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libstdcxx-doc + endif + endif + endif +endif + +libstdc_ext = -$(BASE_VERSION) + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = libstdc++$(libstdc_ext)-dev$(cross_lib_arch) +p_pic = libstdc++$(libstdc_ext)-pic$(cross_lib_arch) +p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_libd = libstdc++$(libstdc_ext)-doc + +d_lib = debian/$(p_lib) +d_lib64 = debian/$(p_lib64) +d_lib32 = debian/$(p_lib32) +d_libn32= debian/$(p_libn32) +d_libx32= debian/$(p_libx32) +d_dev = debian/$(p_dev) +d_pic = debian/$(p_pic) +d_dbg = debian/$(p_dbg) +d_dbg64 = debian/$(p_dbg64) +d_dbg32 = debian/$(p_dbg32) +d_libd = debian/$(p_libd) + +dirs_dev = \ + $(docdir)/$(p_base)/C++ \ + $(usr_lib) \ + $(gcc_lib_dir)/include \ + $(PFL)/include/c++ + +files_dev = \ + $(PFL)/include/c++/$(BASE_VERSION) \ + $(gcc_lib_dir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/libsupc++.a \ + $(gcc_lib_dir)/libstdc++fs.a \ + $(gcc_lib_dir)/libstdc++exp.a \ + $(gcc_lib_dir)/libstdc++.modules.json + +ifeq ($(with_multiarch_cxxheaders),yes) + dirs_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) + files_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext} +endif + +dirs_dbg = \ + $(docdir) \ + $(PF)/lib/debug/$(usr_lib) \ + $(usr_lib)/debug \ + $(PF)/share/gdb/auto-load/$(usr_lib)/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(usr_lib)/debug/libstdc++.{a,so*} \ + $(usr_lib)/debug/libstdc++fs.a \ + $(usr_lib)/debug/libstdc++exp.a + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +# ---------------------------------------------------------------------- + +gxx_baseline_dir = $(shell \ + sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \ + $(buildlibdir)/libstdc++-v3/testsuite/Makefile) +gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt + +debian/README.libstdc++-baseline: + : # save the results of the libstdc++ test run, overridden by check-abi + -tar -c -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ + -C $(buildlibdir)/libstdc++-v3/testsuite libstdc++.{log,sum} + + cat debian/README.libstdc++-baseline.in \ + > debian/README.libstdc++-baseline + + baseline_name=`basename $(gxx_baseline_dir)`; \ + baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ + compat_baseline_name=""; \ + if [ -f "$(gxx_baseline_file)" ]; then \ + ( \ + echo "A baseline file for $$baseline_name was found."; \ + echo "Running the check-abi script ..."; \ + echo ""; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ + check-abi; \ + ) | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ + else \ + ( \ + echo "No baseline file found for $$baseline_name."; \ + echo "Generating a new baseline file ..."; \ + echo ""; \ + ) >> debian/README.libstdc++-baseline; \ + mkdir -p $(gxx_baseline_dir); \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ + if [ -f $(gxx_baseline_file) ]; then \ + cat $(gxx_baseline_file); \ + else \ + cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \ + fi | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ + fi + + : # restore the results of the libstdc++ test run + -tar -x -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ + -C $(buildlibdir)/libstdc++-v3/testsuite + +# ---------------------------------------------------------------------- +# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors +# for the 32bit multilib build + +define __do_libstdcxx + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + + dh_installdirs -p$(p_l) \ + $(docdir) \ + $(usr_lib$(2)) \ + $(PF)/share/gdb/auto-load/$(usr_lib$(2)) + + $(if $(DEB_CROSS),,$(if $(2),, + dh_installdirs -p$(p_l) \ + $(PF)/share/gcc/python + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(PF)/share/gcc/python/libstdcxx + )) + cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py + + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_l)/$(usr_lib$(2))/. + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + $(if $(with_dbg), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbgsym-migration='$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch) (<< $(v_dbg))') + ) + ln -sf libstdc++.symbols debian/$(p_l).symbols + $(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \ + -$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \ + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + ) + + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dbg + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_d) + dh_installdirs -p$(p_d) \ + $(PF)/lib/debug/$(usr_lib$(2)) \ + $(usr_lib$(2)) + + $(if $(with_dbg), + $(if $(filter yes,$(with_lib$(2)cxx)), + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_d)/$(usr_lib$(2))/.; + dh_strip -p$(p_d) --keep-debug; + $(if $(filter yes,$(with_common_libs)),, # if !with_common_libs + # remove the debug symbols for libstdc++ + # built by a newer version of GCC + rm -rf $(d_d)/usr/lib/debug/$(PF); + ) + rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9] + ) + ) + + $(if $(filter yes,$(with_cxx_debug)), + mkdir -p $(d_d)/$(usr_lib$(2))/debug; + mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug; + rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a + ) + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ + $(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l))),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_d)) + + debian/dh_doclink -p$(p_d) $(p_lbase) + debian/dh_rmemptydirs -p$(p_d) + echo $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib$(2))/libsupc++.a \ + $(d)/$(gcc_lib_dir$(2))/ + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libsupc++.a \ + $(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2)) + $(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l)) + + $(if $(2),, + mv $(d)/$(usr_lib$(2))/libstdc++.modules.json \ + $(d_l)/$(gcc_lib_dir$(2))/ + sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ + $(d_l)/$(gcc_lib_dir$(2))/libstdc++.modules.json + ) + + $(if $(filter yes, $(with_common_libs)),, + rm -f $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ + $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so + mkdir -p $(d_l)/usr/share/lintian/overrides + echo '$(p_l) binary: binary-from-other-architecture' \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + dh_strip -p$(p_l) + dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1)) +do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1)) +do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libstdcxx: $(install_stamp) + $(call do_libstdcxx,) + +$(binary_stamp)-lib64stdcxx: $(install_stamp) + $(call do_libstdcxx,64) + +$(binary_stamp)-lib32stdcxx: $(install_stamp) + $(call do_libstdcxx,32) + +$(binary_stamp)-libn32stdcxx: $(install_stamp) + $(call do_libstdcxx,n32) + +$(binary_stamp)-libx32stdcxx: $(install_stamp) + $(call do_libstdcxx,x32) + +$(binary_stamp)-lib64stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,64) + +$(binary_stamp)-lib32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,32) + +$(binary_stamp)-libn32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,n32) + +$(binary_stamp)-libx32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,x32) + +$(binary_stamp)-lib64stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,64) + +$(binary_stamp)-lib32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,32) + +$(binary_stamp)-libn32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,n32) + +$(binary_stamp)-libx32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,x32) + +# ---------------------------------------------------------------------- +libcxxdev_deps = $(install_stamp) +ifeq ($(with_libcxx),yes) + libcxxdev_deps += $(binary_stamp)-libstdcxx +endif +ifeq ($(with_check),yes) + libcxxdev_deps += debian/README.libstdc++-baseline +endif +# FIXME: the -dev and -dbg packages are built twice ... +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++exp.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + + mv $(d)/$(usr_lib)/libstdc++.modules.json $(d)/$(gcc_lib_dir)/ + sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ + $(d)/$(gcc_lib_dir)/libstdc++.modules.json + + : # FIXME: update libstdc++-pic patch +# mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ + cp $(buildlibdir)/libstdc++-v3/src/.libs/libstdc++convenience.a \ + $(d)/$(gcc_lib_dir)/libstdc++_pic.a + + rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a + rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + + for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ + if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ + done + + $(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev) + $(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic) +ifeq ($(with_cxx_debug),yes) + $(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg) +endif + +ifeq ($(with_common_libs),yes) + dh_link -p$(p_dev) \ + /$(usr_lib)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so +else + : # PR libstdc++/103382, install the library in the gcc_lib_dir + : # to link against the libstdc++ from this GCC version. + rm -f $(d_dev)/$(gcc_lib_dir)/libstdc++.so + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ + $(d_dev)/$(gcc_lib_dir)/libstdc++.so + ls -l $(d_dev)/$(gcc_lib_dir)/libstdc++.so +endif + + debian/dh_doclink -p$(p_dev) $(p_lbase) + debian/dh_doclink -p$(p_pic) $(p_lbase) + debian/dh_doclink -p$(p_dbg) $(p_lbase) + cp -p $(srcdir)/libstdc++-v3/ChangeLog \ + $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ +ifeq ($(with_check),yes) + cp -p debian/README.libstdc++-baseline \ + $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH) + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \ + fi +endif + cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \ + $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map + + cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py + +ifeq ($(with_libcxx),yes) + ifeq ($(with_dbg),yes) + cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \ + $(d_dbg)/$(usr_lib)/ + dh_strip -p$(p_dbg) --keep-debug + rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9] + endif +endif + $(call do_strip_lib_dbg, $(p_dev), $(p_dbg), $(v_dbg),,) +ifneq ($(with_common_libs),yes) + : # remove the debug symbols for libstdc++ built by a newer version of GCC + rm -rf $(d_dbg)/usr/lib/debug/$(PF) +endif + dh_strip -p$(p_pic) + +ifeq ($(with_cxxdev),yes) + debian/dh_rmemptydirs -p$(p_dev) + debian/dh_rmemptydirs -p$(p_pic) + debian/dh_rmemptydirs -p$(p_dbg) +endif + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + $(call shlibdirs_to_search,,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_dbg)) + echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc + +doxygen-docs: $(build_doxygen_stamp) +$(build_doxygen_stamp): $(build_stamp) + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen + -find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f + + touch $@ + +$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_libd) + dh_installdirs -p$(p_libd) \ + $(docdir)/$(p_base)/libstdc++ \ + $(PF)/share/man + +# debian/dh_doclink -p$(p_libd) $(p_base) + dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) + dh_installdocs -p$(p_libd) + rm -f $(d_libd)/$(docdir)/$(p_base)/copyright + + cp -a $(srcdir)/libstdc++-v3/doc/html/* \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + cp -a $(doxygen_doc_dir)/doxygen/html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/user + find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \ + | xargs -r rm -f + +# Broken docs ... see #766499 +# rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js +# dh_link -p$(p_libd) \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/html/jquery.js \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/user/jquery.js + + : FIXME: depending on the doxygen version + if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \ + $(d_libd)/$(PF)/share/man/man3; \ + if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \ + $(d_libd)/$(PF)/share/man/man3/; \ + fi; \ + elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3 \ + $(d_libd)/$(PF)/share/man/man3; \ + fi + + for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \ + [ -f $${i} ] || continue; \ + mv $${i} $${i}cxx; \ + done + rm -f $(d_libd)/$(PF)/share/man/man3/todo.3* + + mkdir -p $(d_libd)/usr/share/lintian/overrides + cp -p debian/$(p_libd).overrides \ + $(d_libd)/usr/share/lintian/overrides/$(p_libd) + + echo $(p_libd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libtsan.mk b/rules.d/binary-libtsan.mk new file mode 100644 index 0000000..f1158d4 --- /dev/null +++ b/rules.d/binary-libtsan.mk @@ -0,0 +1,70 @@ +$(lib_binaries) += libtsan +ifeq (0,1) +ifeq ($(with_lib64tsan),yes) + $(lib_binaries) += lib64tsan +endif +ifeq ($(with_lib32tsan),yes) + $(lib_binaries) += lib32tsan +endif +ifeq ($(with_libn32tsan),yes) + $(lib_binaries) += libn32tsan +endif +ifeq ($(with_libx32tsan),yes) + $(lib_binaries) += libx32tsan +endif +endif + +define __do_tsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libtsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst tsan$(TSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1)) + +$(binary_stamp)-libtsan: $(install_stamp) + $(call do_tsan,) + +$(binary_stamp)-lib64tsan: $(install_stamp) + $(call do_tsan,64) + +$(binary_stamp)-lib32tsan: $(install_stamp) + $(call do_tsan,32) + +$(binary_stamp)-libn32tsan: $(install_stamp) + $(call do_tsan,n32) + +$(binary_stamp)-libx32tsan: $(install_stamp) + $(call do_tsan,x32) diff --git a/rules.d/binary-libubsan.mk b/rules.d/binary-libubsan.mk new file mode 100644 index 0000000..342b5a7 --- /dev/null +++ b/rules.d/binary-libubsan.mk @@ -0,0 +1,67 @@ +$(lib_binaries) += libubsan +ifeq ($(with_lib64ubsan),yes) + $(lib_binaries) += lib64ubsan +endif +ifeq ($(with_lib32ubsan),yes) + $(lib_binaries) += lib32ubsan +endif +ifeq ($(with_libn32ubsan),yes) + $(lib_binaries) += libn32ubsan +endif +ifeq ($(with_libx32ubsan),yes) + $(lib_binaries) += libx32ubsan +endif + +define __do_ubsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo "$(p_l): unstripped-binary-or-object" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ubsan$(UBSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1)) + +$(binary_stamp)-libubsan: $(install_stamp) + $(call do_ubsan,) + +$(binary_stamp)-lib64ubsan: $(install_stamp) + $(call do_ubsan,64) + +$(binary_stamp)-lib32ubsan: $(install_stamp) + $(call do_ubsan,32) + +$(binary_stamp)-libn32ubsan: $(install_stamp) + $(call do_ubsan,n32) + +$(binary_stamp)-libx32ubsan: $(install_stamp) + $(call do_ubsan,x32) diff --git a/rules.d/binary-libvtv.mk b/rules.d/binary-libvtv.mk new file mode 100644 index 0000000..5e61003 --- /dev/null +++ b/rules.d/binary-libvtv.mk @@ -0,0 +1,64 @@ +$(lib_binaries) += libvtv +ifeq ($(with_lib64vtv),yes) + $(lib_binaries) += lib64vtv +endif +ifeq ($(with_lib32vtv),yes) + $(lib_binaries) += lib32vtv +endif +ifeq ($(with_libn32vtv),yes) + $(lib_binaries) += libn32vtv +endif +ifeq ($(with_libx32vtv),yes) + $(lib_binaries) += libx32vtv +endif + +define __do_vtv + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst vtv$(VTV_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + $(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1)) + +$(binary_stamp)-libvtv: $(install_stamp) + $(call do_vtv,) + +$(binary_stamp)-lib64vtv: $(install_stamp) + $(call do_vtv,64) + +$(binary_stamp)-lib32vtv: $(install_stamp) + $(call do_vtv,32) + +$(binary_stamp)-libn32vtv: $(install_stamp) + $(call do_vtv,n32) + +$(binary_stamp)-libx32vtv: $(install_stamp) + $(call do_vtv,x32) diff --git a/rules.d/binary-m2.mk b/rules.d/binary-m2.mk new file mode 100644 index 0000000..0e68e16 --- /dev/null +++ b/rules.d/binary-m2.mk @@ -0,0 +1,325 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gm2-multi + endif + endif + arch_binaries := $(arch_binaries) gm2-nat gm2-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) gm2 + indep_binaries := $(indep_binaries) gm2-build + endif + + ifeq ($(with_m2dev),yes) + $(lib_binaries) += libgm2-dev + endif + ifeq ($(with_libgm2),yes) + $(lib_binaries) += libgm2 + endif + + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) gm2-doc + endif + + ifeq (0,1) + ifeq ($(with_lib64gm2dev),yes) + $(lib_binaries) += lib64gm2-dev + endif + ifeq ($(with_lib32gm2dev),yes) + $(lib_binaries) += lib32gm2-dev + endif + ifeq ($(with_libn32gm2dev),yes) + $(lib_binaries) += libn32gm2-dev + endif + ifeq ($(with_libx32gm2dev),yes) + $(lib_binaries) += libx32gm2-dev + endif + + ifeq ($(with_lib64gm2),yes) + $(lib_binaries) += lib64gm2 + endif + ifeq ($(with_lib32gm2),yes) + $(lib_binaries) += lib32gm2 + endif + ifeq ($(with_libn32gm2),yes) + $(lib_binaries) += libn32gm2 + endif + ifeq ($(with_libx32gm2),yes) + $(lib_binaries) += libx32gm2 + endif + endif +endif + +p_gm2_n = gm2$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_gm2_h = gm2$(pkg_ver)-for-host +p_gm2_b = gm2$(pkg_ver)-for-build +p_gm2 = gm2$(pkg_ver) +p_gm2_m = gm2$(pkg_ver)-multilib$(cross_bin_arch) +p_libgm2 = libgm2-$(GM2_SONAME) +p_libgm2dev = libgm2$(pkg_ver)-dev +p_gm2d = gm2$(pkg_ver)-doc + +d_gm2_n = debian/$(p_gm2_n) +d_gm2_h = debian/$(p_gm2_h) +d_gm2_b = debian/$(p_gm2_b) +d_gm2 = debian/$(p_gm2) +d_gm2_m = debian/$(p_gm2_m) +d_libgm2 = debian/$(p_libgm2) +d_libgm2dev = debian/$(p_libgm2dev) +d_gm2d = debian/$(p_gm2d) + +dirs_gm2_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/plugin \ + usr/share/lintian/overrides +#ifneq ($(DEB_CROSS),yes) +# dirs_gm2_n += \ +# $(gm2_include_dir) +#endif + +dirs_gm2 = \ + $(PF)/bin \ + $(PF)/share/man/man1 + +files_gm2_n = \ + $(PF)/bin/$(cmd_prefix)gm2$(pkg_ver) \ + $(gcc_lib_dir)/plugin/m2rte.so \ + $(gcc_lexec_dir)/cc1gm2 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gm2_n += \ + $(PF)/share/man/man1/$(cmd_prefix)gm2$(pkg_ver).1 +endif + +dirs_libgm2 = \ + $(PF)/lib \ + $(gm2_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gm2-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2_n) + dh_installdirs -p$(p_gm2_n) $(dirs_gm2_n) + + $(dh_compat2) dh_movefiles -p$(p_gm2_n) $(files_gm2_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gm2_n)/$(gcc_lexec_dir)/cc1gm2 +endif + dh_strip -p$(p_gm2_n) \ + $(if $(unstripped_exe),-X/cc1gm2 -X/gm2) + dh_shlibdeps -p$(p_gm2_n) + + mkdir -p $(d_gm2_n)/usr/share/lintian/overrides + echo '$(p_gm2_n) binary: hardening-no-pie' \ + > $(d_gm2_n)/usr/share/lintian/overrides/$(p_gm2_n) + + debian/dh_doclink -p$(p_gm2_n) $(p_xbase) + + echo $(p_gm2_n) >> debian/arch_binaries + + find $(d_gm2_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gm2_h) + debian/dh_doclink -p$(p_gm2_h) $(p_xbase) + echo $(p_gm2_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_gm2_b) + debian/dh_doclink -p$(p_gm2_b) $(p_cpp_b) + echo $(p_gm2_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2) + dh_installdirs -p$(p_gm2) $(dirs_gm2) + + dh_installdocs -p$(p_gm2) + dh_installchangelogs -p$(p_gm2) src/gcc/m2/ChangeLog + + ln -sf $(cmd_prefix)gm2$(pkg_ver) \ + $(d_gm2)/$(PF)/bin/gm2$(pkg_ver) +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gm2$(pkg_ver).1.gz \ + $(d_gm2)/$(PF)/share/man/man1/gm2$(pkg_ver).1.gz +endif + dh_link -p$(p_gm2) \ + /$(docdir)/$(p_xbase)/README.Bugs \ + /$(docdir)/$(p_gm2)/README.Bugs + + echo $(p_gm2) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2_m) + dh_installdirs -p$(p_gm2_m) $(docdir) + + debian/dh_doclink -p$(p_gm2_m) $(p_xbase) + + dh_strip -p$(p_gm2_m) + dh_shlibdeps -p$(p_gm2_m) + echo $(p_gm2_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgm2 + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libm2pim.so.* \ + $(usr_lib$(2))/libm2cor.so.* \ + $(usr_lib$(2))/libm2iso.so.* \ + $(usr_lib$(2))/libm2log.so.* \ + $(usr_lib$(2))/libm2min.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + : ln -sf libgm2.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gm2-$(GM2_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + echo "$(p_l) binary: shared-lib-without-dependency-information"; \ + echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_gm2_lib(lib,soname,flavour,package,subdir) +define install_gm2_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3)) + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} +endef + +define __do_libgm2_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_gm2_lib calls needed? + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir)/m2 + ) + + $(call install_gm2_lib,libm2pim,$(GM2_SONAME),$(2),$(p_l),m2/m2pim) + $(call install_gm2_lib,libm2cor,$(GM2_SONAME),$(2),$(p_l),m2/m2cor) + $(call install_gm2_lib,libm2iso,$(GM2_SONAME),$(2),$(p_l),m2/m2iso) + $(call install_gm2_lib,libm2log,$(GM2_SONAME),$(2),$(p_l),m2/m2log) + $(call install_gm2_lib,libm2min,$(GM2_SONAME),$(2),$(p_l),m2/m2min) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgm2 = $(call __do_libgm2,lib$(1)gm2-$(GM2_SONAME),$(1)) +do_libgm2_dev = $(call __do_libgm2_dev,lib$(1)gm2-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gm2-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2d) + dh_installdirs -p$(p_gm2d) \ + $(docdir)/$(p_gm2) \ + $(docdir)/$(p_xbase)/m2 \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/m2.info $(d_gm2d)/$(PF)/share/info/gm2-$(BASE_VERSION).info + cp -p html/gm2.html $(d_gm2d)/$(docdir)/$(p_xbase)/m2/gm2-$(BASE_VERSION).html + ln -sf ../$(p_xbase)/m2/gm2-$(BASE_VERSION).html $(d_gm2d)/$(docdir)/$(p_gm2)/gm2-$(BASE_VERSION).html + + debian/dh_doclink -p$(p_gm2d) $(p_xbase) + dh_installdocs -p$(p_gm2d) + rm -f $(d_gm2d)/$(docdir)/$(p_xbase)/copyright + + echo $(p_gm2d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgm2: $(install_stamp) + $(call do_libgm2,) + +$(binary_stamp)-lib64gm2: $(install_stamp) + $(call do_libgm2,64) + +$(binary_stamp)-lib32gm2: $(install_stamp) + $(call do_libgm2,32) + +$(binary_stamp)-libn32gm2: $(install_stamp) + $(call do_libgm2,n32) + +$(binary_stamp)-libx32gm2: $(install_stamp) + $(call do_libgm2,x32) + + +$(binary_stamp)-libgm2-dev: $(install_stamp) + $(call do_libgm2_dev,) + +$(binary_stamp)-lib64gm2-dev: $(install_stamp) + $(call do_libgm2_dev,64) + +$(binary_stamp)-lib32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,32) + +$(binary_stamp)-libx32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,x32) + +$(binary_stamp)-libn32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,n32) diff --git a/rules.d/binary-nof.mk b/rules.d/binary-nof.mk new file mode 100644 index 0000000..fa5408a --- /dev/null +++ b/rules.d/binary-nof.mk @@ -0,0 +1,51 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_ver)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(usr_lib)/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(usr_lib)/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + $(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/. + rm -f $(d)/$(usr_lib)/libgcc_s_nof.so + ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + $(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_xbase) + dh_strip -p$(p_nof) + dh_shlibdeps -p$(p_nof) + + dh_makeshlibs $(ldconfig_arg) -p$(p_nof) + : # Only keep the shlibs file for the libgcc_s_nof library + fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ + > debian/$(p_nof)/DEBIAN/shlibs.tmp + mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs + + echo $(p_nof) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-nvptx.mk b/rules.d/binary-nvptx.mk new file mode 100644 index 0000000..3bb4726 --- /dev/null +++ b/rules.d/binary-nvptx.mk @@ -0,0 +1,99 @@ +ifeq ($(with_offload_nvptx),yes) + arch_binaries := $(arch_binaries) nvptx + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) nvptx-plugin + endif +endif + +p_nvptx = gcc$(pkg_ver)-offload-nvptx +d_nvptx = debian/$(p_nvptx) + +p_pl_nvptx = libgomp-plugin-nvptx1 +d_pl_nvptx = debian/$(p_pl_nvptx) + +dirs_nvptx = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lib_dir)/accel \ + $(gcc_lexec_dir)/accel + +files_nvptx = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver) \ + $(gcc_lib_dir)/accel/nvptx-none \ + $(gcc_lexec_dir)/accel/nvptx-none + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/nvptx-none + +# are these needed? +# $(PF)/lib/gcc/nvptx-none/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_nvptx += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-nvptx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_nvptx) + dh_installdirs -p$(p_nvptx) $(dirs_nvptx) + tar -c -C $(d)-nvptx -f - $(files_nvptx) \ + | tar -x -v -C $(d_nvptx) -f - + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_nvptx) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib + + mkdir -p $(d_nvptx)/usr/share/lintian/overrides + ( \ + echo '$(p_nvptx) binary: hardening-no-pie'; \ + echo '$(p_nvptx) binary: no-code-sections' \ + ) > $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_nvptx) binary: binary-without-manpage' \ + >> $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +endif + + debian/dh_doclink -p$(p_nvptx) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_nvptx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_nvptx) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_nvptx) + echo $(p_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-nvptx-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_nvptx) + dh_installdirs -p$(p_pl_nvptx) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_nvptx) \ + $(usr_lib)/libgomp-plugin-nvptx.so.* + + debian/dh_doclink -p$(p_pl_nvptx) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_nvptx) + + dh_strip -p$(p_pl_nvptx) + dh_makeshlibs -p$(p_pl_nvptx) + dh_shlibdeps -p$(p_pl_nvptx) + echo $(p_pl_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objc.mk b/rules.d/binary-objc.mk new file mode 100644 index 0000000..e476a33 --- /dev/null +++ b/rules.d/binary-objc.mk @@ -0,0 +1,118 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) objc-multi + endif + arch_binaries := $(arch_binaries) objc-nat objc-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) objc + indep_binaries := $(indep_binaries) objc-build + endif +endif + +p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +d_objc_n = debian/$(p_objc_n) + +p_objc_h = gobjc$(pkg_ver)-for-host +d_objc_h = debian/$(p_objc_h) + +p_objc_b = gobjc$(pkg_ver)-for-build +d_objc_b = debian/$(p_objc_b) + +p_objc = gobjc$(pkg_ver) +d_objc = debian/$(p_objc) + +p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch) +d_objc_m= debian/$(p_objc_m) + +dirs_objc_n = \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_objc = \ + $(docdir)/$(p_xbase)/ObjC + +files_objc_n = \ + $(gcc_lexec_dir)/cc1obj + +$(binary_stamp)-objc-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_n) + dh_installdirs -p$(p_objc_n) $(dirs_objc_n) + $(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n) + + echo '$(p_objc_n) binary: hardening-no-pie' \ + > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n) + + debian/dh_doclink -p$(p_objc_n) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objc_n)/$(gcc_lexec_dir)/cc1obj +endif + dh_strip -p$(p_objc_n) \ + $(if $(unstripped_exe),-X/cc1obj) + dh_shlibdeps -p$(p_objc_n) + echo $(p_objc_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objc_h) + debian/dh_doclink -p$(p_objc_h) $(p_xbase) + echo $(p_objc_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objc_b) + debian/dh_doclink -p$(p_objc_b) $(p_cpp_b) + echo $(p_objc_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc) + dh_installdirs -p$(p_objc) $(dirs_objc) + + cp -p $(srcdir)/libobjc/{README*,THREADS*} \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/. + + cp -p $(srcdir)/libobjc/ChangeLog \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc + + debian/dh_doclink -p$(p_objc) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc) + + echo $(p_objc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_m) + dh_installdirs -p$(p_objc_m) $(docdir) + + debian/dh_doclink -p$(p_objc_m) $(p_xbase) + + dh_strip -p$(p_objc_m) + dh_shlibdeps -p$(p_objc_m) + echo $(p_objc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objcxx.mk b/rules.d/binary-objcxx.mk new file mode 100644 index 0000000..b96ec33 --- /dev/null +++ b/rules.d/binary-objcxx.mk @@ -0,0 +1,111 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) objcxx-multi + endif + arch_binaries := $(arch_binaries) objcxx-nat objcxx-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) objcxx + indep_binaries := $(indep_binaries) objcxx-build + endif +endif + +p_objcx_n = gobjc++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +d_objcx_n = debian/$(p_objcx_n) + +p_objcx_h = gobjc++$(pkg_ver)-for-host +d_objcx_h = debian/$(p_objcx_h) + +p_objcx_b = gobjc++$(pkg_ver)-for-build +d_objcx_b = debian/$(p_objcx_b) + +p_objcx = gobjc++$(pkg_ver) +d_objcx = debian/$(p_objcx) + +p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch) +d_objcx_m = debian/$(p_objcx_m) + +dirs_objcx_n = \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_objcx = \ + $(docdir)/$(p_xbase)/Obj-C++ \ + +files_objcx_n = \ + $(gcc_lexec_dir)/cc1objplus + +$(binary_stamp)-objcxx-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx_n) + dh_installdirs -p$(p_objcx_n) $(dirs_objcx_n) + $(dh_compat2) dh_movefiles -p$(p_objcx_n) $(files_objcx_n) + + debian/dh_doclink -p$(p_objcx_n) $(p_xbase) + + echo '$(p_objcx_n) binary: hardening-no-pie' \ + > $(d_objcx_n)/usr/share/lintian/overrides/$(p_objcx_n) + + debian/dh_rmemptydirs -p$(p_objcx_n) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objcx_n)/$(gcc_lexec_dir)/cc1objplus +endif + dh_strip -p$(p_objcx_n) \ + $(if $(unstripped_exe),-X/cc1objplus) + dh_shlibdeps -p$(p_objcx_n) + echo $(p_objcx_n) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_h) + debian/dh_doclink -p$(p_objcx_h) $(p_xbase) + echo $(p_objcx_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_b) + debian/dh_doclink -p$(p_objcx_b) $(p_cpp_b) + echo $(p_objcx_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx) + dh_installdirs -p$(p_objcx) $(dirs_objcx) + + debian/dh_doclink -p$(p_objcx) $(p_xbase) + cp -p $(srcdir)/gcc/objcp/ChangeLog \ + $(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog + + debian/dh_rmemptydirs -p$(p_objcx) + + echo $(p_objcx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_m) + debian/dh_doclink -p$(p_objcx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_objcx_m) + dh_strip -p$(p_objcx_m) + dh_shlibdeps -p$(p_objcx_m) + echo $(p_objcx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-rust.mk b/rules.d/binary-rust.mk new file mode 100644 index 0000000..4710aad --- /dev/null +++ b/rules.d/binary-rust.mk @@ -0,0 +1,336 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + #ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) + # arch_binaries := $(arch_binaries) grs-multi + #endif + endif + arch_binaries := $(arch_binaries) grs-nat grs-host + ifeq ($(unprefixed_names),yes) + arch_binaries := $(arch_binaries) grs + indep_binaries := $(indep_binaries) grs-build + endif + + #ifeq ($(with_rsdev),yes) + # $(lib_binaries) += libgrs-dev + #endif + #ifeq ($(with_libgrs),yes) + # $(lib_binaries) += libgrs + #endif + + #ifneq ($(DEB_CROSS),yes) + # indep_binaries := $(indep_binaries) grs-doc + #endif + + ifeq (0,1) + ifeq ($(with_lib64grsdev),yes) + $(lib_binaries) += lib64grs-dev + endif + ifeq ($(with_lib32grsdev),yes) + $(lib_binaries) += lib32grs-dev + endif + ifeq ($(with_libn32grsdev),yes) + $(lib_binaries) += libn32grs-dev + endif + ifeq ($(with_libx32grsdev),yes) + $(lib_binaries) += libx32grs-dev + endif + + ifeq ($(with_lib64grs),yes) + $(lib_binaries) += lib64grs + endif + ifeq ($(with_lib32grs),yes) + $(lib_binaries) += lib32grs + endif + ifeq ($(with_libn32grs),yes) + $(lib_binaries) += libn32grs + endif + ifeq ($(with_libx32grs),yes) + $(lib_binaries) += libx32grs + endif + endif +endif + +p_grs_n = gccrs$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) +p_grs_h = gccrs$(pkg_ver)-for-host +p_grs_b = gccrs$(pkg_ver)-for-build +p_grs = gccrs$(pkg_ver) +p_grs_m = gccrs$(pkg_ver)-multilib$(cross_bin_arch) +p_libgrs = libgrs-$(GRS_SONAME) +p_libgrsdev = libgrs$(pkg_ver)-dev +p_grsd = grs$(pkg_ver)-doc + +d_grs_n = debian/$(p_grs_n) +d_grs_h = debian/$(p_grs_h) +d_grs_b = debian/$(p_grs_b) +d_grs = debian/$(p_grs) +d_grs_m = debian/$(p_grs_m) +d_libgrs = debian/$(p_libgrs) +d_libgrsdev = debian/$(p_libgrsdev) +d_grsd = debian/$(p_grsd) + +dirs_grs_n = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + usr/share/lintian/overrides + +dirs_grs = \ + $(PF)/bin \ + $(PF)/share/man/man1 +#ifneq ($(DEB_CROSS),yes) +# dirs_grs += \ +# $(grs_include_dir) +#endif + +files_grs_n = \ + $(PF)/bin/$(cmd_prefix)gccrs$(pkg_ver) \ + $(gcc_lexec_dir)/crab1 + +# files_grs_n += \ +# $(PF)/share/man/man1/$(cmd_prefix)gccrs$(pkg_ver).1 + +dirs_libgrs = \ + $(PF)/lib \ + $(grs_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-grs-nat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs_n) + dh_installdirs -p$(p_grs_n) $(dirs_grs_n) + + $(dh_compat2) dh_movefiles -p$(p_grs_n) $(files_grs_n) + + dh_installdirs -p$(p_grs_n) + debian/dh_doclink -p$(p_grs_n) $(p_xbase) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_grs_n)/$(gcc_lexec_dir)/crab1 +endif + dh_strip -p$(p_grs_n) \ + $(if $(unstripped_exe),-X/crab1) + dh_shlibdeps -p$(p_grs_n) + + ( \ + echo '$(p_grs_n) binary: hardening-no-pie'; \ + echo '$(p_grs_n) binary: no-manual-page'; \ + ) > $(d_grs_n)/usr/share/lintian/overrides/$(p_grs_n) + + echo $(p_grs_n) >> debian/arch_binaries + + find $(d_grs_n) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-host: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_grs_h) + debian/dh_doclink -p$(p_grs_h) $(p_xbase) + echo $(p_grs_h) >> debian/arch_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-build: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_grs_b) + debian/dh_doclink -p$(p_grs_b) $(p_cpp_b) + echo $(p_grs_b) >> debian/indep_binaries + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs) + dh_installdirs -p$(p_grs) $(dirs_grs) + + dh_installdocs -p$(p_grs) + dh_installchangelogs -p$(p_grs) #src/gcc/rs/ChangeLog + + $(dh_compat2) dh_movefiles -p$(p_grs) $(files_grs) + + ln -sf $(cmd_prefix)gccrs$(pkg_ver) \ + $(d_grs)/$(PF)/bin/gccrs$(pkg_ver) +# ln -sf $(cmd_prefix)gccrs$(pkg_ver).1 \ +# $(d_grs)/$(PF)/share/man/man1/gccrs$(pkg_ver).1 + dh_installdirs -p$(p_grs) + debian/dh_doclink -p$(p_grs) $(p_xbase) + + echo $(p_grs) >> debian/arch_binaries + + find $(d_grs) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-grs-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grs_m) + dh_installdirs -p$(p_grs_m) $(docdir) + + debian/dh_doclink -p$(p_grs_m) $(p_xbase) + + dh_strip -p$(p_grs_m) + dh_shlibdeps -p$(p_grs_m) + echo $(p_grs_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgrs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/librspim.so.* \ + $(usr_lib$(2))/librscor.so.* \ + $(usr_lib$(2))/librsiso.so.* \ + $(usr_lib$(2))/librslog.so.* \ + $(usr_lib$(2))/librsmin.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + : ln -sf libgrs.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst grs-$(GRS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + ( \ + echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ + echo "$(p_l) binary: shared-lib-without-dependency-information"; \ + echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ + echo "$(p_l) binary: library-not-linked-against-libc"; \ + ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) + + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_grs_lib(lib,soname,flavour,package,subdir) +#define install_grs_lib +# mkdir -p debian/$(4)/$(gcc_lib_dir$(3))/$(5) +# mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/. +# rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} +# dh_link -p$(4) \ +# /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so +#endef +define install_grs_lib + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).so + rm -f $(d)/$(usr_lib$(3))/$(1).a +endef + +define __do_libgrs_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + : # install_grs_lib calls needed? + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lexec_dir)/rs + ) + + $(call install_grs_lib,librspim,$(GRS_SONAME),$(2),$(p_l),rs/rspim) + $(call install_grs_lib,librscor,$(GRS_SONAME),$(2),$(p_l),rs/rscor) + $(call install_grs_lib,librsiso,$(GRS_SONAME),$(2),$(p_l),rs/rsiso) + $(call install_grs_lib,librslog,$(GRS_SONAME),$(2),$(p_l),rs/rslog) + $(call install_grs_lib,librsmin,$(GRS_SONAME),$(2),$(p_l),rs/rsmin) + + : # included in grs package + rm -f $(d_l)/$(grs_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgrs = $(call __do_libgrs,lib$(1)grs-$(GRS_SONAME),$(1)) +do_libgrs_dev = $(call __do_libgrs_dev,lib$(1)grs-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-grs-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_grsd) + dh_installdirs -p$(p_grsd) \ + $(docdir)/$(p_grs) \ + $(docdir)/$(p_xbase)/rs \ + $(PF)/share/info + cp -p $(builddir)/gcc/doc/rs.info $(d_grsd)/$(PF)/share/info/grs.info + cp -p html/grs.html $(d_grsd)/$(docdir)/$(p_xbase)/rs/ + ln -sf ../$(p_xbase)/rs/grs.html $(d_grsd)/$(docdir)/$(p_grs)/grs.html + + debian/dh_doclink -p$(p_grsd) $(p_xbase) + dh_installdocs -p$(p_grsd) + rm -f $(d_grsd)/$(docdir)/$(p_xbase)/copyright + + echo $(p_grsd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(binary_stamp)-libgrs: $(install_stamp) + $(call do_libgrs,) + +$(binary_stamp)-lib64grs: $(install_stamp) + $(call do_libgrs,64) + +$(binary_stamp)-lib32grs: $(install_stamp) + $(call do_libgrs,32) + +$(binary_stamp)-libn32grs: $(install_stamp) + $(call do_libgrs,n32) + +$(binary_stamp)-libx32grs: $(install_stamp) + $(call do_libgrs,x32) + + +$(binary_stamp)-libgrs-dev: $(install_stamp) + $(call do_libgrs_dev,) + +$(binary_stamp)-lib64grs-dev: $(install_stamp) + $(call do_libgrs_dev,64) + +$(binary_stamp)-lib32grs-dev: $(install_stamp) + $(call do_libgrs_dev,32) + +$(binary_stamp)-libx32grs-dev: $(install_stamp) + $(call do_libgrs_dev,x32) + +$(binary_stamp)-libn32grs-dev: $(install_stamp) + $(call do_libgrs_dev,n32) diff --git a/rules.d/binary-snapshot.mk b/rules.d/binary-snapshot.mk new file mode 100644 index 0000000..fb2d6b2 --- /dev/null +++ b/rules.d/binary-snapshot.mk @@ -0,0 +1,213 @@ +arch_binaries := $(arch_binaries) snapshot + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + p_snap = gcc-snapshot +else + $(error unknown build for single gcc package) +endif + +ifeq ($(DEB_CROSS),yes) + p_snap := $(p_snap)$(cross_bin_arch) +endif +d_snap = debian/$(p_snap) + +dirs_snap = \ + $(docdir)/$(p_snap) \ + usr/lib + +ifeq ($(with_hppa64),yes) + snapshot_depends = $(binutils_hppa64), +endif +ifeq ($(with_offload_nvptx),yes) + snapshot_depends += nvptx-tools, +endif +ifeq ($(with_offload_gcn),yes) + snapshot_depends += $(AMDGCN_TOOLS_DEP) +endif + +common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + +# ---------------------------------------------------------------------- +$(binary_stamp)-snapshot: $(install_snap_stamp) \ + $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ + $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) + dh_testdir + dh_testroot + mv $(install_snap_stamp) $(install_snap_stamp)-tmp + + rm -rf $(d_snap) + dh_installdirs -p$(p_snap) $(dirs_snap) + + mv $(d)/$(PF) $(d_snap)/usr/lib/ + + if [ -f $(d)/gcobol.3 ]; then \ + mkdir -p $(d_snap)/$(PF)/share/man/man3; \ + mv $(d)/gcobol.3 $(d_snap)/$(PF)/share/man/man3/.; \ + fi + +ifeq ($(with_jit),yes) + tar -C $(d_snap) -x -v -f installed-jit.tar.xz +endif + + find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf + find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # FIXME: libbacktrace is not installed by default + for d in . 32 n32 64; do \ + if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ + $(d_snap)/$(gcc_lib_dir)/$$d; \ + fi; \ + done + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + fi + + rm -rf $(d_snap)/$(PF)/lib/nof + +ifeq ($(with_ada),yes FIXME: apply our ada patches) + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + + set -e; \ + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \ + rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + dh_link -p$(p_snap) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ + done +endif + ln -sf gcc $(d_snap)/$(PF)/bin/cc +ifeq ($(with_fortran),yes) + ln -sf gfortran $(d_snap)/$(PF)/bin/f77 +endif + +ifeq ($(with_offload_nvptx),yes) + tar -c -C $(d)-nvptx -f - $(PF) \ + | tar x -C $(d_snap) -f - + + rm -f $(d_snap)/$(PF)/bin/*-lto-dump + rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib +endif + +ifeq ($(with_offload_gcn),yes) + tar -c -C $(d)-gcn -f - $(PF) \ + | tar x -C $(d_snap) -f - + + ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_snap) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + : # FIXME: are these really needed? + dh_link -p$(p_snap) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib + rm -f $(d_snap)/$(PF)/bin/*-lto-dump + rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 + endif +endif + +ifeq ($(with_hppa64),yes) + : # provide as and ld links + dh_link -p $(p_snap) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld +endif + +ifeq ($(with_check),yes) + dh_installdocs -p$(p_snap) test-summary + cd $(d_snap) && tar xvf ../../installed-testlogs.tar + mv $(d_snap)/usr/share/doc/gcc-base/* $(d_snap)/usr/share/doc/$(p_snap)/. + rm -rf $(d_snap)/usr/share/doc/gcc-base +else + dh_installdocs -p$(p_snap) +endif + + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \ + fi + cp -p debian/README.snapshot \ + $(d_snap)/$(docdir)/$(p_snap)/README.Debian + cp -p debian/README.Bugs \ + $(d_snap)/$(docdir)/$(p_snap)/ + dh_installchangelogs -p$(p_snap) +ifeq ($(DEB_TARGET_ARCH),hppa) +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +else +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +endif + + mkdir -p $(d_snap)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_snap)/usr/share/lintian/overrides/$(p_snap) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgo $(GO_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_snap)/lib/$$ma; \ + mkdir -p $(d_snap)/usr/lib/$$ma; \ + done +endif + + -find $(d_snap) -type d -empty -delete + + echo $(p_snap) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp) diff --git a/rules.d/binary-softfloat.mk b/rules.d/binary-softfloat.mk new file mode 100644 index 0000000..6badfcc --- /dev/null +++ b/rules.d/binary-softfloat.mk @@ -0,0 +1,31 @@ +arch_binaries := $(arch_binaries) softfloat + +p_softfloat = gcc$(pkg_ver)-soft-float +d_softfloat = debian/$(p_softfloat) + +dirs_softfloat = \ + $(PFL)/$(libdir) \ + $(gcc_lib_dir) + +files_softfloat = \ + $(PFL)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +# ---------------------------------------------------------------------- +$(binary_stamp)-softfloat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_softfloat) + dh_installdirs -p$(p_softfloat) $(dirs_softfloat) + $(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat) + rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so* + mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \ + $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a + debian/dh_doclink -p$(p_softfloat) $(p_xbase) + dh_strip -p$(p_softfloat) + dh_shlibdeps -p$(p_softfloat) + echo $(p_softfloat) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-source.mk b/rules.d/binary-source.mk new file mode 100644 index 0000000..9844826 --- /dev/null +++ b/rules.d/binary-source.mk @@ -0,0 +1,54 @@ +indep_binaries := $(indep_binaries) gcc-source + +ifeq ($(BACKPORT),true) + p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source +else + p_source = gcc$(pkg_ver)-source +endif +d_source= debian/$(p_source) + +$(binary_stamp)-gcc-source: $(install_stamp) + dh_testdir + dh_testroot + + dh_installdocs -p$(p_source) + dh_installchangelogs -p$(p_source) + + dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver) +ifneq (,$(m2_tarball)) + dh_install -p$(p_source) $(m2_tarball) usr/src/gcc$(pkg_ver) +endif + tar cf - $$(find './debian' -mindepth 1 \( \ + -name .svn -prune -o \ + -path './debian/.debhelper' -prune -o \ + -path './debian/gcc-*' -type d -prune -o \ + -path './debian/cpp-*' -type d -prune -o \ + -path './debian/*fortran*' -type d -prune -o \ + -path './debian/lib*' -type d -prune -o \ + -path './debian/patches/*' -prune -o \ + -path './debian/tmp*' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/rules.d/*' -prune -o \ + -path './debian/rules.parameters' -prune -o \ + -path './debian/soname-cache' -prune -o \ + -path './debian/*substvars*' -prune -o \ + -path './debian/gcc-snapshot*' -prune -o \ + -path './debian/*[0-9]*.p*' -prune -o \ + -path './debian/*$(pkg_ver)[.-]*' -prune -o \ + -print \) ) \ + | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver) -f - + # FIXME: Remove generated files + find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf + rm -f $(d_source)/usr/src/gcc$(pkg_ver)/debian/patches/series + + touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters + + dh_link -p$(p_source) \ + /usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches + + mkdir -p $(d_source)/usr/share/lintian/overrides + cp -p debian/$(p_source).overrides \ + $(d_source)/usr/share/lintian/overrides/$(p_source) + echo $(p_source) >> debian/indep_binaries + + touch $@ diff --git a/rules.d/binary-toolchain.mk b/rules.d/binary-toolchain.mk new file mode 100644 index 0000000..a19d68c --- /dev/null +++ b/rules.d/binary-toolchain.mk @@ -0,0 +1,210 @@ +arch_binaries := $(arch_binaries) toolchain + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + p_tc = gcc-toolchain-$(BASE_VERSION) +else + $(error unknown build for single gcc package) +endif + +ifeq ($(DEB_CROSS),yes) + p_tc := $(p_tc)$(cross_bin_arch) +endif +d_tc = debian/$(p_tc) + +dirs_tc = \ + $(docdir)/$(p_tc) \ + usr/lib + +ifeq ($(with_hppa64),yes) + snapshot_depends = $(binutils_hppa64), +endif +ifeq ($(with_offload_nvptx),yes) + snapshot_depends += nvptx-tools, +endif +ifeq ($(with_offload_gcn),yes) + ifeq ($(gcn_tools_llvm_version),tools) + snapshot_depends += amdgcn-tools, + else + snapshot_depends += llvm-$(gcn_tools_llvm_version), lld-$(gcn_tools_llvm_version), + endif +endif + +common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + +# ---------------------------------------------------------------------- +$(binary_stamp)-toolchain: $(install_tc_stamp) \ + $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ + $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) + dh_testdir + dh_testroot + mv $(install_tc_stamp) $(install_tc_stamp)-tmp + + rm -rf $(d_tc) + dh_installdirs -p$(p_tc) $(dirs_tc) + + mv $(d)/$(PF) $(d_tc)/usr/lib/ + + find $(d_tc) -name '*.gch' -type d | xargs -r rm -rf + find $(d_tc) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # FIXME: libbacktrace is not installed by default + for d in . 32 n32 64 sf hf; do \ + if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ + $(d_tc)/$(gcc_lib_dir)/$$d; \ + fi; \ + done + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + $(d_tc)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + $(d_tc)/$(gcc_lib_dir)/include/; \ + fi + + rm -rf $(d_tc)/$(PF)/lib/nof + +ifeq ($(with_ada),yes FIXME: apply our ada patches) + dh_link -p$(p_tc) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a + dh_link -p$(p_tc) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + + set -e; \ + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d_tc)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_tc)/$(PF)/$(libdir)/. ; \ + rm -f $(d_tc)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + dh_link -p$(p_tc) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ + done +endif + ln -sf gcc $(d_tc)/$(PF)/bin/cc +ifeq ($(with_ada),yes) + ln -sf gcc $(d_tc)/$(PF)/bin/gnatgcc +endif +ifeq ($(with_fortran),yes) + ln -sf gfortran $(d_tc)/$(PF)/bin/f77 +endif + +ifeq ($(with_offload_nvptx),yes) + tar -c -C $(d)-nvptx -f - $(PF) \ + | tar x -C $(d_tc) -f - + + rm -f $(d_tc)/$(PF)/bin/*-lto-dump + rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 + + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ + /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ + /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ + /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib +endif + +ifeq ($(with_offload_gcn),yes) + tar -c -C $(d)-gcn -f - $(PF) \ + | tar x -C $(d_tc) -f - + + ifeq ($(gcn_tools_llvm_version),tools) + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + else + : # re-create the symlinks as relative symlinks + dh_link -p$(p_tc) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib + + : # FIXME: are these really needed? + dh_link -p$(p_tc) \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ + /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib + rm -f $(d_tc)/$(PF)/bin/*-lto-dump + rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 + endif +endif + +ifeq ($(with_hppa64),yes) + : # provide as and ld links + dh_link -p $(p_tc) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld +endif + +ifeq ($(with_check),yes) + dh_installdocs -p$(p_tc) test-summary + cd $(d_tc) && tar xvf ../../installed-testlogs.tar + mv $(d_tc)/usr/share/doc/gcc-base/* $(d_tc)/usr/share/doc/$(p_tc)/. + rm -rf $(d_tc)/usr/share/doc/gcc-base +else + dh_installdocs -p$(p_tc) +endif + cp $(binutils_srcdir)/debian/copyright $(d_tc)/usr/share/doc/copyright.binutils + + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_tc)/$(docdir)/$(p_tc)/libstdc++6_symbols.txt; \ + fi + cp -p debian/README.snapshot \ + $(d_tc)/$(docdir)/$(p_tc)/README.Debian + cp -p debian/README.Bugs \ + $(d_tc)/$(docdir)/$(p_tc)/ + dh_installchangelogs -p$(p_tc) +ifeq ($(DEB_TARGET_ARCH),hppa) +# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_tc) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +else +# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) + dh_strip -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) +endif + + mkdir -p $(d_tc)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_tc)/usr/share/lintian/overrides/$(p_tc) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgo $(GO_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_tc) -l$(CURDIR)/$(d_tc)/$(PF)/lib:$(CURDIR)/$(d_tc)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_tc)[^,]*, //g' debian/$(p_tc).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_tc)/lib/$$ma; \ + mkdir -p $(d_tc)/usr/lib/$$ma; \ + done +endif + echo $(p_tc) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_tc_stamp)-tmp $(install_tc_stamp) diff --git a/rules.defs b/rules.defs new file mode 100644 index 0000000..af75659 --- /dev/null +++ b/rules.defs @@ -0,0 +1,2371 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +# common vars +COMMA = , +SPACE = $(EMPTY) $(EMPTY) +SHELL = /bin/bash -e # brace expansion used in rules file +srcdir = $(CURDIR)/src +builddir = $(CURDIR)/build +builddir_jit = $(CURDIR)/build-jit +builddir_nvptx = $(CURDIR)/build-nvptx +builddir_gcn = $(CURDIR)/build-gcn +builddir_hppa64 = $(CURDIR)/build-hppa64 +stampdir = stamps + +distribution := $(shell lsb_release -is) +distrelease := $(shell lsb_release -cs) +derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ + elif dpkg-vendor --derives-from Debian; then echo Debian; \ + else echo Unknown; fi) + +# On non official archives, "lsb_release -cs" default to "n/a". Assume +# sid in that case +ifeq ($(distrelease),n/a) +distrelease := sid +endif + +on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) + +# creates {srcdir,builddir}_hppa64 +$(foreach x,srcdir builddir,$(foreach target,hppa64,$(eval \ + $(x)_$(target) := $($(x))-$(target)))) + +# for architecture dependent variables and changelog vars +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +# for rules.sonames +vafilt_defined = 1 + +dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes) +ifeq ($(dpkg_target_vars),yes) + DEB_TARGET_ARCH= + DEB_TARGET_ARCH_BITS= + DEB_TARGET_ARCH_CPU= + DEB_TARGET_ARCH_ENDIAN= + DEB_TARGET_ARCH_OS= + DEB_TARGET_GNU_CPU= + DEB_TARGET_GNU_SYSTEM= + DEB_TARGET_GNU_TYPE= + DEB_TARGET_MULTIARCH= +endif + +DPKG_VARS := $(shell dpkg-architecture) +ifeq ($(dpkg_target_vars),yes) + DPKG_VARS := $(filter-out DEB_TARGET_%, $(DPKG_VARS)) +endif +DEB_BUILD_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_BUILD_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_ARCH_ABI ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ABI) +DEB_HOST_ARCH_BITS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_BITS) +DEB_HOST_ARCH_ENDIAN ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ENDIAN) +DEB_HOST_ARCH_LIBC ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_LIBC) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease), precise trusty)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i686-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i686-linux-gnu + endif + endif +else + ifneq (,$(filter $(distrelease),jessie)) + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i586-linux-gnu + endif + else + # stretch and newer ... + DEB_BUILD_GNU_TYPE := $(subst i586,i686,$(DEB_BUILD_GNU_TYPE)) + DEB_HOST_GNU_TYPE := $(subst i586,i686,$(DEB_HOST_GNU_TYPE)) + endif +endif + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +# the name of the source package +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +# those are required here too +SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ + sed -e 's/.*://' -e 's/ds[0-9][0-9]*//')) +# epoch used for gcc versions up to 3.3.x, now used for some remaining +# libraries: libgcc1, libobjc1 +EPOCH := 1 +DEB_EVERSION := $(EPOCH):$(DEB_VERSION) +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([0-9][0-9]*\).*-.*/\1/') + +NJOBS := +USE_CPUS := 1 +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + USE_CPUS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS := -j $(USE_CPUS) + NJOBS_TESTS := -j $(USE_CPUS) + # this is for debugging hanging tests on the buildds +# ifeq ($(derivative),Ubuntu) +# ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) +# NJOBS_TESTS := -j 1 +# endif +# else +# ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf armel arm64 i386 riscv64 s390x)) +# NJOBS_TESTS := -j 1 +# endif +# endif +endif + +CPUS_LTOLINK := $(if $(filter 1, $(USE_CPUS)),1,$(shell expr $(USE_CPUS) / 2)) +ifeq ($(derivative)-$(DEB_BUILD_ARCH),Ubuntu-ppc64el) + CPUS_LTOLINK := 1 +else ifeq ($(derivative)-$(DEB_BUILD_ARCH),Debian-sparc64) + CPUS_LTOLINK := $(shell if test $(CPUS_LTOLINK) -gt 4; then echo 4; else echo $(CPUS_LTOLINK); fi) +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + single_package = yes + trunk_build = yes +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + single_package = yes + with_binutils = yes +else + # --program-suffix=-$(BASE_VERSION) + versioned_packages := yes +endif + +# push glibc stack traces into stderr +export LIBC_FATAL_STDERR_=1 + +# --------------------------------------------------------------------------- +# set target +# - GNU triplet via DEB_TARGET_GNU_TYPE +# - Debian arch in debian/target +# - Debian arch via DEB_GCC_TARGET or GCC_TARGET +# +# alias +ifdef GCC_TARGET + DEB_GCC_TARGET := $(GCC_TARGET) +endif +ifdef DEB_TARGET_GNU_TYPE + TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null) +else + # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested + # by toolchain-source maintainer + DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null))) + ifndef DEB_TARGET_ARCH + ifneq (,$(DEBIAN_TARGET_FILE)) + DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE) + else + ifdef DEB_GCC_TARGET + DEB_TARGET_ARCH := $(DEB_GCC_TARGET) + else + DEB_TARGET_ARCH := $(DEB_HOST_ARCH) + endif + endif + endif + TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null) +endif +ifeq ($(dpkg_target_vars),yes) + TARGET_VARS := $(filter-out DEB_TARGET_%, $(TARGET_VARS)) +endif + +DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH) +DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS) +DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU) +DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU) +DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE) +DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM) +DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH) +DEB_TARGET_ARCH_ABI := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ABI) +DEB_TARGET_ARCH_BITS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS) +DEB_TARGET_ARCH_ENDIAN := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN) +DEB_TARGET_ARCH_LIBC := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_LIBC) +export DEB_TARGET_ARCH DEB_TARGET_ARCH_ABI DEB_TARGET_ARCH_BITS \ + DEB_TARGET_ARCH_CPU DEB_TARGET_ARCH_OS DEB_TARGET_ARCH_ENDIAN \ + DEB_TARGET_ARCH_LIBC DEB_TARGET_GNU_CPU DEB_TARGET_GNU_TYPE \ + DEB_TARGET_GNU_SYSTEM DEB_TARGET_MULTIARCH + +ifneq (,$(filter $(distrelease),stretch)) + DEB_TARGET_GNU_TYPE := $(subst i586,i686,$(DEB_TARGET_GNU_TYPE)) +endif + +ifeq ($(DEB_TARGET_ARCH),) + $(error Invalid architecure.) +endif + +# Force this, people get confused about the default. See #760770. +override with_deps_on_target_arch_pkgs := + +# including unversiond symlinks for binaries +#with_unversioned = yes + +# package metadata information +ifeq (,$(ELF_PACKAGE_METADATA)) + ELF_PACKAGE_METADATA := $(subst $(SPACE),,{ \ + "type":"deb", \ + "os":"$(shell awk -F= '/^ID=/ {print $$2}' /etc/os-release)", \ + "name":"$(PKGSOURCE)", \ + "version":"$(DEB_VERSION)", \ + "architecture":"$(DEB_HOST_ARCH)" \ + $(if $(DEB_HOST_ARCH_VARIANT),$(COMMA)"architectureVariant":"$(DEB_HOST_ARCH_VARIANT)") \ + $(if $(DEB_BUILD_DEBUG_INFO_URL),$(COMMA)"debugInfoUrl":"$(DEB_BUILD_DEBUG_INFO_URL)") \ + }) + export ELF_PACKAGE_METADATA +endif + +# --------------------------------------------------------------------------- +# cross-compiler config +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross building a cross compiler, untested. + DEB_CROSS = yes + build_type = cross-build-cross + else + # cross building the native compiler + build_type = cross-build-native + endif +else + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross compiler, sets WITH_SYSROOT on it's own + DEB_CROSS = yes + build_type = build-cross + else ifeq ($(FORCE_CROSS_LAYOUT),yes) + # a native build with a cross layout + DEB_CROSS = yes + build_type = build-cross + else + # native build + build_type = build-native + endif +endif + +# --------------------------------------------------------------------------- +# cross compiler support +ifeq ($(DEB_CROSS),yes) + # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name) + # TP: Target Prefix. Used primarily as a prefix for cross tool + # names (e.g. powerpc-linux-gcc). + # TS: Target Suffix. Used primarily at the end of cross compiler + # package names (e.g. gcc-powerpc). + # LS: Library Suffix. Used primarily at the end of cross compiler + # library package names (e.g. libgcc-powerpc-cross). + # AQ: Arch Qualifier. Used for cross-arch dependencies + DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) + TARGET := $(DEB_TARGET_ARCH) + TP := $(subst _,-,$(DEB_TARGET_GNU_TYPE))- + TS := -$(subst _,-,$(DEB_TARGET_ALIAS)) + LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + AQ := + + cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS)) + cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + + TARGET_ALIAS := $(DEB_TARGET_ALIAS) + + lib_binaries := indep_binaries + cross_shlibdeps = DEB_HOST_ARCH=$(TARGET) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" + cross_gencontrol = DEB_HOST_ARCH=$(TARGET) + cross_makeshlibs = DEB_HOST_ARCH=$(TARGET) + cross_clean = DEB_HOST_ARCH=$(TARGET) +else + TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) + + ifeq ($(TARGET_ALIAS),i386-gnu) + TARGET_ALIAS := i586-gnu + endif + + ifeq ($(single_package),yes) + cmd_prefix := + unprefixed_names := + else + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + unprefixed_names := yes + endif + + #ifeq ($(TARGET_ALIAS),i486-linux-gnu) + # TARGET_ALIAS := i686-linux-gnu + #endif + + TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) + + # configure as linux-gnu, not linux + #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) + # TARGET_ALIAS := $(TARGET_ALIAS)-gnu + #endif + + # configure as linux, not linux-gnu + #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) + + lib_binaries := arch_binaries + cross_shlibdeps := + cross_gencontrol := + cross_makeshlibs := + # FIXME: Ignore missing symbols for a first build ... + cross_makeshlibs := - + cross_clean := +endif + +printarch: + @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) + @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) + @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) + @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) + @echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH) + @echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG) + @echo TARGET_ALIAS: $(TARGET_ALIAS) + @echo TP: $(TP) + @echo TS: $(TS) + +# reaching the 50GB limit ... +ifeq ($(derivative)-$(build_type),Ubuntu-build-native) + ifneq (,$(filter $(DEB_HOST_ARCH),amd64)) + save_disk_space = yes + endif +endif + +# ------------------------------------------------------------------- +# bootstrap options +ifdef WITH_BOOTSTRAP + # "yes" is the default and causes a 3-stage bootstrap. + # "off" runs a complete build with --disable-bootstrap + # "no" means to just build the first stage, and not create the stage1 + # directory. + # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no + # longer needed. + with_bootstrap = $(WITH_BOOTSTRAP) +endif + +# gcc-snapshot ... +ifeq ($(trunk_build),yes) + ifeq ($(build_type),build-native) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf arm64 i386 powerpc ppc64 ppc64el riscv64 s390x sparc64)) + with_bootstrap := profiled + endif + endif + + # FIXME, disable profiled build for some archs + #ifneq (,$(filter $(DEB_HOST_ARCH), i386 armel armhf powerpc riscv64 amd64)) + # with_bootstrap := + #endif + + # Enable LTO only for 64bit builds + ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) + with_lto_build := yes + endif + + # FIXME, disable LTO build for some archs + ifneq (,$(filter $(DEB_HOST_ARCH), alpha ia64 mips64el hurd-amd64)) + with_lto_build := + endif + + # disable for testing purposes + with_bootstrap := + with_lto_build := +endif + +ifneq ($(trunk_build),yes) + ifeq ($(build_type),build-native) + ifeq (,$(DEB_STAGE)) + ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 armhf arm64 powerpc ppc64 ppc64el s390x sparc64)) + with_bootstrap := profiled + endif + # PR target/119937 + #ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-armhf) + # with_bootstrap := + #endif + endif + endif + endif + + # Enable LTO only for 64bit builds + ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) + with_lto_build := yes + endif + + # FIXME: hppa has issues with parsing the jobs output. + # FIXME: m68k and sh4 running on simulators, don't care ... + # FIXME: buildds not powerful enough: mips* + # FIXME: just let it build, takes too long: hurd-amd64 hurd-i386 + # FIXME: not yet tried to build: alpha + # FIXME: ia64, see https://gcc.gnu.org/PR98504 + # FIXME: mips64el requested by syq + ifneq (,$(filter $(DEB_HOST_ARCH), alpha hppa ia64 m68k mips mipsel mips64el sh4 sparc64 hurd-amd64 hurd-i386)) + with_lto_build := + endif + # Slow builders in Debian + ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-riscv64) + with_lto_build := + endif + + # FIXME: newer binutils needed? + ifneq (,$(filter $(distrelease),stretch precise trusty xenial bionic focal)) + with_bootstrap := + with_lto_build := + endif + + # disable for testing purposes + #with_bootstrap := + #with_lto_build := +endif + +ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off +endif + +ifneq ($(findstring nolto, $(DEB_BUILD_OPTIONS)),) + with_lto_build := +endif + +ifneq ($(findstring nopgo, $(DEB_BUILD_OPTIONS)),) + ifeq ($(with_bootstrap),profiled) + with_bootstrap := + endif +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + with_lto_build := + DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip + export DEB_BUILD_OPTIONS +endif + +ifeq ($(build_type),build-native) + usage_stats = yes + ifeq ($(derivative),Ubuntu) + no_usage_archs = i386 + else ifeq ($(derivative),Debian) + no_usage_archs = alpha hppa ia64 m68k mipsel mips64el sh4 sparc64 x32 \ + hurd-amd64 hurd-i386 + endif + ifneq (,$(filter $(DEB_HOST_ARCH),$(no_usage_archs))) + usage_stats = + endif +endif +usage_stats = disabled for release builds + +# ------------------------------------------------------------------- +# stage options +ifdef DEB_STAGE + with_cdev := yes + separate_lang := yes + # "stage1" is minimal compiler with static libgcc + # "stage2" is minimal compiler with shared libgcc + # "rtlibs" is a subset of target libraries, without compilers + ifeq ($(DEB_STAGE),stage1) + with_shared_libgcc := no + endif + ifeq ($(DEB_STAGE),stage2) + with_libgcc := yes + with_shared_libgcc := yes + endif + ifeq ($(DEB_STAGE),rtlibs) + with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath + ifeq ($(DEB_CROSS),yes) + LS := + TS := + cross_lib_arch := + endif + endif +endif + +ifeq ($(BACKPORT),true) + with_dev := no + with_source := yes + with_base_only := yes +endif + +# ------------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +# ------------------------------------------------------------------- +# for components configuration + +# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG + +DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) +DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) +DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) +DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) +lfilt = $(strip $(if $(DEB_LANG), \ + $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) +nlfilt = $(strip $(if $(DEB_NOLANG), \ + $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) +wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ + disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) +envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) + +# ------------------------------------------------------------------- +# architecture specific config + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_async_unwind = yes +endif + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_stack_clash := yes + endif + endif + ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) + with_cf_protection := yes + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),armhf) + ifeq ($(distribution),Raspbian) + with_arm_thumb := no + else + with_arm_thumb := yes + endif +else + ifeq ($(derivative)-$(DEB_TARGET_ARCH),Ubuntu-armel) + ifneq (,$(filter $(distrelease), precise)) + with_arm_thumb := yes + endif + endif +endif + +timet64_archs = armel armhf hppa m68k mips mipsel powerpc sh4 +no_timet64_distreleases = jessy stretch buster bullseye bookworm \ + precise trusty xenial bionic focal jammy kinetic lunar mantic + +ifneq (,$(filter $(DEB_TARGET_ARCH), $(timet64_archs))) + ifeq (,$(filter $(distrelease),$(no_timet64_distreleases))) + with_timet64 = yes + endif +endif + +# build using fsf or the ibm branch +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),ppc64el)) + #with_ibm_branch = yes + endif +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + with_ibm_branch = +endif + +# check if we're building for armel or armhf +ifneq (,$(filter %eabihf,$(DEB_TARGET_GNU_SYSTEM))) + float_abi := hard +else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel)) + ifneq (,$(filter $(distrelease), precise)) + float_abi := softfp + else + float_abi := soft + endif +else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel)) + float_abi := soft +endif + +sframe_archs = amd64 arm64 +no_sframe_distreleases = jessy stretch buster bullseye bookworm trixie \ + forky \ + precise trusty xenial bionic focal jammy kinetic lunar mantic \ + noble oracular plucky questing resolute +ifneq (,$(filter $(DEB_TARGET_ARCH), $(sframe_archs))) + ifeq (,$(filter $(distrelease),$(no_sframe_distreleases))) + with_sframe = yes + endif +endif + +# turn off sframe everywhere, don't enabled before SFrame V3 +with_sframe = + +ppc64el_ibm128_distreleases = jessie stretch buster bullseye bookworm trixie \ + precise xenial bionic focal jammy noble oracular plucky + +# ------------------------------------------------------------------- +# basic config + +# allows to write backtraces for ICEs +#unstripped_exe = yes +#ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 armhf arm64 i386 ppc64el riscv64 s390x)) +# unstripped_exe = yes +#endif + +# common things --------------- +# build common packages, where package names don't differ in different +# gcc versions (fixincludes, ...) +#with_common_pkgs := yes +# ... and some libraries, which do not change (libgcc1, libssp0). +#with_common_libs := yes +# XXX: should with_common_libs be "yes" only if this is the default compiler +# version on the targeted arch? + +# build -dbg packages (with_dbg is empty when -dbg package are not built) +ifneq (,$(filter $(distrelease), jessie stretch buster precise trusty xenial bionic)) + with_dbg = yes +else + ifeq ($(derivative),Ubuntu) + v_dbg = 9.2.1-21ubuntu1 + else ifeq ($(derivative),Debian) + v_dbg = 9.2.1-21 + else + $(error unknown version for -dbgsym package migration) + endif +endif + +# is this a multiarch-enabled build? +#ifneq (,$(filter $(distrelease), FIXME when removing multilib)) + with_multiarch_lib := yes +#endif + +ifeq ($(with_multiarch_lib),yes) + ifneq ($(single_package),yes) + ifneq ($(DEB_CROSS),yes) + with_multiarch_cxxheaders := yes + endif + endif +endif + +multiarch_stage1 := yes + +MIPS_R6_ENABLED = no +ifeq (,$(filter $(distrelease), jessie precise trusty xenial)) + MIPS_R6_ENABLED = yes +endif + +# mapping for the non-default biarch multilib / multiarch names +multiarch_xarch_map = \ + amd64=i386-linux-gnu,x86_64-linux-gnux32 \ + armel=arm-linux-gnueabi \ + armhf=arm-linux-gnueabihf \ + i386=x86_64-linux-gnu,x86_64-linux-gnux32 \ + powerpc=powerpc64-linux-gnu \ + ppc64=powerpc-linux-gnu \ + sparc=sparc64-linux-gnu \ + sparc64=sparc-linux-gnu \ + s390=s390x-linux-gnu \ + s390x=s390-linux-gnu \ + mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \ + mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \ + mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \ + mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \ + mips64=mips-linux-gnu,mips64-linux-gnuabin32 \ + mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \ + mipsr6=mipsisa64r6-linux-gnuabin32,mipsisa64r6-linux-gnuabi64 \ + mipsr6el=mipsisa64r6el-linux-gnuabin32,mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabi64 \ + mips64r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabin32 \ + mips64r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabin32 \ + x32=x86_64-linux-gnu,i386-linux-gnu +xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map)))) + +multilib_multiarch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_MULTIARCH) \ + amd64/32=i386-linux-gnu \ + amd64/x32=x86_64-linux-gnux32 \ + i386/64=x86_64-linux-gnu \ + i386/x32=x86_64-linux-gnux32 \ + powerpc/64=powerpc64-linux-gnu \ + ppc64/32=powerpc-linux-gnu \ + sparc/64=sparc64-linux-gnu \ + sparc64/32=sparc-linux-gnu \ + s390/64=s390x-linux-gnu \ + s390x/32=s390-linux-gnu \ + mips/n32=mips64-linux-gnuabin32 \ + mips/64=mips64-linux-gnuabi64 \ + mipsel/n32=mips64el-linux-gnuabin32 \ + mipsel/64=mips64el-linux-gnuabi64 \ + mipsn32/32=mips-linux-gnu \ + mipsn32/64=mips64-linux-gnuabi64 \ + mipsn32el/32=mipsel-linux-gnu \ + mipsn32el/64=mips64el-linux-gnuabi64 \ + mips64/32=mips-linux-gnu \ + mips64/n32=mips64-linux-gnuabin32 \ + mips64el/32=mipsel-linux-gnu \ + mips64el/n32=mips64el-linux-gnuabin32 \ + mipsr6/n32=mipsisa64r6-linux-gnuabin32 \ + mipsr6/64=mipsisa64r6-linux-gnuabi64 \ + mipsr6el/n32=mipsisa64r6el-linux-gnuabin32 \ + mipsr6el/64=mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6/32=mipsisa32r6-linux-gnu \ + mipsn32r6/64=mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el/32=mipsisa32r6el-linux-gnu \ + mipsn32r6el/64=mipsisa64r6el-linux-gnuabi64 \ + mips64r6/32=mipsisa32r6-linux-gnu \ + mips64r6/n32=mipsisa64r6-linux-gnuabin32 \ + mips64r6el/32=mipsisa32r6el-linux-gnu \ + mips64r6el/n32=mipsisa64r6el-linux-gnuabin32 \ + x32/32=i386-linux-gnu \ + x32/64=x86_64-linux-gnu +# $(call mlib_to_march,|32|64|n32|x32) +mlib_to_march = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_multiarch_map))) + +multilib_arch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_ARCH) \ + amd64/32=i386 \ + amd64/x32=x32 \ + i386/64=amd64 \ + i386/x32=x32 \ + powerpc/64=ppc64 \ + ppc64/32=powerpc \ + sparc/64=sparc64 \ + sparc64/32=sparc \ + s390/64=s390x \ + s390x/32=s390 \ + mips/n32=mipsn32 \ + mips/64=mips64 \ + mipsel/n32=mipsn32el \ + mipsel/64=mips64el \ + mipsn32/32=mips \ + mipsn32/64=mips64 \ + mipsn32el/32=mipsel \ + mipsn32el/64=mips64el \ + mips64/32=mips \ + mips64/n32=mipsn32 \ + mips64el/32=mipsel \ + mips64el/n32=mipsn32el \ + mipsr6/n32=mipsn32r6 \ + mipsr6/64=mips64r6 \ + mipsr6el/n32=mipsn32r6el \ + mipsr6el/64=mips64r6el \ + mipsn32r6/32=mipsr6 \ + mipsn32r6/64=mips64r6 \ + mipsn32r6el/32=mipsr6el \ + mipsn32r6el/64=mips64r6el \ + mips64r6/32=mipsr6 \ + mips64r6/n32=mipsn32r6 \ + mips64r6el/32=mipsr6el \ + mips64r6el/n32=mipsn32r6el \ + x32/32=i386 \ + x32/64=amd64 +# $(call mlib_to_arch,|32|64|n32|x32) +mlib_to_arch = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_arch_map))) + +# build -base packages +with_gccbase := yes +ifeq ($(build_type),build-cross) + ifneq ($(DEB_STAGE),rtlibs) + with_gcclbase := yes + endif +endif + +# build dev packages. +ifneq ($(DEB_STAGE),rtlibs) + with_dev := yes +endif + +with_cpp := yes + +# set lang when built from a different source package. +separate_lang := no + +#no_dummy_cpus := ia64 i386 hppa s390 sparc +#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) +# with_base_only := no +# with_common_libs := yes +# with_common_pkgs := yes +#else +# with_base_only := yes +# with_common_libs := no +# with_common_pkgs := no +# with_dev := no +#endif + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) + PV := $(pkg_ver) +endif + +# ------------------------------------------------------------------- +# configure languages + +# C --------------------------- +enabled_languages := c + +# libdiagnostics is also built in the jit build +with_jit = yes + +# FIXME: compiler bug +# m68k: PR 95381 +jit_no_cpus := ia64 + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(jit_no_cpus))) + with_jit := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(with_rtlibs)) + with_jit := disabled for rtlibs stage +endif +ifneq ($(findstring nojit, $(DEB_BUILD_OPTIONS)),) + with_jit := disabled by DEB_BUILD_OPTIONS +endif +with_jit := $(call envfilt, jit, , , $(with_jit)) + +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + with_jit := +endif + +# this fails when installing the jit build +# libtool: install: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/./binutils/ranlib /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/debian/tmp-jit/usr/lib/gcc-toolchain-13/lib/../lib/libgomp.a +# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short +# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short + +ifneq (,$(findstring gcc-toolchain,$(PKGSOURCE))) + with_jit := disabled for $(PKGSOURCE) builds +endif + +ifneq (,$(findstring build-cross, $(build_type))) + with_jit := disabled for cross builds +endif + +ifeq ($(with_jit),yes) + #ifeq ($(with_common_libs),yes) + with_libgccjit := yes + #endif + ifeq ($(with_common_libs),yes) + with_libdiag := yes + endif + ifneq (,$(filter $(distrelease), no-release-yet-with-15-as-default)) + with_versioned_libgccjit := no + else + with_versioned_libgccjit := yes + endif +endif + +nvptx_archs := amd64 arm64 ppc64el +# arm64, see PR target/96265 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(nvptx_archs))) + offload_targets += nvptx-none + with_offload_nvptx := yes +endif +ifneq (,$(filter $(distrelease), precise)) + offload_targets := + with_offload_nvptx := +endif +ifneq (,$(findstring build-cross, $(build_type))) + offload_targets := + with_offload_nvptx := disabled for cross builds +endif + +ifeq ($(single_package),yes) + ifneq ($(trunk_build),yes) + offload_targets := + with_offload_nvptx := disabled for $(PKGSOURCE) builds + endif +endif +ifneq ($(findstring nonvptx, $(DEB_BUILD_OPTIONS)),) + offload_targets := + with_offload_nvptx := disabled by DEB_BUILD_OPTIONS +endif +with_offload_nvptx := $(call envfilt, nvptx, , , $(with_offload_nvptx)) +#offload_targets := +#with_offload_nvptx := not yet built for GCC 15 + +gcn_archs := amd64 +gcn_target_name = amdgcn-amdhsa + +ifneq (,$(filter $(distrelease),buster xenial bionic focal groovy)) + gcn_tools_llvm_version = 9 +else ifneq (,$(filter $(distrelease),focal groovy)) + gcn_tools_llvm_version = 11 +else + gcn_tools_llvm_version = tools +endif +ifeq ($(gcn_tools_llvm_version),tools) + ifneq (,$(filter $(distrelease), bookworm trixie xenial bionic focal)) + AMDGCN_TOOLS_DEP = amdgcn-tools-19 [$(gcn_archs)], + else + AMDGCN_TOOLS_DEP = amdgcn-tools-21 [$(gcn_archs)], + endif +else + AMDGCN_TOOLS_DEP = llvm-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], \ + lld-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gcn_archs))) + offload_targets += $(gcn_target_name) + with_offload_gcn := yes +endif +ifneq (,$(filter $(distrelease), precise bionic focal)) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := + AMDGCN_TOOLS_DEP = +endif +ifneq (,$(findstring build-cross, $(build_type))) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled for cross builds +endif + +ifeq ($(single_package),yes) + ifneq ($(trunk_build),yes) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled for $(PKGSOURCE) builds + endif +endif +ifneq ($(findstring nogcn, $(DEB_BUILD_OPTIONS)),) + offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) + with_offload_gcn := disabled by DEB_BUILD_OPTIONS +endif +with_offload_gcn := $(call envfilt, gcn, , , $(with_offload_gcn)) +#offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) +#with_offload_gcn := not yet built for GCC 15 + +with_cc1 := yes +with_cc1 := $(call envfilt, cc1, , , $(with_cc1)) + +ifeq ($(with_cc1),yes) + ifeq ($(with_common_libs),yes) + with_libcc1 := yes + endif + with_libcc1_plugin := yes +endif + +ifneq (,$(with_rtlibs)) + with_libcc1 := disabled for rtlibs stage + with_libcc1_plugin := disabled for rtlibs stage +endif +ifneq (,$(findstring build-cross, $(build_type))) + with_libcc1 := disabled for cross builds +endif + +# Build all packages needed for C development +ifneq ($(with_base_only),yes) + ifeq ($(with_dev),yes) + with_cdev := yes + endif +endif + +ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) +# Ada -------------------- +ada_no_cpus := arc ia64 sh3 sh3eb sh4eb +ada_no_systems := +ada_no_cross := no +ada_no_snap := no +#ifeq ($(single_package),yes) +# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) +# ada_no_snap := yes +# endif +#endif +#ifeq ($(DEB_CROSS),yes) +# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) +# ada_no_cross := yes +# endif +#endif + +ifeq ($(with_dev),yes) + ifneq ($(separate_lang),yes) + with_ada := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) + with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) + with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes) + with_ada := disabled for cross compiler package +endif +ifeq ($(ada_no_snap)-$(single_package),yes-yes) + with_ada := disabled for snapshot build +endif +ifneq (,$(filter $(distrelease), precise)) + with_ada := +endif +with_ada := $(call envfilt, ada, , , $(with_ada)) + +ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-) + with_ada := disabled for rtlibs stage +endif +#with_ada := disabled for GCC 15 + +ifeq ($(with_ada),yes) + enabled_languages += ada + with_libgnat := yes + #with_gnatsjlj := yes + + # set once we don't want the alihash to change + #fail_on_alihash_mismatch = yes +endif + +# C++ ------------------------- +cxx_no_cpus := avr +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cxx := yes + endif +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus))) + with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +with_cxx := $(call envfilt, c++, obj-c++, , $(with_cxx)) + +# Set the default libstdc++ ABI. libstdc++ provides both ABI's. +# Existing code still runs with the new c++11 ABI, however link +# errors are seen when one object is compiled with the new std::string in scope, +# another object is compiled with the old std::string in scope. both can link +# to libstdc++.so but not to each other. +# two objects (which might be some system library and a user's program) need to +# agree on the version of std::string they're using + +libstdcxx_abi = new +# backports default to the old ABI +ifneq (,$(filter $(distrelease), jessie precise trusty)) + libstdcxx_abi = gcc4-compatible +endif + +# Build all packages needed for C++ development +ifeq ($(with_cxx),yes) + ifeq ($(with_dev),yes) + with_cxxdev := yes + with_libcxxdbg := yes + endif + ifeq ($(with_common_libs),yes) + with_libcxx := yes + endif + + # debugging versions of libstdc++ + ifneq (,$(findstring gcc-, $(PKGSOURCE))) + ifeq ($(with_cxxdev),yes) + with_cxx_debug := yes + debug_no_archs := + ifneq (,$(findstring $(DEB_TARGET_ARCH),$(debug_no_archs))) + with_cxx_debug := disabled for cpu $(DEB_TARGET_ARCH) + endif + endif + endif + with_cxx_debug := $(call envfilt, debug, , , $(with_cxx_debug)) + + enabled_languages += c++ + + with_libcxx_doc := yes + ifneq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS) $(DEB_BUILD_PROFILES))) + with_libcxx_doc := + endif +endif + +go_no_cross := yes +go_no_cross := no + +go_no_cpus := arc avr hppa loong64 +go_no_cpus += m68k # See PR 79281 / PR 83314 +#go_no_cpus += armel # See Debian #1061370 +go_no_systems := +ifneq (,$(filter $(distrelease),precise)) + go_no_cpus += armhf +endif +# Debian #969221 +go_no_cpus += sh4 + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_go := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus))) + with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(go_no_cpus))) + with_go := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems))) + with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes) + with_go := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgo, $(with_rtlibs)),rtlibs-) + with_go := disabled for rtlibs stage +endif +with_go := $(call envfilt, go, , , $(with_go)) + +# Build all packages needed for Go development +ifneq (,$(findstring gcc, $(PKGSOURCE))) + ifeq ($(with_go),yes) + ifeq ($(with_dev),yes) + with_godev := yes + endif + with_libgo := yes + enabled_languages += go + endif +endif + +# D --------------------------- +d_no_cross := yes +d_no_snap := +d_no_cpus := alpha arc ia64 m68k sh4 s390 +d_no_systems := gnu + +ifneq ($(separate_lang),yes) + with_d := yes +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(d_no_cpus))) + with_d := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(d_no_systems))) + with_d := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(d_no_snap)-$(single_package),yes-yes) + with_d := disabled for snapshot build +endif +ifeq ($(DEB_STAGE)-$(filter libphobos, $(with_rtlibs)),rtlibs-) + with_d := disabled for rtlibs stage +endif +ifeq ($(GENERATE_DFSG_TARBALL),yes) + with_d := disabled while generating the dfsg tarball +endif +with_d := $(call envfilt, d, , , $(with_d)) +#with_d := not yet built for GCC 15 + +ifeq ($(with_base_only),yes) + with_d := no +endif + +ifeq ($(with_d),yes) + phobos_archs = + druntime_only_archs = powerpc ppc64 + ifneq (,$(filter $(distrelease),$(ppc64el_ibm128_distreleases))) + druntime_only_archs += ppc64el + else + phobos_archs += ppc64el + endif + phobos_archs += amd64 arm64 armel armhf i386 x32 + phobos_archs += hppa + phobos_archs += mips mips64 mipsel mips64el + phobos_archs += mipsn32 mipsn32el + phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el + phobos_archs += riscv64 s390x loong64 sparc64 + phobos_archs += $(druntime_only_archs) + phobos_archs := $(sort $(phobos_archs)) + ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) + with_phobos := yes + endif + + phobos_no_systems := gnu + ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(phobos_no_systems))) + with_phobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + with_libphobosdev := $(with_phobos) + + enabled_languages += d +endif + +# Fortran 95 ------------------- +fortran_no_cross := yes +fortran_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_fortran := yes + endif +endif +ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes) + with_fortran := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fortran := disabled for rtlibs stage +endif + +with_fortran := $(call envfilt, fortran, , , $(with_fortran)) + +# Build all packages needed for Fortran development +ifeq ($(with_fortran),yes) + ifeq ($(with_dev),yes) + ifneq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fdev := yes + endif + endif + ifeq ($(with_common_libs),yes) + with_libgfortran := yes + endif + enabled_languages += fortran +endif + +# libquadmath ------------------- + +quadmath_targets = amd64 ia64 i386 x32 \ + hurd-amd64 hurd-i386 ppc64el +# powerpc and ppc64 don't have power7 CPU defaults ... +ifneq (,$(filter $(DEB_TARGET_ARCH), $(quadmath_targets))) + # FIXME: upstream build tied to gfortran build + ifeq ($(with_fortran),yes) + with_qmath := yes + ifneq (,$(findstring gcc-15,$(PKGSOURCE))) + ifeq ($(with_common_libs),yes) + with_libqmath := yes + endif + endif + endif +endif + +# ObjC ------------------------ +objc_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objc := yes + objc_no_archs = + ifneq (,$(filter $(DEB_TARGET_ARCH),$(objc_no_archs))) + with_objc := + endif + endif +endif +ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes) + with_objc := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libobjc, $(with_rtlibs)),rtlibs-) + with_objc := disabled for rtlibs stage +endif +with_objc := $(call envfilt, objc, obj-c++, , $(with_objc)) + +ifeq ($(with_objc),yes) + # the ObjC runtime with garbage collection enabled needs the Boehm GC + with_objc_gc := yes + + # disable ObjC garbage collection library (needs libgc) + libgc_no_cpus := avr + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) + with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(findstring build-cross, $(build_type))) + with_objc_gc := disabled for cross builds + endif + # Build all packages needed for Objective-C development + ifeq ($(with_dev),yes) + with_objcdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libobjc := yes + endif + + enabled_languages += objc +endif + +# ObjC++ ---------------------- +objcxx_no_cross := no + +ifeq ($(with_objc),yes) + ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objcxx := yes + endif + endif +endif +ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes) + with_objcxx := disabled for cross compiler package +endif +with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx)) + +ifeq ($(with_objcxx),yes) + enabled_languages += obj-c++ +endif + +# Modula-2 ------------------- +m2_no_cross := yes +m2_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_m2 := yes + endif +endif +m2_no_cpus = powerpc ppc64 sh4 +m2_no_systems = +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(m2_no_cpus))) + with_m2 := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(m2_no_systems))) + with_m2 := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(m2_no_cross)-$(DEB_CROSS),yes-yes) + with_m2 := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgm2, $(with_rtlibs)),rtlibs-) + with_m2 := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_m2 := disabled for $(distrelease) backport +endif +#with_m2 := disabled for GCC 15 + +with_m2 := $(call envfilt, m2, , , $(with_m2)) + +# Build all packages needed for Modula-2 development +ifeq ($(with_m2),yes) + ifeq ($(with_dev),yes) + with_m2dev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libgm2 := yes + #endif + enabled_languages += m2 +endif + +# Rust ------------------- + +rs_no_cross := yes + +rs_no_cpus = alpha hppa ia64 m68k sh4 x32 +rs_no_systems := gnu + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_rs := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(rs_no_cpus))) + with_rs := disabled for arch $(DEB_TARGET_ARCH_CPU) +else ifneq (,$(filter $(DEB_TARGET_ARCH),$(rs_no_cpus))) + with_rs := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(rs_no_systems))) + with_rs := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(rs_no_cross)-$(DEB_CROSS),yes-yes) + with_rs := disabled for cross compiler package +endif +#ifeq ($(DEB_STAGE)-$(filter libgrs, $(with_rtlibs)),rtlibs-) +# with_rs := disabled for rtlibs stage +#endif + +#with_rs := disabled for GCC 15 + +with_rs := $(call envfilt, rust, , , $(with_rs)) + +# Build all packages needed for Rust development +ifeq ($(with_rs),yes) + ifeq ($(with_dev),yes) + with_rsdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libgrs := yes + endif + enabled_languages += rust +endif + +# COBOL ------------------- +cobol_no_cross := yes +cobol_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cobol := yes + endif +endif +cobol_no_cpus = alpha arc arm hppa i386 loong64 m68k \ + mips mipsel mips64 mips64el \ + powerpc ppc64 s390x sh4 sparc sparc64 x32 +cobol_no_systems = gnu +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(cobol_no_cpus))) + with_cobol := disabled for cpu $(DEB_TARGET_ARCH_CPU) +else ifneq (,$(filter $(DEB_TARGET_ARCH),$(cobol_no_cpus))) + with_cobol := disabled for arch $(DEB_TARGET_ARCH) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(cobol_no_systems))) + with_cobol := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +#ifneq ($(DEB_HOST_ARCH_BITS),$(DEB_TARGET_ARCH_BITS)) +# with_cobol := disabled for non matching arch bits +#endif +ifeq ($(cobol_no_cross)-$(DEB_CROSS),yes-yes) + with_cobol := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgcobol, $(with_rtlibs)),rtlibs-) + with_cobol := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_cobol := disabled for $(distrelease) backport +endif +#with_cobol := disabled for GCC 15 + +with_cobol := $(call envfilt, cobol, , , $(with_cobol)) + +# Build all packages needed for COBOL development +ifeq ($(with_cobol),yes) + ifeq ($(with_dev),yes) + with_coboldev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libgcobol := yes + #endif + enabled_languages += cobol +endif + +# Algol 68 ------------------- +algol_no_cross := yes +algol_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_algol := yes + endif +endif +algol_no_cpus = +algol_no_systems = +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(algol_no_cpus))) + with_algol := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(algol_no_systems))) + with_algol := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(algol_no_cross)-$(DEB_CROSS),yes-yes) + with_algol := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libga68, $(with_rtlibs)),rtlibs-) + with_algol := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_algol := disabled for $(distrelease) backport +endif +#with_algol := disabled for GCC 15 + +with_algol := $(call envfilt, algol68, , , $(with_algol)) + +# Build all packages needed for Algol 68 development +ifeq ($(with_algol),yes) + ifeq ($(with_dev),yes) + with_algoldev := yes + endif + #ifeq ($(with_common_libs),yes) + with_libga68 := yes + #endif + enabled_languages += algol68 +endif + +# ------------------------------------------------------------------- +# other config + +# not built from the main source package +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + extra_package := yes +endif + +with_nls := yes +ifeq ($(trunk_build),yes) + with_nls := no +endif +with_nls := $(call envfilt, nls, , , $(with_nls)) + +# powerpc nof libraries ----- +with_libnof := no + +ifneq (,$(findstring gcc-15,$(PKGSOURCE))) + ifeq (,$(with_rtlibs)) + with_source := yes + endif +endif +with_source := $(call envfilt, source, , , $(with_source)) + +ifeq ($(with_cdev),yes) + +# ssp & libssp ------------------------- +with_ssp := yes +ssp_no_archs = alpha hppa ia64 m68k +ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%))) + with_ssp := not available on $(DEB_TARGET_ARCH) +endif +with_ssp := $(call envfilt, ssp, , , $(with_ssp)) + +ifeq ($(with_ssp),yes) + ifneq ($(derivative),Debian) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + with_ssp_default := yes + endif + endif +endif + +# gomp -------------------- +with_gomp := yes +with_gomp := $(call envfilt, gomp, , , $(with_gomp)) +gomp_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gomp_no_archs))) + with_gomp := +endif + +# itm -------------------- +itm_archs = alpha amd64 arm64 i386 x32 loong64 ppc64 ppc64el riscv64 s390x sh4 sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(itm_archs))) + with_itm := yes +endif +with_itm := $(call envfilt, itm, , , $(with_itm)) + +# atomic -------------------- +with_atomic := yes +atomic_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(atomic_no_archs))) + with_atomic := +endif + +# backtrace -------------------- +with_backtrace := yes +backtrace_no_archs = m68k +ifneq (,$(filter $(DEB_TARGET_ARCH),$(backtrace_no_archs))) + with_backtrace := +endif + +strip_sanitizer = +ifneq (,$(filter $(distrelease),jessie stretch buster precise xenial bionic)) + strip_sanitizer = yes +endif + +# asan / sanitizer -------------------- +with_asan := +with_asan := $(call envfilt, asan, , , $(with_asan)) +asan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ + riscv64 s390x sparc sparc64 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(asan_archs))) + with_asan := yes +endif + +# lsan / sanitizer -------------------- +with_lsan := +with_lsan := $(call envfilt, lsan, , , $(with_lsan)) +lsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x +ifneq (,$(filter $(DEB_TARGET_ARCH),$(lsan_archs))) + with_lsan := yes +endif + +# tsan / sanitizer -------------------- +with_tsan := +with_tsan := $(call envfilt, tsan, , , $(with_tsan)) +tsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x +ifneq (,$(filter $(DEB_TARGET_ARCH),$(tsan_archs))) + with_tsan := yes +endif + +# hwasan / sanitizer -------------------- +with_hwasan := +with_hwasan := $(call envfilt, hwasan, , , $(with_hwasan)) +hwasan_archs = amd64 arm64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(hwasan_archs))) + with_hwasan := yes +endif + +# ubsan / sanitizer -------------------- +with_ubsan := +with_ubsan := $(call envfilt, ubsan, , , $(with_ubsan)) +ubsan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ + riscv64 s390x sparc sparc64 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(ubsan_archs))) + with_ubsan := yes +endif + +endif # with_cdev + +# libvtv -------------------- +with_vtv := +with_vtv := $(call envfilt, vtv, , , $(with_vtv)) +vtv_archs = amd64 i386 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + with_vtv := yes + with_libvtv := yes +endif +# libvtv builds a modified libstdc++, don't enable it by default +with_vtv := +with_libvtv := + +# pie by default -------------------- +with_pie := +ifeq ($(distribution),Debian) + ifeq (,$(filter $(distrelease), jessie)) + pie_archs = amd64 arm64 armel armhf i386 \ + mips mipsel mips64 mips64el mipsn32 mipsn32el \ + mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ + ppc64el s390x sparc sparc64 \ + hurd-amd64 hurd-i386 riscv64 loong64 + endif + ifeq (,$(filter $(distrelease), jessie stretch)) + pie_archs += powerpc ppc64 + endif +else ifeq ($(distribution),Ubuntu) + ifeq (,$(filter $(distrelease), precise trusty)) + pie_archs = s390x + endif + ifeq (,$(filter $(distrelease), precise trusty xenial)) + pie_archs += amd64 ppc64el + endif + ifeq (,$(filter $(distrelease), precise trusty xenial)) + pie_archs += armhf arm64 i386 + endif + pie_archs += riscv64 +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs))) + with_pie := yes +endif +ifeq ($(trunk_build),yes) + with_pie := disabled for trunk builds +endif + +# gold -------------------- +# armel with binutils 2.20.51 only +gold_archs = amd64 armel armhf i386 powerpc ppc64 ppc64el s390x sparc sparc64 x32 hurd-amd64 hurd-i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) + with_gold := yes +endif + +# plugins -------------------- +with_plugins := yes +ifneq (,$(with_rtlibs)) + with_plugins := disabled for rtlibs stage +endif + +endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(derivative),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +# ------------------------------------------------------------------- +# non-extra config +ifeq ($(extra_package),yes) +else + # libssp ------------------ + ifeq ($(with_ssp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) + #endif + with_libssp := libc provides ssp + endif + + # libgomp ----------------- + ifeq ($(with_gomp)-$(with_common_libs),yes-yes) + with_libgomp := yes + endif + + # libitm ----------------- + ifeq ($(with_itm)-$(with_common_libs),yes-yes) + with_libitm := yes + endif + + # libatomic ----------------- + ifeq ($(with_atomic)-$(with_common_libs),yes-yes) + with_libatomic := yes + endif + + # libbacktrace ----------------- + ifeq ($(with_backtrace)-$(with_common_libs),yes-yes) + # currently not a shared library + #with_libbacktrace := yes + endif + + # libasan ----------------- + ifeq ($(with_asan)-$(with_common_libs),yes-yes) + ifeq ($(with_asan),yes) + with_libasan := yes + endif + endif + + # liblsan ----------------- + ifeq ($(with_lsan)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_liblsan := yes + #endif + endif + + # libtsan ----------------- + ifeq ($(with_tsan)-$(with_common_libs),yes-yes) + with_libtsan := yes + endif + + # libubsan ----------------- + ifeq ($(with_ubsan)-$(with_common_libs),yes-yes) + ifeq ($(with_ubsan),yes) + with_libubsan := yes + endif + endif + + # libhwasan ----------------- + ifeq ($(with_hwasan)-$(with_common_libs),yes-yes) + ifeq ($(with_hwasan),yes) + with_libhwasan := yes + endif + endif + + # libvtv ----------------- + ifeq ($(with_vtv)-$(with_common_libs),yes-yes) + with_libvtv := yes + endif + + # libquadmath ----------------- + ifeq ($(with_qmath)-$(with_common_libs),yes-yes) + with_libqmath := yes + endif + + # libunwind ----------------- + with_internal_libunwind = + ifeq ($(DEB_HOST_ARCH),ia64) + ifeq ($(DEB_STAGE),stage1) + ifeq ($(DEB_CROSS),yes) + with_internal_libunwind = yes + endif + endif + endif + + # Shared libgcc -------------------- + ifneq ($(DEB_STAGE),stage1) + with_shared_libgcc := yes + ifeq ($(with_common_libs),yes) + with_libgcc := yes + ifneq (,$(filter $(distrelease), jessie stretch buster lucid precise trusty xenial bionic focal)) + ifneq (,$(filter $(build_type), build-native cross-build-native)) + with_libcompatgcc := yes + endif + endif + endif + endif + + # libphobos ----------------- + #ifeq ($(with_common_libs),yes) + ifeq ($(with_phobos),yes) + with_libphobos := yes + endif + #endif + + # libgcc-math -------------------- + with_libgmath := no + ifneq (,$(findstring i486,$(DEB_TARGET_ARCH))) + #with_libgccmath := yes + #with_lib64gmath := yes + #with_libgmathdev := yes + endif + ifeq ($(DEB_TARGET_ARCH),amd64) + #with_libgccmath := yes + #with_lib32gmath := yes + #with_libgmathdev := yes + endif + + # hppa64 build ---------------- + hppa64_no_snap := no + hppa64_archs := hppa + ifneq (,$(filter $(build_type), build-native cross-build-native)) + ifneq (,$(filter $(distrelease), jessie precise trusty)) + binutils_hppa64 := binutils-hppa64 + else + ifneq ($(single_package),yes) + hppa64_archs += amd64 i386 x32 + endif + binutils_hppa64 := binutils-hppa64-linux-gnu + endif + ifneq (,$(filter $(DEB_TARGET_ARCH),$(hppa64_archs))) + with_hppa64 := yes + endif + endif + ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + with_hppa64 := disabled for backports/toolchain builds + endif + ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes) + with_hppa64 := disabled for snapshot build + endif + ifneq ($(findstring nohppa64, $(DEB_BUILD_OPTIONS)),) + with_hppa64 := disabled by DEB_BUILD_OPTIONS + endif + with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64)) + #with_hppa64 := disabled for GCC 15 + + ifeq ($(DEB_STAGE),rtlibs) + with_libasan := disabled for rtlibs stage + with_liblsan := disabled for rtlibs stage + with_libtsan := disabled for rtlibs stage + with_libubsan := disabled for rtlibs stage + with_libhwasan := disabled for rtlibs stage + with_hppa64 := disabled for rtlibs stage + endif +endif + +# run testsuite --------------- +with_check := yes +# if you don't want to run the gcc testsuite, uncomment the next line +#with_check := disabled by hand +ifeq ($(with_base_only),yes) + with_check := no +endif +ifeq ($(DEB_CROSS),yes) + with_check := disabled for cross compiler package +endif +ifneq (,$(findstring cross-build-,$(build_type))) + with_check := disabled for cross building the compiler +endif +ifneq (,$(with_rtlibs)) + with_check := disabled for rtlibs stage +endif +#check_no_cpus := m68k +ifeq ($(derivative),Ubuntu) + # test suite times out on the buildds + #check_no_cpus += arm64 +else ifeq ($(derivative),Debian) + # test suite times out on the buildds + check_no_cpus += alpha +endif +check_no_systems := gnu +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) + with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) + with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),x32)) + with_check := disabled for architecture $(DEB_TARGET_ARCH) +endif +with_check := $(call envfilt, check, , , $(with_check)) +ifdef WITHOUT_CHECK + with_check := disabled by environment +endif +ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),) + with_check := disabled by DEB_BUILD_OPTIONS +endif +#ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips)) +# ifneq ($(single_package),yes) +# with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect +# endif +#endif +# override the Debian porters, we need to know about the test results +ifeq ($(distribution),Debian) + ifneq (,$(filter $(DEB_HOST_ARCH), m68k sh4)) +# with_check := yes + endif +endif +ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-riscv64) + with_check := disabled for $(DEB_HOST_ARCH) on Ubuntu, qemu builders +endif +#with_check := disabled for this upload + +# not a dependency on all archs, but if available, use it for the testsuite +ifneq (,$(wildcard /usr/bin/localedef)) + locale_data = generate +endif +# try to b-d on locales-all +locale_data = + +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + ldconfig_arg = --noscripts +endif + +all_enabled_languages := $(enabled_languages) +languages_without_lang_opt := c++ objc obj-c++ + +debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs)) +export debian_extra_langs + +# multilib +biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \ + x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el \ + mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el mips64r6=mipsr6 mips64r6el=mipsr6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el +# FIXME: why still? +biarch_map := $(subst i686=,i486=,$(biarch_map)) + +biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \ + $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map)))) + +biarch64 := no +biarch32 := no +biarchn32 := no +biarchx32 := no +flavours := +define gen_biarch + ifneq (yes,$$(call envfilt, biarch, , ,yes)) + biarch$1archs := + endif + ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs))) + biarch$1 := yes + flavours += $1 + #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM) + biarch$1subdir = $1 + ifeq ($$(with_libgcc),yes) + with_lib$1gcc := yes + endif + ifeq ($$(with_cdev),yes) + with_lib$1gccdev := yes + endif + ifeq ($$(with_libcxx),yes) + with_lib$1cxx := yes + endif + ifeq ($$(with_libcxxdbg),yes) + with_lib$1cxxdbg := yes + endif + ifeq ($$(with_cxxdev),yes) + with_lib$1cxxdev := yes + endif + ifeq ($$(with_libobjc),yes) + with_lib$1objc := yes + endif + ifeq ($$(with_objcdev),yes) + with_lib$1objcdev := yes + endif + ifeq ($$(with_libgfortran),yes) + with_lib$1gfortran := yes + endif + ifeq ($$(with_fdev),yes) + with_lib$1gfortrandev := yes + endif + ifeq ($$(with_libphobos),yes) + with_lib$1phobos := yes + endif + ifeq ($$(with_libphobosdev),yes) + with_lib$1phobosdev := yes + endif + ifeq ($$(with_libssp),yes) + with_lib$1ssp := yes + endif + ifeq ($$(with_libgomp),yes) + with_lib$1gomp:= yes + endif + ifeq ($$(with_libitm),yes) + with_lib$1itm:= yes + endif + ifeq ($$(with_libatomic),yes) + with_lib$1atomic:= yes + endif + ifeq ($$(with_libbacktrace),yes) + with_lib$1backtrace:= yes + endif + ifeq ($$(with_libasan),yes) + with_lib$1asan:= yes + endif + ifeq ($$(with_liblsan),yes) + ifneq (,$$(filter $$(distrelease),lunar jammy focal)) + with_lib$1lsan := yes + endif + endif + ifeq ($$(with_libtsan),yes) + with_lib$1tsan:= yes + endif + ifeq ($$(with_libubsan),yes) + with_lib$1ubsan := yes + endif + ifeq ($$(with_libhwasan),yes) + ifeq ($$(DEB_TARGET_ARCH)-$1,i386-64) + with_lib$1hwasan:= yes + endif + ifeq ($$(DEB_TARGET_ARCH)-$1,x32-64) + with_lib$1hwasan:= yes + endif + endif + ifeq ($$(with_libvtv),yes) + with_lib$1vtv := yes + endif + ifeq ($$(with_libqmath),yes) + with_lib$1qmath := yes + endif + ifeq ($$(with_libgo),yes) + with_lib$1go := yes + endif + ifeq ($$(with_godev),yes) + with_lib$1godev := yes + endif + + biarch_multidir_names = libiberty libgcc libbacktrace libatomic libgomp + ifneq (,$$(findstring gcc-, $$(PKGSOURCE))) + biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \ + zlib libitm libsanitizer + ifeq ($$(with_objc_gc),yes) + biarch_multidir_names += boehm-gc + endif + endif + ifneq (,$(findstring yes, $(with_go))) + biarch_multidir_names += libffi + endif + ifeq ($(with_fortran),yes) + biarch_multidir_names += libquadmath + endif + ifeq ($(with_go),yes) + biarch_multidir_names += libgo + endif + ifeq ($(with_phobos),yes) + biarch_multidir_names += libphobos + endif + # FIXME: it now builds, but installs everything into the same $libdir + #ifeq ($(with_m2),yes) + # biarch_multidir_names += libgm2 + #endif + ifneq (,$$(findstring 32,$1)) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + TARGET32_MACHINE := $$(TARGET_ALIAS) + else + TARGET64_MACHINE := $$(TARGET_ALIAS) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + endif + export TARGET32_MACHINE + export TARGET64_MACHINE + endif +endef +biarch32archs := /amd64/ppc64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/ +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),trusty xenial bionic focal jammy mantic noble)) + biarch32archs := $(subst s390x/,,$(biarch32archs)) + endif +else ifeq ($(derivative),Debian) + ifeq (,$(filter $(distrelease),stretch buster bullseye bookworm trixie)) + biarch32archs := $(subst s390x/,,$(biarch32archs)) + endif +endif + +biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/ +biarchn32archs := /mips/mipsel/mips64/mips64el/ +ifeq (yes,$(MIPS_R6_ENABLED)) + biarch32archs += /mipsn32r6/mipsn32r6el/mips64r6/mips64r6el/ + biarch64archs += /mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/ + biarchn32archs += /mipsr6/mipsr6el/mips64r6/mips64r6el/ +endif + +biarch32_conflicts := $(filter-out mips64%, $(strip $(subst /, ,$(biarch32archs)))) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease), precise)) + biarchx32archs := /amd64/i386/ + endif +else ifeq ($(derivative),Debian) + biarchx32archs := /amd64/i386/ +endif +$(foreach x,32 64 n32 x32,$(eval $(call gen_biarch,$(x)))) + +ifeq ($(DEB_TARGET_ARCH),sh4) + biarch_multidir_names=none +endif +export biarch_multidir_names + +#ifeq ($(trunk_build),yes) +# no_biarch_libs := yes +#endif +no_biarch_libs := + +ifeq ($(no_biarch_libs),yes) + with_lib64gcc := no + with_lib64cxx := no + with_lib64cxxdbg := no + with_lib64objc := no + with_lib64ffi := no + with_lib64gfortran := no + with_lib64ssp := no + with_lib64go := no + with_lib64gomp := no + with_lib64itm := no + with_lib64qmath := no + with_lib64atomic := no + with_lib64backtrace := no + with_lib64asan := no + with_lib64lsan := no + with_lib64tsan := no + with_lib64ubsan := no + with_lib64hwasan := no + with_lib64vtv := no + with_lib64gccdev := no + with_lib64cxxdev := no + with_lib64objcdev := no + with_lib64gfortrandev := no + with_lib64phobosdev := no + + with_lib32gcc := no + with_lib32cxx := no + with_lib32cxxdbg := no + with_lib32objc := no + with_lib32ffi := no + with_lib32gfortran := no + with_lib32ssp := no + with_lib32go := no + with_lib32gomp := no + with_lib32itm := no + with_lib32qmath := no + with_lib32atomic := no + with_lib32backtrace := no + with_lib32asan := no + with_lib32lsan := no + with_lib32tsan := no + with_lib32ubsan := no + with_lib32hwasan := no + with_lib32vtv := no + with_lib32gccdev := no + with_lib32cxxdev := no + with_lib32objcdev := no + with_lib32gfortrandev := no + with_lib32phobosdev := no + + with_libn32gcc := no + with_libn32cxx := no + with_libn32cxxdbg := no + with_libn32objc := no + with_libn32ffi := no + with_libn32gfortran := no + with_libn32ssp := no + with_libn32go := no + with_libn32gomp := no + with_libn32itm := no + with_libn32qmath := no + with_libn32atomic := no + with_libn32backtrace := no + with_libn32asan := no + with_libn32lsan := no + with_libn32tsan := no + with_libn32ubsan := no + with_libn32hwasan := no + with_libn32gccdev := no + with_libn32cxxdev := no + with_libn32objcdev := no + with_libn32gfortrandev:= no + with_libn32phobosdev := no + + with_libx32gcc := no + with_libx32cxx := no + with_libx32cxxdbg := no + with_libx32objc := no + with_libx32ffi := no + with_libx32gfortran := no + with_libx32ssp := no + with_libx32go := no + with_libx32gomp := no + with_libx32itm := no + with_libx32qmath := no + with_libx32atomic := no + with_libx32backtrace := no + with_libx32asan := no + with_libx32lsan := no + with_libx32tsan := no + with_libx32ubsan := no + with_libx32hwasan := no + with_libx32vtv := no + with_libx32gccdev := no + with_libx32cxxdev := no + with_libx32objcdev := no + with_libx32gfortrandev:= no + with_libx32phobosdev := no +endif + +ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchx32))) + multilib := yes +endif + +multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchx32archs))) + +biarchsubdirs := \ + $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \ + $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \ + $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \ + $(if $(filter yes,$(biarchx32)),$(biarchx32subdir),) +biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))} + +# GNU locales +force_gnu_locales := yes +locale_no_cpus := +locale_no_systems := +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) + force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif + +gcc_tarpath := $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-15/gcc-*.tar.*)) +gcc_tarball := $(notdir $(gcc_tarpath)) +gcc_srcdir := $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=))))) + +binutils_dsc := $(notdir $(firstword $(wildcard binutils_*.dsc))) +binutils_srcdir := $(shell echo $(binutils_dsc) | sed 's/-.*//;s/_/-/') + +ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) + newlib_tarpath := $(firstword $(wildcard newlib-*.tar.* /usr/src/gcc-$(BASE_VERSION)/newlib-*.tar.*)) + newlib_tarball := $(notdir $(newlib_tarpath)) + newlib_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(newlib_tarball:.tar.bz2=)))) +endif + +# NOTE: This is not yet used. when building gdc or gnat using the +# gcc-source package, we don't require an exact binary dependency. +ifneq ($(dir $(gcc_tarpath)),./) + built_using_external_source := yes +else + built_using_external_source := +endif +ifeq ($(DEB_CROSS),yes) + add_built_using = yes +endif + +unpack_stamp := $(stampdir)/01-unpack-stamp +pre_patch_stamp := $(stampdir)/02-pre-patch-stamp +patch_stamp := $(stampdir)/02-patch-stamp +control_stamp := $(stampdir)/03-control-stamp +configure_stamp := $(stampdir)/04-configure-stamp +build_stamp := $(stampdir)/05-build-stamp +build_arch_stamp := $(stampdir)/05-build-arch-stamp +build_indep_stamp := $(stampdir)/05-build-indep-stamp +build_html_stamp := $(stampdir)/05-build-html-stamp +build_locale_stamp := $(stampdir)/05-build-locale-stamp +build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp +build_gnatdoc_stamp := $(stampdir)/05-build-gnatdoc-stamp +check_stamp := $(stampdir)/06-check-stamp +check_inst_stamp := $(stampdir)/06-check-inst-stamp +install_stamp := $(stampdir)/07-install-stamp +install_snap_stamp := $(stampdir)/07-install-snap-stamp +install_tc_stamp := $(stampdir)/07-install-tc-stamp +binary_stamp := $(stampdir)/08-binary-stamp + +configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp +build_dummy_stamp := $(stampdir)/05-build-dummy-stamp +install_dummy_stamp := $(stampdir)/07-install-dummy-stamp + +configure_jit_stamp := $(stampdir)/04-configure-jit-stamp +build_jit_stamp := $(stampdir)/05-build-jit-stamp +install_jit_stamp := $(stampdir)/07-install-jit-stamp + +# installation of the offload compilers is required for the check target +# name it 06-install-*-stamp +configure_nvptx_stamp := $(stampdir)/04-configure-nvptx-stamp +build_nvptx_stamp := $(stampdir)/05-build-nvptx-stamp +install_nvptx_stamp := $(stampdir)/06-install-nvptx-stamp + +configure_gcn_stamp := $(stampdir)/04-configure-gcn-stamp +build_gcn_stamp := $(stampdir)/05-build-gcn-stamp +install_gcn_stamp := $(stampdir)/06-install-gcn-stamp + +configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp +build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp +install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp + +control_dependencies := $(patch_stamp) + +ifeq ($(single_package),yes) + ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_snap_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_tc_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + else + $(error Unknown single-package $(PKGSOURCE)) + endif +else + ifeq ($(with_base_only),yes) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) + else + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + endif +endif + +ifeq ($(with_jit),yes) + build_dependencies += $(build_jit_stamp) + install_dependencies += $(install_jit_stamp) +endif + +ifeq ($(with_offload_nvptx),yes) + build_dependencies += $(build_nvptx_stamp) + install_dependencies += $(install_nvptx_stamp) +endif + +ifeq ($(with_offload_gcn),yes) + build_dependencies += $(build_gcn_stamp) + install_dependencies += $(install_gcn_stamp) +endif + +ifeq ($(with_hppa64),yes) + build_dependencies += $(build_hppa64_stamp) + ifneq ($(trunk_build),yes) + install_dependencies += $(install_hppa64_stamp) + endif +endif + +build_dependencies += $(check_dependencies) + +build_arch_dependencies = $(build_dependencies) +build_indep_dependencies = $(build_dependencies) + +ifneq (,$(findstring build-native, $(build_type))) + ifneq ($(single_package),yes) + build_indep_dependencies += $(build_html_stamp) + ifeq ($(with_cxx),yes) + build_indep_dependencies += $(build_doxygen_stamp) + endif + ifeq ($(with_ada),yes) + build_indep_dependencies += $(build_gnatdoc_stamp) + endif + endif +endif + +stamp-dir: + mkdir -p $(stampdir) + +ifeq ($(DEB_CROSS),yes) + define cross_mangle_shlibs + if [ -f debian/$(1)/DEBIAN/shlibs ]; then \ + sed -i s/$(cross_lib_arch)/:$(DEB_TARGET_ARCH)/g debian/$(1)/DEBIAN/shlibs; \ + fi + endef + define cross_mangle_substvars + if [ -f debian/$(1).substvars ]; then \ + sed -i \ + -e 's/:$(DEB_TARGET_ARCH)/$(cross_lib_arch)/g' \ + -e 's/\(libc[.0-9]*-[^:]*\):\([a-z0-9-]*\)/\1-\2-cross/g' \ + $(if $(filter armel,$(DEB_TARGET_ARCH)),-e 's/:armhf/-armhf-cross/g') \ + $(if $(filter armhf,$(DEB_TARGET_ARCH)),-e 's/:armel/-armel-cross/g') \ + debian/$(1).substvars; \ + fi + endef +else + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef + # precise's dh_shlibdeps doesn't work well for ARM multilibs + # and dh_shlibdeps doesn't work well for cross builds, see #698881. + ifneq (,$(filter $(distrelease),precise quantal raring)) + ifneq (,$(filter $(DEB_TARGET_ARCH), armel armhf arm64)) + ignshld = - + endif + endif + # FIXME: don't stop at the first shlibdeps failure ... + ignshld = - +endif +ifeq ($(DEB_STAGE),rtlibs) + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef +endif + +# takes a *list* of package names as $1, the multilib dirname as $2 +_shlibdirs = \ + $(if $(strip $(1)), \ + $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \ + -name '*.so.*' -printf '%h ' | uniq)) \ + $(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \ + $(with_build_sysroot)/$(usr_lib$(2)) \ + $(if $(findstring mips64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(findstring mipsn32,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_libn32)) \ + $(if $(filter sparc64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(filter yes, $(with_common_libs)),, \ + $(CURDIR)/$(d)/$(usr_lib$(2)) \ + $(CURDIR)/$(d)/usr/$(call mlib_to_march,$(2))/lib) +shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d))) diff --git a/rules.parameters b/rules.parameters new file mode 100644 index 0000000..320d67d --- /dev/null +++ b/rules.parameters @@ -0,0 +1,44 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 15.3.0 +NEXT_GCC_VERSION := 15.3.1 +BASE_VERSION := 15 +SOURCE_VERSION := 15.3.0-4 +DEB_VERSION := 15.3.0-4 +DEB_EVERSION := 1:15.3.0-4 +DEB_GDC_VERSION := 15.3.0-4 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 15.3.0-4 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := 5 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 5 +OBJC_SONAME := 4 +GDC_VERSION := 15 +GNAT_VERSION := 15 +GNAT_SONAME := 15 +FFI_SONAME := 9 +SSP_SONAME := 0 +GOMP_SONAME := 1 +ITM_SONAME := 1 +ATOMIC_SONAME := 1 +BTRACE_SONAME := 1 +ASAN_SONAME := 8 +LSAN_SONAME := 0 +TSAN_SONAME := 2 +UBSAN_SONAME := 1 +HWASAN_SONAME := 0 +VTV_SONAME := 0 +QUADMATH_SONAME := 0 +GO_SONAME := 24 +CC1_SONAME := 0 +GCCJIT_SONAME := 15 +GPHOBOS_SONAME := 6 +GDRUNTIME_SONAME := 6 +GM2_SONAME := 20 +DIAGNOSTICS_SONAME:= 0 +GCOBOL_SONAME := 1 +GA68_SONAME := 1 +LIBC_DEP := libc6 diff --git a/rules.patch b/rules.patch new file mode 100644 index 0000000..aebc3a6 --- /dev/null +++ b/rules.patch @@ -0,0 +1,427 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir ?= debian/patches +series_file ?= $(patchdir)/series + +# which patches should be applied? + +debian_patches += \ + git-updates \ + +# git-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + git-doc-updates \ + rename-info-files \ + +# git-doc-updates \ + +else + debian_patches += \ + gcc-gfdl-build +endif + +# libstdc++-pic \ + + +debian_patches += \ + 0001-Ada-merge-all-timeval-and-timespec-definitions-and-c \ + 0002-Ada-select-64-bits-time-functions-from-GNU-libc-when \ + +debian_patches += \ + gcc-textdomain \ + gcc-distro-specs \ + gcc-driver-extra-langs \ + gcc-hash-style-gnu \ + libstdc++-doclink \ + libstdc++-man-3cxx \ + libstdc++-test-installed \ + libstdc++-doxygen-SOURCE_DATE_EPOCH \ + alpha-no-ev4-directive \ + note-gnu-stack \ + libgomp-omp_h-multilib \ + libgo-cleanfiles \ + gcc-target-include-asm \ + libgo-revert-timeout-exp \ + libgo-setcontext-config \ + gcc-auto-build \ + libitm-no-fortify-source \ + sparc64-biarch-long-double-128 \ + pr66368 \ + pr67590 \ + libffi-race-condition \ + cuda-float128 \ + t-libunwind-elf-Wl-z-defs \ + gcc-force-cross-layout \ + gcc-search-prefixed-as-ld \ + pr87808 \ + pr94253 \ + gcc-arm-disable-guality-tests \ + musl-ssp \ + arc-stddef \ + gccrs-bootstrap-mipsel \ + sh-math-fixes \ + gcc-riscv-extensions \ + libphobos-ppc64el \ + D-22464 \ + pr106641 \ + libsanitizer-static-tls \ + pr123853 \ + pr124637 \ + +# see https://bugs.debian.org/1108322 +ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc)) + debian_patches += ada-tv_nsec-size +endif + +ifneq (,$(newlib_tarball)) + debian_patches += +endif + +ifneq (,$(filter $(distrelease),lunar)) + debian_patches += rust-enabled +endif + +ifneq (,$(filter $(distrelease), jessie stretch buster bullseye precise trusty xenial bionic focal groovy hirsute)) + debian_patches += dwarf5-revert-default + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += dwarf5-revert-default-doc + endif +endif + +# TODO: +# pr81829 \ + +# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ +# libstdc++-nothumb-check \ + +hardening_patches = +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + hardening_patches += \ + gcc-distro-specs-ubuntu-doc \ + testsuite-hardening-format \ + testsuite-hardening-printf-types \ + testsuite-hardening-updates \ + testsuite-glibc-warnings + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) +# ifneq ($(with_pie),yes) +# hardening_patches += \ +# ignore-pie-specs-when-not-enabled +# endif + endif +endif + +# FIXME 4.5: Drop and adjust symbols files +ifneq (,$(findstring 4.4, $(PKGSOURCE))) + debian_patches += pr39491 +endif + +# Patches for non-core languages. + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gm2-texinfo +endif + +# Most of the time, it would be safe to apply them whether the +# language is selected or not. But when working on a new GCC version, +# it is convenient to concentrate on core languages, and refresh them +# later when working on the specific language. +ifeq ($(with_ada),yes) + debian_patches += ada-gcc-name + debian_patches += ada-link-lib + debian_patches += ada-gnattools-cross + ifeq ($(with_gnatsjlj),yes) + debian_patches += ada-sjlj + endif + debian_patches += ada-lib-info-source-date-epoch + debian_patches += ada-perl-shebang +endif + +# FIXME: still relevant? +# gdc-multiarch + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gdc-texinfo +endif +ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 armhf)) + debian_patches += disable-gdc-tests +endif + +debian_patches += alpha-ieee +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += alpha-ieee-doc +endif + +# see https://bugs.debian.org/1107416 +ifeq ($(DEB_TARGET_ARCH),m68k) + debian_patches += gcc-m68k-no-fold-mem-offsets +endif +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gcc-m68k-no-fold-mem-offsets-doc +endif + +# see https://gcc.gnu.org/bugzilla/PR55212 +# based on https://github.com/olegendo/gcc/tree/devel/sh-lra +# plus the patch 59550 from the bug report 55212#comment-422 +# and the changes to the documentation omitted due to DFSG +ifeq ($(DEB_TARGET_ARCH),sh4) + debian_patches += sh-lra-support + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += sh-lra-support-doc + endif +endif +debian_patches += sh-bootstrap-compare + +# all patches below this line are applied for gcc-snapshot builds as well + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + debian_patches = +endif + +debian_patches += \ + gdc-dynamic-link-phobos \ + libstdc++-pythondir \ + gcc-verbose-lto-link \ + +ifeq ($(with_ada),yes) + debian_patches += ada-verbose + debian_patches += ada-gnat-name + debian_patches += \ + ada-armel-libatomic +endif + +ifeq ($(with_ibm_branch),yes) + debian_patches += ibm-branch +endif + +ifeq ($(with_softfloat),yes) + debian_patches += arm-multilib-soft-float +endif +ifneq (,$(filter $(distrelease), precise trusty xenial bionic focal groovy hirsute)) + debian_patches += arm-multilib-defaults +endif + +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + debian_patches += cross-fixes + debian_patches += cross-install-location +endif + +debian_patches += hurd-multiarch +debian_patches += hurd-multilib-multiarch +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes + # FIXME: #1005297, PR 104660 + debian_patches += libgo-hurd-hack +endif + +debian_patches += gcc-ice-dump +debian_patches += gcc-ice-apport +debian_patches += skip-bootstrap-multilib +debian_patches += libffi-ro-eh_frame_sect +debian_patches += libgo-testsuite +debian_patches += gcc-no-multilib-dejagnu +debian_patches += libphobos-unittest +debian_patches += hppa64-libgcov-fallback + +debian_patches += algol68 +debian_patches += algol68-link-dynamic +debian_patches += algol68-sparc +ifeq ($(single_package),yes) + debian_patches += algol68-doc +else ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += ga68-texinfo +else + debian_patches += algol68-doc +endif + +debian_patches += gcc-vhdl + +# sigaction on sparc changed between glibc 2.19 and 2.21 +ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}'))) + # keep it, gets remove in GCC from time to time + #debian_patches += pr67899 +endif + +debian_patches += gcc-multiarch +debian_patches += config-ml +ifneq ($(single_package),yes) + ifeq ($(with_multiarch_cxxheaders),yes) + debian_patches += g++-multiarch-incdir + debian_patches += canonical-cpppath + endif +endif +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + debian_patches += cross-no-locale-include + debian_patches += cross-biarch +endif +debian_patches += gcc-multilib-multiarch + +ifneq ($(trunk_build),yes) +ifneq (,$(filter $(derivative),Ubuntu)) + debian_patches += gcc-as-needed + ifeq (,$(filter $(distrelease), precise trusty xenial)) + debian_patches += gcc-as-needed-gold + endif +else # Debian + ifeq (,$(filter $(distrelease), jessie stretch)) + debian_patches += gcc-as-needed gcc-as-needed-gold + endif +endif +endif + +debian_patches += go-testsuite + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. +#debian_patches += libasan-sparc + +series_stamp = $(stampdir)/02-series-stamp +series: $(series_stamp) +$(series_stamp): + echo $(strip $(addsuffix .diff,$(debian_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) +ifneq (,$(strip $(hardening_patches))) + ifneq ($(trunk_build),yes) + echo $(strip $(addsuffix .diff,$(hardening_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) + endif +endif + sed -r 's/(.)$$/\1 -p1/' -i $(series_file) + touch $@ + +autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u) +autoconf_dirs = $(sort $(dir $(autoconf_files))) + +automake_files = $(addprefix ./, $(filter-out none, \ + $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u))) + +autoconf_version = 2.69 +ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) + autoconf_version = +endif +ifeq ($(trunk_build),yes) + # The actual version depends on the build-dependencies set by + # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the + # correct version is installed. + #autoconf_version = +endif + +# FIXME: the auto* stuff is done every time for every subdir, which +# leads to build errors. Idea: record the auto* calls in the patch +# files (AUTO ) and run them separately, +# maybe only once per directory). +$(patch_stamp): $(unpack_stamp) $(series_stamp) + sync + QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \ + quilt --quiltrc /dev/null push -a || test $$? = 2 + + : # only needed when we have changes, and currently fails with autogen 5.18 + : #cd $(srcdir)/fixincludes && ./genfixes + + sync + echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ + cd $(CURDIR)/{} && rm -f configure && \ + AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' + find $(srcdir) -name autom4te.cache | xargs -r rm -rf + + for i in $(debian_patches) $(hardening_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + + : # generate the distro-defaults.h header + rm -f $(srcdir)/gcc/distro-defaults.h + ( \ + echo '/* distro specific configuration injected by the distro build. */'; \ + echo ''; \ + echo '#ifndef ACCEL_COMPILER' \ + ) >> $(srcdir)/gcc/distro-defaults.h +ifeq ($(with_async_unwind),yes) + echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + echo '#define DIST_DEFAULT_SSP 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq (,$(filter $(distrelease), precise trusty)) + echo '#define DIST_DEFAULT_SSP_STRONG 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(filter $(distrelease),lucid precise trusty xenial bionic focal jammy kinetic lunar mantic)) + ( \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE 2'; \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "2"' \ + ) >> $(srcdir)/gcc/distro-defaults.h + else + ( \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE 3'; \ + echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "3"' \ + ) >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_RELRO 1' \ + >> $(srcdir)/gcc/distro-defaults.h + echo '#define DIST_DEFAULT_BIND_NOW 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq ($(with_stack_clash),yes) + echo '#define DIST_DEFAULT_STACK_CLASH 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_cf_protection),yes) + echo '#define DIST_DEFAULT_CF_PROTECTION 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq (,$(filter $(distrelease),xenial bionic focal jammy noble oracular plucky)) + echo '#define DIST_DEFAULT_INIT_ZERO_ALL 1' \ + >> $(srcdir)/gcc/distro-defaults.h + echo '#define DIST_DEFAULT_BIDI_WARNING 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-15, $(PKGSOURCE))) + endif +endif +ifeq ($(with_timet64),yes) + echo '#define DIST_DEFAULT_TIMET64 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_sframe),yes) + echo '#define DIST_DEFAULT_SFRAME 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif + echo '#endif' \ + >> $(srcdir)/gcc/distro-defaults.h + + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +update-patches: $(series_stamp) + export QUILT_PATCHES=$(patchdir); \ + quilt pop -a; \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh --no-timestamps --no-index -pab; done + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools diff --git a/rules.sonames b/rules.sonames new file mode 100644 index 0000000..e57c5aa --- /dev/null +++ b/rules.sonames @@ -0,0 +1,107 @@ +ifneq ($(vafilt_defined),1) + $(error rules.defs must be included before rules.sonames) +endif + +ifeq (,$(wildcard debian/soname-cache)) + SONAME_VARS := $(shell \ + cache=debian/soname-cache; \ + rm -f $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libstdc++-v3/acinclude.m4`; \ + echo CXX_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libobjc/configure.ac`; \ + echo OBJC_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \ + echo FORTRAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \ + echo SSP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \ + echo FFI_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgomp/configure.ac`; \ + echo GOMP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/asan/libtool-version | cut -d: -f1`; \ + echo ASAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/lsan/libtool-version | cut -d: -f1`; \ + echo LSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/tsan/libtool-version | cut -d: -f1`; \ + echo TSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/ubsan/libtool-version | cut -d: -f1`; \ + echo UBSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/hwasan/libtool-version | cut -d: -f1`; \ + echo HWASAN_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libatomic/configure.ac`; \ + v=1; \ + echo ATOMIC_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libbacktrace/configure.ac`; \ + echo BTRACE_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \ + echo QUADMATH_SONAME=$$v >> $$cache; \ + v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ + | sed -e 's/.*"\([^"]*\)".*/\1/'`; \ + echo GNAT_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgo/configure.ac`; \ + echo GO_SONAME=$$v >> $$cache; \ + echo ITM_SONAME=1 >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libvtv/configure.ac`; \ + v=0; \ + echo VTV_SONAME=$$v >> $$cache; \ + echo CC1_SONAME=0 >> $$cache; \ + echo GCCJIT_SONAME=$(if $(filter yes, $(with_versioned_libgccjit)),$(BASE_VERSION),0) >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libphobos/configure.ac`; \ + echo GPHOBOS_SONAME=$$v >> $$cache; \ + echo GDRUNTIME_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgm2/configure.ac`; \ + echo GM2_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^LIBGDIAGNOSTICS_VERSION_NUM/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/gcc/Makefile.in`; \ + echo DIAGNOSTICS_SONAME=$$(echo $$v |sed 's/ //g') >> $$cache; \ + v=`awk -F= '/^LIBGCOBOL_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgcobol/configure.ac`; \ + echo GCOBOL_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libga68_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libga68/configure.ac`; \ + echo GA68_SONAME=$$v >> $$cache; \ + cat $$cache) +else + SONAME_VARS := $(shell cat debian/soname-cache) +endif +CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) +OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) +FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) +SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) +FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) +GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) +ATOMIC_SONAME = $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME) +BTRACE_SONAME = $(call vafilt,$(SONAME_VARS),BTRACE_SONAME) +ASAN_SONAME = $(call vafilt,$(SONAME_VARS),ASAN_SONAME) +LSAN_SONAME = $(call vafilt,$(SONAME_VARS),LSAN_SONAME) +TSAN_SONAME = $(call vafilt,$(SONAME_VARS),TSAN_SONAME) +UBSAN_SONAME = $(call vafilt,$(SONAME_VARS),UBSAN_SONAME) +VTV_SONAME = $(call vafilt,$(SONAME_VARS),VTV_SONAME) +CILKRTS_SONAME = $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME) +QUADMATH_SONAME = $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME) +GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) +GO_SONAME = $(call vafilt,$(SONAME_VARS),GO_SONAME) +ITM_SONAME = $(call vafilt,$(SONAME_VARS),ITM_SONAME) +CC1_SONAME = $(call vafilt,$(SONAME_VARS),CC1_SONAME) +GCCJIT_SONAME = $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME) +GPHOBOS_SONAME = $(call vafilt,$(SONAME_VARS),GPHOBOS_SONAME) +GDRUNTIME_SONAME= $(call vafilt,$(SONAME_VARS),GDRUNTIME_SONAME) +GM2_SONAME = $(call vafilt,$(SONAME_VARS),GM2_SONAME) +HWASAN_SONAME = $(call vafilt,$(SONAME_VARS),HWASAN_SONAME) +DIAGNOSTICS_SONAME = $(call vafilt,$(SONAME_VARS),DIAGNOSTICS_SONAME) +GCOBOL_SONAME = $(call vafilt,$(SONAME_VARS),GCOBOL_SONAME) +GA68_SONAME = $(call vafilt,$(SONAME_VARS),GA68_SONAME) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) +STDC++_SONAME = $(CXX_SONAME) +GDIAGNOSTICS_SONAME = $(DIAGNOSTICS_SONAME) diff --git a/rules.source b/rules.source new file mode 100644 index 0000000..a11b595 --- /dev/null +++ b/rules.source @@ -0,0 +1,15 @@ +SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(SOURCE_DIR)/patches + +include $(SOURCE_DIR)/debian/rules.defs +include $(SOURCE_DIR)/debian/rules.patch +include $(SOURCE_DIR)/debian/rules.unpack + +patch-source: $(patch_stamp) + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gdc_srcdir) + rm -rf bin + rm -rf $(srcdir) + diff --git a/rules.unpack b/rules.unpack new file mode 100644 index 0000000..23c49dd --- /dev/null +++ b/rules.unpack @@ -0,0 +1,210 @@ +# -*- makefile -*- +# rules to unpack the source tarballs in $(srcdir); if the source dir already +# exists, the rule exits with an error to prevent deletion of modified +# source files. It has to be deleted manually. + +tarballs = $(gcc_tarball) +ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) + tarballs += $(newlib_tarball) +endif +ifeq ($(with_binutils),yes) + tarballs += $(binutils_dsc) +endif + +unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i)) + +unpack: stamp-dir $(unpack_stamp) debian-chmod +$(unpack_stamp): $(unpack_stamps) +$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p)) + echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \ + > pxxx + echo -e "Integrated upstream packages in this version:\n" >> pxxx + for i in $(tarballs); do echo " $$i" >> pxxx; done + mv -f pxxx $@ + +debian-chmod: + @chmod 755 debian/dh_* + +# --------------------------------------------------------------------------- + +gfdl_texinfo_files = \ + gcc/doc/analyzer.texi \ + gcc/doc/avr-mmcu.texi \ + gcc/doc/bugreport.texi \ + gcc/doc/cfg.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cpp.texi \ + gcc/doc/cppdiropts.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/cppwarnopts.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcov.texi \ + gcc/doc/gcov-dump.texi \ + gcc/doc/gcov-tool.texi \ + gcc/doc/generic.texi \ + gcc/doc/gimple.texi \ + gcc/doc/gnu.texi \ + gcc/doc/gty.texi \ + gcc/doc/headerdirs.texi \ + gcc/doc/hostconfig.texi \ + gcc/doc/implement-c.texi \ + gcc/doc/implement-cxx.texi \ + gcc/doc/install-old.texi \ + gcc/doc/install.texi \ + gcc/doc/interface.texi \ + gcc/doc/invoke.texi \ + gcc/doc/languages.texi \ + gcc/doc/libgcc.texi \ + gcc/doc/loop.texi \ + gcc/doc/lto.texi \ + gcc/doc/makefile.texi \ + gcc/doc/match-and-simplify.texi \ + gcc/doc/md.texi \ + gcc/doc/objc.texi \ + gcc/doc/optinfo.texi \ + gcc/doc/options.texi \ + gcc/doc/passes.texi \ + gcc/doc/plugins.texi \ + gcc/doc/poly-int.texi \ + gcc/doc/portability.texi \ + gcc/doc/rtl.texi \ + gcc/doc/service.texi \ + gcc/doc/sourcebuild.texi \ + gcc/doc/standards.texi \ + gcc/doc/tm.texi.in \ + gcc/doc/tm.texi \ + gcc/doc/tree-ssa.texi \ + gcc/doc/trouble.texi \ + gcc/doc/ux.texi \ + gcc/doc/include/gcc-common.texi \ + gcc/doc/include/funding.texi \ + gcc/fortran/gfc-internals.texi \ + gcc/fortran/invoke.texi \ + gcc/fortran/intrinsic.texi \ + + +gfdl_toplevel_texinfo_files = \ + gcc/doc/gcc.texi \ + gcc/doc/lto-dump.texi \ + gcc/ada/gnat-style.texi \ + gcc/ada/gnat_rm.texi \ + gcc/ada/gnat_ugn.texi \ + gcc/fortran/gfortran.texi \ + gcc/go/gccgo.texi \ + libgomp/libgomp.texi \ + libquadmath/libquadmath.texi \ + +gfdl_manpages = \ + gcc/doc/cpp.1 \ + gcc/doc/g++.1 \ + gcc/doc/gc-analyze.1 \ + gcc/doc/gcc.1 \ + gcc/doc/gccgo.1 \ + gcc/doc/gcov.1 \ + gcc/doc/gcov-dump.1 \ + gcc/doc/gcov-tool.1 \ + gcc/doc/gfortran.1 \ + gcc/lto/lto-dump.1 \ + gcc/doc/fsf-funding.7 \ + +# --------------------------------------------------------------------------- +$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath) + @echo "Build environment: derivative=$(derivative), release=$(distrelease)" + : # unpack gcc tarball + mkdir -p $(stampdir) + if [ -d $(srcdir) ]; then \ + echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \ + false; \ + fi + rm -rf $(gcc_srcdir) + tar -x -f $(gcc_tarpath) + mv $(gcc_srcdir) $(srcdir) + ln -sf libsanitizer $(srcdir)/libasan +ifeq (0,1) + cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ + $(gfdl_texinfo_files) \ + $(gfdl_toplevel_texinfo_files) \ + $(gfdl_manpages) +endif +ifeq ($(GFDL_INVARIANT_FREE),yes) + ifneq ($(single_package),yes) + rm -f $(srcdir)/gcc/doc/*.1 + rm -f $(srcdir)/gcc/doc/fsf-funding.7 + rm -f $(srcdir)/gcc/doc/*.info + rm -f $(srcdir)/gcc/fortran/*.info + rm -f $(srcdir)/libgomp/*.info + rm -f $(srcdir)/libquadmath/*.info + for i in $(gfdl_texinfo_files); do \ + if [ -f $(srcdir)/$$i ]; then \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + else \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + ( \ + echo '@include gcc-vers.texi'; \ + echo '@macro versionsubtitle'; \ + echo '@subtitle For @sc{gcc} version @value{version-GCC}'; \ + echo '@vskip 0pt plus 1filll'; \ + echo '@end macro'; \ + ) > $(srcdir)/gcc/doc/include/gcc-common.texi + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_manpages); do \ + touch $(srcdir)/$$i; \ + done + rm -f $(srcdir)/INSTALL/*.html + rm -f $(srcdir)/zlib/contrib/dotzlib/DotZLib.chm + endif +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +ifneq (,$(newlib_tarball)) +$(unpack_stamp)-$(newlib_tarball): $(newlib_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack newlib tarball + mkdir -p $(stampdir) + : # rm -rf $(newlib_srcdir) + tar -x -f $(newlib_tarpath) + echo "$(newlib_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(binutils_dsc)) +$(unpack_stamp)-$(binutils_dsc): $(binutils_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack binutils package + mkdir -p $(stampdir) + : # rm -rf $(binutils_srcdir) + dpkg-source -x $(binutils_dsc) + + : # symlink binutilds toplevel dirs into the gcc tree + for d in $(binutils_srcdir)/*; do \ + [ -d $$d ] || continue; \ + b=$$(basename $$d); \ + if [ ! -e $(srcdir)/$$b ]; then \ + ln -s ../$(binutils_srcdir)/$$b $(srcdir)/$$b; \ + fi; \ + done + + echo "$(binutils_dsc) unpacked." > $@ +endif diff --git a/rules2 b/rules2 new file mode 100644 index 0000000..483e820 --- /dev/null +++ b/rules2 @@ -0,0 +1,3217 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +.SUFFIXES: + +include debian/rules.defs +include debian/rules.parameters + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + include $(binutils_srcdir)/debian/rules.defs +endif + +dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \ + && echo DH_COMPAT=2) + +# some tools +SHELL = /bin/bash -e # brace expansion in rules file +IR = install -m 644 # Install regular file +IP = install -m 755 # Install program +IS = install -m 755 # Install script + +DWZ = dwz +ifneq (,$(filter $(distrelease),jessie stretch trusty xenial bionic)) + DWZ = : dwz +endif + +# dwz: debian/gccgo-11/usr/lib/gcc/mips64el-linux-gnuabi64/11/go1: Found two copies of .debug_line_str section +ifneq (,$(filter $(DEB_HOST_ARCH),mips64el hurd-amd64 hurd-i386)) + DWZ = : dwz +endif + +# kernel-specific ulimit hack +ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) + ULIMIT_M = if [ -e /proc/meminfo ]; then \ + m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ + /proc/meminfo`; \ + else \ + m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ + fi; \ + echo "Limiting memory for test runs to $${m}kB"; \ + if ulimit -m $$m; then \ + echo " limited to `ulimit -m`kB"; \ + else \ + echo " failed"; \ + fi +else + ULIMIT_M = true +endif + +#time_command = /usr/bin/time -v +ifeq ($(usage_stats),yes) + time_command += $(CURDIR)/debian/usage-wrapper.py $(NJOBS) --base-memory -m 2.0 -o usage-$(shell echo $@ | sed 's/.*0[1-9]-//;s/-stamp//').svg +endif + +ifeq ($(locale_data),generate) + SET_LOCPATH = LOCPATH=$(CURDIR)/locales +endif + +SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH +ifeq ($(trunk_build),yes) + ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif + ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif +endif + +# the recipient for the test summaries. Send with: debian/rules mail-summary +S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org + +# build not yet prepared to take variables from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +CC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))) +CXX = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++))) +GDC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc))) +ifeq ($(with_ada),yes) + GNAT = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-15 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-14 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-13 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-12 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-11 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-10 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat))) + ifneq (,$(GNAT)) + CC = $(subst gnat,gcc,$(GNAT)) + else ifneq (,$(filter $(distrelease), trusty)) + CC = gcc-4.8 + else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)) + CC = $(DEB_HOST_GNU_TYPE)-gcc + else + CC = gcc + endif + CXX = $(subst gcc,g++,$(CC)) + GDC = $(subst gcc,gdc,$(CC)) + GNATBIND = $(subst gnat,gnatbind,$(GNAT)) + GNATMAKE = $(subst gnat,gnatmake,$(GNAT)) +endif + +ifneq (,$(filter $(build_type),cross-build-native cross-build-cross)) + export GNATMAKE_FOR_BUILD = $(DEB_BUILD_GNU_TYPE)-gnatmake-$(BASE_VERSION) + SET_TARGET_TOOLS = \ + CC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gcc-$(BASE_VERSION) \ + CXX_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-g++-$(BASE_VERSION) \ + GFORTRAN_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gfortran-$(BASE_VERSION) \ + GOC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gccgo-$(BASE_VERSION) \ + GNAT_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gnat-$(BASE_VERSION) \ + GDC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gdc-$(BASE_VERSION) \ + GM2_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gm2-$(BASE_VERSION) +endif + +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ +else + CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc +endif + +ifneq ($(derivative),Ubuntu) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel)) + STAGE1_CFLAGS = -g -O2 + endif +endif + +ifeq ($(with_ssp_default),yes) + STAGE1_CFLAGS = -g + ifeq (,$(BOOT_CFLAGS)) + BOOT_CFLAGS = -g -O2 + endif + LIBCFLAGS = -g -O2 + LIBCXXFLAGS = -g -O2 -fno-implicit-templates + # Only use -fno-stack-protector when known to the stage1 compiler. + cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \ + -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ + then echo "-fno-stack-protector"; fi;) + $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \ + $(var) += $(cc-fno-stack-protector))) +endif + +# FIXME: passing LDFLAGS for native doesn't do anything +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + CFLAGS = -g -O2 + LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS += -Wl,--no-relax + endif +else + BOOT_CFLAGS = -g -O2 + BOOT_LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + BOOT_LDFLAGS += -Wl,--no-relax + endif +endif +LDFLAGS_FOR_TARGET = -Wl,-z,relro +ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax +endif + +ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS))) + LDFLAGS += -static +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + CFLAGS = -O0 -g3 -fno-inline + CXXFLAGS = -O0 -g3 -fno-inline + CFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CXXFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + CXXFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + BOOT_CFLAGS = + BOOT_LDFLAGS = + STAGE1_CFLAGS = + STAGE1_LDFLAGS = +endif + +ifeq ($(DEB_TARGET_ARCH),arm64) + # Build with PAC/BTI support if enabled in the build flags + # https://wiki.debian.org/ToolChain/PACBTI + ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) + CFLAGS_SECURE = -mbranch-protection=standard + else + CFLAGS_SECURE = + endif + + ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get FCFLAGS))) + FCFLAGS += -mbranch-protection=standard + endif + + ifeq ($(DEB_CROSS),yes) + # Building cross compilers + CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Cross build of the native compiler + CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) + else + # Native build + CFLAGS += $(CFLAGS_SECURE) + CXXFLAGS += $(CFLAGS_SECURE) + BOOT_CFLAGS += $(CFLAGS_SECURE) + endif +endif + +ifneq (,$(findstring -fno-omit-frame-pointer,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) + CFLAGS_FRAME_POINTER = -fno-omit-frame-pointer +else + CFLAGS_FRAME_POINTER = +endif + +ifeq ($(DEB_CROSS),yes) + # Building cross compilers + CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) + CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) +else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Cross build of the native compiler + CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) + CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) +else + # Native build + CFLAGS += $(CFLAGS_FRAME_POINTER) + CXXFLAGS += $(CFLAGS_FRAME_POINTER) +endif + +# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target +# all other flags are passed to the make step. +pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))")) +flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS FCFLAGS + +docdir = usr/share/doc + +# no prefix for regular builds, would disable searching for as / ld +binutils_prefix = +ifneq (,$(with_build_sysroot)) + binutils_prefix = $(with_build_sysroot)/usr/bin +endif + +CONFARGS = -v \ + --with-pkgversion='$(distribution)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \ + --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' + +CONFARGS += \ + --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ + --prefix=/$(PF) \ + --with-gcc-major-version-only \ + +ifneq (,$(with_build_sysroot)) + CONFARGS += \ + --with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \ + --with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld +endif + +ifeq ($(versioned_packages),yes) + CONFARGS += --program-suffix=-$(BASE_VERSION) +endif +ifneq (,$(filter $(build_type),build-native cross-build-native)) + CONFARGS += --program-prefix=$(cmd_prefix) +endif + +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + CONFARGS += \ + --disable-decimal-float \ + --disable-libatomic \ + --disable-libga68 \ + --disable-libgcobol \ + --disable-libgomp \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libsanitizer \ + --disable-threads \ + --disable-bootstrap \ + --libexecdir=/$(libexecdir) \ + --libdir=/$(PF)/$(configured_libdir) \ + $(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \ + $(if $(findstring build-cross, $(build_type)), \ + $(if $(with_sysroot),--with-sysroot=$(with_sysroot))) \ + --enable-linker-build-id + + ifeq ($(DEB_STAGE),stage1) + CONFARGS += \ + --disable-shared \ + --with-newlib \ + --without-headers + else + # stage2 + CONFARGS += \ + --enable-shared + endif +else + CONFARGS += \ + --enable-shared \ + --enable-linker-build-id \ + +ifneq ($(single_package),yes) + CONFARGS += \ + --libexecdir=/$(libexecdir) \ + --without-included-gettext \ + --enable-threads=posix \ + --libdir=/$(PF)/$(configured_libdir) +endif + +ifneq ($(with_cpp),yes) + CONFARGS += --disable-cpp +endif + +ifeq ($(with_nls),yes) + CONFARGS += --enable-nls +else + CONFARGS += --disable-nls +endif + +ifeq ($(with_bootstrap),off) + CONFARGS += --disable-bootstrap +else ifneq ($(with_bootstrap),) + CONFARGS += --enable-bootstrap +endif + +ifneq ($(with_sysroot),) + CONFARGS += --with-sysroot=$(with_sysroot) +endif +ifneq ($(with_build_sysroot),) + CONFARGS += --with-build-sysroot=$(with_build_sysroot) +endif + +ifeq ($(force_gnu_locales),yes) + CONFARGS += --enable-clocale=gnu +endif + +ifeq ($(with_cxx)-$(with_cxx_debug),yes-yes) + CONFARGS += --enable-libstdcxx-debug +endif +CONFARGS += --enable-libstdcxx-time=yes +CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi) +ifeq ($(libstdcxx_abi),gcc4-compatible) + CONFARGS += --disable-libstdcxx-dual-abi +endif +CONFARGS += --enable-libstdcxx-backtrace + +ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64 hurd-i386)) + CONFARGS += --enable-gnu-unique-object +endif + +ifneq ($(with_ssp),yes) + CONFARGS += --disable-libssp +endif + +ifneq ($(with_gomp),yes) + CONFARGS += --disable-libgomp +endif + +ifneq ($(with_itm),yes) + CONFARGS += --disable-libitm +endif + +ifneq ($(with_atomic),yes) + CONFARGS += --disable-libatomic +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + ifeq ($(with_vtv),yes) + CONFARGS += --enable-vtable-verify + else + CONFARGS += --disable-vtable-verify + endif +endif + +ifneq ($(with_asan),yes) + CONFARGS += --disable-libsanitizer +endif + +ifneq ($(with_qmath),yes) + CONFARGS += --disable-libquadmath --disable-libquadmath-support +endif + +ifeq ($(with_plugins),yes) + CONFARGS += --enable-plugin +endif + +#ifeq ($(with_gold),yes) +# CONFARGS += --enable-gold --enable-ld=default +#endif + +#CONFARGS += --with-plugin-ld=ld.gold +#CONFARGS += --with-plugin-ld + +# enable pie-by-default on pie_archs +ifeq ($(with_pie),yes) + CONFARGS += --enable-default-pie +endif + +endif # !DEB_STAGE + +CONFARGS += --with-system-zlib + +ifeq ($(with_phobos),yes) + CONFARGS += --enable-libphobos-checking=release + ifeq ($(DEB_CROSS),yes) + CONFARGS += --without-target-system-zlib + else + CONFARGS += --with-target-system-zlib=auto + endif +endif + +ifeq ($(with_d),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH), $(druntime_only_archs))) + CONFARGS += --with-libphobos-druntime-only=yes + else ifneq ($(with_phobos),yes) + CONFARGS += --disable-libphobos + endif +endif + +ifeq ($(with_objc)-$(with_objc_gc),yes-yes) + CONFARGS += --enable-objc-gc=auto +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu)) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-gnu s390x-linux-gnu sparc64-linux-gnu)) + ifneq ($(biarch32),yes) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe)) + CONFARGS += --enable-secureplt + ifeq ($(biarch64),yes) + CONFARGS += --disable-softfloat --with-cpu=default32 + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat \ + --enable-targets=powerpc-linux,powerpc64-linux + endif + else + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease), jessie trusty)) + CONFARGS += --with-cpu=power7 --with-tune=power8 + else ifneq (,$(filter $(distrelease), xenial bionic focal hirsute impish)) + CONFARGS += --with-cpu=power8 + else + CONFARGS += --with-cpu=power9 + endif + endif + CONFARGS += --enable-targets=powerpcle-linux + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifeq ($(biarch32),yes) + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux + endif + else + CONFARGS += --disable-multilib + endif + ifeq ($(derivative),Ubuntu) + CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7 + endif +endif + +# FIXME: only needed for isl-0.13 for now +#CONFARGS += --disable-isl-version-check + +ifneq (,$(findstring cross-build-,$(build_type))) + # FIXME: requires isl headers for the target + #CONFARGS += --without-isl + # FIXME: build currently fails build the precompiled headers + CONFARGS += --disable-libstdcxx-pch +endif + +ifeq ($(with_multiarch_lib),yes) + CONFARGS += --enable-multiarch +endif + +ifneq (,$(findstring alpha,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-cpu=ev56 +endif + +ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU))) + # requires binutils 2.25.90 or newer + ifeq (,$(filter $(distrelease), precise trusty)) + CONFARGS += --enable-fix-cortex-a53-843419 + endif +endif + +ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-float=soft +endif + +ifneq (,$(findstring arc-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-fpu=vfp +endif + +ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(multilib),yes) + CONFARGS += --enable-multilib + endif + CONFARGS += --disable-sjlj-exceptions + ifneq (,$(filter %armhf,$(DEB_TARGET_ARCH))) + ifeq ($(distribution),Raspbian) + with_arm_arch = armv6+fp + else + ifneq (,$(filter $(distrelease), jessie stretch buster bullseye xenial bionic focal hirsute)) + with_arm_fpu = vfpv3-d16 + with_arm_arch = armv7-a + else + with_arm_fpu = + with_arm_arch = armv7-a+fp + endif + endif + else + # armel + ifeq ($(derivative),Debian) + ifneq (,$(filter $(distrelease), jessie stretch)) + with_arm_arch = armv4t + else + with_arm_arch = armv5te + endif + else ifneq (,$(filter $(distrelease), precise)) + with_arm_arch = armv7-a+fp + else + with_arm_arch = armv5t # starting with quantal + CONFARGS += --with-specs='%{mfloat-abi=hard:-march=armv7-a___-mcpu=generic-armv7-a___-mfloat-abi=hard}' + endif + endif + CONFARGS += --with-arch=$(with_arm_arch) + ifneq (,$(with_arm_fpu)) + CONFARGS += --with-fpu=$(with_arm_fpu) + endif + CONFARGS += --with-float=$(float_abi) + ifeq ($(with_arm_thumb),yes) + CONFARGS += --with-mode=thumb + endif +endif + +ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k)) + CONFARGS += --disable-werror +endif +# FIXME: correct fix-warnings.dpatch +ifeq ($(derivative),Ubuntu) + CONFARGS += --disable-werror +else ifeq ($(derivative),Debian) + CONFARGS += --disable-werror +endif + +ifneq (,$(findstring loongarch64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-cpu-32=ultrasparc + else + CONFARGS += --with-cpu=ultrasparc + endif +endif + +ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu-32=ultrasparc + ifeq ($(biarch32),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE))) + ifneq ($(with_internal_libunwind),yes) + CONFARGS += --with-system-libunwind + endif +endif + +ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu +endif + +ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring riscv64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib + CONFARGS += --with-abi=lp64d + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease), focal jammy noble oracular plucky)) + CONFARGS += --with-arch=rv64gc + else + # Ubuntu 25.10 Questing Quokka is built for the RVA23 family of profiles. + # The 'RVA23 Profiles' specification is available in + # https://drive.google.com/file/d/12QKRm92cLcEk8-5J9NI91m0fAQOxqNAq/view + # + # Here we select the RVA23U64 profile and the zifencei extension. + # The zifencei extension is in RVA23S64 but fence.i is a U-mode + # instruction. + RV_EXT = i m a f d c b v zic64b \ + zicbom zicbop zicboz ziccamoa ziccif \ + zicclsm ziccrse zicntr zicond zicsr \ + zifencei zihintntl zihintpause zihpm zimop \ + zmmul za64rs zaamo zalrsc zawrs zfa \ + zfhmin zca zcb zcd zcmop zba zbb \ + zbs zkt zvbb zve32f zve32x zve64d \ + zve64f zve64x zvfhmin zvkb zvkt zvl128b \ + zvl32b zvl64b supm + CONFARGS += --with-arch=rv64$(subst $(SPACE),_,$(RV_EXT)) + endif + else # Debian + CONFARGS += --with-arch=rv64gc + endif +endif + +ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease),xenial bionic focal)) + CONFARGS += --with-arch=zEC12 + else ifneq (,$(filter $(distrelease),jammy kinetic)) + CONFARGS += --with-arch=z13 --with-tune=z15 + else ifneq (,$(filter $(distrelease),lunar mantic noble oracular plucky questing)) + CONFARGS += --with-arch=z13 --with-tune=z16 + else + CONFARGS += --with-arch=z15 --with-tune=z16 + endif + else # Debian + CONFARGS += --with-arch=z196 + endif + ifneq (,$(filter $(distrelease),stretch buster bullseye bookworm xenial bionic focal jammy lunar mantic)) + CONFARGS += --enable-s390-excess-float-precision + else + CONFARGS += --disable-s390-excess-float-precision + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 ppc64el s390 s390x sparc sparc64)) + CONFARGS += --with-long-double-128 + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), ppc64el)) + ifneq (,$(filter $(distrelease), $(ppc64el_ibm128_distreleases))) + # default to IBM double + else + CONFARGS += --with-long-double-format=ieee + endif +endif + +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) + ifneq (,$(filter $(distrelease),precise xenial bionic)) + CONFARGS += --disable-cet + else + CONFARGS += --enable-cet + endif + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 x32)) + ifneq (,$(filter $(distrelease),jessie stretch buster bullseye)) + CONFARGS += --disable-cet + else + CONFARGS += --enable-cet + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) + ifneq (,$(filter $(derivative),Ubuntu)) + CONFARGS += --with-arch-32=i686 + else # Debian + ifneq (,$(filter $(distrelease), jessie)) + CONFARGS += --with-arch-32=i586 + else + CONFARGS += --with-arch-32=i686 + endif + endif +endif + +ifneq (,$(filter $(derivative),Ubuntu)) + ifeq ($(DEB_TARGET_ARCH),amd64) + # only passed in the environment by dpkg-buildpackage + ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v3) + CONFARGS += --with-arch-64=x86-64-v3 + else ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v4) + CONFARGS += --with-arch-64=x86-64-v4 + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),amd64) + CONFARGS += --with-abi=m64 +endif +ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-abi=mx32 +endif +ifeq ($(multilib),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) + CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32) + else ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-multilib-list=mx32,m64,m32 + endif + CONFARGS += --enable-multilib +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386)) + CONFARGS += --with-arch=i686 +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64)) + CONFARGS += --disable-multilib +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-amd64 hurd-i386)) + CONFARGS += --with-tune=generic +endif + +ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-madd4=no + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mipsisa64r6el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) + ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64))) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-libstdcxx-pch +endif + +ifneq (,$(offload_targets)) + ifneq (,$(filter nvptx-none, $(offload_targets))) + offload_opt = nvptx-none=$(CURDIR)/$(d)-nvptx/$(PF) + endif + ifneq (,$(filter $(gcn_target_name), $(offload_targets))) + offload_opt += $(gcn_target_name)=$(CURDIR)/$(d)-gcn/$(PF) + endif + CONFARGS += \ + --enable-offload-targets=$(subst $(SPACE),$(COMMA),$(strip $(offload_opt))) \ + --enable-offload-defaulted + ifeq ($(with_offload_nvptx),yes) + CONFARGS += --without-cuda-driver + endif +endif + +ifeq ($(trunk_build),yes) + ifeq ($(findstring --disable-werror, $(CONFARGS)),) + CONFARGS += --disable-werror + endif + enable_checking = yes + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) + enable_checking = yes,extra,rtl + endif +else + enable_checking = yes + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) + enable_checking = yes,extra,rtl + endif + enable_checking = release +endif +CONFARGS += --enable-checking=$(enable_checking) + +ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + CONFARGS += $(BINUTILS_GCCCONF) +endif + +CONFARGS += \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(TARGET_ALIAS) + +ifeq ($(DEB_CROSS),yes) + CONFARGS += \ + --program-prefix=$(TARGET_ALIAS)- \ + --includedir=/$(PFL)/include +endif + +ifeq ($(with_bootstrap),off) + bootstrap_target = +else ifeq ($(with_bootstrap),profiled) + bootstrap_target = profiledbootstrap + bootstrap_target = profiledbootstrap-lean +else ifeq ($(with_bootstrap),) + ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gcc-snapshot)) + bootstrap_target = bootstrap + endif + ifneq (,$(DEB_STAGE)) + bootstrap_target = bootstrap + endif +endif + +ifeq ($(with_lto_build),yes) + CONFARGS += \ + --with-build-config=bootstrap-lto-lean \ + --enable-link-serialization=$(CPUS_LTOLINK) +endif + +# this is the default, set in /usr/share/dejagnu/remote.exp +# by a local dejagnu patch. +DEJAGNU_TIMEOUT=300 +# Increase the timeout for one testrun on slow architectures +ifeq ($(derivative),Debian) + ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf arm64)) + DEJAGNU_TIMEOUT=300 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),hppa m68k riscv64 sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686)) + DEJAGNU_TIMEOUT=180 + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + DEJAGNU_TIMEOUT=900 + endif +else ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH), armel armhf arm64)) + DEJAGNU_TIMEOUT=300 + else ifneq (,$(findstring $(DEB_TARGET_ARCH), riscv64)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686 power)) + DEJAGNU_TIMEOUT=180 + endif +endif + +DEJAGNU_RUNS = +ifneq ($(trunk_build),yes) +ifeq ($(with_ssp),yes) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),hppa m68k mips sh4)) + DEJAGNU_RUNS = + else ifneq (,$(filter $(DEB_TARGET_ARCH),armel)) + DEJAGNU_RUNS = + else ifneq ($(single_package),yes) + DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) + endif +endif +endif + +ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(with_arm_thumb),yes) + #DEJAGNU_RUNS += -marm + else + DEJAGNU_RUNS += -mthumb + endif + endif +endif + +# no b-d on g++-multilib, this is run by the built compiler +abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \ + $(shell cat build/runcheck$(1).out), \ + $(shell CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh))) +ifeq ($(biarch32),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32)) +endif +ifeq ($(biarch64),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64)) +endif +ifeq ($(biarchn32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32) +endif +ifeq ($(biarchx32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mx32) +endif + +ifneq (,$(strip $(DEJAGNU_RUNS))) + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" +else + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix" +endif + +# used in the libgo testsuite, not using dejagnu +export CHECK_MULTISUBDIRS = \ + $(if $(filter -m32 -mabi=32, $(DEJAGNU_RUNS)), /32) \ + $(if $(filter -m64 -mabi=64, $(DEJAGNU_RUNS)), /64) \ + $(if $(filter -mabi=n32, $(DEJAGNU_RUNS)), /n32) \ + $(if $(filter -mx32, $(DEJAGNU_RUNS)), /x32) + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases. +ifneq (,$(PF)) + # use value set in the environment +else ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + PF = usr/lib/gcc-snapshot +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + PF = usr/lib/gcc-toolchain-$(BASE_VERSION) +else + PF = usr +endif + +# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +PFL = $(PF) +# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +# DEP17: move to /usr in trixie and noble +ifneq (,$(filter $(distrelease),jessie stretch buster bullseye bookworm precise trusty xenial bionic focal groovy hirsute impish jammy kinetic lunar mantic)) + RPF = +else + RPF = $(PF) +endif + +ifeq ($(DEB_CROSS),yes) +ifneq ($(DEB_STAGE),rtlibs) + PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) + RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) +endif +endif + +ifeq ($(with_multiarch_lib),yes) + ifeq ($(DEB_CROSS),yes) + libdir = lib + else + libdir = lib/$(DEB_TARGET_MULTIARCH) + endif +else + libdir = lib +endif +configured_libdir = lib + +hppa64libexecdir= $(PF)/libexec + +# /usr/libexec doesn't follow the FHS +ifeq ($(single_package),yes) + libdir = lib + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +else + libexecdir = $(PF)/$(configured_libdir) + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +endif +buildlibdir = $(builddir)/$(TARGET_ALIAS) + +# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc +gcc_subdir_name = gcc +ifneq ($(single_package),yes) + ifeq ($(DEB_CROSS),yes) + gcc_subdir_name = gcc-cross + endif +endif + +gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) +gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) + +lib32loc = lib32 +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) +lib32loc = libo32 +endif +lib32 = $(PF)/$(lib32loc) +lib64 = lib64 +libn32 = lib32 +libx32 = libx32 + +p_l= $(1)$(cross_lib_arch) +p_d= $(1)-dbg$(cross_lib_arch) +d_l= debian/$(p_l) +d_d= debian/$(p_d) + +ifeq ($(DEB_CROSS),yes) + usr_lib = $(PFL)/lib +else + usr_lib = $(PFL)/$(libdir) +endif +usr_lib32 = $(PFL)/$(lib32loc) +usr_libn32 = $(PFL)/lib32 +usr_libx32 = $(PFL)/libx32 +usr_lib64 = $(PFL)/lib64 + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + libdir = lib/$(DEB_TARGET_MULTIARCH) + usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH) +endif + +gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) +gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) +gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir) +gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) + +libgcc_dir = $(RPF)/$(libdir) +# yes, really; lib32gcc_s ends up in usr +libgcc_dir32 = $(PFL)/$(lib32loc) +libgcc_dirn32 = $(RPF)/lib32 +# libx32gcc_s also ends up in usr +libgcc_dirx32 = $(PFL)/libx32 +libgcc_dir64 = $(RPF)/lib64 + +# install_gcc_lib(lib,soname,flavour,package) +define install_gcc_lib + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so +endef + +# do_strip_lib_dbg(pkg,pkg_dbg,version,excludes) +define do_strip_lib_dbg + dh_strip -p$(strip $(1)) $(4) \ + $(if $(with_dbg),--dbg-package=$(strip $(2)),--dbgsym-migration='$(strip $(2)) (<< $(strip $(3)))') +endef + +checkdirs = $(builddir) + +# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff +MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH) +export MULTIARCH_DIRNAME + +default: build + +configure: $(configure_dependencies) + +$(configure_dummy_stamp): + touch $(configure_dummy_stamp) + +$(configure_stamp): + dh_testdir + : # give information about the build process + @echo "------------------------ Build process variables ------------------------" + @echo "Disk space on this machine:" + @-df -h . /tmp/. + @echo "Memory on this machine:" + @egrep '^(Mem|Swap)' /proc/meminfo || true + @echo "Number of parallel processes used for the build: $(USE_CPUS)" + @echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS" + @echo "Package source: $(PKGSOURCE)" + @echo "GCC version: $(GCC_VERSION)" + @echo "Base Debian version: $(BASE_VERSION)" + @echo 'Package Metadata: $(ELF_PACKAGE_METADATA)' + @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" +ifeq ($(DEB_CROSS),yes) + @echo "Building cross compiler for $(DEB_TARGET_ARCH)" +endif + @echo "Using shell $(SHELL)" + @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" + @echo "Compilers: $(CC) / $(CXX) / $(GDC) / $(GNAT)" + @echo "CPPFLAGS: $(CPPFLAGS)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "FCFLAGS: $(FCFLAGS)" + @echo "STAGE1_CFLAGS: $(STAGE1_CFLAGS)" + @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" + @echo "BOOT_LDFLAGS: $(BOOT_LDFLAGS)" + @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" + @echo "Install prefix: /$(PF)" +ifeq ($(biarchn32)-$(biarch64),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" +else ifeq ($(biarchn32)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)" +else ifeq ($(biarch64)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (x32/64/32, defaulting to x32)" +else ifeq ($(biarch64)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)" +else ifeq ($(biarch32)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)" +else + ifeq ($(biarch64),yes) + @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" + else + ifeq ($(biarch32),yes) + @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" + else + @echo "Will not build the biarch compilers" + endif + endif +endif + +ifeq ($(with_cxx),yes) + @echo "Will build the C++ compiler" +else + @echo "Will not build the C++ compiler: $(with_cxx)" +endif +ifeq ($(with_objc),yes) + @echo "Will build the ObjC compiler." + ifeq ($(with_objc_gc),yes) + @echo "Will build the extra ObjC runtime for garbage collection." + else + @echo "Will not build the extra ObjC runtime for garbage collection." + endif +else + @echo "Will not build the ObjC compiler: $(with_objc)" +endif +ifeq ($(with_objcxx),yes) + @echo "Will build the Obj-C++ compiler" +else + @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" +endif +ifeq ($(with_fortran),yes) + @echo "Will build the Fortran 95 compiler." +else + @echo "Will not build the Fortran 95 compiler: $(with_fortran)" +endif +ifeq ($(with_ada),yes) + @echo "Will build the Ada compiler." + ifeq ($(with_libgnat),yes) + @echo "Will build the shared Ada libraries." + else + @echo "Will not build the shared Ada libraries." + endif +else + @echo "Will not build the Ada compiler: $(with_ada)" +endif +ifeq ($(with_go),yes) + @echo "Will build the Go compiler." +else + @echo "Will not build the Go compiler: $(with_go)" +endif +ifeq ($(with_d),yes) + @echo "Will build the D compiler" + ifeq ($(with_phobos),yes) + @echo "Will build the phobos D runtime library." + else + @echo "Will not build the phobos D runtime library: $(with_phobos)" + endif +else + @echo "Will not build the D compiler: $(with_d)" +endif +ifeq ($(with_m2),yes) + @echo "Will build the Modula-2 compiler." +else + @echo "Will not build the Modula-2 compiler: $(with_m2)" +endif +ifeq ($(with_rs),yes) + @echo "Will build the Rust compiler." +else + @echo "Will not build the Rust compiler: $(with_rs)" +endif +ifeq ($(with_cobol),yes) + @echo "Will build the COBOL compiler." +else + @echo "Will not build the COBOL compiler: $(with_cobol)" +endif +ifeq ($(with_algol),yes) + @echo "Will build the Algol 68 compiler." +else + @echo "Will not build the Algol 68 compiler: $(with_algol)" +endif +ifneq (,$(offload_targets)) + @echo "Will build with offload compilers: $(offload_targets)." +else + @echo "Will build without offload compilers: $(with_offload_nvptx) / $(with_offload_gcn)" +endif +ifeq ($(with_ssp),yes) + @echo "Will build with SSP support." +else + @echo "Will build without SSP support: $(with_ssp)" +endif +ifeq ($(with_check),yes) + @echo "Will run the testsuite." +else + @echo "Will not run the testsuite: $(with_check)" +endif +ifeq ($(with_nls),yes) + @echo "Will enable national language support." +else + @echo "Will disable national language support: $(with_nls)" +endif + @echo "-----------------------------------------------------------------------------" + @echo "" +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the GCC"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + rm -f $(configure_stamp) $(build_stamp) + cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH) + + rm -rf $(builddir) + mkdir $(builddir) + +ifneq (,$(filter musl-%,$(DEB_TARGET_ARCH))) + # We have to unconditionally link -lssp_nonshared on musl (see + # musl-ssp.diff). While gcc provides it, it comes a little late in the + # build for bootstrapping so we provide an empty one. + mkdir $(builddir)/gcc + ar rcs $(builddir)/gcc/libssp_nonshared.a +endif + + : # some tools like gettext are built with a newer libstdc++ + mkdir -p bin + for i in msgfmt; do \ + install -m755 debian/bin-wrapper.in bin/$$i; \ + done + + : # configure + if cd $(builddir) \ + && $(SET_PATH) \ + $(call pass_vars, CC CXX GDC GNATBIND GNATMAKE $(flags_to_pass) \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + $(SET_SHELL) $(SET_TARGET_TOOLS) \ + $(BINUTILS_GCCENV) \ + ../src/configure $(subst ___, ,$(CONFARGS)); \ + then \ + : ; \ + else \ + s=$$?; \ + cat $(builddir)/config.log; \ + exit $$s; \ + fi + + : # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET) + if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \ + fi + : # Fall back to the host crypt.h when target is unavailable as the + : #sizeof(struct crypt_data) is unlikely to change, needed by libsanitizer. + if [ ! -f /usr/include/crypt.h ] && \ + [ ! -f /usr/include/$(DEB_TARGET_MULTIARCH)/crypt.h ] && \ + [ -f /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h \ + $(builddir)/sys-include/crypt.h; \ + fi + + touch $(configure_stamp) + +build: $(sort $(build_arch_dependencies) $(build_indep_dependencies)) +build-arch: $(build_arch_dependencies) +build-indep: $(build_indep_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data)-$(with_cxx),generate-yes) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + -USE_CPUS=$(USE_CPUS) sh debian/locale-gen +endif + touch $(build_locale_stamp) + +MAX_BUILD_TRIES = 1 +ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-armhf) + MAX_BUILD_TRIES = 3 +endif + +$(build_stamp): $(configure_stamp) $(build_locale_stamp) + @echo === START $@ === + dh_testdir + rm -f bootstrap-protocol* + @echo TTTTT $$(date -R) +ifeq ($(build_type),build-native) + : # build native compiler + set +e; \ + set -o pipefail; \ + try=0; \ + while [ $$try -lt $(MAX_BUILD_TRIES) ]; do \ + try=$$(expr $$try + 1); \ + echo "=========== BUILD ($$try) =========="; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(BINUTILS_GCCENV) \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir) $(bootstrap_target) \ + $(call pass_vars, CC $(flags_to_pass) \ + STAGE1_CFLAGS STAGE1_LDFLAGS \ + BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + 2>&1 | tee bootstrap-protocol$$try \ + ; \ + status=$$?; \ + echo $$status > status; \ + echo === TIME $@ ===; \ + [ $$status -eq 0 ] && exit $$status; \ + done; \ + exit 0 +else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross)) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET FCFLAGS) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee bootstrap-protocol +endif + @echo TTTTT $$(date -R) + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + for h in $$(find $(builddir) -name omp.h); do \ + echo "=================== OMP_H HEADER $$h ====================== "; \ + cat $$h; \ + done + + if [ -f $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + /bin/sh $(srcdir)/contrib/warn_summary $$(ls bootstrap-protocol* | head -1) \ + > bootstrap-summary; \ + fi + +ifeq ($(build_type),build-native) + ifeq ($(with_ada),yes) + ifneq (,$(findstring $(BASE_VERSION),$(GNAT))) + echo "checking ALIHASH ..."; \ + p=gnat-$(BASE_VERSION)-$(subst _,-,$(TARGET_ALIAS)); \ + old=$$(dpkg-query -W -f '$${Provides}' $$p); \ + new=gnat-$(BASE_VERSION)-$$(debian/ada/libgnat_alihash | sed 's/.*=//'); \ + if [ $$old = $$new ]; then \ + echo " -> matching alihash ($$old)"; \ + else \ + echo " -> alihash mismatch: $$old (installed), $$new (built)"; \ + if [ x$(fail_on_alihash_mismatch) = xyes ]; then \ + exit 1; \ + fi; \ + fi + else + @echo 'not checking ALIHASH, using $(GNAT) for the bootstrap' + endif + endif +endif + touch $(build_stamp) + @echo === END $@ === + +ifneq ($(build_type),build-native) + BUILT_CC = $(CC) + BUILT_CXX = $(CXX) +else + BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ + BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \ + -B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \ + -I$(srcdir)/libstdc++-v3/libsupc++ \ + -L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs +endif + +CONFARGS_JIT := \ + $(filter-out --enable-languages=% \ + --enable-libstdcxx-debug %bootstrap,\ + $(CONFARGS)) \ + --enable-languages=c++,jit \ + $(if $(filter yes, $(with_versioned_libgccjit)),--enable-versioned-jit) \ + --enable-host-shared \ + --disable-bootstrap + +# this needs --enable-host-shared, build it in the jit compiler +CONFARGS_JIT += --enable-libgdiagnostics + +# are other libs also safe to disable? +CONFARGS_JIT += \ + --disable-libada \ + --disable-libga68 \ + --disable-libgcobol \ + --disable-libgfortran \ + --disable-libgm2 \ + --disable-libgo \ + --disable-libphobos \ + --disable-libquadmath \ + +$(configure_jit_stamp): $(build_stamp) + @echo === START $@ === + dh_testdir + rm -f $(configure_jit_stamp) $(build_jit_stamp) + rm -rf $(builddir_jit) + mkdir $(builddir_jit) + + : # configure jit + cd $(builddir_jit) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + $(BINUTILS_GCCENV) \ + ../src/configure $(subst ___, ,$(CONFARGS_JIT)) + touch $(configure_jit_stamp) + +$(build_jit_stamp): $(configure_jit_stamp) + @echo === START $@ === + dh_testdir + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(BINUTILS_GCCENV) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_jit) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee jit-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_jit) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + +ifeq ($(with_check),yes) + # FIXME: #782444 + -DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + $(MAKE) -C $(builddir_jit)/gcc check-jit \ + RUNTESTFLAGS="-v -v" + mkdir -p $(builddir)/gcc/testsuite/jit + cp -p $(builddir_jit)/gcc/testsuite/jit/jit.{log,sum} \ + $(builddir)/gcc/testsuite/jit/. +endif + + : # do the install in the build target, to save disk space + rm -rf $(d)-jit + mkdir -p $(d)-jit/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_jit) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-jit \ + install + + find $(d)-jit ! -type d + + mkdir -p $(d)-jit/$(usr_lib) +ifneq ($(single_package),yes) + mkdir -p $(d)-jit/$(gcc_lib_dir)/include + mv $(d)-jit/$(PF)/include/libgccjit*.h \ + $(d)-jit/$(gcc_lib_dir)/include/. + mv $(d)-jit/$(PF)/include/libgdiagnostics*.h \ + $(d)-jit/$(gcc_lib_dir)/include/. +endif +ifneq ($(PF)/lib,$(usr_lib)) + mv $(d)-jit/$(PF)/lib/libgccjit.so* \ + $(d)-jit/$(usr_lib)/. + mv $(d)-jit/$(PF)/lib/libgdiagnostics.so* \ + $(d)-jit/$(usr_lib)/. +endif +ifeq ($(single_package),yes) + cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ + $(PF)/include/libgccjit*.h \ + $(usr_lib)/libgccjit.so* \ + $(PF)/share/info/libgccjit* \ + $(PF)/include/libgdiagnostics*.h \ + $(usr_lib)/libgdiagnostics.so* \ + $(PF)/bin/$(cmd_prefix)sarif-replay* +else + cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ + $(gcc_lib_dir)/include/libgccjit*.h \ + $(usr_lib)/libgccjit.so* \ + $(PF)/share/info/libgccjit* \ + $(gcc_lib_dir)/include/libgdiagnostics*.h \ + $(usr_lib)/libgdiagnostics.so* \ + $(PF)/bin/$(cmd_prefix)sarif-replay* +endif + if which help2man >/dev/null 2>&1; then \ + LD_LIBRARY_PATH=$(CURDIR)/$(d)-jit/$(usr_lib)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ + help2man --no-discard-stderr --help-option=--usage --no-info \ + $(d)-jit/$(PF)/bin/$(cmd_prefix)sarif-replay* \ + $(if $(cmd_prefix),| sed -e "s/$(cmd_prefix)//g" -e "s/$$(echo $(cmd_prefix) | tr 'a-z' 'A-Z')//g") \ + > debian/sarif-replay.1; \ + fi + rm -rf $(d)-jit + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir_jit) +endif + + touch $(build_jit_stamp) + @echo === END $@ === + +CONFARGS_NVPTX := \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --with-gcc-major-version-only \ + --disable-bootstrap \ + --disable-sjlj-exceptions \ + --enable-newlib-io-long-long \ + --target=nvptx-none \ + --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ + --enable-languages=c,c++,fortran,lto \ + --enable-checking=release \ + --with-system-zlib \ + --without-isl \ + --disable-libga68 + +# --with-build-time-tools=/$(PF)/nvptx-none/bin + +CONFARGS_NVPTX += --program-prefix=nvptx-none- +ifeq ($(versioned_packages),yes) + CONFARGS_NVPTX += --program-suffix=-$(BASE_VERSION) +endif + +# FIXME: must not be run in parallel with jit and hppa64 builds ... +$(configure_nvptx_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + @echo === START $@ === + dh_testdir + rm -f $(configure_nvptx_stamp) $(build_nvptx_stamp) + rm -rf src-nvptx $(builddir_nvptx) + cp -al src src-nvptx + rm -rf src-nvptx/newlib + cp -a $(newlib_srcdir)/newlib src-nvptx/newlib + mkdir $(builddir_nvptx) + + : # configure nvptx offload + cd $(builddir_nvptx) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src-nvptx/configure $(subst ___, ,$(CONFARGS_NVPTX)) + touch $(configure_nvptx_stamp) + +$(build_nvptx_stamp): $(configure_nvptx_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + @echo === START $@ === + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_nvptx) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee nvptx-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_nvptx) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + rm -f $(srcdir)/newlib + touch $(build_nvptx_stamp) + @echo === END $@ === + +CONFARGS_GCN := \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --with-gcc-major-version-only \ + --disable-bootstrap \ + --disable-sjlj-exceptions \ + --enable-newlib-io-long-long \ + --target=$(gcn_target_name) \ + --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ + --enable-languages=c,c++,fortran,lto \ + --enable-checking=release \ + --disable-libstdcxx-pch \ + --disable-libquadmath-support \ + --disable-libga68 \ + --with-system-zlib \ + --without-isl \ + --without-gnu-as \ + --without-gnu-ld \ + --with-build-time-tools=$(CURDIR)/bin-gcn + +# --without-headers \ + +CONFARGS_GCN += --program-prefix=$(gcn_target_name)- +ifeq ($(versioned_packages),yes) + CONFARGS_GCN += --program-suffix=-$(BASE_VERSION) +endif + +# FIXME: must not be run in parallel with jit and hppa64 builds ... +$(configure_gcn_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ + $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) + @echo === START $@ === + dh_testdir + + rm -rf bin-gcn +ifeq ($(gcn_tools_llvm_version),tools) + ln -s /usr/$(gcn_target_name)/bin bin-gcn +else + mkdir bin-gcn + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar bin-gcn/ar + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc bin-gcn/as + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld bin-gcn/ld + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm bin-gcn/nm + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib bin-gcn/ranlib +endif + ls -l / + ls -l /usr + -ls -l usr/$(gcn_target_name) + -ls -l usr/$(gcn_target_name)/bin + ls -l bin-gcn + ls -lL bin-gcn + bin-gcn/as --version + bin-gcn/ld --version + + rm -f $(configure_gcn_stamp) $(build_gcn_stamp) + rm -rf src-gcn $(builddir_gcn) + cp -al src src-gcn + rm -rf src-gcn/newlib + cp -a $(newlib_srcdir)/newlib src-gcn/newlib + mkdir $(builddir_gcn) + + : # configure gcn offload + cd $(builddir_gcn) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src-gcn/configure $(subst ___, ,$(CONFARGS_GCN)) + touch $(configure_gcn_stamp) + +$(build_gcn_stamp): $(configure_gcn_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ + $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) + @echo === START $@ === + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_gcn) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + echo === TIME $@ ===; \ + ) 2>&1 | tee amdgcn-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_gcn) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + rm -f $(srcdir)/newlib + touch $(build_gcn_stamp) + @echo === END $@ === + +ifeq ($(versioned_packages),yes) + hppa64_configure_flags += --program-suffix=-$(BASE_VERSION) +endif + +$(configure_hppa64_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + @echo === START $@ === + dh_testdir + rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp) + rm -rf $(builddir_hppa64) + mkdir $(builddir_hppa64) + : # configure hppa64 + cd $(builddir_hppa64) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + $(call pass_vars, $(flags_to_pass)) \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(hppa64libexecdir) \ + --with-gcc-major-version-only \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libitm \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libga68 \ + --enable-plugin \ + --with-system-zlib \ + --with-as=/usr/bin/hppa64-linux-gnu-as \ + --with-ld=/usr/bin/hppa64-linux-gnu-ld \ + --includedir=/usr/hppa64-linux-gnu/include \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=hppa64-linux-gnu + touch $(configure_hppa64_stamp) + +$(build_hppa64_stamp): $(configure_hppa64_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + @echo === START $@ === + if [ -f $(srcdir)/gcc/distro-defaults.h ]; then \ + if [ ! -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv $(srcdir)/gcc/distro-defaults.h $(srcdir)/gcc/distro-defaults.h.saved; \ + fi; \ + echo '/* Empty distro-defaults for hppa64 cross build */' \ + > $(srcdir)/gcc/distro-defaults.h; \ + fi + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + $(time_command) $(MAKE) $(NJOBS) -C $(builddir_hppa64) \ + $(call pass_vars, \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) + if [ -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv -f $(srcdir)/gcc/distro-defaults.h.saved $(srcdir)/gcc/distro-defaults.h; \ + fi + + : # do the install in the build target, to save disk space + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_hppa64) \ + install + + : # remove files not needed + rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info + rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin + rm -f $(d_hppa64)/$(PF)/lib/libiberty.a + rm -f $(d_hppa64)/$(PF)/lib/libcc1.* + rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc,lto-dump} + + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/g++-mapper-server + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed + +ifeq ($(versioned_packages),yes) + for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ + mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ + done +endif + mkdir -p $(d_hppa64)/$(PF)/share/man/man1 + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in cpp gcc; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +endif + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ + $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # fix permissions of liblto_plugin.so + chmod 644 $(d_hppa64)/$(PF)/libexec/gcc/hppa64-linux-gnu/$(BASE_VERSION)/liblto_plugin.so + + cd $(d_hppa64) && tar cvfJ ../../installed-hppa64.tar.xz usr + rm -rf $(d_hppa64) + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir_hppa64) +endif + touch $(build_hppa64_stamp) + @echo === END $@ === + +ifeq ($(with_ada),yes) + MANUALS = \ + $(srcdir)/gcc/ada/gnat_ugn.texi \ + $(srcdir)/gcc/ada/gnat_rm.texi +endif +MANUALS += \ + $(srcdir)/gcc/doc/gccint.texi \ + $(srcdir)/gcc/doc/gcc.texi \ + $(srcdir)/gcc/doc/cpp.texi \ + $(srcdir)/gcc/doc/cppinternals.texi +ifeq ($(with_fortran),yes) + MANUALS += $(srcdir)/gcc/fortran/gfortran.texi +endif +ifeq ($(with_ada),yes) + MANUALS += $(srcdir)/gcc/ada/gnat-style.texi +endif +ifeq ($(with_gomp),yes) + MANUALS += $(srcdir)/libgomp/libgomp.texi +endif +ifeq ($(with_itm),yes) + MANUALS += $(srcdir)/libitm/libitm.texi +endif +ifeq ($(with_qmath),yes) + MANUALS += $(srcdir)/libquadmath/libquadmath.texi +endif +ifeq ($(with_go),yes) + MANUALS += $(srcdir)/gcc/go/gccgo.texi +endif +ifeq ($(with_d),yes) + MANUALS += $(srcdir)/gcc/d/gdc.texi +endif +ifeq ($(with_m2),yes) + MANUALS += $(srcdir)/gcc/doc/gm2.texi +endif +ifeq ($(with_algol),yes) + MANUALS += $(srcdir)/gcc/algol68/ga68.texi +endif + +html-docs: $(build_html_stamp) +#$(build_html_stamp): $(stampdir)/05-build-html-split +$(build_html_stamp): $(stampdir)/05-build-html-nosplit + +html-makeinfo-split: $(stampdir)/05-build-html-split +$(stampdir)/05-build-html-split: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + outname=`basename {} .texi`; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(builddir)/gcc/m2 \ + -I $(buildlibdir)/libquadmath \ + -o $${outname} \ + {}' + touch $@ + +html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit +$(stampdir)/05-build-html-nosplit: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections --no-split \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(builddir)/gcc/m2 \ + -I $(buildlibdir)/libquadmath \ + -o $(CURDIR)/html/$${outname} \ + {}' + touch $@ + +# start the script only on architectures known to have slow autobuilders ... +logwatch_archs := amd64 i386 alpha armel armhf arm64 loong64 m68k \ + mips mipsel mips64el riscv64 s390x sparc x32 hurd-amd64 hurd-i386 +ifneq (,$(filter $(DEB_HOST_ARCH),$(logwatch_archs))) + start_logwatch = yes +endif + +check: $(check_stamp) +$(check_stamp): $(filter $(build_stamp) $(build_jit_stamp) $(build_hppa64_stamp) $(build_nvptx_stamp) $(build_gcn_stamp), $(build_dependencies)) \ + $(if $(filter nvptx-none, $(offload_targets)), $(install_nvptx_stamp)) \ + $(if $(filter $(gcn_target_name), $(offload_targets)), $(install_gcn_stamp)) + @echo === START $@ === + rm -f test-protocol + rm -f $(builddir)/runcheck* + + -chmod 755 $(srcdir)/contrib/test_summary + + : # needed for the plugin tests to succeed + ln -sf gcc $(builddir)/prev-gcc + ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) + +ifneq ($(with_common_libs),yes) + ifeq ($(with_cxx),yes) + ifeq (,$(filter $(DEB_TARGET_ARCH), armel armhf mipsel mips64el)) + : # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib + + : # jit test results should not end up in the libstdc++-test-summary report + if [ -f $(builddir)/gcc/testsuite/jit/jit.sum ]; then \ + mv $(builddir)/gcc/testsuite/jit/jit.log $(builddir)/gcc/testsuite/jit/jit.LOG; \ + mv $(builddir)/gcc/testsuite/jit/jit.sum $(builddir)/gcc/testsuite/jit/jit.SUM; \ + fi + + sed 's/-L[^ "]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \ + > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed + -$(ULIMIT_M); \ + set +e; \ + for d in $(buildlibdir)/libstdc++-v3/testsuite; do \ + echo "Running testsuite in $$d ..."; \ + TEST_INSTALLED=1 \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_GCC_NO_O3=1 \ + $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol2 + + cd $(builddir); \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > ../raw-test-summary + -( \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \ + ) > libstdc++-test-summary + echo 'BEGIN installed libstdc++-v3 test-summary' + cat libstdc++-test-summary + echo 'END installed libstdc++-v3 test-summary' + find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \ + | xargs -r rm -f + + if [ -f $(builddir)/gcc/testsuite/jit/jit.SUM ]; then \ + mv $(builddir)/gcc/testsuite/jit/jit.LOG $(builddir)/gcc/testsuite/jit/jit.log; \ + mv $(builddir)/gcc/testsuite/jit/jit.SUM $(builddir)/gcc/testsuite/jit/jit.sum; \ + fi + endif + endif +endif + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \ + -m 'testsuite still running ...' \ + test-protocol \ + $(builddir) \ + & +endif + + : # FIXME: https://gcc.gnu.org/PR103944 + rm -f $(srcdir)/libphobos/testsuite/libphobos.gc/forkgc2.d + + -$(ULIMIT_M); \ + set +e; \ + for d in $(checkdirs); do \ + echo "Running testsuite in $$d ..."; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + DEB_GCC_NO_O3=1 \ + $(time_command) $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + -if [ -f $(builddir)/logwatch.pid ]; then \ + kill -1 `cat $(builddir)/logwatch.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/logwatch.pid`; \ + rm -f $(builddir)/logwatch.pid; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + +ifeq ($(with_ada),yes) + -if [ -f $(builddir)/acats-killer.pid ]; then \ + kill -1 `cat $(builddir)/acats-killer.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/acats-killer.pid`; \ + rm -f $(builddir)/acats-killer.pid; \ + fi +endif + + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-summary; \ + ( \ + cd $(builddir); \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + echo 'Bootstrap comparison failure:' >> ts-include; \ + cat $(builddir)/gcc/.bad_compare >> ts-include; \ + echo '' >> ts-include; \ + echo '' >> ts-include; \ + fi; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + cat ../$(patch_stamp) >> ts-include; \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-summary; \ + if [ -n "$(testsuite_tarball)" ]; then \ + echo "Test suite used: $(testsuite_srcdir)" > test-summary; \ + echo " Do not interpret the results on its own" >> test-summary; \ + echo " but compare them with the results from" >> test-summary; \ + echo " the gcc-snapshot package." >> test-summary; \ + fi; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \ + >> test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \ + if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \ + echo '' >> test-summary; \ + cat bootstrap-summary >> test-summary; \ + fi; \ + echo 'BEGIN test-summary'; \ + cat test-summary; \ + echo 'END test-summary'; \ + fi +ifeq ($(with_d),yes) + : # the D test failures for the non-default multilibs are known, ignore them + egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp + mv -f test-summary.tmp test-summary +endif + + : # prepare the inclusion of the test results + rm -rf $(d_tst) + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test + echo "TEST COMPARE BEGIN" + for i in test-summary testsuite-comparision; do \ + [ -f $$i ] || continue; \ + cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \ + done +# more than one libgo.sum, avoid it + cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ + $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ +ifeq ($(with_go),yes) + cp -p $(buildlibdir)/libgo/libgo.sum \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ +endif +ifeq (0,1) + cd $(builddir); \ + for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \ + b=$$(basename $$i); \ + if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \ + zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \ + if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \ + echo "$$b: OK"; \ + else \ + echo "$$b: FAILURES"; \ + fi; \ + rm -f /tmp/$$b; \ + else \ + echo "Test summary for $$b is not available"; \ + fi; \ + done +endif + echo "TEST COMPARE END" + +ifneq ($(with_common_libs),yes) + if [ -f libstdc++-test-summary ]; then \ + cp libstdc++-test-summary \ + $(d_tst)/$(docdir)/$(p_xbase)/libstdc++-installed-test-summary; \ + fi + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG ]; then \ + cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG \ + $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.log; \ + cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.SUM \ + $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.sum; \ + fi +endif + + if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ + fi + + -cp usage-*.svg $(d_tst)/$(docdir)/$(p_xbase)/. + -if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/*.svg \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ + fi + + cd $(d_tst) && tar cvf ../../installed-testlogs.tar usr + rm -rf $(d_tst) + +ifeq ($(save_disk_space),yes) + rm -rf $(builddir)/gcc/testsuite/* + rm -f usage-*.svg +endif + touch $(check_stamp) + +$(check_inst_stamp): $(check_stamp) + rm -f test-inst-protocol + @echo === START $@ === + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \ + -m 'testsuite (installed) still running ...' \ + test-inst-protocol \ + $(builddir) \ + & +endif + + rm -rf check-inst + mkdir check-inst + + echo "Running testsuite ..." + -$(ULIMIT_M) ; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ + cd check-inst && $(srcdir)/contrib/test_installed \ + --with-gcc=gcc-$(CC) --with-g++=$(CXX) --with-g77=$(subst gcc,gfortran,$(CC)) \ + 2>&1 | tee test-inst-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + if [ -f $(builddir)/logwatch-inst.pid ]; then \ + kill -1 `cat $(builddir)/logwatch-inst.pid`; \ + else \ + true; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + + -chmod 755 $(srcdir)/contrib/test_summary + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-inst-summary; \ + ( \ + cd check-inst; \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-inst-summary; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \ + >> test-inst-summary; \ + awk '/^cat/, /^EOF/' raw-test-inst-summary \ + | grep -v EOF >> test-inst-summary; \ + echo 'BEGIN test-installed-summary'; \ + cat test-inst-summary; \ + echo 'END test-installed-summary'; \ + fi + + chmod 755 debian/reduce-test-diff.awk + if diff -u test-inst-summary test-summary \ + | debian/reduce-test-diff.awk > diff-summary; \ + then \ + mv -f diff-summary testsuite-comparision; \ + else \ + ( \ + echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \ + echo ''; \ + cat diff-summary; \ + ) > testsuite-comparision; \ + rm -f diff-summary; \ + fi + touch $(check_inst_stamp) + +clean: debian/control + dh_testdir + rm -f pxxx status + rm -f *-summary *-protocol testsuite-comparision summary-diff + rm -f $(srcdir)/gcc/po/*.gmo + rm -rf src-nvptx src-gcn + rm -f debian/lib{gcc,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} + fs=`echo debian/*BV* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || continue; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + rm -f $$f2; \ + done + rm -f debian/lib*gcc-s1.symbols +ifneq ($(single_package),yes) + rm -f debian/lib*{atomic$(ATOMIC_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),quadmath$(QUADMATH_SONAME),stdc++$(CXX_SONAME)}.symbols +endif + find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f + rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1 + rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local + rm -f debian/*.debhelper + -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean + rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH) + rm -f debian/arch_binaries* debian/indep_binaries* + rm -rf bin bin-gcn locales share + rm -rf check-inst + rm -f usage-*.svg + rm -f installed-*.tar* + dh_clean +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + $(cross_clean) dh_clean +endif + +# ----------------------------------------------------------------------------- +# some abbrevations for the package names and directories; +# p_XXX is the package name, d_XXX is the package directory +# these macros are only used in the binary-* targets. + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) +endif + +# if native or rtlibs build +ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) + p_base = gcc$(pkg_ver)-base + p_lbase = $(p_base) + p_xbase = gcc$(pkg_ver)-base +else + # only triggered if DEB_CROSS set + p_base = gcc$(pkg_ver)$(cross_bin_arch)-base + p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD) + p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base +endif +p_cpp_b = cpp$(pkg_ver)-for-build +p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu + +# needed for shlibs.common* generation +ifeq (,$(p_lgcc)) + p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) +endif +ifeq (,$(p_lib)) + p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +endif +p_tst = gcc$(pkg_ver)-test-results + +d = debian/tmp +d_base = debian/$(p_base) +d_xbase = debian/$(p_xbase) +d_lgcc = debian/$(p_lgcc) +d_hppa64= debian/$(p_hppa64) +d_tst = debian/$(p_tst) + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +ifeq ($(DEB_CROSS),yes) + lib_binaries := indep_binaries +else + lib_binaries := arch_binaries +endif + +# --------------------------------------------------------------------------- + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + include debian/rules.d/binary-snapshot.mk +else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) + include debian/rules.d/binary-toolchain.mk +else + +ifneq ($(with_base_only),yes) +ifneq ($(DEB_CROSS),yes) +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +endif +endif +endif + +ifneq ($(BACKPORT),true) + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifneq ($(with_base_only),yes) + +# always include to get some definitions +include debian/rules.d/binary-libgcc.mk + +ifeq ($(with_libqmath),yes) + include debian/rules.d/binary-libquadmath.mk +endif + +ifeq ($(with_libgmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifeq ($(with_libitm),yes) + include debian/rules.d/binary-libitm.mk +endif + +ifeq ($(with_libatomic),yes) + include debian/rules.d/binary-libatomic.mk +endif + +ifeq ($(with_libbacktrace),yes) + include debian/rules.d/binary-libbacktrace.mk +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp.mk +endif + +ifeq ($(with_libssp),yes) + include debian/rules.d/binary-libssp.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc.mk + include debian/rules.d/binary-libobjc.mk +endif + +ifeq ($(with_go),yes) + include debian/rules.d/binary-go.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx.mk +endif + +ifeq ($(with_libasan),yes) + include debian/rules.d/binary-libasan.mk +endif + +ifeq ($(with_liblsan),yes) + include debian/rules.d/binary-liblsan.mk +endif + +ifeq ($(with_libtsan),yes) + include debian/rules.d/binary-libtsan.mk +endif + +ifeq ($(with_libubsan),yes) + include debian/rules.d/binary-libubsan.mk +endif + +ifeq ($(with_libhwasan),yes) + include debian/rules.d/binary-libhwasan.mk +endif + +ifeq ($(with_libvtv),yes) + include debian/rules.d/binary-libvtv.mk +endif + +ifeq ($(with_f77),yes) + include debian/rules.d/binary-f77.mk +endif + +ifeq ($(with_fortran),yes) + include debian/rules.d/binary-fortran.mk +endif + +ifeq ($(with_ada),yes) + include debian/rules.d/binary-ada.mk +endif + +ifeq ($(with_d),yes) + include debian/rules.d/binary-d.mk +endif + +ifeq ($(with_m2),yes) + include debian/rules.d/binary-m2.mk +endif + +ifeq ($(with_rs),yes) + include debian/rules.d/binary-rust.mk +endif + +ifeq ($(with_cobol),yes) + include debian/rules.d/binary-cobol.mk +endif + +ifeq ($(with_algol),yes) + include debian/rules.d/binary-algol68.mk +endif + +ifeq ($(with_libcc1),yes) + include debian/rules.d/binary-libcc1.mk +endif + +ifeq ($(with_jit),yes) + include debian/rules.d/binary-libgccjit.mk + include debian/rules.d/binary-libdiag.mk +endif + +ifeq ($(with_offload_nvptx),yes) + include debian/rules.d/binary-nvptx.mk +endif + +ifeq ($(with_offload_gcn),yes) + include debian/rules.d/binary-gcn.mk +endif + +ifeq ($(with_libnof),yes) + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + include debian/rules.d/binary-nof.mk + endif +endif + +ifeq ($(with_softfloat),yes) + include debian/rules.d/binary-softfloat.mk +endif + +# gcc must be moved/built after g77 and g++ +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-gcc.mk +endif + +ifeq ($(with_hppa64),yes) + include debian/rules.d/binary-hppa64.mk +endif + +endif # with_base_only +endif # BACKPORT +endif # ($(single_package),yes) + +# ---------------------------------------------------------------------- +install: $(install_dependencies) + +$(install_dummy_stamp): $(build_dummy_stamp) + @echo === START $@ === + touch $(install_dummy_stamp) + +$(install_snap_stamp): $(build_dependencies) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # install files prepared in the hppa64 build target + cd $(d) && tar xvf ../../installed-hppa64.tar.xz +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15*; \ + fi + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done +endif + +ifeq ($(with_jit),yes) + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + + +$(install_tc_stamp): $(build_dependencies) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # install files prepared in the hppa64 build target + cd $(d) && tar xvf ../../installed-hppa64.tar.xz +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13*; \ + fi + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done +endif + +ifeq ($(with_jit),yes) + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_tc_stamp) + + +$(install_stamp): $(build_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64)) + + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ + fi + rm -f $(binary_stamp)* + if [ -f saved-stamp-hppa64 ]; then \ + mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/$(lib32loc)/debug +endif +ifeq ($(biarch64),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif +ifeq ($(biarchn32),yes) + mkdir -p $(d)/$(PF)/$(libn32)/debug +endif +ifeq ($(biarchx32),yes) + mkdir -p $(d)/$(PF)/libx32/debug +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64)) +ifneq ($(DEB_TARGET_ARCH),x32) + : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 + : # (this works when CONFARGS contains '--disable-multilib') + ln -s $(configured_libdir) $(d)/lib64 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/lib64 +endif +endif +ifeq ($(DEB_TARGET_ARCH),x32) + : # link lib to libx32 and $(PF)/lib to $(PF)/libx32 + ln -s $(configured_libdir) $(d)/libx32 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/libx32 +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + @echo III: =============== upstream install $(DEB_TARGET_ARCH) =============== + find $(d) ! -type d + @echo III: =============== end upstream install $(DEB_TARGET_ARCH) =============== + +ifeq ($(with_m2),yes) + ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + : # FIXME: libm2 libs are installed wrong for libgm2 + for i in $(d)/$(PF)/lib/libm2*; do \ + test -e $$i || continue; \ + echo mv $$i $(d)/$(PFL)/lib/. ; \ + mv $$i $(d)/$(PFL)/lib/. ; \ + done + endif +endif + + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + @echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib) + ls $(d)/$(PF)/$(TARGET_ALIAS)/lib + set -x; \ + if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \ + fi + for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \ + [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \ + done +else + ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec' '*.modules.json'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + endif +endif + +ifneq (,$(cmd_prefix)) + for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \ + [ -f "$$i" ] || continue; \ + mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \ + done +endif + +ifeq ($(with_libcxxdbg),yes) + : # FIXME: the libstdc++ gdb.py file is installed with a wrong name + for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \ + [ -f $$i ] || continue; \ + d=$$(dirname $$i); \ + b=$$(basename $$i); \ + t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \ + mv $$i $$d/$$t; \ + done +endif + + : # fix permissions of liblto_plugin.so + chmod 644 $(d)/$(gcc_lexec_dir)/liblto_plugin.so + + : # remove rpath settings from binaries and shared libs + -chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) + + for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f + +ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + + ifeq ($(with_fortran),yes) + for i in g77; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif +endif + +ifneq ($(with_libgnat),yes) + rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* +endif + +# ifeq ($(with_ada),yes) +# : # rename files (versioned ada binaries) +# for i in ; do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# mv $(d)/$(PF)/share/man/man1/$$i.1 \ +# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ +# done +# for i in $(GNAT_TOOLS); do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# done +# endif + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \ + done + + chmod 755 debian/dh_* + +ifneq ($(with_common_libs),yes) +# for native builds, the default ml libs are always available; no need for a placeholder +# apparently this changed with newer dpkg versions (1.18.7?) ... + ( \ + echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)'; \ + echo 'libstdc++ $(CXX_SONAME) $(p_lib)'; \ + echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ + echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ + echo 'libgdiagnostics $(DIAGNOSTICS_SONAME) libgdiagnostocs$(DIAGNOSTICS_SONAME)$(cross_lib_arch)'; \ + ) > debian/shlibs.common + $(foreach ml,32 64 n32 x32, \ + ( \ + echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))'; \ + echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))'; \ + echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ + echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ + ) > debian/shlibs.common$(ml); \ + ) +endif + + @echo III: =============== fixed install $(DEB_TARGET_ARCH) =============== + find $(d) ! -type d -print + @echo III: =============== end fixed install $(DEB_TARGET_ARCH) =============== + touch $(install_stamp) + +$(install_jit_stamp): $(build_jit_stamp) $(install_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + + : # install files prepared in the jit build target + cd $(d) && tar xvf ../../installed-jit.tar.xz + + @echo XXXXX `date -R` + touch $(install_jit_stamp) + +$(install_nvptx_stamp): $(build_nvptx_stamp) + @echo === START $@ === + dh_testdir + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-nvptx + mkdir -p $(d)-nvptx/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_nvptx) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-nvptx \ + install + + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1 + rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed} + rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1* + rm -rf $(d)-nvptx/$(PF)/lib{32,64,n32,x32} + + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + find $(d)-nvptx -name \*.la | xargs rm -f + rm -rf $(d)-nvptx/$(PF)/nvptx-none/include + -find $(d)-nvptx -type d -empty -delete + + : # a complete compiler installation needed for running the tests + ln -sf /usr/bin/nvptx-none-ar $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ar + ln -sf /usr/bin/nvptx-none-as $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/as + ln -sf /usr/bin/nvptx-none-ld $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ld + ln -sf /usr/bin/nvptx-none-ranlib $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ranlib + + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_nvptx_stamp) + +$(install_gcn_stamp): $(build_gcn_stamp) + @echo === START $@ === + dh_testdir + ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-gcn + mkdir -p $(d)-gcn/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_gcn) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-gcn \ + install + + find $(d)-gcn + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(gcn_target_name)/$(versiondir)/install-tools + rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-gcn/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-gcn/$(PF)/bin/*-{gcov*,lto-dump}-$(versiondir) + rm -rf $(d)-gcn/$(PF)/share/man/man1/*-{cpp,gcov*,gfortran,g++,lto-dump}-$(versiondir).1 + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,include-fixed} + rm -rf $(d)-gcn/$(PF)/lib/libc[cp]1* + rm -rf $(d)-gcn/$(PF)/lib{32,64,n32,x32} + + for d in . $$(cd $(d)-gcn/$(PF)/$(gcn_target_name)/lib && echo gfx9* gfx1*); do \ + mv -f $(d)-gcn/$(PF)/$(gcn_target_name)/lib/$$d/*.{a,spec} \ + $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ + mv -f $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/$$d/*.a \ + $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ + done + + find $(d)-gcn -name \*.la | xargs rm -f + rm -rf $(d)-gcn/$(PF)/$(gcn_target_name)/include + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/include + rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/gfx* + + : # a complete compiler installation needed for running the tests +ifeq ($(gcn_tools_llvm_version),tools) + for t in ar as ld nm ranlib; do \ + ln -sf /usr/$(gcn_target_name)/bin/$$t \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/$$t; \ + done +else + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/as + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm + ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib \ + $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib +endif + : # fix permissions of liblto_plugin.so + chmod 644 $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/liblto_plugin.so + + -find $(d)-gcn -type d -empty -delete + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-gcn + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_gcn_stamp) + +$(install_hppa64_stamp): $(build_hppa64_stamp) + @echo === START $@ === + dh_testdir + dh_testroot + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + : # install files prepared in the hppa64 build target + cd $(d_hppa64) && tar xvf ../../installed-hppa64.tar.xz + + touch $(install_hppa64_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ + > arch_binaries.tmp + mv debian/arch_binaries.tmp debian/arch_binaries + sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch + cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all + +# see #879054 for the "test ! -s" tests, needed for the rtlibs stage +binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) debian/arch_binaries.all + test ! -s debian/arch_binaries.all || \ + dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + @echo LTO_PLUGIN debug + -find debian -name liblto_plugin.so -ls + test ! -s debian/arch_binaries.all || \ + dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + -find debian -name liblto_plugin.so -ls +ifeq ($(with_ada),yes) + find $$(ls -d $(d_gnat) $(d_gnatsjlj) $(d_snap) 2>/dev/null) \ + -name '*.ali' | xargs -r chmod 444 +endif + @set -e; \ + pkgs="$$(sed 's/^/-p/;/-for-host/d' debian/arch_binaries | xargs)"; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + fi + @set -e; \ + pkgs="$$(sed -n 's/^/-p/;/-for-host/p' debian/arch_binaries | xargs)"; \ + if [ -n "$$pkgs" ]; then \ + echo $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ + fi + @set -e; \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi +ifneq ($(single_package),yes) + ifeq ($(with_libcompatgcc),yes) + cp -p debian/.debhelper/generated/$(p_lgcc)/triggers \ + debian/.debhelper/generated/$(subst gcc-s,gcc,$(p_lgcc))/. + endif +endif + test ! -s debian/arch_binaries.all || \ + dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + +ifneq ($(single_package),yes) + : # remove empty directories, when all components are in place + -find $(d) -type d -empty -delete + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d +endif + -du -s -BM . + -du -s -BM .. + @echo XXXXX `date -R` + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ + > indep_binaries.tmp + mv debian/indep_binaries.tmp debian/indep_binaries + sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch + cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all + +binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) debian/indep_binaries.all + find debian -name _formulas.log -delete -print + dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + : # the export should be harmless for the binary indep packages of a native build + export DEB_HOST_ARCH=$(TARGET); \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + export DEB_HOST_ARCH=$(TARGET); \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) + for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ + p=$${p#-p*}; \ + case "$$p" in \ + lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + esac; \ + done +endif + + dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + + @echo XXXXX `date -R` + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build build-indep build-arch clean binary-indep binary-arch binary +.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all +.NOTPARALLEL: diff --git a/runcheck.sh b/runcheck.sh new file mode 100644 index 0000000..c7d6cfb --- /dev/null +++ b/runcheck.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +mkdir -p build + +abi=${CC##* } +base=build/runcheck$abi + +cat >$base.c < +int main() +{ + printf("$abi"); + return 0; +} +EOF + + +if ${CC:-gcc} -o $base $base.c 2>/dev/null; then + if [ "$($base 2>&1)" = "$abi" ]; then + printf "%s" $abi > $base.out + printf "%s" $abi + fi +fi diff --git a/sarif-replay.1 b/sarif-replay.1 new file mode 100644 index 0000000..8680eae --- /dev/null +++ b/sarif-replay.1 @@ -0,0 +1,6 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH SARIF-REPLAY-15 "1" "June 2026" "sarif-replay-15 15" "User Commands" +.SH NAME +sarif-replay-15 \- Replay results from one or more .sarif files as if they were GCC diagnostics +.SH DESCRIPTION +debian/gcc\-15\-diagnostics/usr/bin/sarif\-replay\-15: error while loading shared libraries: libgdiagnostics.so.0: cannot open shared object file: No such file or directory diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..32ab49b --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,12 @@ +invalid-arch-string-in-source-relation + +quilt-build-dep-but-no-series-file + +# lintian can't handle (>= ${gcc:Version}) +weak-library-dev-dependency + +# yes, still generating the series file for the build +patch-file-present-but-not-mentioned-in-series + +# lintian is so wrong ... +field-too-long diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..c757929 --- /dev/null +++ b/tests/control @@ -0,0 +1,38 @@ +Tests: runtime-libs +Depends: apt, python3-minimal +Restrictions: allow-stderr + +Tests: libc-link +Depends: gcc-15, libc6-dev | libc-dev + +Tests: libstdcxx-link +Depends: g++-15 + +Tests: libgfortran-link +Depends: gfortran-15 + +Tests: libgo-link +Depends: gccgo-15 + +Tests: libgomp-link +Depends: gfortran-15, gcc-15 + +Tests: libgm2-link +Depends: gm2-15 + +Tests: libgnat-link +Depends: gnat-15 + +Tests: libgcobol-link +Architecture: arm64 amd64 +Depends: gcobol-15 + +Tests: libga68-link +Depends: ga68-15 + +Tests: libgphobos-link +Depends: gdc-15 +Architecture: !powerpc !ppc64 !ppc64el + +Tests: shlib-build +Depends: gcc-15, libc6-dev | libc-dev diff --git a/tests/libc-link b/tests/libc-link new file mode 100755 index 0000000..fbe4224 --- /dev/null +++ b/tests/libc-link @@ -0,0 +1,30 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libc, to verify +# basic compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libctest.c +#include +#include + +int main() +{ + assert (1 > 0); + assert (strcmp ("hello", "hello") == 0); + return 0; +} +EOF + +$CC -o libctest libctest.c +echo "build: OK" +[ -x libctest ] +./libctest +echo "run: OK" diff --git a/tests/libga68-link b/tests/libga68-link new file mode 100755 index 0000000..9b7bd94 --- /dev/null +++ b/tests/libga68-link @@ -0,0 +1,28 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libga68, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GA68=ga68-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.a68 +begin + putchar ("H"); + putchar ("e"); + putchar ("l"); + putchar ("l"); + putchar ("o"); + putchar ("!"); + puts ("\n") +end +EOF + +$GA68 hello.a68 +echo "build: OK" +ldd a.out +[ -x a.out ] +./a.out +echo "run: OK" diff --git a/tests/libgcobol-link b/tests/libgcobol-link new file mode 100755 index 0000000..7767ba6 --- /dev/null +++ b/tests/libgcobol-link @@ -0,0 +1,30 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgcobol, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GCOB=gcobol-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.cob + + IDENTIFICATION DIVISION. + PROGRAM-ID. hello. + + PROCEDURE DIVISION. + DISPLAY "Howdy!". + + + + + +EOF + +$GCOB hello.cob +echo "build: OK" +ldd a.out +[ -x a.out ] +./a.out +echo "run: OK" diff --git a/tests/libgfortran-link b/tests/libgfortran-link new file mode 100755 index 0000000..70bf6b2 --- /dev/null +++ b/tests/libgfortran-link @@ -0,0 +1,22 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +F95=gfortran-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libgfortran.f + program hello + print *, "Hello World!" + end program hello +EOF + +$F95 -o ftest libgfortran.f +echo "build: OK" +ldd ftest +[ -x ftest ] +./ftest +echo "run: OK" diff --git a/tests/libgm2-link b/tests/libgm2-link new file mode 100755 index 0000000..2f975c3 --- /dev/null +++ b/tests/libgm2-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GM2=gm2-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.mod +MODULE hello ; + +FROM StrIO IMPORT WriteString, WriteLn ; + +BEGIN + WriteString ('hello world') ; WriteLn +END hello. +EOF + +$GM2 -g -o hello hello.mod +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" diff --git a/tests/libgnat-link b/tests/libgnat-link new file mode 100755 index 0000000..c357a55 --- /dev/null +++ b/tests/libgnat-link @@ -0,0 +1,24 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgnat, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GNATMAKE=gnatmake-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.adb +with Ada.Text_IO; use Ada.Text_IO; +procedure Hello is +begin + Put_Line("Hello gnatmake."); +end Hello; +EOF + +$GNATMAKE -eS -vm -o adatest hello.adb +echo "build: OK" +ldd adatest +[ -x adatest ] +./adatest +echo "run: OK" diff --git a/tests/libgo-link b/tests/libgo-link new file mode 100755 index 0000000..76a3f2a --- /dev/null +++ b/tests/libgo-link @@ -0,0 +1,25 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GO=go-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello.go +package main +import "fmt" +func main() { + fmt.Println("hello world") +} +EOF + +$GO run hello.go +$GO build hello.go +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" diff --git a/tests/libgomp-link b/tests/libgomp-link new file mode 100755 index 0000000..ec7dbc4 --- /dev/null +++ b/tests/libgomp-link @@ -0,0 +1,76 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV +F95=gfortran-$BV + +cd "$AUTOPKGTEST_TMP" +cat < hello-gomp.c +#include +#include +#include +int main (int argc, char *argv[]) { + +int nthreads, tid; + +/* Fork a team of threads giving them their own copies of variables */ +#pragma omp parallel private(nthreads, tid) + { + + /* Obtain thread number */ + tid = omp_get_thread_num(); + printf("Hello World from thread = %d\n", tid); + + /* Only master thread does this */ + if (tid == 0) + { + nthreads = omp_get_num_threads(); + printf("Number of threads = %d\n", nthreads); + } + + } /* All threads join master thread and disband */ +} +EOF + +$CC -fopenmp -o gctest hello-gomp.c +echo "build: OK" +ldd gctest +[ -x gctest ] +./gctest +echo "run: OK" + +cat < hello-gomp.f + program omp_par_do + implicit none + + integer, parameter :: n = 100 + real, dimension(n) :: dat, result + integer :: i + + !$OMP PARALLEL DO + do i = 1, n + result(i) = my_function(dat(i)) + end do + !$OMP END PARALLEL DO + + contains + + function my_function(d) result(y) + real, intent(in) :: d + real :: y + + ! do something complex with data to calculate y + end function my_function + end program omp_par_do +EOF + +$F95 -fopenmp -o gftest hello-gomp.f +echo "build: OK" +ldd gftest +[ -x gftest ] +./gftest +echo "run: OK" diff --git a/tests/libgphobos-link b/tests/libgphobos-link new file mode 100755 index 0000000..8c1fe26 --- /dev/null +++ b/tests/libgphobos-link @@ -0,0 +1,32 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgphobos, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +GDC=gdc-$BV + +if ! dpkg -l libgphobos-$BV-dev >/dev/null 2>&1; then + echo "skip test on architecture without libgphobos-dev" + exit 0 +fi + +cd "$AUTOPKGTEST_TMP" +cat < libgphobos.d +immutable str = "Hello, World!"; + +void main() +{ + // Scoped and selective imports can be used. + import std.stdio : writeln; + writeln(str); +} +EOF + +$GDC -o dtest libgphobos.d +echo "build: OK" +ldd dtest +[ -x dtest ] +./dtest +echo "run: OK" diff --git a/tests/libstdcxx-link b/tests/libstdcxx-link new file mode 100755 index 0000000..ca39928 --- /dev/null +++ b/tests/libstdcxx-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libstdc++, +# to verify basic compile-time and run-time linking functionality. + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CXX=g++-$BV + +cd "$AUTOPKGTEST_TMP" +cat < libstdcxx.cc +#include +using namespace std; + +int main() { + cout << "Hello! World!\n"; + return 0; +} +EOF + +$CXX -o cxxtest libstdcxx.cc +echo "build: OK" +ldd cxxtest +[ -x cxxtest ] +./cxxtest +echo "run: OK" diff --git a/tests/runtime-libs b/tests/runtime-libs new file mode 100755 index 0000000..b849ae1 --- /dev/null +++ b/tests/runtime-libs @@ -0,0 +1,29 @@ +#!/bin/sh +# autopkgtest check: start a "simple" program and check that +# dynamic loading of modules works + +set -e + + +cd "$AUTOPKGTEST_TMP" + +echo "Running exexutable linked with libgcc and libstdc++ (apt)..." +if [ -x /usr/bin/apt ]; then + apt=/usr/bin/apt +elif [ -x /bin/apt ]; then + apt=/bin/apt +else + echo "apt not found" + exit 1 +fi + +ldd $apt +apt show libgcc-s1 libstdc++6 + +echo "Running dynamically linked executable (python3)..." +python3 -c 'print("Hello World!")' +echo "OK" + +echo "Loading extension module..." +python3 -c 'import _hashlib; print(_hashlib.__dict__)' +echo "OK" diff --git a/tests/shlib-build b/tests/shlib-build new file mode 100755 index 0000000..751fadf --- /dev/null +++ b/tests/shlib-build @@ -0,0 +1,45 @@ +#!/bin/sh +# autopkgtest check: Build and link against a simple shared library, to test +# basic binutils compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) +CC=gcc-$BV + +cd "$AUTOPKGTEST_TMP" +cat < testlib.c + +int ultimate_answer() +{ + return 42; +} +EOF + +$CC -Wall -Werror -shared -o libultimate.so testlib.c +echo "library build: OK" + +# should export the symbol +nm -D libultimate.so | grep -q 'T ultimate_answer' + +# link it against a program +cat < testprog.c +#include + +int ultimate_answer(); + +int main() +{ + assert (ultimate_answer() == 42); + return 0; +} +EOF + +$CC -Wall -Werror -L . -o testprog testprog.c -lultimate +echo "program build: OK" +[ -x testprog ] +LD_LIBRARY_PATH=. ./testprog +echo "run: OK" diff --git a/usage-wrapper.py b/usage-wrapper.py new file mode 100755 index 0000000..bf8831f --- /dev/null +++ b/usage-wrapper.py @@ -0,0 +1,399 @@ +#!/usr/bin/env python3 + +import argparse +import math +import os +import subprocess +import sys +import threading +import time + +try: + import psutil +except ImportError: + print(f'{sys.argv[0]}: the psutil module is required.', file=sys.stderr) + sys.exit(1) + +try: + import matplotlib + import matplotlib.pyplot as plt + from matplotlib.lines import Line2D +except ImportError: + plt = None + + +def to_gigabyte(value): + return value / 1024**3 + + +INTERVAL = 0.33 +LW = 0.5 + +global_n = 0 +global_cpu_data_sum = 0 +global_memory_data_sum = 0 +global_cpu_data_max = 0 +global_memory_data_min = to_gigabyte(psutil.virtual_memory().total) +global_memory_data_max = 0 +global_swap_data_min = to_gigabyte(psutil.swap_memory().total) +global_swap_data_max = 0 +global_disk_data_total = to_gigabyte(psutil.disk_usage('.').total) +global_disk_data_start = to_gigabyte(psutil.disk_usage('.').used) + +global_timestamps = [] +global_cpu_data = [] +global_memory_data = [] +global_process_usage = [] +global_process_hogs = {} + +process_name_map = {} +lock = threading.Lock() + +done = False +start_ts = time.monotonic() +cpu_count = psutil.cpu_count() + +special_processes = {'ld': 'gold', + 'WPA': 'deepskyblue', + 'WPA-stream': 'lightblue', + 'ltrans': 'forestgreen', + 'as': 'coral', + 'GCC': 'gray', + 'clang': 'darkgray', + 'rust': 'brown', + 'go': 'hotpink', + 'dwz': 'limegreen', + 'rpm/dpkg': 'plum'} +for i, k in enumerate(special_processes.keys()): + process_name_map[k] = i + + +descr = 'Run command and measure memory and CPU utilization' +parser = argparse.ArgumentParser(description=descr) +parser.add_argument('command', metavar='command', + help='Command', nargs=argparse.REMAINDER) +parser.add_argument('-c', '--command', dest='command1', + help='command as a single argument') +parser.add_argument('-v', '--verbose', action='store_true', help='Verbose') +parser.add_argument('--summary-only', dest='summary_only', + action='store_true', + help='No plot, just a summary at the end') +parser.add_argument('--base-memory', action='store_true', + help='Adjust memory to include the system load') +parser.add_argument('-s', '--separate-ltrans', action='store_true', + help='Separate LTRANS processes in graph') +parser.add_argument('-o', '--output', default='usage.svg', + help='Path to output image (default: usage.svg)') +parser.add_argument('-r', '--ranges', + help='Plot only the selected time ranges ' + '(e.g. 20-30, 0-1000)') +parser.add_argument('-t', '--title', help='Graph title') +parser.add_argument('-m', '--memory-hog-threshold', type=float, + help='Report about processes that consume the amount of ' + 'memory (in GB)') +parser.add_argument('-f', '--frequency', type=float, + default=INTERVAL, + help='Frequency of measuring (in seconds)') +parser.add_argument('-j', '--jobs', type=int, + default=cpu_count, dest='used_cpus', + help='Scale up CPU data to used CPUs ' + 'instead of available CPUs') +args = parser.parse_args() + +if args.command1 and args.command: + print(f'{sys.argv[0]}: either use -c "", ' + 'or append the command', file=sys.stderr) + sys.exit(1) + +if not args.summary_only and plt is None: + print(f'{sys.argv[0]}: use --summary-only, ' + 'or install the matplotlib module', file=sys.stderr) + sys.exit(1) + +cpu_scale = cpu_count / args.used_cpus + + +def get_process_name(proc): + name = proc.name() + cmdline = proc.cmdline() + if name == 'ld' or name == 'ld.gold': + return 'ld' + elif name == 'lto1-wpa': + return 'WPA' + elif name == 'lto1-wpa-stream': + return 'WPA-stream-out' + elif name in ('cc1', 'cc1plus', 'cc1objc', 'f951', 'd21', 'go1', 'gnat1'): + return 'GCC' + elif name.startswith('clang'): + return 'clang' + elif name.startswith('rust'): + return 'rust' + elif name in ('as', 'dwz', 'go'): + return name + elif name == 'rpmbuild' or name.startswith('dpkg'): + return 'rpm/dpkg' + elif '-fltrans' in cmdline: + if args.separate_ltrans: + return 'ltrans-%d' % proc.pid + else: + return 'ltrans' + return None + + +def record_process_memory_hog(proc, memory, timestamp): + if args.memory_hog_threshold: + if memory >= args.memory_hog_threshold: + cmd = ' '.join(proc.cmdline()) + tpl = (memory, timestamp) + if cmd not in global_process_hogs: + global_process_hogs[cmd] = tpl + elif memory > global_process_hogs[cmd][0]: + global_process_hogs[cmd] = tpl + + +def record(): + global global_n, global_cpu_data_sum, global_cpu_data_max + global global_memory_data_sum, global_memory_data_min + global global_memory_data_max + global global_swap_data_min, global_swap_data_max + + active_pids = {} + while not done: + timestamp = time.monotonic() - start_ts + used_cpu = psutil.cpu_percent(interval=args.frequency) * cpu_scale + used_memory = to_gigabyte(psutil.virtual_memory().used) + used_swap = to_gigabyte(psutil.swap_memory().used) + if not args.summary_only: + global_timestamps.append(timestamp) + global_memory_data.append(used_memory) + global_cpu_data.append(used_cpu) + + global_n += 1 + global_cpu_data_sum += used_cpu + global_memory_data_sum += used_memory + global_cpu_data_max = max(global_cpu_data_max, used_cpu) + global_memory_data_min = min(global_memory_data_min, used_memory) + global_memory_data_max = max(global_memory_data_max, used_memory) + global_swap_data_min = min(global_swap_data_min, used_swap) + global_swap_data_max = max(global_swap_data_max, used_swap) + + entry = {} + seen_pids = set() + for proc in psutil.Process().children(recursive=True): + try: + memory = to_gigabyte(proc.memory_info().rss) + record_process_memory_hog(proc, memory, timestamp) + name = get_process_name(proc) + if name: + seen_pids.add(proc.pid) + if proc.pid not in active_pids: + active_pids[proc.pid] = proc + else: + proc = active_pids[proc.pid] + cpu = proc.cpu_percent() / args.used_cpus + if name not in process_name_map: + length = len(process_name_map) + process_name_map[name] = length + if name not in entry: + entry[name] = {'memory': 0, 'cpu': 0} + entry[name]['cpu'] += cpu + # FIXME: ignore WPA streaming memory - COW makes it bogus + if name != 'WPA-stream-out': + entry[name]['memory'] += memory + except Exception: + # the process can be gone + pass + for pid in list(active_pids.keys()): + if pid not in seen_pids: + del active_pids[pid] + if args.verbose: + print(entry, flush=True) + if not args.summary_only: + global_process_usage.append(entry) + + +def stack_values(process_usage, key): + stacks = [] + for _ in range(len(process_name_map)): + stacks.append([]) + for values in process_usage: + for k, v in process_name_map.items(): + if k in values: + stacks[v].append(values[k][key]) + else: + stacks[v].append(0) + return stacks + + +def get_footnote(): + hostname = os.uname()[1].split('.')[0] + cpu_average = global_cpu_data_sum / global_n + cpu_max = global_cpu_data_max + base_memory = global_memory_data_min + peak_memory = global_memory_data_max + total_mem = to_gigabyte(psutil.virtual_memory().total) + return (f'host: {hostname}; CPUs: {args.used_cpus}/{cpu_count};' + f' CPU avg: {cpu_average:.0f}%;' + f' CPU max: {cpu_max:.0f}%;' + f' base memory: {base_memory:.1f} GB;' + f' peak memory: {peak_memory:.1f} GB;' + f' total memory: {total_mem:.1f} GB') + + +def get_footnote2(): + peak_swap = global_swap_data_max + total_swap = to_gigabyte(psutil.swap_memory().total) + disk_total = global_disk_data_total + disk_start = global_disk_data_start + disk_end = to_gigabyte(psutil.disk_usage('.').used) + disk_delta = disk_end - disk_start + return (f'swap peak/total: {peak_swap:.1f}/{total_swap:.1f} GB;' + f' disk start/end/total: {disk_start:.1f}/{disk_end:.1f}/{disk_total:.1f} GB;' + f' disk delta: {disk_delta:.1f} GB') + + +def generate_graph(time_range): + timestamps = [] + cpu_data = [] + memory_data = [] + process_usage = [] + + # filter date by timestamp + for i, ts in enumerate(global_timestamps): + if not time_range or time_range[0] <= ts and ts <= time_range[1]: + timestamps.append(ts) + cpu_data.append(global_cpu_data[i]) + memory_data.append(global_memory_data[i]) + process_usage.append(global_process_usage[i]) + + if not timestamps: + if args.verbose: + print('No data for range: %s' % str(time_range)) + return + + peak_memory = max(memory_data) + + fig, (cpu_subplot, mem_subplot) = plt.subplots(2, sharex=True) + title = args.title if args.title else '' + if time_range: + title += ' (%d-%d s)' % (time_range[0], time_range[1]) + fig.suptitle(title, fontsize=17) + fig.set_figheight(5) + fig.set_figwidth(10) + # scale cpu axis + local_peak_cpu = max(cpu_data) + cpu_ylimit = (local_peak_cpu // 10) * 11 + 5 + if cpu_ylimit > 200: + cpu_ylimit = 200 + cpu_subplot.set_title('CPU usage') + cpu_subplot.set_ylabel('%') + cpu_subplot.plot(timestamps, cpu_data, c='blue', lw=LW, label='total') + cpu_subplot.set_ylim([0, cpu_ylimit]) + cpu_subplot.axhline(color='r', alpha=0.5, y=100.0 / args.used_cpus, lw=LW, + linestyle='dotted', label='single core') + cpu_subplot.set_xlim(left=time_range[0] if time_range else 0) + cpu_subplot.grid(True) + + mem_subplot.plot(timestamps, memory_data, c='blue', lw=LW, label='total') + mem_subplot.set_title('Memory usage') + mem_subplot.set_ylabel('GB') + mem_subplot.set_xlabel('time') + + # scale it to a reasonable limit + limit = 1 + while peak_memory > limit: + limit *= 2 + if limit > 2 and limit * 0.75 >= peak_memory: + limit = int(limit * 0.75) + mem_subplot.set_ylim([0, 1.1 * limit]) + mem_subplot.set_yticks(range(0, limit + 1, math.ceil(limit / 8))) + mem_subplot.grid(True) + + # Try to use the newer colormaps attribute; if not available, fallback + try: + colors = list(matplotlib.colormaps['tab20c'].colors * 100) + except AttributeError: + colors = list(plt.cm.get_cmap('tab20c').colors * 100) + for name, color in special_processes.items(): + if name in process_name_map: + colors[process_name_map[name]] = color + + mem_stacks = stack_values(process_usage, 'memory') + cpu_stacks = stack_values(process_usage, 'cpu') + if mem_stacks: + mem_subplot.stackplot(timestamps, mem_stacks, + colors=colors) + cpu_subplot.stackplot(timestamps, cpu_stacks, + colors=colors) + + # generate custom legend + colors = special_processes.values() + custom_lines = [Line2D([0], [0], color=x, lw=5) for x in colors] + custom_lines.insert(0, Line2D([0], [0], color='b', lw=LW)) + custom_lines.insert(0, Line2D([0], [0], color='r', alpha=0.5, + linestyle='dotted', lw=LW)) + names = ['single core', 'total'] + list(special_processes.keys()) + fig.legend(custom_lines, names, loc='right', prop={'size': 6}) + + filename = args.output + if time_range: + tr = '-%d-%d' % (time_range[0], time_range[1]) + filename = os.path.splitext(args.output)[0] + tr + '.svg' + plt.subplots_adjust(bottom=0.15) + plt.figtext(0.1, 0.04, get_footnote(), fontsize='small') + plt.figtext(0.1, 0.01, get_footnote2(), fontsize='small') + plt.savefig(filename) + if args.verbose: + print('Saving plot to %s' % filename) + + +def summary(): + print(f'SUMMARY: {get_footnote()}') + print(f'SUMMARY: {get_footnote2()}') + if global_process_hogs: + print(f'PROCESS MEMORY HOGS (>={args.memory_hog_threshold:.1f} GB):') + items = sorted(global_process_hogs.items(), key=lambda x: x[1][0], + reverse=True) + for cmdline, (memory, ts) in items: + print(f' {memory:.1f} GB: {ts:.1f} s: {cmdline}') + + +thread = threading.Thread(target=record, args=()) +thread.start() + +ranges = [] +if args.ranges: + for r in args.ranges.split(','): + parts = r.split('-') + assert len(parts) == 2 + ranges.append([int(x) for x in parts]) + +if args.verbose: + print('Ranges are %s' % str(ranges)) + print('Running command', flush=True) + +cp = None +try: + if args.command1: + cp = subprocess.run(args.command1, shell=True) + else: + cp = subprocess.run(args.command) +except KeyboardInterrupt: + rv = 2 +finally: + done = True + thread.join() + summary() + if global_memory_data: + min_memory = min(global_memory_data) + if not args.base_memory: + global_memory_data = [x - min_memory for x in global_memory_data] + + if plt: + generate_graph(None) + for r in ranges: + generate_graph(r) + if cp: + rv = cp.returncode + +sys.exit(rv) diff --git a/watch b/watch new file mode 100644 index 0000000..e20ee9a --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=4 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(15\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate diff --git a/watch.snap b/watch.snap new file mode 100644 index 0000000..5bf474e --- /dev/null +++ b/watch.snap @@ -0,0 +1,3 @@ +version=4 +ftp://gcc.gnu.org/pub/gcc/snapshots/(16-[\d]+)/ \ + gcc-16-([\d\.]+)\.tar\.xz debian uupdate -- 2.39.5

    + The API documentation, rendered into HTML, can be viewed online + for each GCC release + and +--- a/src/libstdc++-v3/doc/xml/api.xml ++++ b/src/libstdc++-v3/doc/xml/api.xml +@@ -40,6 +40,11 @@ + + + ++ The source-level documentation for this release can be viewed offline. ++ ++ ++ ++ + The API documentation, rendered into HTML, can be viewed online + for each GCC release + and diff --git a/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff b/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff new file mode 100644 index 0000000..f297c7a --- /dev/null +++ b/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff @@ -0,0 +1,13 @@ +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -130,7 +130,9 @@ do_latex=false + latex_cmd= + enabled_sections= + generate_tagfile= +-DATEtext=`date '+%Y-%m-%d'` ++DATE_FMT="+%Y-%m-%d" ++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}" ++DATEtext=`date -u -d "@$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u "$DATE_FMT"` + + # Show how this script is called. + echo run_doxygen $* diff --git a/patches/libstdc++-hurd.diff b/patches/libstdc++-hurd.diff new file mode 100644 index 0000000..278d83a --- /dev/null +++ b/patches/libstdc++-hurd.diff @@ -0,0 +1,48 @@ +This is notably needed because in glibc 2.34, the move of pthread functions +into libc.so happened for Linux only, not GNU/Hurd. + +The pthread_self() function can also always be used fine as it is on +GNU/Hurd. + +libstdc++-v3/ChangeLog: + + * config/os/gnu-linux/os_defines.h [!__linux__] + (_GLIBCXX_NATIVE_THREAD_ID, _GLIBCXX_GTHREAD_USE_WEAK): Do not define. + +--- a/src/libstdc++-v3/config/os/gnu-linux/os_defines.h ++++ b/src/libstdc++-v3/config/os/gnu-linux/os_defines.h +@@ -60,22 +60,24 @@ + # define _GLIBCXX_HAVE_FLOAT128_MATH 1 + #endif + +-#if __GLIBC_PREREQ(2, 27) +-// Since glibc 2.27 pthread_self() is usable without linking to libpthread. +-# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() +-#else ++#ifdef __linux__ ++# if __GLIBC_PREREQ(2, 27) ++// Since glibc 2.27 Linux' pthread_self() is usable without linking to libpthread. ++# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() ++# else + // Before then it was in libc.so.6 but not libc.a, and always returns 0, + // which breaks the invariant this_thread::get_id() != thread::id{}. + // So only use it if we know the libpthread version is available. + // Otherwise use (__gthread_t)1 as the ID of the main (and only) thread. +-# define _GLIBCXX_NATIVE_THREAD_ID \ +- (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) +-#endif ++# define _GLIBCXX_NATIVE_THREAD_ID \ ++ (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) ++# endif + +-#if __GLIBC_PREREQ(2, 34) +-// Since glibc 2.34 all pthreads functions are usable without linking to ++# if __GLIBC_PREREQ(2, 34) ++// Since glibc 2.34 all Linux pthreads functions are usable without linking to + // libpthread. +-# define _GLIBCXX_GTHREAD_USE_WEAK 0 ++# define _GLIBCXX_GTHREAD_USE_WEAK 0 ++# endif + #endif + + #endif diff --git a/patches/libstdc++-man-3cxx.diff b/patches/libstdc++-man-3cxx.diff new file mode 100644 index 0000000..a8963aa --- /dev/null +++ b/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,63 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in ++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in +@@ -2146,7 +2146,7 @@ MAN_OUTPUT = man + # The default value is: .3. + # This tag requires that the tag GENERATE_MAN is set to YES. + +-MAN_EXTENSION = .3 ++MAN_EXTENSION = .3cxx + + # The MAN_SUBDIR tag determines the name of the directory created within + # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -262,6 +262,9 @@ fi + if $do_man; then + echo :: + echo :: Fixing up the man pages... ++mkdir -p $outdir/man/man3 ++mv $outdir/man/man3cxx/* $outdir/man/man3/ ++rmdir $outdir/man/man3cxx + cd $outdir/man/man3 + + # File names with embedded spaces (EVIL!) need to be....? renamed or removed? +@@ -291,7 +294,7 @@ cxxflags="-Og -g -std=gnu++23" + $gxx $cppflags $cxxflags ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader || exit 1 + # Doxygen outputs something like "\fC#include \fP" and + # we want that internal header to be replaced with something like . +-problematic=`grep -E -l '#include <.*h>' [a-z]*.3` ++problematic=`grep -E -l '#include <.*h>' [a-z]*.3 [a-z]*.3cxx` + for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/f[CR]#include .*/\1/p' $f` +@@ -307,7 +310,7 @@ rm stdheader + # Some of the pages for generated modules have text that confuses certain + # implementations of man(1), e.g. on GNU/Linux. We need to have another + # top-level *roff tag to /stop/ the .SH NAME entry. +-problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ++problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx` + #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' + + for f in $problematic; do +@@ -321,7 +324,7 @@ a\ + done + + # Also, break this (generated) line up. It's ugly as sin. +-problematic=`grep -l '[^^]Definition at line' *.3` ++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` + for f in $problematic; do + sed 's/Definition at line/\ + .PP\ +@@ -452,8 +455,8 @@ for f in ios streambuf istream ostream i + istringstream ostringstream stringstream filebuf ifstream \ + ofstream fstream string + do +- echo ".so man3/std::basic_${f}.3" > std::${f}.3 +- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 ++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx ++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx + done + + echo :: diff --git a/patches/libstdc++-no-testsuite.diff b/patches/libstdc++-no-testsuite.diff new file mode 100644 index 0000000..771bf7a --- /dev/null +++ b/patches/libstdc++-no-testsuite.diff @@ -0,0 +1,12 @@ +# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds) + +--- a/src/libstdc++-v3/testsuite/Makefile.in ++++ b/src/libstdc++-v3/testsuite/Makefile.in +@@ -567,6 +567,7 @@ + + # Run the testsuite in normal mode. + check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp ++ case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \ + $(if $*,@)AR="$(AR)"; export AR; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \ diff --git a/patches/libstdc++-nothumb-check.diff b/patches/libstdc++-nothumb-check.diff new file mode 100644 index 0000000..6c665a2 --- /dev/null +++ b/patches/libstdc++-nothumb-check.diff @@ -0,0 +1,38 @@ +# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel + +Index: testsuite/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/testsuite/Makefile.in (revision 156820) ++++ b/src/libstdc++-v3/testsuite/Makefile.in (working copy) +@@ -583,6 +583,8 @@ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + if [ -z "$$runtest" ]; then runtest=runtest; fi; \ + tool=libstdc++; \ + dirs=; \ +@@ -590,7 +592,7 @@ + normal0) \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) abi.exp; \ ++ $$runtestflags abi.exp; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi; \ + dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \ +@@ -605,11 +607,11 @@ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + if [ -n "$$dirs" ]; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) \ ++ $$runtestflags \ + "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \ + else \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS); \ ++ $$runtestflags; \ + fi; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi diff --git a/patches/libstdc++-pic.diff b/patches/libstdc++-pic.diff new file mode 100644 index 0000000..6adac41 --- /dev/null +++ b/patches/libstdc++-pic.diff @@ -0,0 +1,91 @@ +# DP: Build and install libstdc++_pic.a library. + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -379,10 +379,12 @@ if GLIBCXX_BUILD_DEBUG + STAMP_DEBUG = build-debug + STAMP_INSTALL_DEBUG = install-debug + CLEAN_DEBUG = debug ++STAMP_INSTALL_PIC = install-pic + else + STAMP_DEBUG = + STAMP_INSTALL_DEBUG = + CLEAN_DEBUG = ++STAMP_INSTALL_PIC = + endif + + # Build a debug variant. +@@ -425,6 +427,7 @@ build-debug: stamp-debug $(debug_backtra + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -435,3 +438,8 @@ build-debug: stamp-debug $(debug_backtra + install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; ++ ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -676,6 +676,8 @@ CXXLINK = \ + @GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_DEBUG = install-debug + @GLIBCXX_BUILD_DEBUG_FALSE@CLEAN_DEBUG = + @GLIBCXX_BUILD_DEBUG_TRUE@CLEAN_DEBUG = debug ++@GLIBCXX_BUILD_DEBUG_FALSE@STAMP_INSTALL_PIC = ++@GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_PIC = install-pic + + # Build a debug variant. + # Take care to fix all possibly-relative paths. +@@ -944,7 +946,7 @@ install-dvi: install-dvi-recursive + + install-dvi-am: + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES + + install-html: install-html-recursive + +@@ -994,11 +996,11 @@ uninstall-am: uninstall-toolexeclibLTLIB + distclean-libtool distclean-tags dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ +- install-exec-am install-html install-html-am install-info \ +- install-info-am install-man install-pdf install-pdf-am \ +- install-ps install-ps-am install-strip \ +- install-toolexeclibLTLIBRARIES installcheck installcheck-am \ +- installdirs installdirs-am maintainer-clean \ ++ install-exec-am install-exec-local install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip install-toolexeclibLTLIBRARIES installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ +@@ -1147,6 +1149,7 @@ build-debug: stamp-debug $(debug_backtra + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -1158,6 +1161,11 @@ install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; + ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/patches/libstdc++-pythondir.diff b/patches/libstdc++-pythondir.diff new file mode 100644 index 0000000..325020c --- /dev/null +++ b/patches/libstdc++-pythondir.diff @@ -0,0 +1,22 @@ +--- a/src/libstdc++-v3/python/Makefile.am ++++ b/src/libstdc++-v3/python/Makefile.am +@@ -26,7 +26,7 @@ include $(top_srcdir)/fragment.am + if ENABLE_PYTHONDIR + pythondir = $(prefix)/$(python_mod_dir) + else +-pythondir = $(datadir)/gcc-$(gcc_version)/python ++pythondir = $(datadir)/gcc/python + endif + + if GLIBCXX_BUILD_DEBUG +--- a/src/libstdc++-v3/python/Makefile.in ++++ b/src/libstdc++-v3/python/Makefile.in +@@ -409,7 +409,7 @@ WARN_CXXFLAGS = \ + + # -I/-D flags to pass when compiling. + AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS) +-@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc-$(gcc_version)/python ++@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc/python + @ENABLE_PYTHONDIR_TRUE@pythondir = $(prefix)/$(python_mod_dir) + @GLIBCXX_BUILD_DEBUG_FALSE@debug_gdb_py = + @GLIBCXX_BUILD_DEBUG_TRUE@debug_gdb_py = YES diff --git a/patches/libstdc++-test-installed.diff b/patches/libstdc++-test-installed.diff new file mode 100644 index 0000000..b266c7e --- /dev/null +++ b/patches/libstdc++-test-installed.diff @@ -0,0 +1,76 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -37,6 +37,12 @@ + # the last thing before testing begins. This can be defined in, e.g., + # ~/.dejagnurc or $DEJAGNU. + ++set test_installed 0 ++if [info exists env(TEST_INSTALLED)] { ++ verbose -log "test installed libstdc++-v3" ++ set test_installed 1 ++} ++ + proc load_gcc_lib { filename } { + global srcdir loaded_libs + +@@ -117,6 +123,7 @@ proc libstdc++_init { testfile } { + global tool_timeout + global DEFAULT_CXXFLAGS + global STATIC_LIBCXXFLAGS ++ global test_installed + + # We set LC_ALL and LANG to C so that we get the same error + # messages as expected. +@@ -136,6 +143,9 @@ proc libstdc++_init { testfile } { + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + set flags_file "${blddir}/scripts/testsuite_flags" ++ if {$test_installed} { ++ set flags_file "${blddir}/scripts/testsuite_flags.installed" ++ } + set shlib_ext [get_shlib_extension] + v3track flags_file 2 + +@@ -163,7 +173,11 @@ proc libstdc++_init { testfile } { + + # Locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms +- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ if {$test_installed} { ++ set gccdir "" ++ } else { ++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ } + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" +@@ -183,7 +197,11 @@ proc libstdc++_init { testfile } { + + # Locate libgomp. This is only required for parallel mode. + set v3-libgomp 0 +- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ if {$test_installed} { ++ set libgompdir "" ++ } else { ++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ } + if {$libgompdir != ""} { + set v3-libgomp 1 + set libgompdir [file dirname $libgompdir] +@@ -205,7 +223,12 @@ proc libstdc++_init { testfile } { + + # Locate libstdc++ shared library. (ie libstdc++.so.) + set v3-sharedlib 0 +- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ if {$test_installed} { ++ set sharedlibdir "" ++ set v3-sharedlib 1 ++ } else { ++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ } + if {$sharedlibdir != ""} { + if { ([string match "*-*-gnu*" $target_triplet] + || [string match "*-*-linux*" $target_triplet] diff --git a/patches/musl-ssp.diff b/patches/musl-ssp.diff new file mode 100644 index 0000000..5a33a73 --- /dev/null +++ b/patches/musl-ssp.diff @@ -0,0 +1,21 @@ +See https://git.alpinelinux.org/aports/commit/?id=d307f133de1f8a9993ab0d6fd51176b9373df4c3 +and https://www.openwall.com/lists/musl/2014/11/05/3 + +--- a/src/gcc/gcc.cc ++++ b/src/gcc/gcc.cc +@@ -1126,8 +1126,15 @@ proper position among the other output f + + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP ++#if DEFAULT_LIBC == LIBC_MUSL ++/* When linking without -fstack-protector-something but including objects that ++ were built with -fstack-protector-something, calls to __stack_chk_fail_local ++ can be emitted. Thus -lssp_nonshared must be linked unconditionally. */ ++#define LINK_SSP_SPEC "-lssp_nonshared" ++#else + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ + "|fstack-protector-strong|fstack-protector-explicit:}" ++#endif + #else + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ + "|fstack-protector-strong|fstack-protector-explicit" \ diff --git a/patches/note-gnu-stack.diff b/patches/note-gnu-stack.diff new file mode 100644 index 0000000..b1aec35 --- /dev/null +++ b/patches/note-gnu-stack.diff @@ -0,0 +1,125 @@ +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +--- + gcc/config/ia64/linux.h | 3 +++ + gcc/config/rs6000/ppc-asm.h | 2 +- + libgcc/config/ia64/crtbegin.S | 4 ++++ + libgcc/config/ia64/crtend.S | 4 ++++ + libgcc/config/ia64/crti.S | 4 ++++ + libgcc/config/ia64/crtn.S | 4 ++++ + libgcc/config/ia64/lib1funcs.S | 4 ++++ + 9 files changed, 39 insertions(+), 13 deletions(-) + +--- a/src/libgcc/config/ia64/crtbegin.S ++++ b/src/libgcc/config/ia64/crtbegin.S +@@ -185,3 +185,7 @@ __do_global_dtors_aux: + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtend.S ++++ b/src/libgcc/config/ia64/crtend.S +@@ -114,3 +114,7 @@ __do_global_ctors_aux: + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crti.S ++++ b/src/libgcc/config/ia64/crti.S +@@ -51,3 +51,7 @@ _fini: + .body + + # end of crti.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtn.S ++++ b/src/libgcc/config/ia64/crtn.S +@@ -41,3 +41,7 @@ + br.ret.sptk.many b0 + + # end of crtn.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/lib1funcs.S ++++ b/src/libgcc/config/ia64/lib1funcs.S +@@ -793,3 +793,7 @@ __floattitf: + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -79,5 +79,8 @@ do { \ + #undef TARGET_INIT_LIBFUNCS + #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs + ++#undef TARGET_ASM_FILE_END ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* Define this to be nonzero if static stack checking is supported. */ + #define STACK_CHECK_STATIC_BUILTIN 1 +--- a/src/gcc/config/rs6000/ppc-asm.h ++++ b/src/gcc/config/rs6000/ppc-asm.h +@@ -384,7 +384,7 @@ GLUE(.L,name): \ + #endif + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif diff --git a/patches/pr106641.diff b/patches/pr106641.diff new file mode 100644 index 0000000..6e69644 --- /dev/null +++ b/patches/pr106641.diff @@ -0,0 +1,52 @@ +# DP: Fix PR demangler/106641, taken from the trunk. + +libiberty: fix resource exhaustion in rust demangler (PR demangler/106641) + +demangle_binder() parses the bound_lifetimes count as a base-62 +integer with no upper bound. A crafted symbol can encode a huge +lifetime count in very few bytes, causing OOM or CPU hang. + +Cap bound_lifetimes at 1024 and check rdm->errored in the loop +so it bails out early on errors during iteration. + +libiberty/ChangeLog: + + PR demangler/106641 + * rust-demangle.c (demangle_binder): Reject bound_lifetimes + above 1024 to prevent resource exhaustion from crafted symbols. + Add rdm->errored check in the loop condition. + * testsuite/rust-demangle-expected: Add regression test. + +--- a/src/libiberty/rust-demangle.c ++++ b/src/libiberty/rust-demangle.c +@@ -651,10 +651,17 @@ demangle_binder (struct rust_demangler *rdm) + return; + + bound_lifetimes = parse_opt_integer_62 (rdm, 'G'); ++ /* Reject implausibly large lifetime counts to prevent ++ resource exhaustion from crafted symbols (PR demangler/106641). */ ++ if (bound_lifetimes > 1024) ++ { ++ rdm->errored = 1; ++ return; ++ } + if (bound_lifetimes > 0) + { + PRINT ("for<"); +- for (i = 0; i < bound_lifetimes; i++) ++ for (i = 0; i < bound_lifetimes && !rdm->errored; i++) + { + if (i > 0) + PRINT (", "); +--- a/src/libiberty/testsuite/rust-demangle-expected ++++ b/src/libiberty/testsuite/rust-demangle-expected +@@ -321,3 +321,9 @@ foo + --format=rust + _RNvC9backtrace3foo.llvm.A5310EB9 + backtrace::foo ++# ++# PR demangler/106641: crafted symbol with huge lifetime count ++# should not cause resource exhaustion. ++--format=rust ++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE ++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE diff --git a/patches/pr119364-1.diff b/patches/pr119364-1.diff new file mode 100644 index 0000000..478abae --- /dev/null +++ b/patches/pr119364-1.diff @@ -0,0 +1,2035 @@ +--- a/src/gcc/cobol/cbldiag.h ++++ b/src/gcc/cobol/cbldiag.h +@@ -97,7 +97,7 @@ void cbl_unimplemented_at( const YYLTYP + * be localized and fwrite directly to standard out. dbgmsg is activated by + * -fflex-debug or -fyacc-debug. + */ +-void dbgmsg( const char fmt[], ... ); ++void dbgmsg( const char fmt[], ... ) ATTRIBUTE_PRINTF_1; + + void gcc_location_set( const YYLTYPE& loc ); + +--- a/src/gcc/cobol/cdf-copy.cc ++++ b/src/gcc/cobol/cdf-copy.cc +@@ -34,6 +34,7 @@ + // + // We regret any confusion engendered. + ++#include "config.h" + #include + + #include "cobol-system.h" +--- a/src/gcc/cobol/cdf.y ++++ b/src/gcc/cobol/cdf.y +@@ -245,8 +245,8 @@ apply_cdf_turn( exception_turns_t& turns + %printer { fprintf(yyo, "%s '%s'", + keyword_str($$.token), + $$.string? $$.string : "" ); } +-%printer { fprintf(yyo, "%ld '%s'", +- $$.number, $$.string? $$.string : "" ); } ++%printer { fprintf(yyo, HOST_SIZE_T_PRINT_DEC " '%s'", ++ (fmt_size_t)$$.number, $$.string? $$.string : "" ); } + + %type NAME NUMSTR LITERAL PSEUDOTEXT + %type LSUB RSUB SUBSCRIPT +@@ -828,7 +828,8 @@ defined_cmd( const char arg[] ) + + if( yydebug ) { + if( cdf_name->second.is_numeric() ) { +- dbgmsg("%s: added -D %s = %ld", __func__, name, cdf_name->second.as_number()); ++ dbgmsg("%s: added -D %s = " HOST_SIZE_T_PRINT_DEC, ++ __func__, name, (fmt_size_t)cdf_name->second.as_number()); + } else { + dbgmsg("%s: added -D %s = \"%s\"", __func__, name, cdf_name->second.string); + } +--- a/src/gcc/cobol/gcobolspec.cc ++++ b/src/gcc/cobol/gcobolspec.cc +@@ -541,13 +541,14 @@ lang_specific_driver (struct cl_decoded_ + #endif + if( verbose && new_options != original_options ) + { +- fprintf(stderr, _("Driving: (%ld)\n"), new_option_count); ++ fprintf(stderr, _("Driving: (" HOST_SIZE_T_PRINT_DEC ")\n"), ++ (fmt_size_t)new_option_count); + for(size_t i=0; iname, k.called); ++ fprintf(stderr, "\t#%-3" GCC_PRISZ "u %s calls %s ", ++ (fmt_size_t)k.caller, cbl_label_of(symbol_at(k.caller))->name, ++ k.called); + char ch = '['; + for( auto func : v ) { + fprintf( stderr, "%c %s", ch, IDENTIFIER_POINTER(DECL_NAME(func.node)) ); +@@ -2310,9 +2313,11 @@ combined_name(cbl_label_t *label) + { + strcat(retval, mangled_program_name); + } +- sprintf(ach, ".%ld", current_function->program_id_number); ++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->program_id_number); + strcat(retval, ach); +- sprintf(ach, ".%ld", symbol_label_id(label)); ++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)symbol_label_id(label)); + strcat(retval, ach); + free(mangled_program_name); + free(section); +@@ -2358,11 +2363,11 @@ section_label(struct cbl_proc_t *procedu + + cbl_label_t *label = procedure->label; + // The _initialize_program section isn't relevant. +- char *psz = xasprintf("%s SECTION %s in %s (%ld)", ++ char *psz = xasprintf("%s SECTION %s in %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + label->name, + current_function->our_unmangled_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + gg_insert_into_assembler(psz); + free(psz); + +@@ -2410,12 +2415,12 @@ paragraph_label(struct cbl_proc_t *proce + + char *psz1 = + xasprintf( +- "%s PARAGRAPH %s of %s in %s (%ld)", ++ "%s PARAGRAPH %s of %s in %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + para_name ? para_name: "" , + section_name ? section_name: "(null)" , + current_function->our_unmangled_name ? current_function->our_unmangled_name: "" , +- deconflictor ); ++ (fmt_size_t)deconflictor ); + + gg_insert_into_assembler(psz1); + +@@ -2527,8 +2532,8 @@ leave_procedure(struct cbl_proc_t *proce + gg_append_statement(procedure->exit.label); + + char *psz; +- psz = xasprintf("_procret.%ld:", +- symbol_label_id(procedure->label)); ++ psz = xasprintf("_procret." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)symbol_label_id(procedure->label)); + gg_insert_into_assembler(psz); + free(psz); + pseudo_return_pop(procedure); +@@ -3009,12 +3014,12 @@ parser_perform(cbl_label_t *label, bool + para_name = label->name; + sect_name = section_label->name; + sprintf(ach, +- "%s PERFORM %s of %s of %s (%ld)", ++ "%s PERFORM %s of %s of %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + para_name, + sect_name, + program_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + + gg_insert_into_assembler(ach); + } +@@ -3022,19 +3027,19 @@ parser_perform(cbl_label_t *label, bool + { + sect_name = label->name; + sprintf(ach, +- "%s PERFORM %s of %s (%ld)", ++ "%s PERFORM %s of %s (" HOST_SIZE_T_PRINT_DEC ")", + ASM_COMMENT_START, + sect_name, + program_name, +- deconflictor); ++ (fmt_size_t)deconflictor); + gg_insert_into_assembler(ach); + } + + if( !suppress_nexting ) + { + sprintf(ach, +- "_proccall.%ld.%d:", +- symbol_label_id(label), ++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", ++ (fmt_size_t)symbol_label_id(label), + call_counter++); + gg_insert_into_assembler( ach ); + } +@@ -3082,8 +3087,8 @@ parser_perform_times( cbl_label_t *proc_ + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + tree counter = gg_define_variable(LONG); +@@ -3104,8 +3109,8 @@ parser_perform_times( cbl_label_t *proc_ + WEND + + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler(ach); + } + +@@ -3182,8 +3187,8 @@ internal_perform_through( cbl_label_t *p + { + char ach[256]; + sprintf(ach, +- "_proccall.%ld.%d:", +- symbol_label_id(proc_2), ++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", ++ (fmt_size_t)symbol_label_id(proc_2), + call_counter++); + gg_insert_into_assembler(ach); + } +@@ -3232,8 +3237,8 @@ internal_perform_through_times( cbl_la + + char ach[256]; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + tree counter = gg_define_variable(LONG); +@@ -3249,8 +3254,8 @@ internal_perform_through_times( cbl_la + WEND + + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -3561,7 +3566,8 @@ parser_enter_program( const char *funcna + if( parent_index ) + { + // This is a nested function. Tack on the parent_index to the end of it. +- sprintf(funcname, "%s.%ld", mangled_name, parent_index); ++ sprintf(funcname, "%s." HOST_SIZE_T_PRINT_DEC, mangled_name, ++ (fmt_size_t)parent_index); + } + else + { +@@ -3727,8 +3733,8 @@ parser_init_list_size(int count_of_varia + vti_list_size = count_of_variables; + char ach[48]; + sprintf(ach, +- "..variables_to_init_%ld", +- current_function->our_symbol_table_index); ++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree array_of_variables_type = build_array_type_nelts(VOID_P, + count_of_variables+1); + vti_array = gg_define_variable( array_of_variables_type, +@@ -3766,8 +3772,8 @@ parser_init_list() + + char ach[48]; + sprintf(ach, +- "..variables_to_init_%ld", +- current_function->our_symbol_table_index); ++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree array = gg_trans_unit_var_decl(ach); + gg_call(VOID, + "__gg__variables_to_init", +@@ -3948,7 +3954,7 @@ psa_FldLiteralN(struct cbl_field_t *fiel + + static size_t our_index = 0; + +- sprintf(id_string, ".%ld", ++our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); + strcpy(base_name, field->name); + strcat(base_name, id_string); + +@@ -3985,7 +3991,7 @@ psa_FldBlob(struct cbl_field_t *var ) + + static size_t our_index = 0; + +- sprintf(id_string, ".%ld", ++our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); + strcpy(base_name, var->name); + strcat(base_name, id_string); + +@@ -5056,7 +5062,8 @@ parser_assign( size_t nC, cbl_num_result + { + TRACE1_HEADER + char ach[32]; +- sprintf(ach, "%ld target%s", nC, nC==1 ? "" : "s"); ++ sprintf(ach, HOST_SIZE_T_PRINT_DEC " target%s", ++ (fmt_size_t)nC, nC==1 ? "" : "s"); + TRACE1_TEXT(ach); + if( on_error ) + { +@@ -5075,7 +5082,8 @@ parser_assign( size_t nC, cbl_num_result + TRACE1 + { + char ach[48]; +- sprintf(ach, "Processing target number %ld", i); ++ sprintf(ach, "Processing target number " HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)i); + TRACE1_INDENT + TRACE1_TEXT(ach); + } +@@ -6129,7 +6137,8 @@ parser_free( size_t n, cbl_refer_t refer + gcc_assert( ! p->is_refmod_reference() ); + if( !(p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e)) ) + { +- dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e"); ++ dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e", ++ p->field->name); + } + gcc_assert( p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e) ); + +@@ -6403,8 +6412,8 @@ parser_division(cbl_division_t division, + // We need a pointer to the array of program names + char ach[2*sizeof(cbl_name_t)]; + sprintf(ach, +- "..accessible_program_list_%ld", +- current_function->our_symbol_table_index); ++ "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree prog_list = gg_define_variable(build_pointer_type(CHAR_P), + ach, vs_file_static); + +@@ -6416,8 +6425,8 @@ parser_division(cbl_division_t division, + tree pointer_type = build_pointer_type(function_type); + tree constructed_array_type = build_array_type_nelts(pointer_type, 1); + sprintf(ach, +- "..accessible_program_pointers_%ld", +- current_function->our_symbol_table_index); ++ "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)current_function->our_symbol_table_index); + tree prog_pointers = gg_define_variable( + build_pointer_type(constructed_array_type), + ach, +@@ -7720,8 +7729,8 @@ perform_outofline_before_until(struct cb + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + parser_if(varys[0].until); +@@ -7743,8 +7752,8 @@ perform_outofline_before_until(struct cb + // Label the bottom of the PERFORM + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7775,8 +7784,8 @@ perform_outofline_after_until(struct cbl + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + create_iline_address_pairs(tgt); +@@ -7806,8 +7815,8 @@ perform_outofline_after_until(struct cbl + // Label the bottom of the PERFORM + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7871,8 +7880,8 @@ perform_outofline_testafter_varying(stru + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + create_iline_address_pairs(tgt); +@@ -7926,8 +7935,8 @@ perform_outofline_testafter_varying(stru + // Arriving here means that we all of the conditions were + // true. So, we're done. + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -7988,8 +7997,8 @@ perform_outofline_before_varying( stru + char ach[256]; + size_t our_pseudo_label = pseudo_label++; + sprintf(ach, +- "_proccallb.%ld:", +- our_pseudo_label); ++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + + // Initialize all varying: +@@ -8069,8 +8078,8 @@ perform_outofline_before_varying( stru + // We have, you see, reached the egress: + gg_append_statement( tgt->addresses.exit.label ); + sprintf(ach, +- "_procretb.%ld:", +- our_pseudo_label); ++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", ++ (fmt_size_t)our_pseudo_label); + gg_insert_into_assembler( ach ); + } + +@@ -8277,7 +8286,7 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL [%ld]:", i); ++ sprintf(ach, "LABEL [" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8288,7 +8297,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL CONDINTO[%ld]:", i); ++ sprintf(ach, "LABEL CONDINTO[" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8299,7 +8309,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "LABEL CONDBACK[%ld]:", i); ++ sprintf(ach, "LABEL CONDBACK[" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)i); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8334,7 +8345,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", i-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(i-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8368,7 +8380,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", N-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(N-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -8385,7 +8398,8 @@ perform_inline_testbefore_varying( stru + { + SHOW_PARSE_INDENT + char ach[32]; +- sprintf(ach, "GOTO [%ld]:", i-1); ++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", ++ (fmt_size_t)(i-1)); + SHOW_PARSE_TEXT(ach) + SHOW_PARSE_END + } +@@ -9964,7 +9978,7 @@ inspect_replacing(int backward, + void + parser_inspect(cbl_refer_t identifier_1, + bool backward, +- unsigned long n_operations, ++ size_t n_operations, + cbx_inspect_t* operations) + { + Analyze(); +@@ -10185,7 +10199,8 @@ parser_intrinsic_callv( cbl_field_t *tgt + SHOW_PARSE_HEADER + SHOW_PARSE_TEXT(" of ") + SHOW_PARSE_TEXT(function_name) +- fprintf(stderr, " with %zd parameters", nrefs); ++ fprintf(stderr, " with " HOST_SIZE_T_PRINT_DEC " parameters", ++ (fmt_size_t)nrefs); + SHOW_PARSE_END + } + +@@ -12686,7 +12701,7 @@ parser_bitop( struct cbl_field_t *tgt, + { + SHOW_PARSE_HEADER + SHOW_PARSE_FIELD( " switch: ", a) +- fprintf(stderr, " mask: %lx", bitmask); ++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); + fprintf(stderr, " op: %s", ops[op]); + SHOW_PARSE_FIELD( " target ", tgt) + SHOW_PARSE_END +@@ -12770,7 +12785,7 @@ parser_bitwise_op(struct cbl_field_t *tg + { + SHOW_PARSE_HEADER + SHOW_PARSE_FIELD( " switch: ", a) +- fprintf(stderr, " mask: %lx", bitmask); ++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); + fprintf(stderr, " op: %s", ops[op]); + SHOW_PARSE_FIELD( " target ", tgt) + SHOW_PARSE_END +@@ -12974,11 +12989,11 @@ parser_program_hierarchy( const struct c + } + char ach[128]; + sprintf(ach, +- "%ld %s%s parent:%ld", +- hier.labels[i].ordinal, ++ HOST_SIZE_T_PRINT_DEC " %s%s parent:" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)hier.labels[i].ordinal, + hier.labels[i].label.name, + hier.labels[i].label.common ? " COMMON" : "", +- hier.labels[i].label.parent); ++ (fmt_size_t)hier.labels[i].label.parent); + SHOW_PARSE_TEXT(ach); + } + } +@@ -13107,12 +13122,14 @@ parser_program_hierarchy( const struct c + + char ach[2*sizeof(cbl_name_t)]; + tree names_table_type = build_array_type_nelts(CHAR_P, mol->second.size()+1); +- sprintf(ach, "..our_accessible_functions_%ld", caller); ++ sprintf(ach, "..our_accessible_functions_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree the_names_table = gg_define_variable(names_table_type, ach, vs_file_static); + + // Here is where we build a table out of constructors: + tree constructed_array_type = build_array_type_nelts(pointer_type, mol->second.size()); +- sprintf(ach, "..our_constructed_table_%ld", caller); ++ sprintf(ach, "..our_constructed_table_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree the_constructed_table = gg_define_variable(constructed_array_type, ach, vs_file_static); + + tree constr_names = make_node(CONSTRUCTOR); +@@ -13130,7 +13147,8 @@ parser_program_hierarchy( const struct c + callee != mol->second.end(); + callee++ ) + { +- sprintf(ach, "%s.%ld", (*callee)->name, (*callee)->parent_node->our_index); ++ sprintf(ach, "%s." HOST_SIZE_T_PRINT_DEC, (*callee)->name, ++ (fmt_size_t)(*callee)->parent_node->our_index); + + CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr_names), + build_int_cst_type(SIZE_T, i), +@@ -13156,11 +13174,13 @@ parser_program_hierarchy( const struct c + + // And put a pointer to that table into the file-static variable set aside + // for it: +- sprintf(ach, "..accessible_program_list_%ld", caller); ++ sprintf(ach, "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree accessible_list_var_decl = gg_trans_unit_var_decl(ach); + gg_assign( accessible_list_var_decl, gg_get_address_of(the_names_table) ); + +- sprintf(ach, "..accessible_program_pointers_%ld", caller); ++ sprintf(ach, "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)caller); + tree accessible_programs_decl = gg_trans_unit_var_decl(ach); + gg_assign( accessible_programs_decl, gg_get_address_of(the_constructed_table) ); + } +@@ -13178,7 +13198,8 @@ parser_set_handled(ec_type_t ec_handled) + { + SHOW_PARSE_HEADER + char ach[64]; +- sprintf(ach, "ec_type_t: 0x%lx", size_t(ec_handled)); ++ sprintf(ach, "ec_type_t: 0x" HOST_SIZE_T_PRINT_HEX_PURE, ++ (fmt_size_t)ec_handled); + SHOW_PARSE_TEXT(ach); + SHOW_PARSE_END + } +@@ -13247,7 +13268,7 @@ parser_set_numeric(struct cbl_field_t *t + SHOW_PARSE_TEXT(tgt->name) + SHOW_PARSE_TEXT(" to ") + char ach[32]; +- sprintf(ach, "%ld", value); ++ sprintf(ach, HOST_SIZE_T_PRINT_DEC, (fmt_size_t)value); + SHOW_PARSE_TEXT(ach); + SHOW_PARSE_END + } +@@ -15969,12 +15990,14 @@ psa_new_var_decl(cbl_field_t *new_var, c + && symbol_at(new_var->parent)->type == SymField ) + { + // We have a parent that is a field +- sprintf(id_string, ".%ld_%ld", our_index, new_var->parent); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC "_" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)our_index, (fmt_size_t)new_var->parent); + } + else + { + // The parent is zero, so it'll be implied: +- sprintf(id_string, ".%ld", our_index); ++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)our_index); + } + + if(strcasecmp(new_var->name, "filler") == 0) +@@ -16215,29 +16238,30 @@ parser_symbol_add(struct cbl_field_t *ne + } + while(0); + +- fprintf(stderr, " %2.2d %s<%s> off:%zd " +- "msiz:%d cap:%d dig:%d rdig:%d attr:0x%lx loc:%p", ++ fprintf(stderr, " %2.2d %s<%s> off:" HOST_SIZE_T_PRINT_DEC " " ++ "msiz:%d cap:%d dig:%d rdig:%d attr:0x" HOST_SIZE_T_PRINT_HEX_PURE " loc:%p", + new_var->level, + new_var->name, + cbl_field_type_str(new_var->type), +- new_var->offset, ++ (fmt_size_t)new_var->offset, + new_var->data.memsize, + new_var->data.capacity, + new_var->data.digits, + new_var->data.rdigits, +- new_var->attr, ++ (fmt_size_t)new_var->attr, + (void*)new_var); + + if( is_table(new_var) ) + { +- fprintf(stderr," OCCURS:%zd", new_var->occurs.ntimes()); ++ fprintf(stderr," OCCURS:" HOST_SIZE_T_PRINT_DEC, ++ (fmt_size_t)new_var->occurs.ntimes()); + } + cbl_field_t *parent = parent_of(new_var); + if( parent ) + { + fprintf(stderr, +- " parent:(%zd)%s", +- new_var->parent, ++ " parent:(" HOST_SIZE_T_PRINT_DEC ")%s", ++ (fmt_size_t)new_var->parent, + parent->name); + } + else +@@ -16250,8 +16274,8 @@ parser_symbol_add(struct cbl_field_t *ne + if( e->type == SymFile ) + { + fprintf(stderr, +- " parent_file:(%zd)%s", +- new_var->parent, ++ " parent_file:(" HOST_SIZE_T_PRINT_DEC ")%s", ++ (fmt_size_t)new_var->parent, + e->elem.file.name); + if( e->elem.file.attr & external_e ) + { +@@ -16706,9 +16730,10 @@ parser_symbol_add(struct cbl_field_t *ne + if( !bytes_to_allocate ) + { + fprintf(stderr, +- "bytes_to_allocate is zero for %s (symbol number %ld)\n", ++ "bytes_to_allocate is zero for %s (symbol number " ++ HOST_SIZE_T_PRINT_DEC ")\n", + new_var->name, +- new_var->our_index); ++ (fmt_size_t)new_var->our_index); + gcc_assert(bytes_to_allocate); + } + +@@ -16742,16 +16767,16 @@ parser_symbol_add(struct cbl_field_t *ne + { + // Avoid doubling up on leading underscore + sprintf(achDataName, +- "%s_data_%lu", ++ "%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, + new_var->name, +- sv_data_name_counter++); ++ (fmt_size_t)sv_data_name_counter++); + } + else + { + sprintf(achDataName, +- "_%s_data_%lu", ++ "_%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, + new_var->name, +- sv_data_name_counter++); ++ (fmt_size_t)sv_data_name_counter++); + } + + if( new_var->attr & external_e ) +--- a/src/gcc/cobol/gengen.cc ++++ b/src/gcc/cobol/gengen.cc +@@ -393,13 +393,13 @@ show_type(tree type) + + case REAL_TYPE: + sprintf(ach, +- "%3ld-bit REAL", ++ "%3" PRId64 "-bit REAL", + TREE_INT_CST_LOW(TYPE_SIZE(type))); + break; + + case INTEGER_TYPE: + sprintf(ach, +- "%3ld-bit %s INT", ++ "%3" PRId64 "-bit %s INT", + TREE_INT_CST_LOW(TYPE_SIZE(type)), + (TYPE_UNSIGNED(type) ? "unsigned" : " signed")); + break; +@@ -892,7 +892,8 @@ gg_unique_in_function(const char *var_na + char *retval = (char *)xmalloc(strlen(var_name)+32); + if( (vs_scope == vs_stack || vs_scope == vs_static) ) + { +- sprintf(retval, "%s.%ld", var_name, current_function->program_id_number); ++ sprintf(retval, "%s." HOST_SIZE_T_PRINT_DEC, var_name, ++ (fmt_size_t)current_function->program_id_number); + } + else + { +--- a/src/gcc/cobol/genmath.cc ++++ b/src/gcc/cobol/genmath.cc +@@ -725,7 +725,7 @@ parser_add( size_t nC, cbl_num_result_t + SHOW_PARSE + { + SHOW_PARSE_HEADER +- fprintf(stderr, " A[%ld]:", nA); ++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); + for(size_t i=0; i 0) +@@ -737,7 +737,7 @@ parser_add( size_t nC, cbl_num_result_t + + fprintf(stderr, "%s", format==giving_e? " GIVING" : ""); + +- fprintf(stderr, " C[%ld]:", nC); ++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); + for(size_t i=0; i 0) +@@ -1412,7 +1412,7 @@ parser_subtract(size_t nC, cbl_num_resul + SHOW_PARSE + { + SHOW_PARSE_HEADER +- fprintf(stderr, " A[%ld]:", nA); ++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); + for(size_t i=0; i 0) +@@ -1422,7 +1422,7 @@ parser_subtract(size_t nC, cbl_num_resul + fprintf(stderr, "%s", A[i].field->name); + } + +- fprintf(stderr, " B[%ld]:", nB); ++ fprintf(stderr, " B[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nB); + for(size_t i=0; i 0) +@@ -1432,7 +1432,7 @@ parser_subtract(size_t nC, cbl_num_resul + fprintf(stderr, "%s", B[i].field->name); + } + +- fprintf(stderr, " C[%ld]:", nC); ++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); + for(size_t i=0; i 0) +--- a/src/gcc/cobol/lexio.cc ++++ b/src/gcc/cobol/lexio.cc +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include "config.h" + #include + #include "cobol-system.h" + #include "cbldiag.h" +@@ -260,9 +261,10 @@ recognize_replacements( filespan_t mfile + found = span_t( cm[1].first, cm[1].second ); + if( yy_flex_debug ) { + size_t n = count_newlines(mfile.data, found.p); +- dbgmsg("%s:%d first '%.*s' is on line %zu (offset %zu)", __func__, __LINE__, ++ dbgmsg("%s:%d first '%.*s' is on line " HOST_SIZE_T_PRINT_UNSIGNED ++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, + directive.before.size(), directive.before.p, +- ++n, found.p - mfile.data); ++ (fmt_size_t)++n, (fmt_size_t)(found.p - mfile.data)); + } + } else { + dbgmsg("%s:%d not found: '%s' in \n'%.*s'", __func__, __LINE__, +@@ -290,8 +292,10 @@ recognize_replacements( filespan_t mfile + + if( yy_flex_debug ) { + size_t n = std::count((const char *)mfile.data, recognized.before.p, '\n'); +- dbgmsg( "%s:%d: line %zu @ %zu: '%s'\n/%.*s/%.*s/", __func__, __LINE__, +- ++n, next.found.p - mfile.data, ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ " @ " HOST_SIZE_T_PRINT_UNSIGNED ": '%s'\n/%.*s/%.*s/", ++ __func__, __LINE__, ++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data), + next.directive.before.p, + int(recognized.before.size()), recognized.before.p, + int(recognized.after.size()), recognized.after.p ); +@@ -308,9 +312,10 @@ recognize_replacements( filespan_t mfile + next.found = span_t( cm[1].first, cm[1].second ); + size_t n = std::count((const char *)mfile.data, next.found.p, '\n'); + if( false ) +- dbgmsg("%s:%d next '%.*s' will be on line %zu (offset %zu)", __func__, __LINE__, ++ dbgmsg("%s:%d next '%.*s' will be on line " HOST_SIZE_T_PRINT_UNSIGNED ++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, + next.directive.before.size(), next.directive.before.p, +- ++n, next.found.p - mfile.data); ++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data)); + } + pnext = std::min_element(futures.begin(), futures.end()); + } +@@ -344,8 +349,10 @@ check_source_format_directive( filespan_ + break; + } + mfile.cur = const_cast(cm[0].second); +- dbgmsg( "%s:%d: %s format set, on line %zu", __func__, __LINE__, +- indicator.column == 7? "FIXED" : "FREE", mfile.lineno() ); ++ dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, __LINE__, ++ indicator.column == 7? "FIXED" : "FREE", ++ (fmt_size_t)mfile.lineno() ); + erase_line(const_cast(cm[0].first), + const_cast(cm[0].second)); + } +@@ -724,7 +731,7 @@ parse_replacing_pair( const char *stmt, + // This eliminated a compiler warning about "format-overflow" + yywarn("CDF syntax error"); + } +- pair.stmt = span_t(0UL, stmt); ++ pair.stmt = span_t(size_t(0), stmt); + pair.replace = replace_t(); + } + return pair; +@@ -764,9 +771,9 @@ parse_replace_pairs( const char *stmt, c + // Report findings. + if( false && yy_flex_debug ) { + for( size_t i=0; i < cm.size(); i++ ) { +- dbgmsg("%s: %s %zu: '%.*s'", __func__, ++ dbgmsg("%s: %s " HOST_SIZE_T_PRINT_UNSIGNED ": '%.*s'", __func__, + cm[i].matched? "Pair" : "pair", +- i, ++ (fmt_size_t)i, + cm[i].matched? int(cm[i].length()) : 0, + cm[i].matched? cm[i].first : ""); + } +@@ -825,9 +832,10 @@ parse_replace_pairs( const char *stmt, c + } + + if( yy_flex_debug ) { +- dbgmsg( "%s:%d: %s: %zu pairs parsed from '%.*s'", __func__, __LINE__, +- parsed.done()? "done" : "not done", +- pairs.size(), parsed.stmt.size(), parsed.stmt.p ); ++ dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from '%.*s'", ++ __func__, __LINE__, ++ parsed.done() ? "done" : "not done", ++ (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p ); + int i = 0; + for( const auto& replace : pairs ) { + dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, +@@ -909,9 +917,10 @@ parse_copy_directive( filespan_t& mfile + if( yy_flex_debug ) { + size_t nnl = 1 + count_newlines(mfile.data, copy_stmt.p); + size_t nst = 1 + count_newlines(copy_stmt.p, copy_stmt.pend); +- dbgmsg("%s:%d: line %zu: COPY directive is %zu lines '%.*s'", ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ ": COPY directive is " HOST_SIZE_T_PRINT_UNSIGNED " lines '%.*s'", + __func__, __LINE__, +- nnl, nst, copy_stmt.size(), copy_stmt.p); ++ (fmt_size_t)nnl, (fmt_size_t)nst, copy_stmt.size(), copy_stmt.p); + } + } + } +@@ -924,7 +933,8 @@ parse_copy_directive( filespan_t& mfile + outcome.partial_line = span_t(mfile.cur, copy_stmt.p); + + if( yy_flex_debug ) { +- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); ++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", ++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); + int i = 0; + for( const auto& m : cm ) { + if( m.matched ) +@@ -1008,8 +1018,9 @@ parse_replace_last_off( filespan_t& mfil + } + } + +- dbgmsg( "%s:%d: line %zu: parsed '%.*s', ", __func__, __LINE__, +- mfile.lineno(), int(cm[0].length()), cm[0].first ); ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsed '%.*s', ", ++ __func__, __LINE__, ++ (fmt_size_t)mfile.lineno(), int(cm[0].length()), cm[0].first ); + + // Remove statement from input + erase_line(const_cast(cm[0].first), +@@ -1041,20 +1052,23 @@ parse_replace_text( filespan_t& mfile ) + gcc_assert(mfile.line_length() > 2); + if( pend[-1] == '\n' ) pend -= 2; + auto len = int(pend - mfile.cur); +- dbgmsg("%s:%d: line %zu: parsing '%.*s", __func__, __LINE__, +- current_lineno, len, mfile.cur); ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsing '%.*s", ++ __func__, __LINE__, ++ (fmt_size_t)current_lineno, len, mfile.cur); + } + + if( ! regex_search(mfile.ccur(), (const char *)mfile.eodata, cm, re) ) { +- dbgmsg( "%s:%d: line %zu: not a REPLACE statement:\n'%.*s'", +- __func__, __LINE__, current_lineno, ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ++ ": not a REPLACE statement:\n'%.*s'", ++ __func__, __LINE__, (fmt_size_t)current_lineno, + int(mfile.line_length()), mfile.cur ); + return span_t(); + } + + // Report findings. + if( yy_flex_debug ) { +- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); ++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", ++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); + int i = 0; + for( const auto& m : cm ) { + if( m.matched ) +@@ -1083,8 +1097,10 @@ parse_replace_text( filespan_t& mfile ) + replace_directives.push( replacements ); + + if( yy_flex_debug ) { +- dbgmsg( "%s:%d: line %zu: %zu pairs parsed from '%.*s'", __func__, __LINE__, +- current_lineno, replacements.size(), int(replace_stmt.size()), replace_stmt.p ); ++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": " HOST_SIZE_T_PRINT_UNSIGNED ++ " pairs parsed from '%.*s'", __func__, __LINE__, ++ (fmt_size_t)current_lineno, (fmt_size_t)replacements.size(), ++ int(replace_stmt.size()), replace_stmt.p ); + for( const auto& replace : replacements ) { + int i = 0; + dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, +@@ -1164,8 +1180,9 @@ bytespan_t::append( const char *input, c + #if LEXIO + auto nq = std::count_if(data, eodata, isquote); + dbgmsg("%s:%3d: input ------ '%.*s'", __func__, __LINE__, int(eoinput - input), input); +- dbgmsg("%s:%3d: precondition '%.*s' (%zu: %s)", __func__, __LINE__, +- int(size()), data, nq, in_string()? "in string" : "not in string"); ++ dbgmsg("%s:%3d: precondition '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ": %s)", ++ __func__, __LINE__, ++ int(size()), data, (fmt_size_t)nq, in_string()? "in string" : "not in string"); + #endif + if( !in_string() ) { // Remove trailing space unless it's part of a literal. + while(data < eodata && ISSPACE(eodata[-1])) eodata--; +@@ -1563,8 +1580,8 @@ cdftext::map_file( int fd ) { + cbl_err( "%s: could not prepare map file from FIFO %d", + __func__, input); + } +- if( false ) dbgmsg("%s: copied %ld bytes from FIFO", +- __func__, nout); ++ if( false ) dbgmsg("%s: copied " HOST_SIZE_T_PRINT_DEC " bytes from FIFO", ++ __func__, (fmt_size_t)nout); + } + } + } while( S_ISFIFO(sb.st_mode) ); +@@ -1774,8 +1791,8 @@ cdftext::process_file( filespan_t mfile, + std::copy_if(copied.erased_lines.p, copied.erased_lines.pend, ofs, + []( char ch ) { return ch == '\n'; } ); + struct { int in, out; filespan_t mfile; } copy; +- dbgmsg("%s:%d: line %zu, opening %s on fd %d", __func__, __LINE__, +- mfile.lineno(), ++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ", opening %s on fd %d", ++ __func__, __LINE__,mfile.lineno(), + copybook.source(), copybook.current()->fd); + copy.in = copybook.current()->fd; + copy.mfile = free_form_reference_format( copy.in ); +--- a/src/gcc/cobol/parse.y ++++ b/src/gcc/cobol/parse.y +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + %code requires { ++ #include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + #include "coretypes.h" +@@ -279,6 +280,7 @@ + } + + %{ ++#include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + #include "coretypes.h" +@@ -945,18 +947,20 @@ + + %printer { fprintf(yyo, "%s (token %d)", keyword_str($$), $$ ); } relop + %printer { fprintf(yyo, "'%s'", $$? $$ : "" ); } NAME +-%printer { fprintf(yyo, "%s'%.*s'{%zu} %s", $$.prefix, int($$.len), $$.data, $$.len, ++%printer { fprintf(yyo, "%s'%.*s'{" HOST_SIZE_T_PRINT_UNSIGNED "} %s", ++ $$.prefix, int($$.len), $$.data, (fmt_size_t)$$.len, + $$.symbol_name()); } +-%printer { fprintf(yyo, "%s (1st of %zu)", ++%printer { fprintf(yyo, "%s (1st of " HOST_SIZE_T_PRINT_UNSIGNED ")", + $$->targets.empty()? "" : $$->targets.front().refer.field->name, +- $$->targets.size() ); } +-%printer { fprintf(yyo, "#%zu: %s", +- is_temporary($$)? 0 : field_index($$), ++ (fmt_size_t)$$->targets.size() ); } ++%printer { fprintf(yyo, "#" HOST_SIZE_T_PRINT_UNSIGNED ": %s", ++ is_temporary($$)? 0 : (fmt_size_t)field_index($$), + $$? name_of($$) : "" ); } name +-%printer { fprintf(yyo, "{%zu-%zu}", $$.min, $$.max ); } ++%printer { fprintf(yyo, "{" HOST_SIZE_T_PRINT_UNSIGNED "-" HOST_SIZE_T_PRINT_UNSIGNED "}", ++ (fmt_size_t)$$.min, (fmt_size_t)$$.max ); } + %printer { fprintf(yyo, "{%s}", $$? "+/-" : "" ); } signed +-%printer { fprintf(yyo, "{%s of %zu}", +- teed_up_names().front(), teed_up_names().size() ); } qname ++%printer { fprintf(yyo, "{%s of " HOST_SIZE_T_PRINT_UNSIGNED "}", ++ teed_up_names().front(), (fmt_size_t) teed_up_names().size() ); } qname + %printer { fprintf(yyo, "{%d}", $$ ); } + %printer { fprintf(yyo, "'%s'", $$.string ); } + %printer { const char *s = string_of($$); +@@ -968,9 +972,9 @@ + $$.low? (const char*) $$.low : "", + $$.high? (const char*) $$.high : "", + $$.also? "+" : "" ); } +-%printer { fprintf(yyo, "{%s, %zu parameters}", ++%printer { fprintf(yyo, "{%s, " HOST_SIZE_T_PRINT_UNSIGNED " parameters}", + name_of($$.ffi_name->field), !$$.using_params? 0 : +- $$.using_params->elems.size()); } call_body ++ (fmt_size_t)$$.using_params->elems.size()); } call_body + %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category), + name_of($$.replacement->field)); } init_by + +@@ -3616,12 +3620,12 @@ data_descr1: level_name + + // SIGN clause valid only with "S" in picture + if( $field->type == FldNumericDisplay && !is_signable($field) ) { +- static const size_t sign_attrs = leading_e | separate_e; ++ static const uint64_t sign_attrs = leading_e | separate_e; + static_assert(sizeof(sign_attrs) == sizeof($field->attr), + "size matters"); + + // remove inapplicable inherited sign attributes +- size_t group_sign = group_attr($field) & sign_attrs; ++ uint64_t group_sign = group_attr($field) & sign_attrs; + $field->attr &= ~group_sign; + + if( $field->attr & sign_attrs ) { +@@ -3777,7 +3781,7 @@ data_clauses: data_clause + + // If any implied TYPE bits are on in addition to + // type_clause_e, they're in conflict. +- static const size_t type_implies = ++ static const uint64_t type_implies = + // ALIGNED clause not implemented + blank_zero_clause_e | justified_clause_e | picture_clause_e + | sign_clause_e | synched_clause_e | usage_clause_e; +@@ -4278,8 +4282,9 @@ usage_clause1: usage COMPUTATIONAL[comp + is_numeric(redefined->type) && redefined->size() == 4) { + // For now, we allow POINTER to expand a 32-bit item to 64 bits. + field->data.capacity = int_size_in_bytes(ptr_type_node); +- dbgmsg("%s: expanding #%zu %s capacity %u => %u", __func__, +- field_index(redefined), redefined->name, ++ dbgmsg("%s: expanding #" HOST_SIZE_T_PRINT_UNSIGNED ++ " %s capacity %u => %u", __func__, ++ (fmt_size_t)field_index(redefined), redefined->name, + redefined->data.capacity, field->data.capacity); + + redefined->embiggen(); +@@ -4533,7 +4538,7 @@ sign_clause: sign_is sign_leading sig + if( $sign_leading ) { + field->attr |= leading_e; + } else { +- field->attr &= ~size_t(leading_e); // turn off in case inherited ++ field->attr &= ~uint64_t(leading_e); // turn off in case inherited + field->attr |= signable_e; + } + if( $sign_separate ) field->attr |= separate_e; +@@ -11399,7 +11404,7 @@ perform_t::ec_labels_t::new_label( cbl_l + { + size_t n = 1 + symbols_end() - symbols_begin(); + cbl_name_t name; +- sprintf(name, "_perf_%s_%zu", role, n); ++ sprintf(name, "_perf_%s_" HOST_SIZE_T_PRINT_UNSIGNED, role, (fmt_size_t)n); + return label_add( type, name, yylineno ); + } + +@@ -11714,8 +11719,8 @@ struct stringify_src_t : public cbl_stri + } + + static void dump( const cbl_string_src_t& src ) { +- dbgmsg( "%s:%d:, %zu inputs delimited by %s:", __func__, __LINE__, +- src.ninput, ++ dbgmsg( "%s:%d:, " HOST_SIZE_T_PRINT_UNSIGNED " inputs delimited by %s:", ++ __func__, __LINE__, (fmt_size_t)src.ninput, + src.delimited_by.field? field_str(src.delimited_by.field) : "SIZE" ); + std::for_each(src.inputs, src.inputs + src.ninput, dump_input); + } +@@ -11864,8 +11869,8 @@ lang_check_failed (const char* file, int + + void ast_inspect( cbl_refer_t& input, bool backward, ast_inspect_list_t& inspects ) { + if( yydebug ) { +- dbgmsg("%s:%d: INSPECT %zu operations on %s, line %d", __func__, __LINE__, +- inspects.size(), input.field->name, yylineno); ++ dbgmsg("%s:%d: INSPECT " HOST_SIZE_T_PRINT_UNSIGNED " operations on %s, line %d", ++ __func__, __LINE__, (fmt_size_t)inspects.size(), input.field->name, yylineno); + } + std::for_each(inspects.begin(), inspects.end(), dump_inspect); + auto array = inspects.as_array(); +@@ -12006,6 +12011,7 @@ static REAL_VALUE_TYPE + numstr2i( const char input[], radix_t radix ) { + REAL_VALUE_TYPE output; + size_t integer = 0; ++ fmt_size_t integerf = 0; + int erc=0; + + switch( radix ) { +@@ -12017,7 +12023,8 @@ numstr2i( const char input[], radix_t ra + } + break; + case hexadecimal_e: +- erc = sscanf(input, "%zx", &integer); ++ erc = sscanf(input, "%" GCC_PRISZ "x", &integerf); ++ integer = integer; + real_from_integer (&output, VOIDmode, integer, UNSIGNED); + break; + case boolean_e: +@@ -12445,9 +12452,11 @@ initialize_statement( std::listoccurs.bounds.fixed_size() ) { + static char ub[32] = "boo"; +- sprintf(ub, " to %lu", oob->occurs.bounds.upper); ++ sprintf(ub, " to " HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)oob->occurs.bounds.upper); + upper_phrase = ub; + } + +@@ -12851,7 +12862,8 @@ eval_subject_t::label( const char skel[] + cbl_label_t label = protolabel; + label.line = yylineno; + size_t n = 1 + symbols_end() - symbols_begin(); +- snprintf(label.name, sizeof(label.name), "_eval_%s_%zu", skel, n); ++ snprintf(label.name, sizeof(label.name), ++ "_eval_%s_" HOST_SIZE_T_PRINT_UNSIGNED, skel, (fmt_size_t)n); + auto output = symbol_label_add( PROGRAM, &label ); + return output; + } +--- a/src/gcc/cobol/parse_ante.h ++++ b/src/gcc/cobol/parse_ante.h +@@ -142,7 +142,8 @@ literal_of( size_t value ) { + case 0: return literally_zero; + case 1: return literally_one; + } +- cbl_err("logic error: %s: %zu not supported", __func__, value); ++ cbl_err("logic error: %s: " HOST_SIZE_T_PRINT_UNSIGNED " not supported", ++ __func__, (fmt_size_t)value); + return NULL; + } + +@@ -312,7 +313,9 @@ struct evaluate_elem_t { + case_iter pcase; + + void dump() const { +- dbgmsg( "nother=%zu label '%s', %zu cases", nother, label.name, cases.size() ); ++ dbgmsg( "nother=" HOST_SIZE_T_PRINT_UNSIGNED " label '%s', " ++ HOST_SIZE_T_PRINT_UNSIGNED " cases", ++ (fmt_size_t)nother, label.name, (fmt_size_t)cases.size() ); + std::for_each( cases.begin(), cases.end(), case_t::Dump ); + } + +@@ -542,8 +545,10 @@ struct arith_t { + res.refer.field = cbl_field_of(symbol_at(tgt)); + tgts.push_back( res ); + +- dbgmsg("%s:%d: SRC: %3zu %s", __func__, __LINE__, src, a.str()); +- dbgmsg("%s:%d: to %3zu %s", __func__, __LINE__, tgt, res.refer.str()); ++ dbgmsg("%s:%d: SRC: %3" GCC_PRISZ "u %s", ++ __func__, __LINE__, (fmt_size_t)src, a.str()); ++ dbgmsg("%s:%d: to %3" GCC_PRISZ "u %s", ++ __func__, __LINE__, (fmt_size_t)tgt, res.refer.str()); + } + void operator()( const corresponding_fields_t::const_reference elem ) { + another_pair( elem.first, elem.second ); +@@ -2089,8 +2094,10 @@ static class current_t { + size_t n = + parser_call_target_update(caller, called->name, mangled_name); + // Zero is not an error +- dbgmsg("updated %zu calls from #%-3zu (%s) s/%s/%s/", +- n, caller, caller_name, called->name, mangled_name); ++ dbgmsg("updated " HOST_SIZE_T_PRINT_UNSIGNED ++ " calls from #%-3" GCC_PRISZ "u (%s) s/%s/%s/", ++ (fmt_size_t)n, (fmt_size_t)caller, caller_name, ++ called->name, mangled_name); + } + } + if( yydebug ) parser_call_targets_dump(); +@@ -3006,8 +3013,8 @@ file_add( YYLTYPE loc, cbl_file_t *file + } + file = cbl_file_of(e); + snprintf(field->name, sizeof(field->name), +- "%s%zu_%s", +- record_area_name_stem, symbol_index(e), file->name); ++ "%s" HOST_SIZE_T_PRINT_UNSIGNED "_%s", ++ record_area_name_stem, (fmt_size_t)symbol_index(e), file->name); + if( file->attr & external_e ) { + snprintf(field->name, sizeof(field->name), + "%s%s", record_area_name_stem, file->name); +@@ -3153,7 +3160,8 @@ static cbl_label_t * + implicit_paragraph() + { + cbl_name_t name; +- sprintf(name, "_implicit_paragraph_%zu", symbol_index()); ++ sprintf(name, "_implicit_paragraph_" HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)symbol_index()); + // Programs have to start with an implicit paragraph + return label_add(LblParagraph, name, yylineno); + } +@@ -3161,7 +3169,8 @@ static cbl_label_t * + implicit_section() + { + cbl_name_t name; +- sprintf(name, "_implicit_section_%zu", symbol_index()); ++ sprintf(name, "_implicit_section_" HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)symbol_index()); + // Programs have to start with an implicit section + return label_add(LblSection, name, yylineno); + } +@@ -3236,7 +3245,8 @@ data_division_ready() { + } + + if( nsymbol == 0 || nparse_error > 0 ) { +- dbgmsg( "%d errors in DATA DIVISION, compilation ceases", nparse_error ); ++ dbgmsg( HOST_SIZE_T_PRINT_DEC " errors in DATA DIVISION, compilation ceases", ++ (fmt_size_t)nparse_error ); + return false; + } + +--- a/src/gcc/cobol/scan.l ++++ b/src/gcc/cobol/scan.l +@@ -27,6 +27,9 @@ + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ ++%top{ ++#include "config.h" ++} + %{ + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" +--- a/src/gcc/cobol/scan_ante.h ++++ b/src/gcc/cobol/scan_ante.h +@@ -438,11 +438,12 @@ trim_location( int nkeep) { + } rescan = { yytext + nkeep, yytext + yyleng }; + + auto nline = std::count(rescan.p, rescan.pend, '\n'); +- dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (%zu lines, %d bytes)", ++ dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ++ " lines, " HOST_SIZE_T_PRINT_UNSIGNED " bytes)", + __func__, __LINE__, + nkeep, + int(rescan.size()), rescan.p, +- nline, rescan.size()); ++ (fmt_size_t)nline, (fmt_size_t)rescan.size()); + if( nline ) { + gcc_assert( yylloc.first_line + nline <= yylloc.last_line ); + yylloc.last_line =- int(nline); +--- a/src/gcc/cobol/structs.cc ++++ b/src/gcc/cobol/structs.cc +@@ -176,7 +176,7 @@ create_cblc_field_t() + struct cblc_field_t *parent;// This field's immediate parent field + size_t occurs_lower; // non-zero for a table + size_t occurs_upper; // non-zero for a table +- size_t attr; // See cbl_field_attr_t ++ uint64_t attr; // See cbl_field_attr_t + signed char type; // A one-byte copy of cbl_field_type_t + signed char level; // This variable's level in the naming heirarchy + signed char digits; // Digits specified in PIC string; e.g. 5 for 99v999 +@@ -196,7 +196,7 @@ create_cblc_field_t() + CHAR_P, "parent", + SIZE_T, "occurs_lower", + SIZE_T, "occurs_upper", +- SIZE_T, "attr", ++ ULONGLONG, "attr", + SCHAR, "type", + SCHAR, "level", + SCHAR, "digits", +--- a/src/gcc/cobol/symbols.cc ++++ b/src/gcc/cobol/symbols.cc +@@ -28,6 +28,7 @@ + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + ++#include "config.h" + #include // Before cobol-system because it uses poisoned functions + #include "cobol-system.h" + +@@ -814,24 +815,24 @@ cbl_field_t::size() const { + return field_size(this); + } + +-size_t ++uint64_t + cbl_field_t::set_attr( cbl_field_attr_t attr ) { + if( attr == signable_e ) { + if( ! has_attr(attr) && this->var_decl_node != NULL ) { + parser_field_attr_set(this, attr); + } + } +- return this->attr |= size_t(attr); ++ return this->attr |= uint64_t(attr); + } + +-size_t ++uint64_t + cbl_field_t::clear_attr( cbl_field_attr_t attr ) { + if( attr == signable_e ) { + if( this->var_decl_node != nullptr && has_attr(attr) ) { + parser_field_attr_set(this, attr, false); + } + } +- return this->attr &= ~size_t(attr); ++ return this->attr &= ~uint64_t(attr); + } + + static uint32_t +@@ -1001,8 +1002,8 @@ symbol_field_capacity( const cbl_field_t + size_t size = std::accumulate( symbol_at(bog), symbol_at_impl(eog), + 0, sym_field_size::capacity ); + +- if(true) dbgmsg("%s: %02u %s.data.capacity was computed as %zu", __func__, +- field->level, field->name, size); ++ if(true) dbgmsg("%s: %02u %s.data.capacity was computed as " HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, field->level, field->name, (fmt_size_t)size); + + return size; + } +@@ -1016,14 +1017,15 @@ has_odo( const symbol_elem_t& e ) { + struct cbl_field_t * + symbol_find_odo_debug( cbl_field_t * field ) { + size_t bog = field_index(field), eog = end_of_group(bog); +- dbgmsg("%s: %s is #%zu - #%zu of %zu, ends at %s", __func__, +- field->name, bog, eog, symbols.nelem, ++ dbgmsg("%s: %s is #" HOST_SIZE_T_PRINT_UNSIGNED " - #" HOST_SIZE_T_PRINT_UNSIGNED ++ " of " HOST_SIZE_T_PRINT_UNSIGNED ", ends at %s", __func__, ++ field->name, (fmt_size_t)bog, (fmt_size_t)eog, (fmt_size_t)symbols.nelem, + eog == symbols.nelem? "[end]" : cbl_field_of(symbol_at(eog))->name ); + + auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo ); + if( e != symbol_at_impl(eog, true) ) { +- dbgmsg("%s: %s has ODO at #%zu (return '%s')", __func__, +- field->name, symbol_index(e), ++ dbgmsg("%s: %s has ODO at #" HOST_SIZE_T_PRINT_UNSIGNED " (return '%s')", __func__, ++ field->name, (fmt_size_t)symbol_index(e), + cbl_field_of(e)->name ); + } + return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e); +@@ -1047,8 +1049,8 @@ symbols_dump( size_t first, bool header + if( !yydebug ) return 0; + + if( header ) { +- fprintf(stderr, "Symbol Table has %zu elements\n", +- symbols_end() - symbols_begin()); ++ fprintf(stderr, "Symbol Table has " HOST_SIZE_T_PRINT_UNSIGNED " elements\n", ++ (fmt_size_t)(symbols_end() - symbols_begin())); + } + + for( struct symbol_elem_t *e = symbols_begin(first); e < symbols_end(); e++ ) { +@@ -1056,25 +1058,26 @@ symbols_dump( size_t first, bool header + + switch(e->type) { + case SymFilename: +- s = xasprintf("%4zu %-18s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, + "Filename", e->elem.filename); + break; + case SymDataSection: +- s = xasprintf("%4zu %-18s line %d", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s line %d", (fmt_size_t)e->program, + cbl_section_of(e)->name(), cbl_section_of(e)->line); + break; + case SymFunction: +- s = xasprintf("%4zu %-15s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-15s %s", (fmt_size_t)e->program, + "Function", e->elem.function.name); + break; + case SymField: { + auto field = cbl_field_of(e); + char *odo_str = NULL; + if( field->occurs.depending_on != 0 ) { +- odo_str = xasprintf("odo %zu", field->occurs.depending_on ); ++ odo_str = xasprintf("odo " HOST_SIZE_T_PRINT_UNSIGNED, ++ (fmt_size_t)field->occurs.depending_on ); + } + ninvalid += cbl_field_of(e)->type == FldInvalid? 1 : 0; +- s = xasprintf("%4zu %-18s %s (%s)", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s (%s)", (fmt_size_t)e->program, + cbl_field_type_str(cbl_field_of(e)->type) + 3, + field_str(cbl_field_of(e)), + odo_str? odo_str : +@@ -1082,7 +1085,7 @@ symbols_dump( size_t first, bool header + } + break; + case SymLabel: +- s = xasprintf("%4zu %-18s %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, + "Labe1l", e->elem.label.str()); + if( LblProgram == cbl_label_of(e)->type ) { + const auto& L = *cbl_label_of(e); +@@ -1094,31 +1097,35 @@ symbols_dump( size_t first, bool header + } + break; + case SymSpecial: +- s = xasprintf("%4zu %-18s id=%2d, %s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s id=%2d, %s", (fmt_size_t)e->program, + "Special", e->elem.special.id, e->elem.special.name); + break; + case SymAlphabet: +- s = xasprintf("%4zu %-18s encoding=%2d, '%s'", e->program, "Alphabet", ++ s = xasprintf("%4" GCC_PRISZ "u %-18s encoding=%2d, '%s'", ++ (fmt_size_t)e->program, "Alphabet", + int(e->elem.alphabet.encoding), e->elem.alphabet.name); + break; + case SymFile: +- s = xasprintf("%4zu %-18s %-20s", e->program, ++ s = xasprintf("%4" GCC_PRISZ "u %-18s %-20s", (fmt_size_t)e->program, + "File", e->elem.file.name); + { + char same_as[26] = ""; + if( cbl_file_of(e)->same_record_as > 0 ) { +- sprintf(same_as, "s%3zu", cbl_file_of(e)->same_record_as); ++ sprintf(same_as, "s%3" GCC_PRISZ "u", ++ (fmt_size_t)cbl_file_of(e)->same_record_as); + } + const char *type = file_org_str(e->elem.file.org); + char *part = s; + +- s = xasprintf("%s %-4s %s %s %s{%zu-%zu} status=#%zu", ++ s = xasprintf("%s %-4s %s %s %s{" HOST_SIZE_T_PRINT_UNSIGNED "-" ++ HOST_SIZE_T_PRINT_UNSIGNED "} status=#" ++ HOST_SIZE_T_PRINT_UNSIGNED, + part, same_as, type, + e->elem.file.keys_str(), + cbl_file_of(e)->varies()? "varies " : "", +- cbl_file_of(e)->varying_size.min, +- cbl_file_of(e)->varying_size.max, +- cbl_file_of(e)->user_status); ++ (fmt_size_t)cbl_file_of(e)->varying_size.min, ++ (fmt_size_t)cbl_file_of(e)->varying_size.max, ++ (fmt_size_t)cbl_file_of(e)->user_status); + free(part); + } + break; +@@ -1126,7 +1133,8 @@ symbols_dump( size_t first, bool header + dbgmsg("%s: cannot dump symbol type %d", __func__, e->type); + continue; + } +- fprintf(stderr, "%4zu: %s\n", e - symbols_begin(), s); ++ fprintf(stderr, "%4" GCC_PRISZ "u: %s\n", ++ (fmt_size_t)(e - symbols_begin()), s); + free(s); + } + return ninvalid; +@@ -1238,7 +1246,8 @@ static struct symbol_elem_t * + } + + if(yydebug && group->type != FldGroup) { +- dbgmsg("Field #%zu '%s' is not a group", symbol_index(e), group->name); ++ dbgmsg("Field #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' is not a group", ++ (fmt_size_t)symbol_index(e), group->name); + symbols_dump(symbols.first_program, true); + } + if( group->type == FldInvalid ) return e; +@@ -1493,8 +1502,8 @@ field_str( const cbl_field_t *field ) { + for( size_t i=0; i < field->occurs.nkey; i++ ) { + updown[i] = field->occurs.keys[i].ascending? 'A' : 'D'; + } +- snprintf(name, sizeof(name), "%s[%zu]%s", +- field->name, field->occurs.ntimes(), updown.data()); ++ snprintf(name, sizeof(name), "%s[" HOST_SIZE_T_PRINT_UNSIGNED "]%s", ++ field->name, (fmt_size_t)field->occurs.ntimes(), updown.data()); + } + } + +@@ -1503,7 +1512,7 @@ field_str( const cbl_field_t *field ) { + + char offset[32] = ""; + if( field->level > 1 ) { +- sprintf( offset, "off%3zu", field->offset ); ++ sprintf( offset, "off%3" GCC_PRISZ "u", (fmt_size_t)field->offset ); + } + + char parredef = +@@ -1570,8 +1579,8 @@ field_str( const cbl_field_t *field ) { + }; + + pend += snprintf(pend, string + sizeof(string) - pend, +- "%c%3zu %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", +- parredef, field->parent, offset, ++ "%c%3" GCC_PRISZ "u %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", ++ parredef, (fmt_size_t)field->parent, offset, + (field->attr & global_e)? 'G' : 0x20, + (field->attr & external_e)? 'E' : 0x20, + storage_type, +@@ -1796,18 +1805,19 @@ symbols_update( size_t first, bool parse + field->line, field->level_str(), field->name); + + } else { +- dbgmsg("%s: error: data item %s #%zu '%s' capacity %u rejected", ++ dbgmsg("%s: error: data item %s #" HOST_SIZE_T_PRINT_UNSIGNED ++ " '%s' capacity %u rejected", + __func__, + 3 + cbl_field_type_str(field->type), +- isym, field->name, field->data.capacity); ++ (fmt_size_t)isym, field->name, field->data.capacity); + } + } + return 0; + } + + if(! (field->data.memsize == 0 || field_size(field) <= field->data.memsize) ) { +- dbgmsg( "%s:%d: #%zu: invalid: %s", __func__, __LINE__, +- symbol_index(p), field_str(cbl_field_of(p)) ); ++ dbgmsg( "%s:%d: #" HOST_SIZE_T_PRINT_UNSIGNED ": invalid: %s", __func__, __LINE__, ++ (fmt_size_t)symbol_index(p), field_str(cbl_field_of(p)) ); + } + assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field)); + assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) ); +@@ -1925,7 +1935,8 @@ symbol_field_forward( size_t index ) { + assert( index < symbols.nelem ); + symbol_elem_t *e = symbol_at(index); + if( (e->type != SymField) ) { +- dbgmsg("%s: logic error: #%zu is %s", __func__, index, symbol_type_str(e->type)); ++ dbgmsg("%s: logic error: #" HOST_SIZE_T_PRINT_UNSIGNED " is %s", ++ __func__, (fmt_size_t)index, symbol_type_str(e->type)); + } + assert(e->type == SymField); + +@@ -2433,9 +2444,9 @@ symbol_alphabet_add( size_t program, str + return symbol_add(&sym); + } + +-size_t ++uint64_t + numeric_group_attrs( const cbl_field_t *field ) { +- static const size_t inherit = signable_e | leading_e | separate_e | big_endian_e; ++ static const uint64_t inherit = signable_e | leading_e | separate_e | big_endian_e; + static_assert(sizeof(cbl_field_t::type) < sizeof(inherit), "need bigger type"); + assert(field); + if( field->type == FldNumericDisplay || field->type == FldGroup ) { +@@ -3258,10 +3269,10 @@ new_literal_add( const char initial[], u + + static size_t literal_count = 1; + sprintf(field->name, +- "%s%c_%zd", ++ "%s%c_" HOST_SIZE_T_PRINT_DEC, + "_literal", + field->type == FldLiteralA ? 'a' : 'n', +- literal_count++); ++ (fmt_size_t)literal_count++); + + return parser_symbol_add2(field); + } +@@ -3290,14 +3301,15 @@ new_literal( uint32_t len, const char in + void + temporaries_t::dump() const { + extern int yylineno; +- char *output = xasprintf("%4d: %zu Literals", yylineno, literals.size()); ++ char *output = xasprintf("%4d: " HOST_SIZE_T_PRINT_UNSIGNED " Literals", ++ yylineno, (fmt_size_t)literals.size()); + + for( const auto& elem : used ) { + if( ! elem.second.empty() ) { + char *so_far = output; +- output = xasprintf("%s, %zu %s", ++ output = xasprintf("%s, " HOST_SIZE_T_PRINT_UNSIGNED " %s", + so_far, +- elem.second.size(), ++ (fmt_size_t)elem.second.size(), + 3 + cbl_field_type_str(elem.first)); + free(so_far); + } +@@ -3580,8 +3592,8 @@ cbl_label_t::str() const { + buf = xasprintf("%-12s %s top level [%s], line %d", + type_str() + 3, name, mangled_name, line); + } else { +- buf = xasprintf("%-12s %s OF #%zu '%s' [%s], line %d", +- type_str() + 3, name, parent, ++ buf = xasprintf("%-12s %s OF #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' [%s], line %d", ++ type_str() + 3, name, (fmt_size_t)parent, + cbl_label_of(symbol_at(parent))->name, + mangled_name, line); + } +@@ -3695,7 +3707,8 @@ symbol_label_add( size_t program, cbl_la + // Set the program's mangled name, dehyphenated and uniqified by parent index. + if( input->type == LblProgram ) { + char *psz = cobol_name_mangler(input->name); +- input->mangled_name = xasprintf("%s.%zu", psz, input->parent); ++ input->mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, ++ psz, (fmt_size_t)input->parent); + free(psz); + } + +@@ -3764,7 +3777,8 @@ symbol_program_add( size_t program, cbl_ + + // Set the program's mangled name, dehyphenated and uniqified by parent index. + char *psz = cobol_name_mangler(input->name); +- elem.elem.label.mangled_name = xasprintf("%s.%zu", psz, input->parent); ++ elem.elem.label.mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, ++ psz, (fmt_size_t)input->parent); + free(psz); + + e = std::find_if( symbols_begin(program), symbols_end(), +@@ -4445,8 +4459,8 @@ symbol_forward_names( size_t ifield ) { + for( auto sym = symbols_begin(ifield); sym && sym->type == SymField; ) { + const cbl_field_t *field = cbl_field_of(sym); + if( !(field->type == FldForward) ) { +- dbgmsg("%s:%d: logic error, not FldForward: #%zu %s", +- __func__, __LINE__, symbol_index(sym), field_str(field)); ++ dbgmsg("%s:%d: logic error, not FldForward: #" HOST_SIZE_T_PRINT_UNSIGNED " %s", ++ __func__, __LINE__, (fmt_size_t)symbol_index(sym), field_str(field)); + } + assert(field->type == FldForward); + +@@ -4469,8 +4483,9 @@ symbol_forward_to( size_t fwd ) { + if( !elem.second ) { + const auto& field = *cbl_field_of(symbols_begin(fwd)); + if( yydebug ) +- dbgmsg("%s:%d: no symbol found for #%zu %s %s", __func__, __LINE__, +- fwd, cbl_field_type_str(field.type), field.name); ++ dbgmsg("%s:%d: no symbol found for #" HOST_SIZE_T_PRINT_UNSIGNED " %s %s", ++ __func__, __LINE__, ++ (fmt_size_t)fwd, cbl_field_type_str(field.type), field.name); + return fwd; + } + +@@ -4491,8 +4506,9 @@ cbl_file_key_t::deforward( size_t ifile + const auto field = cbl_field_of(symbol_at(ifield)); + + if( is_forward(field) && yydebug ) { +- dbgmsg("%s:%d: key %d: #%zu %s of %s is %s", "deforward", __LINE__, +- keys[ifile]++, ifield, field->name, file->name, ++ dbgmsg("%s:%d: key %d: #" HOST_SIZE_T_PRINT_UNSIGNED " %s of %s is %s", ++ "deforward", __LINE__, ++ keys[ifile]++, (fmt_size_t)ifield, field->name, file->name, + cbl_field_type_str(field->type) + 3); + } + +@@ -4546,7 +4562,7 @@ cbl_file_key_t::str() const { + + *p++ = '['; + for( auto f = fields; f < fields + nfield; f++) { +- auto n = sprintf(p, "%s%zu", sep, *f); ++ auto n = sprintf(p, "%s" HOST_SIZE_T_PRINT_UNSIGNED, sep, (fmt_size_t)*f); + p += n; + sep = ", "; + } +--- a/src/gcc/cobol/symbols.h ++++ b/src/gcc/cobol/symbols.h +@@ -494,7 +494,7 @@ bool is_elementary( enum cbl_field_type_ + struct cbl_field_t { + size_t offset; + enum cbl_field_type_t type, usage; +- size_t attr; ++ uint64_t attr; + static_assert(sizeof(attr) == sizeof(cbl_field_attr_t), "wrong attr size"); + size_t parent; // symbols[] index of our parent + size_t our_index; // symbols[] index of this field, set in symbol_add() +@@ -597,8 +597,8 @@ struct cbl_field_t { + bool has_attr( cbl_field_attr_t attr ) const { + return cbl_field_attr_t(this->attr & attr) == attr; + } +- size_t set_attr( cbl_field_attr_t attr ); +- size_t clear_attr( cbl_field_attr_t attr ); ++ uint64_t set_attr( cbl_field_attr_t attr ); ++ uint64_t clear_attr( cbl_field_attr_t attr ); + const char * attr_str( const std::vector& attrs ) const; + + bool is_justifiable() const { +@@ -1273,7 +1273,8 @@ struct function_descr_t { + static function_descr_t init( const char name[] ) { + function_descr_t descr = {}; + if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) { +- dbgmsg("name truncated to '%s' (max %zu characters)", name); ++ dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED ++ " characters)", name, (fmt_size_t)sizeof(descr.name)); + } + return descr; // truncation also reported elsewhere ? + } +@@ -2049,11 +2050,12 @@ struct cbl_perform_tgt_t { + void dump() const { + assert(ifrom); + if( !ito ) { +- dbgmsg( "%s:%d: #%3zu %s", __PRETTY_FUNCTION__, __LINE__, +- ifrom, from()->str() ); ++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s", __PRETTY_FUNCTION__, __LINE__, ++ (fmt_size_t)ifrom, from()->str() ); + } else { +- dbgmsg( "%s:%d: #%3zu %s THRU #%3zu %s", __PRETTY_FUNCTION__, __LINE__, +- ifrom, from()->str(), ito, to()->str() ); ++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s THRU #%3" GCC_PRISZ "u %s", ++ __PRETTY_FUNCTION__, __LINE__, ++ (fmt_size_t)ifrom, from()->str(), (fmt_size_t)ito, to()->str() ); + } + } + +@@ -2246,7 +2248,7 @@ cbl_file_t * symbol_record_file( const c + + struct cbl_field_t * symbol_find_odo( const cbl_field_t * field ); + +-size_t numeric_group_attrs( const cbl_field_t *field ); ++uint64_t numeric_group_attrs( const cbl_field_t *field ); + + static inline struct cbl_field_t * + field_at( size_t index ) { +--- a/src/gcc/cobol/symfind.cc ++++ b/src/gcc/cobol/symfind.cc +@@ -147,13 +147,14 @@ dump_symbol_map2( const field_key_t& key + + for( auto candidate : candidates ) { + char *tmp = fields; +- fields = xasprintf("%s%s %3zu", tmp? tmp : "", sep, candidate); ++ fields = xasprintf("%s%s %3" GCC_PRISZ "u", ++ tmp? tmp : "", sep, (fmt_size_t)candidate); + sep[0] = ','; + free(tmp); + } + +- dbgmsg( "%s:%d: %3zu %s {%s}", __func__, __LINE__, +- key.program, key.name, fields ); ++ dbgmsg( "%s:%d: %3" GCC_PRISZ "u %s {%s}", __func__, __LINE__, ++ (fmt_size_t)key.program, key.name, fields ); + free(fields); + } + +@@ -179,7 +180,8 @@ dump_symbol_map_value( const char name[] + + for( ; p != value.second.end(); p++ ) { + char *tmp = ancestry; +- ancestry = xasprintf("%s%s %3zu", tmp? tmp : "", sep, *p); ++ ancestry = xasprintf("%s%s %3" GCC_PRISZ "u", ++ tmp? tmp : "", sep, (fmt_size_t)*p); + sep[0] = ','; + free(tmp); + } +@@ -256,8 +258,11 @@ build_symbol_map() { + symbol_map.erase(sym_name_t("")); + + if( yydebug ) { +- dbgmsg( "%s:%d: %zu of %zu symbols inserted into %zu in symbol_map", +- __func__, __LINE__, nsym, end, symbol_map.size() ); ++ dbgmsg( "%s:%d: " HOST_SIZE_T_PRINT_UNSIGNED " of " ++ HOST_SIZE_T_PRINT_UNSIGNED " symbols inserted into " ++ HOST_SIZE_T_PRINT_UNSIGNED " in symbol_map", ++ __func__, __LINE__, (fmt_size_t)nsym, (fmt_size_t)end, ++ (fmt_size_t)symbol_map.size() ); + } + } + +@@ -277,8 +282,8 @@ public: + } + protected: + void dump_key( const char tag[], const symbol_map_t::key_type& key ) const { +- dbgmsg( "symbol_map key: %s { %3zu %3zu %s }", +- tag, key.program, key.parent, key.name ); ++ dbgmsg( "symbol_map key: %s { %3" GCC_PRISZ "u %3" GCC_PRISZ "u %s }", ++ tag, (fmt_size_t)key.program, (fmt_size_t)key.parent, key.name ); + } + }; + +@@ -459,14 +464,16 @@ symbol_match2( size_t program, + sep = ""; + for( auto field : fields ) { + char *partial = fieldstr; +- int asret = asprintf(&fieldstr, "%s%s%zu", partial? partial : "", sep, field); ++ int asret = asprintf(&fieldstr, "%s%s" HOST_SIZE_T_PRINT_UNSIGNED, ++ partial? partial : "", sep, (fmt_size_t)field); + assert(asret); + sep = ", "; + assert(fieldstr); + free(partial); + } + +- dbgmsg("%s: '%s' matches %zu fields: {%s}", __func__, ancestry, fields.size(), fieldstr); ++ dbgmsg("%s: '%s' matches " HOST_SIZE_T_PRINT_UNSIGNED " fields: {%s}", ++ __func__, ancestry, (fmt_size_t)fields.size(), fieldstr); + free(fieldstr); + } + free(ancestry); +@@ -537,8 +544,8 @@ symbol_find( size_t program, std::list(NULL, false); + } + if( yydebug ) { +- dbgmsg( "%s:%d: '%s' has %zu possible matches", +- __func__, __LINE__, names.back(), items.size() ); ++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", ++ __func__, __LINE__, names.back(), (fmt_size_t)items.size() ); + std::for_each( items.begin(), items.end(), dump_symbol_map_value1 ); + } + } +@@ -577,8 +584,8 @@ symbol_find_of( size_t program, std::lis + } + + if( yydebug ) { +- dbgmsg( "%s:%d: '%s' has %zu possible matches", +- __func__, __LINE__, names.back(), input.size() ); ++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", ++ __func__, __LINE__, names.back(), (fmt_size_t)input.size() ); + std::for_each( input.begin(), input.end(), dump_symbol_map_value1 ); + } + +--- a/src/gcc/cobol/util.cc ++++ b/src/gcc/cobol/util.cc +@@ -324,8 +324,9 @@ is_numeric_edited( const char picture[] + break; + default: + numed_message = xasprintf("invalid PICTURE character " +- "'%c' at offset %zu in '%s'", +- *p, p - picture, picture); ++ "'%c' at offset " HOST_SIZE_T_PRINT_UNSIGNED ++ " in '%s'", ++ *p, (fmt_size_t)(p - picture), picture); + break; + } + +@@ -370,10 +371,12 @@ normalize_picture( char picture[] ) + assert(pmatch[2].rm_so == pmatch[1].rm_eo + 1); // character paren number + p = picture + pmatch[2].rm_so; + len = 0; +- if( 1 != sscanf(p, "%zu", &len) ) { ++ fmt_size_t lenf = 0; ++ if( 1 != sscanf(p, "%" GCC_PRISZ "u", &lenf) ) { + dbgmsg("%s:%d: no number found in '%s'", __func__, __LINE__, p); + goto irregular; + } ++ len = lenf; + if( len == 0 ) { + dbgmsg("%s:%d: ZERO length found in '%s'", __func__, __LINE__, p); + goto irregular; +@@ -985,7 +988,8 @@ cbl_refer_t::subscripts_set( const std:: + const char * + cbl_refer_t::str() const { + static char subscripts[64]; +- sprintf(subscripts, "(%u of %zu dimensions)", nsubscript, dimensions(field)); ++ sprintf(subscripts, "(%u of " HOST_SIZE_T_PRINT_UNSIGNED " dimensions)", ++ nsubscript, (fmt_size_t)dimensions(field)); + char *output = xasprintf("%s %s %s", + field? field_str(field) : "(none)", + 0 < dimensions(field)? subscripts : "", +@@ -1031,10 +1035,10 @@ struct move_corresponding_field { + tgt.field = cbl_field_of(symbol_at(elem.second)); + + if( yydebug ) { +- dbgmsg("move_corresponding:%d: SRC: %3zu %s", __LINE__, +- elem.first, src.str()); +- dbgmsg("move_corresponding:%d: to %3zu %s", __LINE__, +- elem.second, tgt.str()); ++ dbgmsg("move_corresponding:%d: SRC: %3" GCC_PRISZ "u %s", __LINE__, ++ (fmt_size_t)elem.first, src.str()); ++ dbgmsg("move_corresponding:%d: to %3" GCC_PRISZ "u %s", __LINE__, ++ (fmt_size_t)elem.second, tgt.str()); + } + + parser_move(tgt, src); +@@ -1138,8 +1142,9 @@ valid_move( const struct cbl_field_t *tg + if( yydebug && ! retval ) { + auto bad = std::find_if( p, pend, + []( char ch ) { return ! ISDIGIT(ch); } ); +- dbgmsg("%s:%d: offending character '%c' at position %zu", +- __func__, __LINE__, *bad, bad - p); ++ dbgmsg("%s:%d: offending character '%c' at position " ++ HOST_SIZE_T_PRINT_UNSIGNED, ++ __func__, __LINE__, *bad, (fmt_size_t)(bad - p)); + } + } + break; +@@ -1498,9 +1503,10 @@ ambiguous_reference( size_t program ) { + is_unique(program, proc.first) ); + if( proc.second.end() != ambiguous ) { + if( yydebug ) { +- dbgmsg("%s: %s of '%s' has %zu potential matches", __func__, ++ dbgmsg("%s: %s of '%s' has " HOST_SIZE_T_PRINT_UNSIGNED ++ "potential matches", __func__, + ambiguous->paragraph(), ambiguous->section(), +- procedures.count(*ambiguous)); ++ (fmt_size_t)procedures.count(*ambiguous)); + } + return new procref_t(*ambiguous); + } +@@ -1543,9 +1549,9 @@ parent_names( const symbol_elem_t *elem, + + if( is_filler(cbl_field_of(elem)) ) return; + +- // dbgmsg("%s: asked about %s of %s (%zu away)", __func__, ++ // dbgmsg("%s: asked about %s of %s (" HOST_SIZE_T_PRINT_UNSIGNED " away)", __func__, + // cbl_field_of(elem)->name, +- // cbl_field_of(group)->name, elem - group); ++ // cbl_field_of(group)->name, (fmt_size_t)(elem - group)); + + for( const symbol_elem_t *e=elem; e && group < e; e = symbol_parent(e) ) { + names.push_front( cbl_field_of(e)->name ); +@@ -1564,9 +1570,11 @@ public: + symbol_elem_t *rgroup, type_t type ) + : lgroup(lgroup), rgroup(rgroup), type(type) + { +- dbgmsg( "%s:%d: for #%zu %s and #%zu %s on line %d", __func__, __LINE__, +- symbol_index(lgroup), cbl_field_of(lgroup)->name, +- symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); ++ dbgmsg( "%s:%d: for #" HOST_SIZE_T_PRINT_UNSIGNED ++ " %s and #" HOST_SIZE_T_PRINT_UNSIGNED " %s on line %d", ++ __func__, __LINE__, ++ (fmt_size_t)symbol_index(lgroup), cbl_field_of(lgroup)->name, ++ (fmt_size_t)symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); + } + + static bool +@@ -1643,8 +1651,9 @@ corresponding_fields( cbl_field_t *lhs, + lhsg.a = symbols_begin(field_index(lhs)); + lhsg.z = std::find_if( lhsg.a, symbols_end(), next_group(lhsg.a) ); + +- dbgmsg("%s:%d: examining %zu symbols after %s", __func__, __LINE__, +- lhsg.z - lhsg.a, lhs->name); ++ dbgmsg("%s:%d: examining " HOST_SIZE_T_PRINT_UNSIGNED " symbols after %s", ++ __func__, __LINE__, ++ (fmt_size_t)(lhsg.z - lhsg.a), lhs->name); + + find_corresponding finder( symbol_at(field_index(lhs)), + symbol_at(field_index(rhs)), type ); +@@ -1652,8 +1661,9 @@ corresponding_fields( cbl_field_t *lhs, + + output.erase(0); + +- dbgmsg( "%s:%d: %s and %s have %zu corresponding fields", +- __func__, __LINE__, lhs->name, rhs->name, output.size() ); ++ dbgmsg( "%s:%d: %s and %s have " HOST_SIZE_T_PRINT_UNSIGNED ++ " corresponding fields", ++ __func__, __LINE__, lhs->name, rhs->name, (fmt_size_t)output.size() ); + + return output; + } +@@ -1772,7 +1782,8 @@ class unique_stack : public std::stack>4; + new_size |= new_size>>8; + new_size |= new_size>>16; +- new_size |= new_size>>32; ++ new_size |= (new_size>>16)>>16; + *dest_size = new_size + 1; + *dest = (char *)realloc(*dest, *dest_size); + } diff --git a/patches/pr119364-2.diff b/patches/pr119364-2.diff new file mode 100644 index 0000000..08cc3b2 --- /dev/null +++ b/patches/pr119364-2.diff @@ -0,0 +1,158 @@ +--- a/src/gcc/cobol/genapi.cc ++++ b/src/gcc/cobol/genapi.cc +@@ -13287,24 +13287,29 @@ static void + stash_exceptions( const cbl_enabled_exceptions_array_t *enabled ) + { + // We need to create a static array of bytes +- size_t narg = enabled->nbytes(); +- unsigned char *p = (unsigned char *)(enabled->ecs); +- +- static size_t prior_narg = 0; +- static size_t max_narg = 128; +- static unsigned char *prior_p = (unsigned char *)xmalloc(max_narg); ++ size_t nec = enabled->nec; ++ size_t sz = int_size_in_bytes(cbl_enabled_exception_type_node); ++ size_t narg = nec * sz; ++ cbl_enabled_exception_t *p = enabled->ecs; ++ ++ static size_t prior_nec = 0; ++ static size_t max_nec = 0; ++ static cbl_enabled_exception_t *prior_p; + + bool we_got_new_data = false; +- if( prior_narg != narg ) ++ if( prior_nec != nec ) + { + we_got_new_data = true; + } + else + { +- // The narg counts are the same. +- for(size_t i=0; i max_narg ) ++ if( nec > max_nec ) + { +- max_narg = narg; +- prior_p = (unsigned char *)xrealloc(prior_p, max_narg); ++ max_nec = nec; ++ prior_p = (cbl_enabled_exception_t *) ++ xrealloc(prior_p, max_nec * sizeof(cbl_enabled_exception_t)); + } + +- memcpy(prior_p, p, narg); ++ memcpy((unsigned char *)prior_p, (unsigned char *)p, ++ nec * sizeof(cbl_enabled_exception_t)); + + static int count = 1; + +@@ -13341,12 +13348,33 @@ stash_exceptions( const cbl_enabled_exce + TREE_TYPE(constr) = array_of_chars_type; + TREE_STATIC(constr) = 1; + TREE_CONSTANT(constr) = 1; ++ unsigned char *q = XALLOCAVEC(unsigned char, sz); + +- for(size_t i=0; i +Date: Sat, 6 Jun 2026 17:37:48 +0200 +Subject: [PATCH] m68k: prevent moves with pre-dec src overlapping with dst + (PR123853) + +Since gcc-15 combine can produce moves from a PRE_DEC MEM to an +address that uses the same register, causing wrong code on m68k. +In particular the glibc build is broken. This adjusts the m68k +backend to reject such moves. + +On the test case in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123853#c11 +the difference is + +- move.l -(%a0),(%a0,%d0.l) ++ lea (%a0,%d0.l),%a1 ++ move.l -(%a0),(%a1) + +which is exactly what we want. + +Testing in progress. + +gcc/ + + 2026-06-06 Mikael Pettersson + + PR rtl-optimization/123853 + * config/m68k/m68k-protos.h (check_move_simode): Declare. + * config/m68k/m68k.cc (check_move_simode): New, reject moves + where SRC is auto-inc/dec MEM whose REG occurs in DST. + * config/m68k/m68k.md (*movsi_m68k): Add check_move_simode + to condition. + (*movsi_m68k2): Likewise. +--- + gcc/config/m68k/m68k-protos.h | 1 + + gcc/config/m68k/m68k.cc | 25 +++++++++++++++++++++++++ + gcc/config/m68k/m68k.md | 4 ++-- + 3 files changed, 28 insertions(+), 2 deletions(-) + +--- a/src/gcc/config/m68k/m68k-protos.h ++++ b/src/gcc/config/m68k/m68k-protos.h +@@ -26,6 +26,7 @@ extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to); + extern void split_di (rtx[], int, rtx[], rtx[]); + + extern bool valid_mov3q_const (HOST_WIDE_INT); ++extern bool check_move_simode (const rtx *); + extern const char *output_move_simode (rtx *); + extern const char *output_move_himode (rtx *); + extern const char *output_move_qimode (rtx *); +--- a/src/gcc/config/m68k/m68k.cc ++++ b/src/gcc/config/m68k/m68k.cc +@@ -3227,6 +3227,31 @@ valid_mov3q_const (HOST_WIDE_INT i) + return TARGET_ISAB && (i == -1 || IN_RANGE (i, 1, 7)); + } + ++/* Return true if OPERANDS[] are valid for output_move_simode. ++ In particular, if SRC is a MEM with auto-inc/dec adressing and ++ its REG is mentioned in DST, it's invalid. See PR123853. */ ++ ++bool ++check_move_simode (const rtx *operands) ++{ ++ rtx src = operands[1]; ++ if (MEM_P (src)) ++ { ++ rtx src1 = XEXP (src, 0); ++ if (GET_CODE (src1) == PRE_DEC || GET_CODE (src1) == POST_INC) ++ { ++ rtx src2 = XEXP (src1, 0); ++ if (REG_P (src2)) ++ { ++ rtx dst = operands[0]; ++ if (reg_overlap_mentioned_p (src2, dst)) ++ return false; ++ } ++ } ++ } ++ return true; ++} ++ + /* Return an instruction to move CONST_INT OPERANDS[1] into OPERANDS[0]. + I is the value of OPERANDS[1]. */ + +--- a/src/gcc/config/m68k/m68k.md ++++ b/src/gcc/config/m68k/m68k.md +@@ -993,7 +993,7 @@ + ;; We don't allow f-regs since fixed point cannot go in them. + [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") + (match_operand:SI 1 "general_src_operand" "damSnT,n,i"))] +- "!TARGET_COLDFIRE && reload_completed" ++ "!TARGET_COLDFIRE && reload_completed && check_move_simode (operands)" + { + return output_move_simode (operands); + } +@@ -1006,7 +1006,7 @@ + [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") + (match_operand:SI 1 "general_src_operand" "damSKT,n,i"))] + +- "!TARGET_COLDFIRE" ++ "!TARGET_COLDFIRE && check_move_simode (operands)" + { + return output_move_simode (operands); + } +-- +2.54.0 + diff --git a/patches/pr124637.diff b/patches/pr124637.diff new file mode 100644 index 0000000..9eb1989 --- /dev/null +++ b/patches/pr124637.diff @@ -0,0 +1,54 @@ +--- a/src/gcc/calls.cc ++++ b/src/gcc/calls.cc +@@ -2252,10 +2252,20 @@ load_register_parameters (struct arg_data *args, int num_actuals, + && !TREE_SIDE_EFFECTS (tree_value) + && immediate_const_ctor_p (DECL_INITIAL (tree_value))) + { ++ HOST_WIDE_INT size = int_expr_size (DECL_INITIAL (tree_value)); + rtx target = gen_reg_rtx (word_mode); + store_constructor (DECL_INITIAL (tree_value), target, 0, +- int_expr_size (DECL_INITIAL (tree_value)), +- false); ++ size, false); ++ /* On big-endian targets, store_constructor places fields ++ from the MSB, which places any padding bits in the least ++ significant bytes. If required, use a logical right shift ++ to place things where expected in a register parameter. */ ++ if (BYTES_BIG_ENDIAN ++ && size < UNITS_PER_WORD ++ && args[i].locate.where_pad == PAD_DOWNWARD) ++ target = expand_shift (RSHIFT_EXPR, word_mode, target, ++ (UNITS_PER_WORD - size) * BITS_PER_UNIT, ++ NULL_RTX, 1); + reg = gen_rtx_REG (word_mode, REGNO (reg)); + emit_move_insn (reg, target); + } +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr124637.c +@@ -0,0 +1,26 @@ ++/* { dg-do compile { target { powerpc64-*-* } } } */ ++/* { dg-options "-O2 -m64 -mbig-endian" } */ ++ ++typedef struct { ++ unsigned short a; ++ unsigned short b; ++ unsigned short c; ++} S_t; ++ ++static const S_t m1 = { 0x20, 1, 1 }; ++ ++void ext(S_t r); ++void foo() { ext(m1); } ++ ++/* Apologies in advance that these may be a little fragile. */ ++ ++/* { dg-final { scan-assembler "lis 3,0x20" } } */ ++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ ++/* { dg-final { scan-assembler "sldi 3,3,16" } } */ ++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ ++ ++/* { dg-final { scan-assembler-not "lis 9,0x20" } } */ ++/* { dg-final { scan-assembler-not "ori 9,9,0x1" } } */ ++/* { dg-final { scan-assembler-not "lis 3,0x1" } } */ ++/* { dg-final { scan-assembler-not "rldimi 3,9,32,0" } } */ ++ diff --git a/patches/pr39491.diff b/patches/pr39491.diff new file mode 100644 index 0000000..4c51820 --- /dev/null +++ b/patches/pr39491.diff @@ -0,0 +1,132 @@ +# DP: Proposed patch for PR libstdc++/39491. + +2009-04-16 Benjamin Kosnik + + * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. + +Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc +=================================================================== +--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) ++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) +@@ -213,4 +221,111 @@ + return tanh((double) x); + } + #endif ++ ++ // From libmath/signbitl.c ++ // XXX ABI mistakenly exported ++#if defined (__hppa__) && defined (__linux__) ++# include ++# include ++ ++typedef unsigned int U_int32_t __attribute ((mode (SI))); ++typedef int Int32_t __attribute ((mode (SI))); ++typedef unsigned int U_int64_t __attribute ((mode (DI))); ++typedef int Int64_t __attribute ((mode (DI))); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ U_int32_t msw; ++ U_int32_t lsw; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int32_t lsw; ++ U_int32_t msw; ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++ ++/* Get int from the exponent of a long double. */ ++#define GET_LDOUBLE_EXP(exp,d) \ ++do { \ ++ ieee_long_double_shape_type ge_u; \ ++ ge_u.value = (d); \ ++ (exp) = ge_u.parts.sign_exponent; \ ++} while (0) ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t msw; ++ U_int64_t lsw; ++ } parts64; ++ struct ++ { ++ U_int32_t w0, w1, w2, w3; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t lsw; ++ U_int64_t msw; ++ } parts64; ++ struct ++ { ++ U_int32_t w3, w2, w1, w0; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++/* Get most significant 64 bit int from a quad long double. */ ++#define GET_LDOUBLE_MSW64(msw,d) \ ++do { \ ++ ieee_quad_double_shape_type qw_u; \ ++ qw_u.value = (d); \ ++ (msw) = qw_u.parts64.msw; \ ++} while (0) ++ ++int ++__signbitl (long double x) ++{ ++#if LDBL_MANT_DIG == 113 ++ Int64_t msw; ++ ++ GET_LDOUBLE_MSW64 (msw, x); ++ return msw < 0; ++#else ++ Int32_t e; ++ ++ GET_LDOUBLE_EXP (e, x); ++ return e & 0x8000; ++#endif ++} ++#endif ++ ++#ifndef _GLIBCXX_HAVE___SIGNBITL ++ ++#endif + } // extern "C" +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 +@@ -635,6 +635,7 @@ + sqrtf; + sqrtl; + copysignf; ++ __signbitl; + + # GLIBCXX_ABI compatibility only. + # std::string diff --git a/patches/pr66368.diff b/patches/pr66368.diff new file mode 100644 index 0000000..c2ec875 --- /dev/null +++ b/patches/pr66368.diff @@ -0,0 +1,22 @@ +# DP: PR go/66368, build libgo with -fno-stack-protector + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -47,6 +47,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB + ACLOCAL_AMFLAGS = -I ./config -I ../config + + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -564,6 +564,7 @@ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR) + AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS) + ACLOCAL_AMFLAGS = -I ./config -I ../config + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ diff --git a/patches/pr67590.diff b/patches/pr67590.diff new file mode 100644 index 0000000..0b3adfa --- /dev/null +++ b/patches/pr67590.diff @@ -0,0 +1,36 @@ +# DP: Fix PR67590, setting objdump macro. + +--- a/src/libcc1/configure.ac ++++ b/src/libcc1/configure.ac +@@ -74,6 +74,31 @@ if test "$GXX" = yes; then + fi + AC_SUBST(libsuffix) + ++# Figure out what objdump we will be using. ++AS_VAR_SET_IF(gcc_cv_objdump,, [ ++if test -f $gcc_cv_binutils_srcdir/configure.ac \ ++ && test -f ../binutils/Makefile \ ++ && test x$build = x$host; then ++ # Single tree build which includes binutils. ++ gcc_cv_objdump=../binutils/objdump$build_exeext ++elif test -x objdump$build_exeext; then ++ gcc_cv_objdump=./objdump$build_exeext ++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then ++ gcc_cv_objdump="$OBJDUMP_FOR_TARGET" ++else ++ AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) ++fi]) ++ ++AC_MSG_CHECKING(what objdump to use) ++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then ++ # Single tree build which includes binutils. ++ AC_MSG_RESULT(newly built objdump) ++elif test x$gcc_cv_objdump = x; then ++ AC_MSG_RESULT(not found) ++else ++ AC_MSG_RESULT($gcc_cv_objdump) ++fi ++ + dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. + AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, + [libcc1_cv_lib_sockets= diff --git a/patches/pr67899.diff b/patches/pr67899.diff new file mode 100644 index 0000000..0f2ebd0 --- /dev/null +++ b/patches/pr67899.diff @@ -0,0 +1,31 @@ +# DP: Proposed patch for PR sanitizer/67899 + +Index: b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -606,11 +606,10 @@ namespace __sanitizer { + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ +-#if defined(__sparc__) +- unsigned long sa_flags; +-#else +- int sa_flags; ++#if defined(__sparc__) && defined(__arch64__) ++ int __pad; + #endif ++ int sa_flags; + #endif + #endif + #if SANITIZER_LINUX +@@ -640,7 +639,8 @@ namespace __sanitizer { + void (*handler)(int signo); + void (*sigaction)(int signo, void *info, void *ctx); + }; +- unsigned long sa_flags; ++ int __pad; ++ int sa_flags; + void (*sa_restorer)(void); + __sanitizer_kernel_sigset_t sa_mask; + }; diff --git a/patches/pr81829.diff b/patches/pr81829.diff new file mode 100644 index 0000000..472e3d0 --- /dev/null +++ b/patches/pr81829.diff @@ -0,0 +1,308 @@ +From f8029ed6d3dd444ee2608146118f2189cf9ef0d8 Mon Sep 17 00:00:00 2001 +From: marxin +Date: Mon, 14 Aug 2017 13:56:32 +0200 +Subject: [PATCH] Fix file find utils and add unit tests (PR driver/81829). + +gcc/ChangeLog: + +2017-08-14 Martin Liska + + PR driver/81829 + * file-find.c (do_add_prefix): Always append DIR_SEPARATOR + at the end of a prefix. + (remove_prefix): Properly remove elements and accept also + path without a trailing DIR_SEPARATOR. + (purge): New function. + (file_find_verify_prefix_creation): Likewise. + (file_find_verify_prefix_add): Likewise. + (file_find_verify_prefix_removal): Likewise. + (file_find_c_tests): Likewise. + * selftest-run-tests.c (selftest::run_tests): Add new + file_find_c_tests. + * selftest.h (file_find_c_tests): Likewise. +--- + gcc/file-find.c | 182 ++++++++++++++++++++++++++++++++++++++++++----- + gcc/gcc-ar.c | 19 +++-- + gcc/selftest-run-tests.c | 1 + + gcc/selftest.h | 1 + + 4 files changed, 179 insertions(+), 24 deletions(-) + +Index: b/src/gcc/file-find.c +=================================================================== +--- a/src/gcc/file-find.c ++++ b/src/gcc/file-find.c +@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. + #include "system.h" + #include "filenames.h" + #include "file-find.h" ++#include "selftest.h" + + static bool debug = false; + +@@ -126,11 +127,22 @@ do_add_prefix (struct path_prefix *ppref + /* Keep track of the longest prefix. */ + + len = strlen (prefix); ++ bool append_separator = !IS_DIR_SEPARATOR (prefix[len - 1]); ++ if (append_separator) ++ len++; ++ + if (len > pprefix->max_len) + pprefix->max_len = len; + + pl = XNEW (struct prefix_list); +- pl->prefix = xstrdup (prefix); ++ char *dup = XCNEWVEC (char, len + 1); ++ memcpy (dup, prefix, append_separator ? len - 1 : len); ++ if (append_separator) ++ { ++ dup[len - 1] = DIR_SEPARATOR; ++ dup[len] = '\0'; ++ } ++ pl->prefix = dup; + + if (*prev) + pl->next = *prev; +@@ -212,34 +224,170 @@ prefix_from_string (const char *p, struc + void + remove_prefix (const char *prefix, struct path_prefix *pprefix) + { +- struct prefix_list *remove, **prev, **remove_prev = NULL; ++ char *dup = NULL; + int max_len = 0; ++ size_t len = strlen (prefix); ++ if (prefix[len - 1] != DIR_SEPARATOR) ++ { ++ char *dup = XNEWVEC (char, len + 2); ++ memcpy (dup, prefix, len); ++ dup[len] = DIR_SEPARATOR; ++ dup[len + 1] = '\0'; ++ prefix = dup; ++ } + + if (pprefix->plist) + { +- prev = &pprefix->plist; +- for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next) ++ prefix_list *prev = NULL; ++ for (struct prefix_list *pl = pprefix->plist; pl;) + { + if (strcmp (prefix, pl->prefix) == 0) + { +- remove = pl; +- remove_prev = prev; +- continue; ++ if (prev == NULL) ++ pprefix->plist = pl->next; ++ else ++ prev->next = pl->next; ++ ++ prefix_list *remove = pl; ++ free (remove); ++ pl = pl->next; + } ++ else ++ { ++ prev = pl; + +- int l = strlen (pl->prefix); +- if (l > max_len) +- max_len = l; ++ int l = strlen (pl->prefix); ++ if (l > max_len) ++ max_len = l; + +- prev = &pl; +- } +- +- if (remove_prev) +- { +- *remove_prev = remove->next; +- free (remove); ++ pl = pl->next; ++ } + } + + pprefix->max_len = max_len; + } ++ ++ if (dup) ++ free (dup); ++} ++ ++#if CHECKING_P ++ ++namespace selftest { ++ ++/* Encode '#' and '_' to path and dir separators in order to test portability ++ of the test-cases. */ ++ ++static char * ++purge (const char *input) ++{ ++ char *s = xstrdup (input); ++ for (char *c = s; *c != '\0'; c++) ++ switch (*c) ++ { ++ case '/': ++ case ':': ++ *c = 'a'; /* Poison default string values. */ ++ break; ++ case '_': ++ *c = PATH_SEPARATOR; ++ break; ++ case '#': ++ *c = DIR_SEPARATOR; ++ break; ++ default: ++ break; ++ } ++ ++ return s; ++} ++ ++const char *env1 = purge ("#home#user#bin_#home#user#bin_#bin_#usr#bin"); ++const char *env2 = purge ("#root_#root_#root"); ++ ++/* Verify creation of prefix. */ ++ ++static void ++file_find_verify_prefix_creation (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ ASSERT_EQ (15, prefix.max_len); ++ ++ /* All prefixes end with DIR_SEPARATOR. */ ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->next->prefix); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->next->next->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->next->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next->next->next); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_add (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ add_prefix (&prefix, purge ("#root")); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#root#"), ++ prefix.plist->next->next->next->next->prefix); ++ ++ add_prefix_begin (&prefix, purge ("#var")); ++ ASSERT_STREQ (purge ("#var#"), prefix.plist->prefix); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_removal (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ /* All occurences of a prefix should be removed. */ ++ remove_prefix (purge ("#home#user#bin"), &prefix); ++ ++ ASSERT_EQ (9, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next); ++ ++ remove_prefix (purge ("#usr#bin#"), &prefix); ++ ASSERT_EQ (5, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next); ++ ++ remove_prefix (purge ("#dev#random#"), &prefix); ++ remove_prefix (purge ("#bi#"), &prefix); ++ ++ remove_prefix (purge ("#bin#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); ++ ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env2, &prefix); ++ ASSERT_EQ (6, prefix.max_len); ++ ++ remove_prefix (purge ("#root#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); + } ++ ++/* Run all of the selftests within this file. */ ++ ++void file_find_c_tests () ++{ ++ file_find_verify_prefix_creation (); ++ file_find_verify_prefix_add (); ++ file_find_verify_prefix_removal (); ++} ++ ++} // namespace selftest ++#endif /* CHECKING_P */ +Index: b/src/gcc/gcc-ar.c +=================================================================== +--- a/src/gcc/gcc-ar.c ++++ b/src/gcc/gcc-ar.c +@@ -194,15 +194,20 @@ main (int ac, char **av) + #ifdef CROSS_DIRECTORY_STRUCTURE + real_exe_name = concat (target_machine, "-", PERSONALITY, NULL); + #endif +- /* Do not search original location in the same folder. */ +- char *exe_folder = lrealpath (av[0]); +- exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; +- char *location = concat (exe_folder, PERSONALITY, NULL); ++ char *wrapper_file = lrealpath (av[0]); ++ exe_name = lrealpath (find_a_file (&path, real_exe_name, X_OK)); + +- if (access (location, X_OK) == 0) +- remove_prefix (exe_folder, &path); ++ /* If the exe_name points to the wrapper, remove folder of the wrapper ++ from prefix and try search again. */ ++ if (strcmp (exe_name, wrapper_file) == 0) ++ { ++ char *exe_folder = wrapper_file; ++ exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; ++ remove_prefix (exe_folder, &path); ++ ++ exe_name = find_a_file (&path, real_exe_name, X_OK); ++ } + +- exe_name = find_a_file (&path, real_exe_name, X_OK); + if (!exe_name) + { + fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0], +Index: b/src/gcc/selftest-run-tests.c +=================================================================== +--- a/src/gcc/selftest-run-tests.c ++++ b/src/gcc/selftest-run-tests.c +@@ -66,6 +66,7 @@ selftest::run_tests () + sreal_c_tests (); + fibonacci_heap_c_tests (); + typed_splay_tree_c_tests (); ++ file_find_c_tests (); + + /* Mid-level data structures. */ + input_c_tests (); +Index: b/src/gcc/selftest.h +=================================================================== +--- a/src/gcc/selftest.h ++++ b/src/gcc/selftest.h +@@ -196,6 +196,7 @@ extern void tree_c_tests (); + extern void tree_cfg_c_tests (); + extern void vec_c_tests (); + extern void wide_int_cc_tests (); ++extern void file_find_c_tests (); + + extern int num_passes; + diff --git a/patches/pr87808.diff b/patches/pr87808.diff new file mode 100644 index 0000000..c5d2868 --- /dev/null +++ b/patches/pr87808.diff @@ -0,0 +1,56 @@ +# DP: Fix PR jit/87808. + +--- a/src/gcc/jit/Make-lang.in ++++ b/src/gcc/jit/Make-lang.in +@@ -146,6 +146,9 @@ ifneq (,$(findstring mingw,$(target))) + jit_OBJS += jit/jit-w32.o + endif + ++CFLAGS-jit/jit-playback.o += \ ++ -DFALLBACK_GCC_EXEC_PREFIX=\"$(libdir)/gcc/$(target_subdir)/$(version)\" ++ + # Use strict warnings for this front end. + jit-warn = $(STRICT_WARN) + +--- a/src/gcc/jit/jit-playback.cc ++++ b/src/gcc/jit/jit-playback.cc +@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. + #include "diagnostic.h" + #include "stmt.h" + #include "realmpfr.h" ++#include "file-find.h" + + #include "jit-playback.h" + #include "jit-result.h" +@@ -3437,7 +3438,31 @@ void + playback::context:: + invoke_embedded_driver (const vec *argvec) + { ++ static char* gcc_driver_file = NULL; ++ + JIT_LOG_SCOPE (get_logger ()); ++ ++ /* process_command(), uses make_relative_prefix(), searches PATH ++ for the external driver, which might not be found. In this case ++ fall back to the configured default. */ ++#ifdef FALLBACK_GCC_EXEC_PREFIX ++ if (gcc_driver_file == NULL && ::getenv ("GCC_EXEC_PREFIX") == NULL) ++ { ++ struct path_prefix path = { 0, 0, "exec" }; ++ ++ prefix_from_env ("PATH", &path); ++ gcc_driver_file = find_a_file (&path, gcc_driver_name, X_OK); ++ if (gcc_driver_file == NULL) ++ { ++ char *str = concat ("GCC_EXEC_PREFIX=", ++ FALLBACK_GCC_EXEC_PREFIX, NULL); ++ ::putenv (str); ++ log ("gcc driver %s not found, using fallback GCC_EXEC_PREFIX=%s", ++ gcc_driver_name, FALLBACK_GCC_EXEC_PREFIX); ++ } ++ } ++#endif ++ + driver d (true, /* can_finalize */ + false); /* debug */ + int result = d.main (argvec->length (), diff --git a/patches/pr94253.diff b/patches/pr94253.diff new file mode 100644 index 0000000..4a935f2 --- /dev/null +++ b/patches/pr94253.diff @@ -0,0 +1,48 @@ +commit 50e1e417b5cc68a6fd280e0a67c5c4eba524b70b +Author: Richard Sandiford +Date: Sun Mar 22 18:51:48 2020 +0000 + + rs6000: Allow FPRs to change between SDmode and DDmode [PR94254] + + g:497498c878d48754318e486428e2aa30854020b9 caused lra to cycle + on some SDmode reloads for power6. As explained in more detail + in the PR comments, the problem was a conflict between two target + hooks: rs6000_secondary_memory_needed_mode required SDmode FPR + reloads to use DDmode memory (rightly, since using SDmode memory + wouldn't make progress) but rs6000_can_change_mode_class didn't + allow FPRs to change from SDmode to DDmode. Previously lra + ignored that and changed the mode anyway. + + From what Segher says, it sounds like the "from_size < 8 || to_size < 8" + check is mostly there for SF<->64-bit subregs, and that SDmode is stored + in the way that target-independent code expects. This patch therefore + allows SD<->DD changes. + + I wondered about checking for SD<->64-bit changes instead, but that + seemed like an unnecessary generalisation for this stage. + + 2020-03-23 Richard Sandiford + + gcc/ + PR target/94254 + * config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow + FPRs to change between SDmode and DDmode. + +--- a/src/gcc/config/rs6000/rs6000.cc ++++ b/src/gcc/config/rs6000/rs6000.cc +@@ -13690,6 +13690,15 @@ rs6000_can_change_mode_class (machine_mo + || (to == SDmode && from == DDmode)) + return true; + ++ /* Allow SD<->DD changes, since SDmode values are stored in ++ the low half of the DDmode, just like target-independent ++ code expects. We need to allow at least SD->DD since ++ rs6000_secondary_memory_needed_mode asks for that change ++ to be made for SD reloads. */ ++ if ((to == DDmode && from == SDmode) ++ || (to == SDmode && from == DDmode)) ++ return true; ++ + if (from_size < 8 || to_size < 8) + return false; + diff --git a/patches/rename-info-files.diff b/patches/rename-info-files.diff new file mode 100644 index 0000000..02cc8e2 --- /dev/null +++ b/patches/rename-info-files.diff @@ -0,0 +1,661 @@ +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + + +2004-02-17 Matthias Klose + +gcc/ChangeLog: + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +--- a/src/gcc/fortran/gfortran.texi ++++ b/src/gcc/fortran/gfortran.texi +@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +--- a/src/gcc/fortran/Make-lang.in ++++ b/src/gcc/fortran/Make-lang.in +@@ -116,7 +116,9 @@ fortran.tags: force + cd $(srcdir)/fortran; $(ETAGS) -o TAGS.sub *.cc *.h; \ + $(ETAGS) --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_FORTRAN_I_NAME = $(shell echo gfc-internals|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info doc/$(INFO_FORTRAN_I_NAME).info + + F95_DVIFILES = doc/gfortran.dvi + +@@ -199,10 +201,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -230,7 +232,7 @@ GFC_INTERNALS_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfc-internals.info: $(GFC_INTERNALS_TEXI) ++doc/$(INFO_FORTRAN_I_NAME).info: $(GFC_INTERNALS_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfc-internals.info-*; \ + $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ +@@ -267,7 +269,7 @@ fortran.install-common: install-finclude + + fortran.install-plugin: + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -285,7 +287,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3685,8 +3685,31 @@ ifeq ($(BUILD_INFO),no-info) + no-info: info + endif + +-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ +- doc/gccinstall.info doc/cppinternals.info ++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') ++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') ++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') ++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') ++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') ++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') ++ ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++ ++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ ++ doc/$(INFO_GCCINT_NAME).info \ ++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info ++ ++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' \ ++ -D 'fngcc $(INFO_GCC_NAME)' \ ++ -D 'fngcov $(INFO_GCC_NAME)' \ ++ -D 'fngcovtool $(INFO_GCC_NAME)' \ ++ -D 'fngcovdump $(INFO_GCC_NAME)' \ ++ -D 'fngxx $(INFO_GXX_NAME)' \ ++ -D 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ ++ -D 'fngccgo $(INFO_GCCGO_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3734,7 +3757,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + if [ -n "$(PKGVERSION)" ]; then \ + echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \ + fi +- echo "@set BUGURL $(BUGURL_TEXI)" >> $@T; \ ++ echo "@set BUGURL $(BUGURL_TEXI)" >> $@T ++ ( \ ++ echo '@set fncpp $(INFO_CPP_NAME)'; \ ++ echo '@set fngcc $(INFO_GCC_NAME)'; \ ++ echo '@set fngcov $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovtool $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovdump $(INFO_GCC_NAME)'; \ ++ echo '@set fngxx $(INFO_GXX_NAME)'; \ ++ echo '@set fngccint $(INFO_GCCINT_NAME)'; \ ++ echo '@set fngccinstall $(INFO_GCCINSTALL_NAME)'; \ ++ echo '@set fncppint $(INFO_CPPINT_NAME)'; \ ++ echo '@set fngfortran $(INFO_FORTRAN_NAME)'; \ ++ echo '@set fngccgo $(INFO_GCCGO_NAME)'; \ ++ ) >> $@T + mv -f $@T $@ + + +@@ -3742,21 +3778,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + # patterns. To use them, put each of the specific targets with its + # specific dependencies but no build commands. + +-doc/cpp.info: $(TEXI_CPP_FILES) +-doc/gcc.info: $(TEXI_GCC_FILES) +-doc/gccint.info: $(TEXI_GCCINT_FILES) +-doc/cppinternals.info: $(TEXI_CPPINT_FILES) +- ++# Generic entry to handle info files, which are not renamed (currently Ada) + doc/%.info: %.texi + if [ x$(BUILD_INFO) = xinfo ]; then \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ + # Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + +@@ -4238,11 +4294,11 @@ install-libgdiagnostics: libgdiagnostics + # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir + # to do the install. + install-info:: doc installdirs \ +- $(DESTDIR)$(infodir)/cpp.info \ +- $(DESTDIR)$(infodir)/gcc.info \ +- $(DESTDIR)$(infodir)/cppinternals.info \ +- $(DESTDIR)$(infodir)/gccinstall.info \ +- $(DESTDIR)$(infodir)/gccint.info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs +@@ -4481,8 +4537,11 @@ uninstall: lang.uninstall + -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) + -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) +- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* +- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* + for i in ar nm ranlib ; do \ + install_name=`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ;\ + target_install_name=$(target_noncanonical)-`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ; \ +--- a/src/gcc/ada/gnat-style.texi ++++ b/src/gcc/ada/gnat-style.texi +@@ -12,7 +12,7 @@ + @finalout + @dircategory GNU Ada Tools + @direntry +-* gnat-style: (gnat-style.info). gnat-style ++* gnat-style: (gnat-style-15). GNAT Coding Style + @end direntry + + @c %**end of header +--- a/src/gcc/ada/gnat_rm.texi ++++ b/src/gcc/ada/gnat_rm.texi +@@ -12,7 +12,7 @@ + @finalout + @dircategory GNU Ada Tools + @direntry +-* gnat_rm: (gnat_rm.info). gnat_rm ++* GNAT Reference Manual: (gnat_rm-15). Reference Manual for GNU Ada tools. + @end direntry + + @c %**end of header +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -19243,7 +19243,7 @@ One of the standard libraries bypassed b + @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines + which GCC uses to overcome shortcomings of particular machines, or special + needs for some languages. +-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler ++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler + Collection (GCC) Internals}, + for more discussion of @file{libgcc.a}.) + In most cases, you need @file{libgcc.a} even when you want to avoid +@@ -19252,7 +19252,7 @@ or @option{-nodefaultlibs} you should us + This ensures that you have no unresolved references to internal GCC + library subroutines. + (An example of such an internal subroutine is @code{__main}, used to ensure C++ +-constructors are called; @pxref{Collect2,,@code{collect2}, gccint, ++constructors are called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}.) + + @opindex nostdlib++ +@@ -37987,7 +37987,7 @@ Note that you can also specify places to + @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These + take precedence over places specified using environment variables, which + in turn take precedence over those specified by the configuration of GCC@. +-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, ++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}. + + @table @env +@@ -38167,7 +38167,7 @@ the headers it contains change. + + A precompiled header file is searched for when @code{#include} is + seen in the compilation. As it searches for the included file +-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the ++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the + compiler looks for a precompiled header in each directory just before it + looks for the include file in that directory. The name searched for is + the name specified in the @code{#include} with @samp{.gch} appended. If +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -29824,7 +29824,7 @@ want to write code that checks whether t + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * C++ Volatiles:: What constitutes an access to a volatile object. +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -371,5 +371,5 @@ available at @uref{https://gcc.gnu.org/o + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. +--- a/src/gcc/doc/libgcc.texi ++++ b/src/gcc/doc/libgcc.texi +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +--- a/src/gcc/doc/gccint.texi ++++ b/src/gcc/doc/gccint.texi +@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -81,7 +81,7 @@ write front ends for new languages. It + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +--- a/src/gcc/doc/cpp.texi ++++ b/src/gcc/doc/cpp.texi +@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +--- a/src/gcc/doc/gcc.texi ++++ b/src/gcc/doc/gcc.texi +@@ -135,7 +135,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -89,7 +89,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +--- a/src/gcc/doc/cppinternals.texi ++++ b/src/gcc/doc/cppinternals.texi +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -31,7 +31,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU Offloading and Multi Processing Runtime Library. ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU Offloading and Multi Processing Runtime Library. + @end direntry + + This manual documents libgomp, the GNU Offloading and Multi Processing +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -616,7 +616,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + MULTISRCTOP = + MULTIBUILDTOP = +@@ -1395,15 +1396,16 @@ env.lo: libgomp_f.h + env.o: libgomp_f.h + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + # target overrides +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -132,14 +132,16 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +--- a/src/libitm/libitm.texi ++++ b/src/libitm/libitm.texi +@@ -20,7 +20,7 @@ Free Documentation License''. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libitm: (libitm). GNU Transactional Memory Library ++* @value{fnlibitm}: (@value{fnlibitm}). GNU Transactional Memory Library + @end direntry + + This manual documents the GNU Transactional Memory Library. +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -110,14 +110,17 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -1188,14 +1188,17 @@ vpath % $(strip $(search_path)) + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + # GNU Make needs to see an explicit $(MAKE) variable in the command it +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -95,10 +95,11 @@ GO_TEXI_FILES = \ + $(gcc_docdir)/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gccgo.info: $(GO_TEXI_FILES) ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES) + if test "x$(BUILD_INFO)" = xinfo; then \ +- rm -f doc/gccgo.info*; \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ rm -f doc/$(INFO_GCCGO_NAME).info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + else true; fi + +@@ -124,7 +125,7 @@ gccgo.pod: go/gccgo.texi + go.all.cross: gccgo-cross$(exeext) + go.start.encap: gccgo$(exeext) + go.rest.encap: +-go.info: doc/gccgo.info ++go.info: doc/$(INFO_GCCGO_NAME).info + go.dvi: doc/gccgo.dvi + go.pdf: doc/gccgo.pdf + go.html: $(build_htmldir)/go/index.html +@@ -163,7 +164,7 @@ go.install-common: installdirs + + go.install-plugin: + +-go.install-info: $(DESTDIR)$(infodir)/gccgo.info ++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info + + go.install-pdf: doc/gccgo.pdf + @$(NORMAL_INSTALL) +@@ -213,7 +214,7 @@ go.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext) + rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext) + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext) +- rm -rf $(DESTDIR)$(infodir)/gccgo.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info* + + # Clean hooks. + +--- a/src/gcc/go/gccgo.texi ++++ b/src/gcc/go/gccgo.texi +@@ -50,7 +50,7 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gccgo: (gccgo). A GCC-based compiler for the Go language ++* @value{fngccgo}: (@value{fngccgo}). A GCC-based compiler for the Go language + @end direntry + @end format + +@@ -124,7 +124,7 @@ and the Info entries for @file{gccgo} an + + The @command{gccgo} command is a frontend to @command{gcc} and + supports many of the same options. @xref{Option Summary, , Option +-Summary, gcc, Using the GNU Compiler Collection (GCC)}. This manual ++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual + only documents the options specific to @command{gccgo}. + + The @command{gccgo} command may be used to compile Go source code into +--- a/src/libquadmath/libquadmath.texi ++++ b/src/libquadmath/libquadmath.texi +@@ -25,7 +25,7 @@ copy and modify this GNU manual. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libquadmath: (libquadmath). GCC Quad-Precision Math Library ++* @value{fnlibquadmath}: (@value{fnlibquadmath}). GCC Quad-Precision Math Library + @end direntry + + This manual documents the GCC Quad-Precision Math Library API. +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -139,16 +139,18 @@ STAMP_BUILD_INFO = + endif + + +-stamp-geninsrc: libquadmath.info +- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++ ++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info + @touch $@ + + stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @touch $@ + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + endif BUILD_LIBQUADMATH + +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -283,7 +283,8 @@ AM_V_texidevnull = $(am__v_texidevnull_@ + am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) + am__v_texidevnull_0 = > /dev/null + am__v_texidevnull_1 = +-INFO_DEPS = libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++INFO_DEPS = $(INFO_LIBQMATH_NAME).info + am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include + DVIS = libquadmath.dvi + PDFS = libquadmath.pdf +@@ -556,8 +557,8 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info +-@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + # Automake Documentation: + # If your package has Texinfo files in many directories, you can use the +@@ -1437,19 +1438,19 @@ uninstall-am: uninstall-dvi-am uninstall + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD) \ + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1) + +-@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info +-@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + @BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +-@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + all-local: $(ALL_LOCAL_DEPS) + + # Unconditionally override this target, so that automake's definition + # does not wrongly interfere. +-libquadmath.info: $(STAMP_BUILD_INFO) ++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) + + libquadmath-vers.texi: + echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@ diff --git a/patches/rust-enabled.diff b/patches/rust-enabled.diff new file mode 100644 index 0000000..d0972fa --- /dev/null +++ b/patches/rust-enabled.diff @@ -0,0 +1,23 @@ +# DP: Explicitely enable rust, too late to be removed from 23.04 + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -2150,18 +2150,6 @@ if test -d ${srcdir}/gcc; then + ;; + esac + +- # Disable Rust for GCC 13 release. +- case ${add_this_lang}:${language} in +- yes:rust) +- # Specifically requested language; tell them. +- AC_MSG_ERROR([Rust is not supported in GCC 13 release]) +- ;; +- *:rust) +- # Silently disable. +- add_this_lang=unsupported +- ;; +- esac +- + # Disable jit if -enable-host-shared not specified + # but not if building for Mingw. All code in Windows + # is position independent code (PIC). diff --git a/patches/sh-bootstrap-compare.diff b/patches/sh-bootstrap-compare.diff new file mode 100644 index 0000000..05dc959 --- /dev/null +++ b/patches/sh-bootstrap-compare.diff @@ -0,0 +1,14 @@ +# DP: ignore gm2version.o stage diff on some archtectures (m68k, riscv64) + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -4223,6 +4223,9 @@ compare_exclusions="$compare_exclusions + compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*" + compare_exclusions="$compare_exclusions | gcc/m2/gm2version*" + compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" ++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/c++98/math_stubs_long_double\$(objext)" ++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/.libs/compatibility\$(objext)" ++compare_exclusions="$compare_exclusions | gcc/ira-emit\$(objext)" + case "$target" in + hppa*64*-*-hpux*) ;; + mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; diff --git a/patches/sh-lra-support-doc.diff b/patches/sh-lra-support-doc.diff new file mode 100644 index 0000000..01b78f0 --- /dev/null +++ b/patches/sh-lra-support-doc.diff @@ -0,0 +1,44 @@ +From 8a687ad35493af0112f156f4551ef5ece82fae54 Mon Sep 17 00:00:00 2001 +From: Oleg Endo +Date: Sun, 29 Sep 2024 21:33:29 +0900 +Subject: [PATCH] SH: Add support for LRA and enable it by default + +SH: Tighten memory predicates and constraints + +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -3093,9 +3093,20 @@ A target hook which returns @code{true} if @var{subst} can't + substitute safely pseudos with equivalent memory values during + register allocation. + The default version of this target hook returns @code{false}. +-On most machines, this default should be used. For generally +-machines with non orthogonal register usage for addressing, such +-as SH, this hook can be used to avoid excessive spilling. ++On most machines, this default should be used. For machines with ++non-orthogonal register usage for addressing, such as SH, ++this hook can be used to avoid excessive spilling. ++@end deftypefn ++ ++@deftypefn {Target Hook} bool TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P (rtx @var{subst}) ++A target hook which returns @code{true} if @var{subst} can't ++substitute safely pseudos with equivalent constant values during ++register allocation. ++The default version of this target hook returns @code{false}. ++On most machines, this default should be used. For machines with ++special constant load instructions that have additional constraints ++or being dependent on mode-switching, such as SH, this hook can be ++used to avoid unsafe substitution. + @end deftypefn + + @deftypefn {Target Hook} bool TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT (rtx *@var{offset1}, rtx *@var{offset2}, poly_int64 @var{orig_offset}, machine_mode @var{mode}) +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -2398,6 +2398,8 @@ in the reload pass. + + @hook TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P + ++@hook TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P ++ + @hook TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT + + @hook TARGET_SPILL_CLASS diff --git a/patches/sh-lra-support.diff b/patches/sh-lra-support.diff new file mode 100644 index 0000000..2dc86e9 --- /dev/null +++ b/patches/sh-lra-support.diff @@ -0,0 +1,3380 @@ +From fd2e8b96b6fbf45a4cccd147ee82afac904e72fc Mon Sep 17 00:00:00 2001 +From: Oleg Endo +Date: Sun, 29 Sep 2024 21:33:29 +0900 +Subject: [PATCH] SH: Add support for LRA and enable it by default + +SH: Tighten memory predicates and constraints + +In particular, reject invalid hard-regs for memory address registers when using +LRA. Unfortunately we need to distingquish between old reload and LRA behaviors +for the transitional period. LRA seems to require stricter predicates and +constraints. + +gcc/ChangeLog: + + PR target/55212 + * config/sh/predicates.md (simple_mem_operand): + Use 'satisfies_constraint_Sra'. + (post_inc_mem, pre_dec_mem): Use 'satisfies_constraint_Rab'. + * config/sh/constraints.md (Rab, Rai, Sgb): New constraints. + (Sua, Sdd, Snd, Ssd, Sbv, Sra, Ara, Add): Use Rab and Rai constraints. + * config/sh/sync.md (atomic_mem_operand_0, atomic_mem_operand_1): Reject + GBR addresses when hard-llcs atomic mode is enabled. + +SH: Pin input args to hard-regs via predicates for sfuncs + +Some sfuncs uses hard reg as input and clobber its raw reg pattern. It +seems that LRA doesn't process this clobber pattern. Rewrite these +patterns so as to work with LRA. + +gcc/ChangeLog: + + PR target/55212 + * config/sh/predicates.md (hard_reg_r0..r7): New predicates. + * config/sh/sh.md (udivsi3_i4, udivsi3_i4_single, + udivsi3_i1): Rewrite with match_operand and match_dup. + (block_lump_real, block_lump_real_i4): Ditto. + (udivsi3): Adjust for it. + * config/sh/sh-mem.cc (expand_block_move): Ditto. + +LRA: Take scratch as implicit unused output reloads + +gcc/ChangeLog: + * lra-constraints.cc (match_reload, process_alt_operands, + curr_insn_transform): Take scratch as implicit unused + output reloads. + +LRA: Add cannot_substitute_const_equiv_p target hook + +On SH fp constant load special instructions 'fldi0' and 'fldi1' are only valid +for single-precision fp mode and thus depend on mode-switiching. Since LRA is +not aware of that it would emit such constant loads in the wrong mode. The new +target hook allows rejecting such potentially unsafe substitutions. + +gcc/ChangeLog: + PR target/117182 + * target.def (cannot_substitute_const_equiv_p): New target hook. + * doc/tm.texi.in: Add it. + * lra-constraints.cc (get_equiv): Use it. + * config/sh/sh.cc (sh_cannot_substitute_const_equiv_p): Override it. + * doc/tm.texi: Re-generate. + +SH: A test case for wrong-code with -mlra PR55212 c#192 / c#248 / att. 59102 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * gcc.target/sh/pr55212-c248.c: New test. + +SH: Add test case from PR55212 c#298 / c#311 / att. 59185 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/sh.exp: New. + * g++.target/sh/torture/sh-torture.exp: New. + * g++.target/sh/torture/pr55212-c311.C: New + +SH: Add test case from PR55212 c#331 / c#333 / att. 59215 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c333.C: New. + +SH: Add test case from PR55212 c#367 / c#373 / att. 59285 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c373.C: New. + +SH: Add test case from PR55212 c#378 / c#384 / att. 59289 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c384.C: New. + +SH: Add test case from PR55212 c#405 / c#413 / att. 59442 + +gcc/testsuite/ChangeLog: + + PR target/55212 + * g++.target/sh/torture/pr55212-c413.C: New. + +SH: Try to workaround fp-reg related move insns + +LRA will try to satisfy the constraints in match_scratch for the memory +displacements and it will make issues on this target. To mitigate the +issue, split movsf_ie_ra into several new patterns to remove +match_scratch. Also define a new sub-pattern of movdf for constant +loads. + +gcc/ChangeLog: + + PR target/55212 + * gcc/config/sh/predicates.md (pc_relative_load_operand): New predicate. + * gcc/config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Remove. + (sh_movsf_ie_y_split_p): New proto. + * gcc/config/sh/sh.cc: (sh_movsf_ie_ra_split_p): Remove. + (sh_movsf_ie_y_split_p): New function. + (broken_move): Take movsf_ie_ra into account for fldi cases. + * gcc/config/sh/sh.md (movdf_i4_F_z): New insn pattern. + (movdf): Use it. + (movsf_ie_ra): Use define_insn instead of define_insn_and_split. + (movsf_ie_F_z, movsf_ie_Q_z, movsf_ie_y): New insn pattern. + (movsf): Use new patterns. + (movsf-1): Don't split when operands[0] or operands[1] is fpul. + (movdf_i4_F_z+7): New splitter. + +SH: Try to workaround fp-reg related move insns pt.2 + +The current movsf logic for LRA doesn't work well for reg from/to +multiword subreg. Use a separate pattern movsf_ie_rffr for that case. +Also movsf_ie_ra should be disabled for reg from/to subreg of SImode. +If not, it's recognizable as such move when subreg1 pass tries to split +multiword because the constraints aren't effective in that stage. + +gcc/ChangeLog: + PR target/55212 + * config/sh/sh-protos.h (sh_movsf_ie_subreg_multiword_p): + New proto. + * config/sh/sh.cc (sh_movsf_ie_subreg_multiword_p): New function. + * config/sh/sh.md (movsf_ie_rffr): New insn_and_split. + (movsf): Use movsf_ie_rffr when sh_movsf_ie_subreg_multiword_p is true. + (movsf_ie_ra): Disable when sh_movsf_ie_y_split_p is true. + +SH: Try to reduce R0 live ranges + +Some move or extend patterns will make long R0 live ranges and could +confuse LRA. Try reduce the failures by using insn variants that use an +explicit R0-clobber. + +gcc/ChangeLog: + PR target/55212 + * config/sh/sh.md (extendsi2_short_mem_disp_z): New + insn_and_split. + (extendsi2): Use it for LRA. + (mov_store_mem_index, *mov_store_mem_index): New patterns. + (mov): Use it for LRA. + (movsf_ie_store_mem_index, movsf_ie_load_mem_index, + *movsf_ie_store_mem_inde, *movsf_ie_load_mem_index): New patterns. + (movsf): Use it for LRA. + +SH: Enable LRA by default + +gcc/ChangeLog: + + PR target/55212 + * conifg/sh/sh.opt (sh_lra_flag): Init to 1. + +SH: Add patch 59550 from PR/target 55212 +--- + gcc/config/sh/constraints.md | 65 +- + gcc/config/sh/predicates.md | 46 +- + gcc/config/sh/sh-mem.cc | 4 +- + gcc/config/sh/sh-protos.h | 3 +- + gcc/config/sh/sh.cc | 63 +- + gcc/config/sh/sh.md | 419 ++++++++++-- + gcc/config/sh/sh.opt | 2 +- + gcc/config/sh/sync.md | 8 +- + gcc/lra-constraints.cc | 20 +- + gcc/target.def | 21 +- + gcc/testsuite/g++.target/sh/sh.exp | 297 +++++++++ + .../g++.target/sh/torture/pr55212-c311.C | 73 +++ + .../g++.target/sh/torture/pr55212-c333.C | 259 ++++++++ + .../g++.target/sh/torture/pr55212-c373.C | 612 ++++++++++++++++++ + .../g++.target/sh/torture/pr55212-c384.C | 429 ++++++++++++ + .../g++.target/sh/torture/pr55212-c413.C | 38 ++ + .../g++.target/sh/torture/sh-torture.exp | 299 +++++++++ + gcc/testsuite/gcc.target/sh/pr55212-c248.c | 31 + + 20 files changed, 2586 insertions(+), 122 deletions(-) + create mode 100644 gcc/testsuite/g++.target/sh/sh.exp + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c311.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c333.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c373.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c384.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c413.C + create mode 100644 gcc/testsuite/g++.target/sh/torture/sh-torture.exp + create mode 100644 gcc/testsuite/gcc.target/sh/pr55212-c248.c + +diff --git a/src/gcc/config/sh/constraints.md b/src/gcc/config/sh/constraints.md +index bfdd868213e..04fb241e271 100644 +--- a/src/gcc/config/sh/constraints.md ++++ b/src/gcc/config/sh/constraints.md +@@ -45,8 +45,10 @@ + ;; H: Floating point 1 + ;; Q: pc relative load operand + ;; Rxx: reserved for exotic register classes. ++;; Rab: address base register ++;; Rai: address index register + ;; Sxx: extra memory constraints +-;; Sua: unaligned memory address ++;; Sua: simple or post-inc address (for unaligned load) + ;; Sbv: QImode address without displacement + ;; Sbw: QImode address with 12 bit displacement + ;; Snd: address without displacement +@@ -260,16 +262,36 @@ + (match_test "~ival == 64") + (match_test "~ival == 128")))) + ++;; FIXME: LRA and reload behavior differs in memory constraint handling. ++;; For LRA memory address constraints need to narrow the register type ++;; restrictions. It seems the address RTX validation is done slightly ++;; differently. Remove the non-LRA paths eventually. ++(define_constraint "Rab" ++ "@internal address base register constraint" ++ (ior (and (match_test "sh_lra_p ()") ++ (match_test "MAYBE_BASE_REGISTER_RTX_P (op, false)")) ++ (and (match_test "!sh_lra_p ()") ++ (match_code "reg")))) ++ ++(define_constraint "Rai" ++ "@internal address index register constraint" ++ (ior (and (match_test "sh_lra_p ()") ++ (match_test "MAYBE_INDEX_REGISTER_RTX_P (op, false)")) ++ (and (match_test "!sh_lra_p ()") ++ (match_code "reg")))) ++ + (define_memory_constraint "Sua" +- "@internal" +- (and (match_test "memory_operand (op, GET_MODE (op))") +- (match_test "GET_CODE (XEXP (op, 0)) != PLUS"))) ++ "A memory reference that allows simple register or post-inc addressing." ++ (and (match_code "mem") ++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") ++ (and (match_code "post_inc" "0") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))))) + + (define_memory_constraint "Sdd" + "A memory reference that uses displacement addressing." + (and (match_code "mem") + (match_code "plus" "0") +- (match_code "reg" "00") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") + (match_code "const_int" "01"))) + + (define_memory_constraint "Snd" +@@ -281,19 +303,28 @@ + "A memory reference that uses index addressing." + (and (match_code "mem") + (match_code "plus" "0") +- (match_code "reg" "00") +- (match_code "reg" "01"))) ++ (ior (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") ++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 1))")) ++ (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 1))") ++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 0))"))))) + + (define_memory_constraint "Ssd" + "A memory reference that excludes index and displacement addressing." +- (and (match_code "mem") +- (match_test "! satisfies_constraint_Sid (op)") +- (match_test "! satisfies_constraint_Sdd (op)"))) ++ (ior (and (match_code "mem") ++ (match_test "! sh_lra_p ()") ++ (match_test "! satisfies_constraint_Sid (op)") ++ (match_test "! satisfies_constraint_Sdd (op)")) ++ (and (match_code "mem") ++ (match_test "sh_lra_p ()") ++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") ++ (and (ior (match_code "pre_dec" "0") (match_code "post_inc" "0")) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))")))))) + + (define_memory_constraint "Sbv" + "A memory reference, as used in SH2A bclr.b, bset.b, etc." +- (and (match_test "MEM_P (op) && GET_MODE (op) == QImode") +- (match_test "REG_P (XEXP (op, 0))"))) ++ (and (match_code "mem") ++ (match_test "GET_MODE (op) == QImode") ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) + + (define_memory_constraint "Sbw" + "A memory reference, as used in SH2A bclr.b, bset.b, etc." +@@ -304,13 +335,17 @@ + (define_memory_constraint "Sra" + "A memory reference that uses simple register addressing." + (and (match_code "mem") +- (match_code "reg" "0"))) ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) ++ ++(define_memory_constraint "Sgb" ++ "A memory renference that uses GBR addressing." ++ (match_test "gbr_address_mem (op, GET_MODE (op))")) + + (define_memory_constraint "Ara" + "A memory reference that uses simple register addressing suitable for + gusa atomic operations." + (and (match_code "mem") +- (match_code "reg" "0") ++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))") + (match_test "REGNO (XEXP (op, 0)) != SP_REG"))) + + (define_memory_constraint "Add" +@@ -319,6 +354,6 @@ + (and (match_code "mem") + (match_test "GET_MODE (op) == SImode") + (match_code "plus" "0") +- (match_code "reg" "00") ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") + (match_code "const_int" "01") + (match_test "REGNO (XEXP (XEXP (op, 0), 0)) != SP_REG"))) +diff --git a/src/gcc/config/sh/predicates.md b/src/gcc/config/sh/predicates.md +index 7349c97a2b5..632a236b17a 100644 +--- a/src/gcc/config/sh/predicates.md ++++ b/src/gcc/config/sh/predicates.md +@@ -208,8 +208,7 @@ + ;; Returns 1 if OP is a simple register address. + (define_predicate "simple_mem_operand" + (and (match_code "mem") +- (match_code "reg" "0") +- (match_test "arith_reg_operand (XEXP (op, 0), SImode)"))) ++ (match_test "satisfies_constraint_Sra (op)"))) + + ;; Returns 1 if OP is a valid displacement address. + (define_predicate "displacement_mem_operand" +@@ -239,13 +238,13 @@ + (define_predicate "post_inc_mem" + (and (match_code "mem") + (match_code "post_inc" "0") +- (match_code "reg" "00"))) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) + + ;; Returns true if OP is a pre-decrement addressing mode memory reference. + (define_predicate "pre_dec_mem" + (and (match_code "mem") + (match_code "pre_dec" "0") +- (match_code "reg" "00"))) ++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) + + ;; Returns 1 if the operand can be used in an SH2A movu.{b|w} insn. + (define_predicate "zero_extend_movu_operand" +@@ -485,6 +484,12 @@ + && sh_legitimate_index_p (mode, XEXP (plus0_rtx, 1), TARGET_SH2A, true); + }) + ++;; Returns true if OP is a pc relative load operand. ++(define_predicate "pc_relative_load_operand" ++ (and (match_code "mem") ++ (match_test "GET_MODE (op) != QImode") ++ (match_test "IS_PC_RELATIVE_LOAD_ADDR_P (XEXP (op, 0))"))) ++ + ;; Returns true if OP is a valid source operand for a logical operation. + (define_predicate "logical_operand" + (and (match_code "subreg,reg,const_int") +@@ -807,3 +812,36 @@ + + return false; + }) ++ ++;; Predicates for pinning operands to hard-regs. ++(define_predicate "hard_reg_r0" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R0_REG"))) ++ ++(define_predicate "hard_reg_r1" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R1_REG"))) ++ ++(define_predicate "hard_reg_r2" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R2_REG"))) ++ ++(define_predicate "hard_reg_r3" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R3_REG"))) ++ ++(define_predicate "hard_reg_r4" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R4_REG"))) ++ ++(define_predicate "hard_reg_r5" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R5_REG"))) ++ ++(define_predicate "hard_reg_r6" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R6_REG"))) ++ ++(define_predicate "hard_reg_r7" ++ (and (match_code "reg") ++ (match_test "REGNO (op) == R7_REG"))) +diff --git a/src/gcc/config/sh/sh-mem.cc b/src/gcc/config/sh/sh-mem.cc +index 2a64bede951..c608bf9aa2d 100644 +--- a/src/gcc/config/sh/sh-mem.cc ++++ b/src/gcc/config/sh/sh-mem.cc +@@ -134,7 +134,7 @@ expand_block_move (rtx *operands) + + int dwords = bytes >> 3; + emit_insn (gen_move_insn (r6, GEN_INT (dwords - 1))); +- emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab)); ++ emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab, r4, r5, r6)); + return true; + } + else +@@ -178,7 +178,7 @@ expand_block_move (rtx *operands) + final_switch = 16 - ((bytes / 4) % 16); + while_loop = ((bytes / 4) / 16 - 1) * 16; + emit_insn (gen_move_insn (r6, GEN_INT (while_loop + final_switch))); +- emit_insn (gen_block_lump_real (func_addr_rtx, lab)); ++ emit_insn (gen_block_lump_real (func_addr_rtx, lab, r4, r5, r6)); + return true; + } + +diff --git a/src/gcc/config/sh/sh-protos.h b/src/gcc/config/sh/sh-protos.h +index c8cc19f4dc7..dc37b22837b 100644 +--- a/src/gcc/config/sh/sh-protos.h ++++ b/src/gcc/config/sh/sh-protos.h +@@ -102,7 +102,8 @@ extern rtx sh_find_equiv_gbr_addr (rtx_insn* cur_insn, rtx mem); + extern int sh_eval_treg_value (rtx op); + extern HOST_WIDE_INT sh_disp_addr_displacement (rtx mem_op); + extern int sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a); +-extern bool sh_movsf_ie_ra_split_p (rtx, rtx, rtx); ++extern bool sh_movsf_ie_y_split_p (rtx, rtx); ++extern bool sh_movsf_ie_subreg_multiword_p (rtx, rtx); + extern void sh_expand_sym_label2reg (rtx, rtx, rtx, bool); + + /* Result value of sh_find_set_of_reg. */ +diff --git a/src/gcc/config/sh/sh.cc b/src/gcc/config/sh/sh.cc +index 1bc34e0a3e3..d6c70ef9409 100644 +--- a/src/gcc/config/sh/sh.cc ++++ b/src/gcc/config/sh/sh.cc +@@ -271,6 +271,7 @@ static bool sh_legitimate_address_p (machine_mode, rtx, bool, + static rtx sh_legitimize_address (rtx, rtx, machine_mode); + static rtx sh_delegitimize_address (rtx); + static bool sh_cannot_substitute_mem_equiv_p (rtx); ++static bool sh_cannot_substitute_const_equiv_p (rtx); + static bool sh_legitimize_address_displacement (rtx *, rtx *, + poly_int64, machine_mode); + static int scavenge_reg (HARD_REG_SET *s); +@@ -612,6 +613,9 @@ TARGET_GNU_ATTRIBUTES (sh_attribute_table, + #undef TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P + #define TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P sh_cannot_substitute_mem_equiv_p + ++#undef TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P ++#define TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P sh_cannot_substitute_const_equiv_p ++ + #undef TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT + #define TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT \ + sh_legitimize_address_displacement +@@ -4829,6 +4833,7 @@ broken_move (rtx_insn *insn) + we changed this to do a constant load. In that case + we don't have an r0 clobber, hence we must use fldi. */ + && (TARGET_FMOVD ++ || sh_lra_p () + || (GET_CODE (XEXP (XVECEXP (PATTERN (insn), 0, 2), 0)) + == SCRATCH)) + && REG_P (SET_DEST (pat)) +@@ -11431,6 +11436,19 @@ sh_cannot_substitute_mem_equiv_p (rtx) + return true; + } + ++static bool ++sh_cannot_substitute_const_equiv_p (rtx subst) ++{ ++ /* If SUBST is SFmode const_double 0 or 1, the move insn may be ++ transformed into fldi0/1. This is unsafe for fp mode switching ++ because fldi0/1 are single mode only instructions. */ ++ if (GET_MODE (subst) == SFmode ++ && (real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst1) ++ || real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst0))) ++ return true; ++ return false; ++} ++ + /* Implement TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT. */ + static bool + sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, +@@ -11452,30 +11470,37 @@ sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, + return false; + } + +-/* Return true if movsf insn should be splited with an additional +- register. */ ++/* Return true if movsf insn should be splited with fpul register. */ + bool +-sh_movsf_ie_ra_split_p (rtx op0, rtx op1, rtx op2) ++sh_movsf_ie_y_split_p (rtx op0, rtx op1) + { +- /* op0 == op1 */ +- if (rtx_equal_p (op0, op1)) ++ /* f, r */ ++ if (REG_P (op0) ++ && (SUBREG_P (op1) && GET_MODE (SUBREG_REG (op1)) == SImode)) + return true; +- /* fy, FQ, reg */ +- if (GET_CODE (op1) == CONST_DOUBLE +- && ! satisfies_constraint_G (op1) +- && ! satisfies_constraint_H (op1) +- && REG_P (op0) +- && REG_P (op2)) ++ /* r, f */ ++ if (REG_P (op1) ++ && (SUBREG_P (op0) && GET_MODE (SUBREG_REG (op0)) == SImode)) + return true; +- /* f, r, y */ +- if (REG_P (op0) && FP_REGISTER_P (REGNO (op0)) +- && REG_P (op1) && GENERAL_REGISTER_P (REGNO (op1)) +- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) ++ ++ return false; ++} ++ ++/* Return true if it moves reg from/to subreg of multiword mode. */ ++bool ++sh_movsf_ie_subreg_multiword_p (rtx op0, rtx op1) ++{ ++ if (REG_P (op0) ++ && (SUBREG_P (op1) ++ && (GET_MODE (SUBREG_REG (op1)) == SCmode ++ || GET_MODE (SUBREG_REG (op1)) == DImode ++ || GET_MODE (SUBREG_REG (op1)) == TImode))) + return true; +- /* r, f, y */ +- if (REG_P (op1) && FP_REGISTER_P (REGNO (op1)) +- && REG_P (op0) && GENERAL_REGISTER_P (REGNO (op0)) +- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) ++ if (REG_P (op1) ++ && (SUBREG_P (op0) ++ && (GET_MODE (SUBREG_REG (op0)) == SCmode ++ || GET_MODE (SUBREG_REG (op0)) == DImode ++ || GET_MODE (SUBREG_REG (op0)) == TImode))) + return true; + + return false; +diff --git a/src/gcc/config/sh/sh.md b/src/gcc/config/sh/sh.md +index 65b353da56e..1f905455b36 100644 +--- a/src/gcc/config/sh/sh.md ++++ b/src/gcc/config/sh/sh.md +@@ -2194,13 +2194,24 @@ + ;; there is nothing to prevent reload from using r0 to reload the address. + ;; This reload would clobber the value in r0 we are trying to store. + ;; If we let reload allocate r0, then this problem can never happen. ++;; ++;; In addition to that, we also must pin the input regs to hard-regs via the ++;; predicates. When these insns are instantiated it also emits the ++;; accompanying mov insns to load the hard-regs. However, subsequent RTL ++;; passes might move things around and reassign the operands to pseudo regs ++;; which might get allocated to different (wrong) hard-regs eventually. To ++;; avoid that, only allow matching these insns if the operands are the ++;; expected hard-regs. + (define_insn "udivsi3_i1" + [(set (match_operand:SI 0 "register_operand" "=z,z") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) ++ (clobber (match_dup 3)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl"))] + "TARGET_SH1 && TARGET_DIVIDE_CALL_DIV1" +@@ -2212,7 +2223,8 @@ + + (define_insn "udivsi3_i4" + [(set (match_operand:SI 0 "register_operand" "=y,y") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:DF DR0_REG)) +@@ -2220,9 +2232,11 @@ + (clobber (reg:DF DR4_REG)) + (clobber (reg:SI R0_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) + (clobber (reg:SI FPSCR_STAT_REG)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl")) + (use (reg:SI FPSCR_MODES_REG))] +@@ -2236,7 +2250,8 @@ + + (define_insn "udivsi3_i4_single" + [(set (match_operand:SI 0 "register_operand" "=y,y") +- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) ++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") ++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) + (clobber (reg:SI T_REG)) + (clobber (reg:SI PR_REG)) + (clobber (reg:DF DR0_REG)) +@@ -2244,8 +2259,10 @@ + (clobber (reg:DF DR4_REG)) + (clobber (reg:SI R0_REG)) + (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) + (use (match_operand:SI 1 "arith_reg_operand" "r,r")) + (use (match_operand 2 "" "Z,Ccl"))] + "TARGET_FPU_ANY && TARGET_FPU_SINGLE" +@@ -2278,6 +2295,8 @@ + { + rtx last; + rtx func_ptr = gen_reg_rtx (Pmode); ++ rtx r4 = gen_rtx_REG (SImode, R4_REG); ++ rtx r5 = gen_rtx_REG (SImode, R5_REG); + + /* Emit the move of the address to a pseudo outside of the libcall. */ + if (TARGET_DIVIDE_CALL_TABLE) +@@ -2305,9 +2324,9 @@ + { + rtx lab = function_symbol (func_ptr, "__udivsi3_i4", SFUNC_STATIC).lab; + if (TARGET_FPU_SINGLE) +- last = gen_udivsi3_i4_single (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i4_single (operands[0], func_ptr, lab, r4, r5); + else +- last = gen_udivsi3_i4 (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i4 (operands[0], func_ptr, lab, r4, r5); + } + else if (TARGET_SH2A) + { +@@ -2319,10 +2338,10 @@ + else + { + rtx lab = function_symbol (func_ptr, "__udivsi3", SFUNC_STATIC).lab; +- last = gen_udivsi3_i1 (operands[0], func_ptr, lab); ++ last = gen_udivsi3_i1 (operands[0], func_ptr, lab, r4, r5); + } +- emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]); +- emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]); ++ emit_move_insn (r4, operands[1]); ++ emit_move_insn (r5, operands[2]); + emit_insn (last); + DONE; + }) +@@ -4801,7 +4820,37 @@ + + (define_expand "extendsi2" + [(set (match_operand:SI 0 "arith_reg_dest") +- (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))]) ++ (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))] ++ "" ++{ ++ /* When the displacement addressing is used, RA will assign r0 to ++ the pseudo register operand for the QI/HImode load. ++ See the comment in sh.cc:prepare_move_operand and PR target/55212. */ ++ if (! lra_in_progress && ! reload_completed ++ && sh_lra_p () ++ && ! TARGET_SH2A ++ && arith_reg_dest (operands[0], mode) ++ && short_displacement_mem_operand (operands[1], mode)) ++ { ++ emit_insn (gen_extendsi2_short_mem_disp_z (operands[0], operands[1])); ++ DONE; ++ } ++}) ++ ++(define_insn_and_split "extendsi2_short_mem_disp_z" ++ [(set (match_operand:SI 0 "arith_reg_dest" "=r") ++ (sign_extend:SI ++ (match_operand:QIHI 1 "short_displacement_mem_operand" "m"))) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 2) (sign_extend:SI (match_dup 1))) ++ (set (match_dup 0) (match_dup 2))] ++{ ++ operands[2] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "load")]) + + (define_insn_and_split "*extendsi2_compact_reg" + [(set (match_operand:SI 0 "arith_reg_dest" "=r") +@@ -5343,9 +5392,49 @@ + operands[1] = gen_lowpart (mode, reg); + } + ++ if (! lra_in_progress && ! reload_completed ++ && sh_lra_p () ++ && ! TARGET_SH2A ++ && arith_reg_operand (operands[1], mode) ++ && satisfies_constraint_Sid (operands[0])) ++ { ++ rtx adr = XEXP (operands[0], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_mov_store_mem_index (base, idx,operands[1])); ++ DONE; ++ } ++ + prepare_move_operands (operands, mode); + }) + ++;; The "*mov_store_mem_index" pattern must come before the ++;; "mov_store_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*mov_store_mem_index" ++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "hard_reg_r0" "z"))) ++ (match_operand:QIHI 2 "arith_reg_operand" "r"))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "mov. %2,@(%1,%0)" ++ [(set_attr "type" "store")]) ++ ++(define_insn_and_split "mov_store_mem_index" ++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) ++ (match_operand:QIHI 2 "arith_reg_operand" "r")) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 1)) ++ (set (mem:QIHI (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2))] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "store")]) ++ + ;; The pre-dec and post-inc mems must be captured by the '<' and '>' + ;; constraints, otherwise wrong code might get generated. + (define_insn "*mov_load_predec" +@@ -5631,6 +5720,22 @@ + (const_string "double") + (const_string "none")))]) + ++;; LRA will try to satisfy the constraints in match_scratch for the memory ++;; displacements and it will make issues on this target. Use R0 as a scratch ++;; register for the constant load. ++(define_insn "movdf_i4_F_z" ++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=d") ++ (match_operand:DF 1 "const_double_operand" "F")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_FPU_DOUBLE && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set (attr "length") (if_then_else (eq_attr "fmovd" "yes") (const_int 4) (const_int 8))) ++ (set (attr "fp_mode") (if_then_else (eq_attr "fmovd" "yes") ++ (const_string "double") ++ (const_string "none")))]) ++ + ;; Moving DFmode between fp/general registers through memory + ;; (the top of the stack) is faster than moving through fpul even for + ;; little endian. Because the type of an instruction is important for its +@@ -5770,6 +5875,14 @@ + [(set (match_dup 0) (match_dup 0))] + "") + ++(define_split ++ [(set (match_operand:SF 0 "register_operand") ++ (match_operand:SF 1 "register_operand")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p () && reload_completed ++ && true_regnum (operands[0]) == true_regnum (operands[1])" ++ [(set (match_dup 0) (match_dup 0))]) ++ + ;; fmovd substitute post-reload splits + (define_split + [(set (match_operand:DF 0 "register_operand" "") +@@ -6014,6 +6127,14 @@ + prepare_move_operands (operands, DFmode); + if (TARGET_FPU_DOUBLE) + { ++ if (sh_lra_p () ++ && (GET_CODE (operands[1]) == CONST_DOUBLE ++ && REG_P (operands[0]))) ++ { ++ emit_insn (gen_movdf_i4_F_z (operands[0], operands[1])); ++ DONE; ++ } ++ + emit_insn (gen_movdf_i4 (operands[0], operands[1])); + DONE; + } +@@ -6139,15 +6260,17 @@ + (const_string "none") + (const_string "none")])]) + +-(define_insn_and_split "movsf_ie_ra" ++;; LRA will try to satisfy the constraints in match_scratch for the memory ++;; displacements and it will make issues on this target. movsf_ie is splitted ++;; into 4 patterns to avoid it when lra_in_progress is true. ++(define_insn "movsf_ie_ra" + [(set (match_operand:SF 0 "general_movdst_operand" +- "=f,r,f,f,fy,f,m, r,r,m,f,y,y,rf,r,y,<,y,y") ++ "=f,r,f,f,f,m, r,r,m,f,y,y,r,y,<,y,y") + (match_operand:SF 1 "general_movsrc_operand" +- " f,r,G,H,FQ,m,f,FQ,m,r,y,f,>,fr,y,r,y,>,y")) +- (use (reg:SI FPSCR_MODES_REG)) +- (clobber (match_scratch:SF 2 "=r,r,X,X,&z,r,r, X,r,r,r,r,r, y,r,r,r,r,r")) +- (const_int 0)] +- "TARGET_SH2E ++ " f,r,G,H,m,f,FQ,m,r,y,f,>,y,r,y,>,y")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p () ++ && ! sh_movsf_ie_y_split_p (operands[0], operands[1]) + && (arith_reg_operand (operands[0], SFmode) + || fpul_operand (operands[0], SFmode) + || arith_reg_operand (operands[1], SFmode) +@@ -6157,7 +6280,6 @@ + mov %1,%0 + fldi0 %0 + fldi1 %0 +- # + fmov.s %1,%0 + fmov.s %1,%0 + mov.l %1,%0 +@@ -6166,31 +6288,19 @@ + fsts fpul,%0 + flds %1,fpul + lds.l %1,%0 +- # + sts %1,%0 + lds %1,%0 + sts.l %1,%0 + lds.l %1,%0 + ! move optimized away" +- "reload_completed +- && sh_movsf_ie_ra_split_p (operands[0], operands[1], operands[2])" +- [(const_int 0)] +-{ +- if (! rtx_equal_p (operands[0], operands[1])) +- { +- emit_insn (gen_movsf_ie (operands[2], operands[1])); +- emit_insn (gen_movsf_ie (operands[0], operands[2])); +- } +-} +- [(set_attr "type" "fmove,move,fmove,fmove,pcfload,fload,fstore,pcload,load, +- store,fmove,fmove,load,*,fpul_gp,gp_fpul,fstore,load,nil") +- (set_attr "late_fp_use" "*,*,*,*,*,*,yes,*,*,*,*,*,*,*,yes,*,yes,*,*") ++ [(set_attr "type" "fmove,move,fmove,fmove,fload,fstore,pcload,load, ++ store,fmove,fmove,load,fpul_gp,gp_fpul,fstore,load,nil") ++ (set_attr "late_fp_use" "*,*,*,*,*,yes,*,*,*,*,*,*,yes,*,yes,*,*") + (set_attr_alternative "length" + [(const_int 2) + (const_int 2) + (const_int 2) + (const_int 2) +- (const_int 4) + (if_then_else (match_operand 1 "displacement_mem_operand") + (const_int 4) (const_int 2)) + (if_then_else (match_operand 0 "displacement_mem_operand") +@@ -6203,7 +6313,6 @@ + (const_int 2) + (const_int 2) + (const_int 2) +- (const_int 4) + (const_int 2) + (const_int 2) + (const_int 2) +@@ -6215,7 +6324,6 @@ + (const_string "none") + (const_string "single") + (const_string "single") +- (const_string "none") + (if_then_else (eq_attr "fmovd" "yes") + (const_string "single") (const_string "none")) + (if_then_else (eq_attr "fmovd" "yes") +@@ -6230,15 +6338,75 @@ + (const_string "none") + (const_string "none") + (const_string "none") ++ (const_string "none")])]) ++ ++(define_insn_and_split "movsf_ie_rffr" ++ [(set (match_operand:SF 0 "arith_reg_dest" "=f,r,rf") ++ (match_operand:SF 1 "arith_reg_operand" "f,r,fr")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (match_scratch:SF 2 "=X,X,y"))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "@ ++ fmov %1,%0 ++ mov %1,%0 ++ #" ++ "reload_completed ++ && (FP_REGISTER_P (REGNO (operands[0])) ++ != FP_REGISTER_P (REGNO (operands[1])))" ++ [(const_int 0)] ++{ ++ emit_insn (gen_movsf_ie_ra (operands[2], operands[1])); ++ emit_insn (gen_movsf_ie_ra (operands[0], operands[2])); ++} ++ [(set_attr "type" "fmove,move,*") ++ (set_attr_alternative "length" ++ [(const_int 2) ++ (const_int 2) ++ (const_int 4)]) ++ (set_attr_alternative "fp_mode" ++ [(if_then_else (eq_attr "fmovd" "yes") ++ (const_string "single") (const_string "none")) + (const_string "none") + (const_string "none")])]) + ++(define_insn "movsf_ie_F_z" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (match_operand:SF 1 "const_double_operand" "F")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set_attr "length" "4")]) ++ ++(define_insn "movsf_ie_Q_z" ++ [(set (match_operand:SF 0 "fpul_operand" "=y") ++ (match_operand:SF 1 "pc_relative_load_operand" "Q")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "pcfload") ++ (set_attr "length" "4")]) ++ ++(define_insn "movsf_ie_y" ++ [(set (match_operand:SF 0 "arith_reg_dest" "=fr") ++ (match_operand:SF 1 "arith_reg_operand" "rf")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI FPUL_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ [(set_attr "type" "*") ++ (set_attr "length" "4")]) ++ + (define_split + [(set (match_operand:SF 0 "register_operand" "") + (match_operand:SF 1 "register_operand" "")) + (use (reg:SI FPSCR_MODES_REG)) + (clobber (reg:SI FPUL_REG))] +- "TARGET_SH1" ++ "TARGET_SH1 ++ && ! fpul_operand (operands[0], SFmode) ++ && ! fpul_operand (operands[1], SFmode)" + [(parallel [(set (reg:SF FPUL_REG) (match_dup 1)) + (use (reg:SI FPSCR_MODES_REG)) + (clobber (scratch:SI))]) +@@ -6247,6 +6415,66 @@ + (clobber (scratch:SI))])] + "") + ++;; The "*movsf_ie_store_mem_index" pattern must come before the ++;; "movsf_ie_store_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*movsf_ie_store_mem_index" ++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "hard_reg_r0" "z"))) ++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "fmov.s %2,@(%1,%0)" ++ [(set_attr "type" "store")]) ++ ++(define_insn_and_split "movsf_ie_store_mem_index" ++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") ++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) ++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 1)) ++ (parallel [(set (mem:SF (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2)) ++ (use (reg:SI FPSCR_MODES_REG))])] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "store")]) ++ ++;; The "*movsf_ie_load_mem_index" pattern must come before the ++;; "movsf_ie_load_mem_index" pattern. Matching order is important because ++;; the "hard_reg_r0" operand will match in both, but we want to prioritize ++;; the former. ++(define_insn "*movsf_ie_load_mem_index" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") ++ (match_operand:SI 2 "hard_reg_r0" "z")))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "fmov.s @(%2,%1),%0" ++ [(set_attr "type" "load")]) ++ ++(define_insn_and_split "movsf_ie_load_mem_index" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") ++ (match_operand:SI 2 "arith_reg_operand" "^zr")))) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH2E && sh_lra_p ()" ++ "#" ++ "&& 1" ++ [(set (match_dup 3) (match_dup 2)) ++ (parallel [(set (match_dup 0) (mem:SF (plus:SI (match_dup 1) (match_dup 3)))) ++ (use (reg:SI FPSCR_MODES_REG))])] ++{ ++ operands[3] = gen_rtx_REG (SImode, R0_REG); ++} ++ [(set_attr "type" "load")]) ++ + (define_expand "movsf" + [(set (match_operand:SF 0 "general_movdst_operand" "") + (match_operand:SF 1 "general_movsrc_operand" ""))] +@@ -6255,11 +6483,62 @@ + prepare_move_operands (operands, SFmode); + if (TARGET_SH2E) + { +- if (lra_in_progress) ++ if (sh_lra_p ()) + { + if (GET_CODE (operands[0]) == SCRATCH) + DONE; +- emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); ++ if (! lra_in_progress && ! reload_completed ++ && fp_arith_reg_operand (operands[1], SFmode) ++ && satisfies_constraint_Sid (operands[0])) ++ { ++ rtx adr = XEXP (operands[0], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_movsf_ie_store_mem_index (base, idx, operands[1])); ++ DONE; ++ } ++ if (! lra_in_progress && ! reload_completed ++ && fp_arith_reg_operand (operands[0], SFmode) ++ && satisfies_constraint_Sid (operands[1])) ++ { ++ rtx adr = XEXP (operands[1], 0); ++ rtx base = XEXP (adr, 0); ++ rtx idx = XEXP (adr, 1); ++ emit_insn (gen_movsf_ie_load_mem_index (operands[0], base, idx)); ++ DONE; ++ } ++ /* reg from/to multiword subreg may be splitted to several reg from/to ++ subreg of SImode by subreg1 pass. This confuses our splitted ++ movsf logic for LRA and will end up in bad code or ICE. Use a special ++ pattern so that LRA can optimize this case. */ ++ if (! lra_in_progress && ! reload_completed ++ && sh_movsf_ie_subreg_multiword_p (operands[0], operands[1])) ++ { ++ emit_insn (gen_movsf_ie_rffr (operands[0], operands[1])); ++ DONE; ++ } ++ if (GET_CODE (operands[1]) == CONST_DOUBLE ++ && ! satisfies_constraint_G (operands[1]) ++ && ! satisfies_constraint_H (operands[1]) ++ && REG_P (operands[0])) ++ { ++ if (lra_in_progress) ++ emit_insn (gen_movsf_ie (operands[0], operands[1])); ++ else ++ emit_insn (gen_movsf_ie_F_z (operands[0], operands[1])); ++ } ++ else if (REG_P (operands[0]) && REGNO (operands[0]) == FPUL_REG ++ && satisfies_constraint_Q (operands[1])) ++ emit_insn (gen_movsf_ie_Q_z (operands[0], operands[1])); ++ else if (sh_movsf_ie_y_split_p (operands[0], operands[1])) ++ { ++ if (lra_in_progress) ++ emit_insn (gen_movsf_ie (operands[0], operands[1])); ++ else ++ emit_insn (gen_movsf_ie_y (operands[0], operands[1])); ++ } ++ else ++ emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); + DONE; + } + +@@ -8951,17 +9230,20 @@ + (set_attr "needs_delay_slot" "yes")]) + + (define_insn "block_lump_real" +- [(parallel [(set (mem:BLK (reg:SI R4_REG)) +- (mem:BLK (reg:SI R5_REG))) +- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +- (use (match_operand 1 "" "Z,Ccl")) +- (use (reg:SI R6_REG)) +- (clobber (reg:SI PR_REG)) +- (clobber (reg:SI T_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) +- (clobber (reg:SI R6_REG)) +- (clobber (reg:SI R0_REG))])] ++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) ++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) ++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++ (use (match_operand 1 "" "Z,Ccl")) ++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) ++ (use (reg:SI R6_REG)) ++ (clobber (match_dup 2)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI R0_REG))] + "TARGET_SH1 && ! TARGET_HARD_SH4" + "@ + jsr @%0%# +@@ -8986,20 +9268,23 @@ + (set_attr "needs_delay_slot" "yes")]) + + (define_insn "block_lump_real_i4" +- [(parallel [(set (mem:BLK (reg:SI R4_REG)) +- (mem:BLK (reg:SI R5_REG))) +- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +- (use (match_operand 1 "" "Z,Ccl")) +- (use (reg:SI R6_REG)) +- (clobber (reg:SI PR_REG)) +- (clobber (reg:SI T_REG)) +- (clobber (reg:SI R4_REG)) +- (clobber (reg:SI R5_REG)) +- (clobber (reg:SI R6_REG)) +- (clobber (reg:SI R0_REG)) +- (clobber (reg:SI R1_REG)) +- (clobber (reg:SI R2_REG)) +- (clobber (reg:SI R3_REG))])] ++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) ++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) ++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++ (use (match_operand 1 "" "Z,Ccl")) ++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) ++ (use (reg:SI R4_REG)) ++ (use (reg:SI R5_REG)) ++ (use (reg:SI R6_REG)) ++ (clobber (match_dup 2)) ++ (clobber (match_dup 3)) ++ (clobber (match_dup 4)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI R0_REG)) ++ (clobber (reg:SI R1_REG)) ++ (clobber (reg:SI R2_REG)) ++ (clobber (reg:SI R3_REG))] + "TARGET_HARD_SH4" + "@ + jsr @%0%# +diff --git a/src/gcc/config/sh/sh.opt b/src/gcc/config/sh/sh.opt +index beaf830037b..ce37746428e 100644 +--- a/src/gcc/config/sh/sh.opt ++++ b/src/gcc/config/sh/sh.opt +@@ -299,5 +299,5 @@ Target Var(TARGET_FSRRA) + Enable the use of the fsrra instruction. + + mlra +-Target Var(sh_lra_flag) Init(0) Save ++Target Var(sh_lra_flag) Init(1) Save + Use LRA instead of reload (transitional). +diff --git a/src/gcc/config/sh/sync.md b/src/gcc/config/sh/sync.md +index e56c3e0becc..71b2360bceb 100644 +--- a/src/gcc/config/sh/sync.md ++++ b/src/gcc/config/sh/sync.md +@@ -217,7 +217,9 @@ + (and (match_test "mode == SImode") + (and (match_test "!TARGET_ATOMIC_HARD_LLCS") + (match_test "!TARGET_SH4A || TARGET_ATOMIC_STRICT")) +- (match_operand 0 "short_displacement_mem_operand"))))) ++ (match_operand 0 "short_displacement_mem_operand"))) ++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") ++ (not (match_operand 0 "gbr_address_mem"))))) + + (define_expand "atomic_compare_and_swap" + [(match_operand:SI 0 "arith_reg_dest") ;; bool success output +@@ -715,7 +717,9 @@ + && TARGET_SH4A && !TARGET_ATOMIC_STRICT + && mode != SImode")) + (ior (match_operand 0 "short_displacement_mem_operand") +- (match_operand 0 "gbr_address_mem")))))) ++ (match_operand 0 "gbr_address_mem")))) ++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") ++ (not (match_operand 0 "gbr_address_mem"))))) + + (define_expand "atomic_fetch_" + [(set (match_operand:QIHISI 0 "arith_reg_dest") +diff --git a/src/gcc/lra-constraints.cc b/src/gcc/lra-constraints.cc +index 7dbc7fe1e00..832db82426f 100644 +--- a/src/gcc/lra-constraints.cc ++++ b/src/gcc/lra-constraints.cc +@@ -552,7 +552,11 @@ get_equiv (rtx x) + return res; + } + if ((res = ira_reg_equiv[regno].constant) != NULL_RTX) +- return res; ++ { ++ if (targetm.cannot_substitute_const_equiv_p (res)) ++ return x; ++ return res; ++ } + if ((res = ira_reg_equiv[regno].invariant) != NULL_RTX) + return res; + gcc_unreachable (); +@@ -1223,7 +1227,9 @@ match_reload (signed char out, signed char *ins, signed char *outs, + return; + /* See a comment for the input operand above. */ + narrow_reload_pseudo_class (out_rtx, goal_class); +- if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX) ++ if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX ++ && !ira_former_scratch_p (REGNO (SUBREG_P (out_rtx) ++ ? SUBREG_REG (out_rtx) : out_rtx))) + { + reg = SUBREG_P (out_rtx) ? SUBREG_REG (out_rtx) : out_rtx; + start_sequence (); +@@ -2972,7 +2978,8 @@ process_alt_operands (int only_alternative) + objects with a REG_UNUSED note. */ + if ((curr_static_id->operand[nop].type != OP_IN + && no_output_reloads_p +- && ! find_reg_note (curr_insn, REG_UNUSED, op)) ++ && ! find_reg_note (curr_insn, REG_UNUSED, op) ++ && ! ira_former_scratch_p (REGNO (operand_reg[nop]))) + || (curr_static_id->operand[nop].type != OP_OUT + && no_input_reloads_p && ! const_to_mem) + || (this_alternative_matches >= 0 +@@ -2982,7 +2989,9 @@ process_alt_operands (int only_alternative) + [this_alternative_matches].type != OP_IN) + && ! find_reg_note (curr_insn, REG_UNUSED, + no_subreg_reg_operand +- [this_alternative_matches]))))) ++ [this_alternative_matches]) ++ && ! (ira_former_scratch_p ++ (REGNO (operand_reg[nop]))))))) + { + if (lra_dump_file != NULL) + fprintf +@@ -4820,7 +4829,8 @@ curr_insn_transform (bool check_only_p) + if (type != OP_IN + && find_reg_note (curr_insn, REG_UNUSED, old) == NULL_RTX + /* OLD can be an equivalent constant here. */ +- && !CONSTANT_P (old)) ++ && !CONSTANT_P (old) ++ && !ira_former_scratch_p (REGNO (old))) + { + start_sequence (); + lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg); +diff --git a/src/gcc/target.def b/src/gcc/target.def +index 6c7cdc8126b..f69f1db7532 100644 +--- a/src/gcc/target.def ++++ b/src/gcc/target.def +@@ -6167,9 +6167,24 @@ DEFHOOK + substitute safely pseudos with equivalent memory values during\n\ + register allocation.\n\ + The default version of this target hook returns @code{false}.\n\ +-On most machines, this default should be used. For generally\n\ +-machines with non orthogonal register usage for addressing, such\n\ +-as SH, this hook can be used to avoid excessive spilling.", ++On most machines, this default should be used. For machines with\n\ ++non-orthogonal register usage for addressing, such as SH,\n\ ++this hook can be used to avoid excessive spilling.", ++ bool, (rtx subst), ++ hook_bool_rtx_false) ++ ++/* This target hook allows the backend to avoid unsafe substitution ++ during register allocation. */ ++DEFHOOK ++(cannot_substitute_const_equiv_p, ++ "A target hook which returns @code{true} if @var{subst} can't\n\ ++substitute safely pseudos with equivalent constant values during\n\ ++register allocation.\n\ ++The default version of this target hook returns @code{false}.\n\ ++On most machines, this default should be used. For machines with\n\ ++special constant load instructions that have additional constraints\n\ ++or being dependent on mode-switching, such as SH, this hook can be\n\ ++used to avoid unsafe substitution.", + bool, (rtx subst), + hook_bool_rtx_false) + +diff --git a/src/gcc/testsuite/g++.target/sh/sh.exp b/src/gcc/testsuite/g++.target/sh/sh.exp +new file mode 100644 +index 00000000000..45c5b373857 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/sh.exp +@@ -0,0 +1,297 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an SH target. ++if ![istarget sh*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++# Return 1 if target is SH2A ++proc check_effective_target_sh2a { } { ++ return [check_no_compiler_messages sh2a object { ++ #ifndef __SH2A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH1 ++proc check_effective_target_sh1 { } { ++ return [check_no_compiler_messages sh1 object { ++ #ifndef __SH1__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH4A ++proc check_effective_target_sh4a { } { ++ return [check_no_compiler_messages sh4a object { ++ #ifndef __SH4A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is big endian ++proc check_effective_target_big_endian { } { ++ return [check_no_compiler_messages big_endian object { ++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is little endian ++proc check_effective_target_little_endian { } { ++ return [check_no_compiler_messages little_endian object { ++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has any FPU (single or double precision) ++proc check_effective_target_any_fpu { } { ++ return [check_no_compiler_messages any_fpu object { ++ #ifndef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU which is allowed to be ++# used by the compiler as such. ++proc check_effective_target_double_fpu { } { ++ return [check_no_compiler_messages double_fpu object { ++ #ifndef __SH_FPU_DOUBLE__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU but it is only being used ++# in single precision mode by the compiler ++proc check_effective_target_use_single_only_fpu { } { ++ return [check_no_compiler_messages use_single_only_fpu object { ++ #if !(defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has an FPU and the default mode is single ++proc check_effective_target_default_single_fpu { } { ++ return [check_no_compiler_messages default_single_fpu object { ++ #if !(defined (__SH2E__) || defined (__SH3E__) \ ++ || defined (__SH2A_SINGLE__) \ ++ || defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has no FPU ++proc check_effective_target_no_fpu { } { ++ return [check_no_compiler_messages no_fpu object { ++ #ifdef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target has XF regs ++proc check_effective_target_has_xf_regs { } { ++ return [check_no_compiler_messages has_xf_regs object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target can do the fsca insn ++proc check_effective_target_has_fsca { } { ++ return [check_no_compiler_messages has_fsca object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fsrra insn ++proc check_effective_target_has_fsrra { } { ++ return [check_no_compiler_messages has_fsrra object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fpchg insn ++proc check_effective_target_has_fpchg { } { ++ return [check_no_compiler_messages has_fpchg object { ++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ ++ && !defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do dynamic shifts ++proc check_effective_target_has_dyn_shift { } { ++ return [check_no_compiler_messages has_dyn_shift object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH2A__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the mfmovd option is enabled ++proc check_effective_target_fmovd_enabled { } { ++ return [check_no_compiler_messages fmovd_enabled object { ++ #ifndef __FMOVD_ENABLED__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports privileged mode ++proc check_effective_target_has_privileged { } { ++ return [check_no_compiler_messages has_privileged object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports the prefetch insn ++proc check_effective_target_has_pref { } { ++ return [check_no_compiler_messages has_pref object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does banked r0..r7 regs type of ISRs ++proc check_effective_target_banked_r0r7_isr { } { ++ return [check_no_compiler_messages banked_r0r7_isr object { ++ #if !(defined (__SH3__) || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does stack only type of ISRs ++proc check_effective_target_stack_save_isr { } { ++ return [check_no_compiler_messages stack_save_isr object { ++ #if !(defined (__SH1__) \ ++ || defined (__SH2__) \ ++ || defined (__SH2E__) \ ++ || defined (__SH2A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target supports atomic-model=soft-gusa ++proc check_effective_target_atomic_model_soft_gusa_available { } { ++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { ++ int x = 0; ++ } "-matomic-model=soft-gusa"] ++} ++ ++# Return 1 if target supports atomic-model=soft-tcb ++proc check_effective_target_atomic_model_soft_tcb_available { } { ++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { ++ int x = 0; ++ } "-matomic-model=soft-tcb,gbr-offset=0"] ++} ++ ++# Return 1 if target supports atomic-model=soft-imask ++proc check_effective_target_atomic_model_soft_imask_available { } { ++ return [check_no_compiler_messages atomic_model_soft_imask_available object { ++ int x = 0; ++ } "-matomic-model=soft-imask -mno-usermode"] ++} ++ ++# Return 1 if target supports atomic-model=hard-llcs ++proc check_effective_target_atomic_model_hard_llcs_available { } { ++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { ++ int x = 0; ++ } "-matomic-model=hard-llcs"] ++} ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS ++ ++# All done. ++dg-finish +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C +new file mode 100644 +index 00000000000..cc31dbcc443 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C +@@ -0,0 +1,73 @@ ++/* { dg-additional-options "-mlra -fpic" } */ ++/* { dg-do compile } */ ++ ++ ++typedef signed int int32_t; ++typedef signed long long int int64_t; ++static constexpr int32_t SK_MaxS32 = 214748364;; ++static constexpr int32_t SK_MinS32 = -SK_MaxS32; ++ ++extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++using ::fabs; ++ ++template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) ++{ ++ if (__b < __a) return __b; ++ return __a; ++} ++ ++template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) ++{ ++ return __a; ++} ++ ++} ++ ++ ++static constexpr int32_t Sk64_pin_to_s32(int64_t x) ++{ ++ return x < SK_MinS32 ? SK_MinS32 : (x > SK_MaxS32 ? SK_MaxS32 : (int32_t)x); ++} ++ ++static constexpr int32_t Sk32_sat_sub(int32_t a, int32_t b) ++{ ++ return Sk64_pin_to_s32((int64_t)a - (int64_t)b); ++}; ++ ++struct SkPoint ++{ ++ float fX; ++ float fY; ++}; ++ ++typedef float SkScalar; ++static inline bool SkScalarNearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance = (1.0f / (1 << 12))) ++{ ++ return std::fabs(x-y) <= tolerance; ++} ++ ++class SkCubicMap ++{ ++public: ++ SkCubicMap(SkPoint p1, SkPoint p2); ++private: ++ enum Type ++ { ++ kLine_Type, kCubeRoot_Type, kSolver_Type, ++ }; ++ ++ Type fType; ++}; ++ ++SkCubicMap::SkCubicMap(SkPoint p1, SkPoint p2) ++{ ++ p1.fX = std::min(std::max(p1.fX, 0.0f), 1.0f); ++ p2.fX = std::min(std::max(p2.fX, 0.0f), 1.0f); ++ if (SkScalarNearlyEqual(p1.fX, p1.fY) && SkScalarNearlyEqual(p2.fX, p2.fY)) ++ { ++ fType = kLine_Type; ++ } ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C +new file mode 100644 +index 00000000000..afab629cdf2 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C +@@ -0,0 +1,259 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++typedef unsigned int size_t; ++ ++extern "C++" ++{ ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++ ++template struct integral_constant ++{ ++ static constexpr _Tp value = __v; ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { return value; } ++ ++ constexpr value_type operator()() const noexcept { } ++ }; ++ ++template using __bool_constant = integral_constant; ++using true_type = __bool_constant; ++using false_type = __bool_constant; ++ ++template struct enable_if { }; ++ ++template struct enable_if { using type = _Tp; }; ++ ++template using __enable_if_t = typename enable_if<_Cond, _Tp>::type; ++template struct __conditional { template using type = _Tp; }; ++template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; ++template struct __type_identity { }; ++ ++namespace __detail ++{ ++template using __first_t = _Tp; ++template auto __and_fn(int) -> __first_t...>; ++} ++ ++template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { }; ++template struct __not_ : __bool_constant { }; ++ ++template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { return { }; } ++template struct is_pointer : public __bool_constant<__is_pointer(_Tp)> { }; ++template struct is_empty : public __bool_constant<__is_empty(_Tp)> { }; ++template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; ++ ++template struct is_default_constructible : public __is_constructible_impl<_Tp> { }; ++template using __add_lval_ref_t = __add_lvalue_reference(_Tp); ++template using __add_rval_ref_t = __add_rvalue_reference(_Tp); ++template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> ++{ ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ } ++), "template argument must be a complete class or an unbounded array"); ++}; ++ ++template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; ++template struct is_move_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> ++{ ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp> {} ++), "template argument must be a complete class or an unbounded array"); ++ ++}; ++ ++template struct tuple_element; ++template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; ++template struct _Nth_type ++{ ++ using type = __type_pack_element<_Np, _Types...>; ++}; ++ ++template class tuple; ++template constexpr const __tuple_element_t<__i, tuple<_Elements...>>& get(const tuple<_Elements...>& __t) noexcept; ++} ++} ++ ++inline constexpr float SK_FloatSqrt2 = 1.41421356f; ++ ++struct SkPoint ++{ ++ float fY; ++}; ++ ++extern void sk_free(void*); ++enum ++{ ++ SK_MALLOC_ZERO_INITIALIZE = 1 << 0, SK_MALLOC_THROW = 1 << 1, ++}; ++ ++extern void* sk_malloc_flags(size_t size, unsigned flags); ++ ++static inline void* sk_calloc_throw(size_t size) ++{ ++ return sk_malloc_flags(size, SK_MALLOC_THROW | SK_MALLOC_ZERO_INITIALIZE); ++} ++ ++typedef struct ++{ ++ union ++ { ++ } __value; ++ ++} __mbstate_t; ++ ++namespace std __attribute__ ((__visibility__ ("default"))) ++{ ++template struct __is_empty_non_tuple : is_empty<_Tp> { }; ++ ++template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; ++template::value> struct _Head_base; ++template struct _Head_base<_Idx, _Head, false> { }; ++template struct _Tuple_impl; ++template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { }; ++template struct _Tuple_impl<_Idx, _Head> : private _Head_base<_Idx, _Head> { }; ++template class tuple : public _Tuple_impl<0, _Elements...> { }; ++template struct tuple_element<__i, tuple<_Types...>> ++{ ++ using type = typename _Nth_type<__i, _Types...>::type; ++}; ++ ++template struct default_delete ++{ ++}; ++ ++template class __uniq_ptr_impl ++{ ++ template struct _Ptr { using type = _Up*; }; ++ ++public: ++ using _DeleterConstraint = enable_if< __and_<__not_>, is_default_constructible<_Dp>>::value>; ++ using pointer = typename _Ptr<_Tp, _Dp>::type; ++ constexpr __uniq_ptr_impl(pointer __p) : _M_t() { } ++ constexpr pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } ++private: ++ tuple _M_t; ++}; ++ ++template ::value, bool = is_move_assignable<_Dp>::value> struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp>{ }; ++ ++template > class unique_ptr ++{ ++ template using _DeleterConstraint = typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; ++ __uniq_ptr_data<_Tp, _Dp> _M_t; ++public: ++ using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; ++ template> constexpr explicit unique_ptr(pointer __p) noexcept : _M_t(__p) { } ++ ++ constexpr pointer get() const noexcept { return _M_t._M_ptr(); } ++}; ++ ++} ++ ++template struct SkOverloadedFunctionObject ++{ ++}; ++ ++namespace skia_private ++{ ++ using UniqueVoidPtr = std::unique_ptr>; ++} ++ ++class SkNoncopyable ++{ ++}; ++ ++template class SkAutoSMalloc : SkNoncopyable ++{ ++ public: SkAutoSMalloc() { } ++ ++ explicit SkAutoSMalloc(size_t size) { } ++ ++ void* get() const { return fPtr; } ++ ++ void* fPtr; ++}; ++ ++ class SkPointPriv { ++ public: enum Side { ++ kLeft_Side = -1, kOn_Side = 0, kRight_Side = 1, }; ++ static bool SetLengthFast(SkPoint* pt, float length); ++ }; ++ using namespace skia_private; ++ struct DFData { ++ float fAlpha; ++ SkPoint fDistVector; ++ }; ++ enum NeighborFlags { ++ kLeft_NeighborFlag = 0x01, kRight_NeighborFlag = 0x02, kTopLeft_NeighborFlag = 0x04, kTop_NeighborFlag = 0x08, kTopRight_NeighborFlag = 0x10, kBottomLeft_NeighborFlag = 0x20, kBottom_NeighborFlag = 0x40, kBottomRight_NeighborFlag = 0x80, kAll_NeighborFlags = 0xff, kNeighborFlagCount = 8 }; ++ static void init_glyph_data(DFData* data, unsigned char* edges, const unsigned char* image, int dataWidth, int dataHeight, int imageWidth, int imageHeight, int pad) { ++ for (int j = 0; ++ j < imageHeight; ++ ++j) { ++ for (int i = 0; ++ i < imageWidth; ++ ++i) { ++ if (255 == *image) { ++ } ++ } ++ } ++ } ++ ++static void init_distances(DFData* data, unsigned char* edges, int width, int height) ++{ ++ DFData* currData = data; ++ DFData* prevData = data - width; ++ DFData* nextData = data + width; ++ for (int j = 0; j < height; ++j) ++ { ++ for (int i = 0;i < width;++i) ++ { ++ if (*edges) ++ { ++ SkPoint currGrad; ++ currGrad.fY = (nextData-1)->fAlpha - (prevData-1)->fAlpha + SK_FloatSqrt2*nextData->fAlpha - SK_FloatSqrt2*prevData->fAlpha + (nextData+1)->fAlpha - (prevData+1)->fAlpha; ++ SkPointPriv::SetLengthFast(&currGrad, 1.0f); ++ currData->fDistVector.fY = 1000.f; ++ } ++ ++currData; ++ ++prevData; ++ ++nextData; ++ } ++ } ++} ++ ++static void B1(DFData* curr, int width) ++{ ++} ++ ++static bool generate_distance_field_from_image(unsigned char* distanceField, const unsigned char* copyPtr, int width, int height) ++{ ++ int pad = 4 + 1; ++ int dataWidth = width + 2*pad; ++ int dataHeight = height + 2*pad; ++ UniqueVoidPtr storage(sk_calloc_throw(dataWidth*dataHeight*(sizeof(DFData) + 1))); ++ DFData* dataPtr = (DFData*)storage.get(); ++ unsigned char* edgePtr = (unsigned char*)storage.get() + dataWidth*dataHeight*sizeof(DFData); ++ init_distances(dataPtr, edgePtr, dataWidth, dataHeight); ++ unsigned char* currEdge = edgePtr+dataWidth+1; ++ for (int j = 1; j < dataHeight-1; ++j) ++ { ++ for (int i = 1; i < dataWidth-1; ++i) ++ { ++ if (!*currEdge) ++ { ++ } ++ } ++ } ++ ++ // return true; ++ // ICE triggered only without return statement ++} ++ ++ ++bool SkGenerateDistanceFieldFromA8Image(unsigned char* distanceField, const unsigned char* image, int width, int height, size_t rowBytes) ++{ ++ SkAutoSMalloc<1024> copyStorage((width+2)*(height+2)*sizeof(char)); ++ unsigned char* copyPtr = (unsigned char*) copyStorage.get(); ++ return generate_distance_field_from_image(distanceField, copyPtr, width, height); ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C +new file mode 100644 +index 00000000000..d1f30cb93c4 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C +@@ -0,0 +1,612 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++ namespace std { ++ typedef unsigned int size_t; ++ } ++ namespace std { ++ __attribute__((__always_inline__)) constexpr inline bool __is_constant_evaluated() noexcept { ++ return __builtin_is_constant_evaluated(); ++ } ++ } ++ typedef unsigned int size_t; ++ extern "C" { ++ typedef struct { ++ } ++ lldiv_t; ++ extern "C" { ++ typedef unsigned char __uint8_t; ++ typedef unsigned int __uint32_t; ++ typedef union { ++ struct { ++ } ++ __value32; ++ } ++ __atomic_wide_counter; ++ } ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ } ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct integral_constant { ++ static constexpr _Tp value = __v; ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { ++ } ++ }; ++ template using __bool_constant = integral_constant; ++ using true_type = __bool_constant; ++ using false_type = __bool_constant; ++ template struct enable_if { ++ }; ++ template struct enable_if { ++ using type = _Tp; ++ }; ++ template struct __conditional { ++ }; ++ template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; ++ template struct __type_identity { ++ }; ++ namespace __detail { ++ template auto __and_fn(...) -> false_type; ++ } ++ template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { ++ }; ++ template struct remove_cv; ++ template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { ++ return { ++}; ++ } ++ template struct is_void : public false_type { ++ }; ++ template struct is_member_object_pointer : public __bool_constant<__is_member_object_pointer(_Tp)> { ++ }; ++ template struct is_member_function_pointer : public __bool_constant<__is_member_function_pointer(_Tp)> { ++ }; ++ template struct is_empty : public __bool_constant<__is_empty(_Tp)> { ++ }; ++ template _Tp __declval(long); ++ template auto declval() noexcept -> decltype(__declval<_Tp>(0)); ++ template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; ++ template using __add_lval_ref_t = __add_lvalue_reference(_Tp); ++ template struct is_copy_constructible : public __is_constructible_impl<_Tp, __add_lval_ref_t> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template using __add_rval_ref_t = __add_rvalue_reference(_Tp); ++ template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; ++ template struct is_copy_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_lval_ref_t> { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ ++} ++), "template argument must be a complete class or an unbounded array"); ++ }; ++ template struct is_same : public __bool_constant<__is_same(_Tp, _Up)> { ++ }; ++ template struct remove_const { ++ }; ++ template struct add_const { ++ }; ++ template struct remove_reference { ++ }; ++ template using remove_reference_t = typename remove_reference<_Tp>::type; ++ template struct add_pointer { ++ }; ++ template using __remove_cvref_t = typename remove_cv::type>::type; ++ template struct conditional { ++ }; ++ struct __failure_type { ++ }; ++ struct __invoke_memfun_ref { ++ }; ++ struct __invoke_other { ++ }; ++ template> struct __inv_unwrap { ++ }; ++ template struct __result_of_impl { ++ }; ++ template struct __invoke_result : public __result_of_impl< is_member_object_pointer< typename remove_reference<_Functor>::type >::value, is_member_function_pointer< typename remove_reference<_Functor>::type >::value, _Functor, _ArgTypes... >::type { ++ }; ++ template::value, typename = void> struct __is_invocable_impl : false_type { ++ }; ++ template constexpr bool __call_is_nt(__invoke_memfun_ref) { ++ using _Up = typename __inv_unwrap<_Tp>::type; ++ return noexcept((std::declval<_Up>().*std::declval<_Fn>())( std::declval<_Args>()...)); ++ } ++ template struct __call_is_nothrow : __bool_constant< std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{ ++} ++ ) > { ++ }; ++ template struct is_invocable_r : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type { ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{ ++} ++), "_Fn must be a complete class or an unbounded array"); ++ static_assert((std::__is_complete_or_unbounded( __type_identity<_ArgTypes>{ ++} ++) && ...), "each argument type must be a complete class or an unbounded array"); ++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{ ++} ++), "_Ret must be a complete class or an unbounded array"); ++ }; ++ template inline constexpr bool is_lvalue_reference_v = false; ++ template inline constexpr bool is_enum_v = __is_enum(_Tp); ++ template inline constexpr bool is_union_v = __is_union(_Tp); ++ template inline constexpr bool is_class_v = __is_class(_Tp); ++ template inline constexpr bool is_trivial_v = __is_trivial(_Tp); ++ template inline constexpr bool is_standard_layout_v = __is_standard_layout(_Tp); ++ template inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); ++ template inline constexpr bool is_same_v = __is_same(_Tp, _Up); ++ template inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); ++ template inline constexpr bool is_convertible_v = __is_convertible(_From, _To); ++ template struct common_reference; ++ template using common_reference_t = typename common_reference<_Tp...>::type; ++ } ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template inline constexpr _Tp* __addressof(_Tp& __r) noexcept { ++ } ++ template [[__nodiscard__]] constexpr typename std::remove_reference<_Tp>::type&& move(_Tp&& __t) noexcept { ++ } ++ namespace __detail { ++ template concept __same_as = std::is_same_v<_Tp, _Up>; ++ } ++ template concept same_as = __detail::__same_as<_Tp, _Up> && __detail::__same_as<_Up, _Tp>; ++ template concept convertible_to = is_convertible_v<_From, _To> && requires { ++ static_cast<_To>(std::declval<_From>()); ++ }; ++ template concept common_reference_with = same_as, common_reference_t<_Up, _Tp>> && convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; ++ namespace __detail { ++ template using __cref = const remove_reference_t<_Tp>&; ++ template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; ++ template constexpr bool __destructible_impl = false; ++ template requires requires(_Tp& __t) { ++ { ++ __t.~_Tp() } ++ noexcept; ++ } ++ constexpr bool __destructible_impl<_Tp> = true; ++ template constexpr bool __destructible = __destructible_impl<_Tp>; ++ } ++ template concept assignable_from = is_lvalue_reference_v<_Lhs> && common_reference_with<__detail::__cref<_Lhs>, __detail::__cref<_Rhs>> && requires(_Lhs __lhs, _Rhs&& __rhs) { ++ { ++ __lhs = static_cast<_Rhs&&>(__rhs) } ++ -> same_as<_Lhs>; ++ }; ++ template concept destructible = __detail::__destructible<_Tp>; ++ template concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; ++ template concept default_initializable = constructible_from<_Tp> && requires { ++ (void) ::new _Tp; ++ }; ++ template concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; ++ namespace ranges { ++ namespace __swap { ++ template concept __adl_swap = (std::__detail::__class_or_enum> || std::__detail::__class_or_enum>) && requires(_Tp&& __t, _Up&& __u) { ++ swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); ++ }; ++ struct _Swap { ++ private: template static constexpr bool _S_noexcept() { ++ if constexpr (__adl_swap<_Tp, _Up>) return noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())); ++ } ++ public: template requires __adl_swap<_Tp, _Up> || (same_as<_Tp, _Up> && is_lvalue_reference_v<_Tp> && move_constructible> && assignable_from<_Tp, remove_reference_t<_Tp>>) constexpr void operator()(_Tp&& __t, _Up&& __u) const noexcept(_S_noexcept<_Tp, _Up>()) { ++ if constexpr (__adl_swap<_Tp, _Up>) swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); ++ else { ++ } ++ } ++ template requires requires(const _Swap& __swap, _Tp& __e1, _Up& __e2) { ++ __swap(__e1, __e2); ++ } ++ constexpr void operator()(_Tp (&__e1)[_Num], _Up (&__e2)[_Num]) const noexcept(noexcept(std::declval()(*__e1, *__e2))) { ++ for (size_t __n = 0; ++ __n < _Num; ++ ++__n) (*this)(__e1[__n], __e2[__n]); ++ } ++ }; ++ } ++ inline namespace _Cpo { ++ inline constexpr __swap::_Swap swap{ ++}; ++ } ++ } ++ template concept swappable = requires(_Tp& __a, _Tp& __b) { ++ ranges::swap(__a, __b); ++ }; ++ template concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, _Up&& __u) { ++ ranges::swap(static_cast<_Tp&&>(__t), static_cast<_Tp&&>(__t)); ++ }; ++ namespace __detail { ++ template concept __boolean_testable_impl = convertible_to<_Tp, bool>; ++ template concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { ++ { ++ !static_cast<_Tp&&>(__t) } ++ -> __boolean_testable_impl; ++ }; ++ template concept __weakly_eq_cmp_with = requires(__detail::__cref<_Tp> __t, __detail::__cref<_Up> __u) { ++ { ++ __t == __u } ++ -> __boolean_testable; ++ { ++ __u == __t } ++ -> __boolean_testable; ++ { ++ __u != __t } ++ -> __boolean_testable; ++ }; ++ } ++ namespace __detail { ++ template concept __partially_ordered_with = requires(const remove_reference_t<_Tp>& __t, const remove_reference_t<_Up>& __u) { ++ { ++ __t < __u } ++ -> __boolean_testable; ++ { ++ __t <= __u } ++ -> __boolean_testable; ++ { ++ __t >= __u } ++ -> __boolean_testable; ++ { ++ __u < __t } ++ -> __boolean_testable; ++ }; ++ } ++ template struct __get_first_arg { ++ }; ++ template struct __ptr_traits_elem : __get_first_arg<_Ptr> { ++ }; ++ template requires requires { ++ typename _Ptr::element_type; ++ } ++ struct __ptr_traits_elem<_Ptr, void> { ++ }; ++ template::value> struct __ptr_traits_ptr_to { ++ using pointer = _Ptr; ++ using element_type = _Elt; ++ static pointer pointer_to(element_type& __r) requires requires { ++ { ++ pointer::pointer_to(__r) } ++ -> convertible_to; ++ } ++ { ++ } ++ }; ++ namespace __detail { ++ template using __with_ref = _Tp&; ++ template concept __can_reference = requires { ++ typename __with_ref<_Tp>; ++ }; ++ template concept __dereferenceable = requires(_Tp& __t) { ++ { ++ *__t } ++ -> __can_reference; ++ }; ++ } ++ namespace ranges { ++ namespace __imove { ++ template concept __adl_imove = (std::__detail::__class_or_enum>) && requires(_Tp&& __t) { ++ iter_move(static_cast<_Tp&&>(__t)); ++ }; ++ struct _IterMove { ++ private: template struct __result { ++ }; ++ template static constexpr bool _S_noexcept() { ++ if constexpr (__adl_imove<_Tp>) return noexcept(iter_move(std::declval<_Tp>())); ++ } ++ public: template using __type = typename __result<_Tp>::type; ++ template [[nodiscard]] constexpr __type<_Tp> operator()(_Tp&& __e) const noexcept(_S_noexcept<_Tp>()) { ++ } ++ }; ++ } ++ } ++ template struct incrementable_traits { ++ }; ++ namespace __detail { ++ } ++ template struct tuple_element; ++ template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; ++ template constexpr size_t __find_uniq_type_in_pack() { ++ constexpr size_t __sz = sizeof...(_Types); ++ constexpr bool __found[__sz] = { ++ __is_same(_Tp, _Types) ... }; ++ size_t __n = __sz; ++ for (size_t __i = 0; ++ __i < __sz; ++ ++__i) { ++ if (__found[__i]) { ++ if (__n < __sz) return __sz; ++ } ++ } ++ }; ++ template struct integer_sequence { ++ }; ++ template using make_integer_sequence = integer_sequence<_Tp, __integer_pack(_Num)...>; ++ template using index_sequence = integer_sequence; ++ template using make_index_sequence = make_integer_sequence; ++ template using index_sequence_for = make_index_sequence; ++ template struct in_place_type_t { ++ }; ++ template class tuple; ++ template class __pair_base { ++ }; ++ namespace __detail { ++ template struct __move_iter_cat { ++ }; ++ } ++ template class move_iterator : public __detail::__move_iter_cat<_Iterator> { ++ }; ++ template [[__nodiscard__]] inline constexpr bool operator<(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) requires requires { ++ { ++ __x.base() < __y.base() } ++ -> convertible_to; ++ } ++ { ++ return !(__x < __y); ++ } ++ namespace __ops { ++ template struct _Iter_comp_iter { ++ _Compare _M_comp; ++ explicit constexpr _Iter_comp_iter(_Compare __comp) : _M_comp(std::move(__comp)) { ++ } ++ template constexpr bool operator()(_Iterator1 __it1, _Iterator2 __it2) { ++ return bool(_M_comp(*__it1, *__it2)); ++ } ++ }; ++ template constexpr inline _Iter_comp_iter<_Compare> __iter_comp_iter(_Compare __comp) { ++ } ++ } ++ template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) { ++ return __a; ++ } ++ template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) { ++ if (__a < __b) return __b; ++ } ++ template constexpr inline _Iterator __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) { ++ } ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ struct allocator_arg_t { ++ struct _Sink { ++ void constexpr operator=(const void*) { ++ } ++ } ++ _M_a; ++ }; ++ template constexpr _Res __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) { ++ } ++ template class initializer_list { ++ typedef size_t size_type; ++ typedef const _E* iterator; ++ private: iterator _M_array; ++ size_type _M_len; ++ }; ++ template struct __is_empty_non_tuple : is_empty<_Tp> { ++ }; ++ template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; ++ template::value> struct _Head_base; ++ template struct _Tuple_impl; ++ template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { ++ }; ++ template constexpr __tuple_element_t<__i, tuple<_Elements...>>& get(tuple<_Elements...>& __t) noexcept { ++ } ++ template requires (sizeof...(_Tps) == sizeof...(_Ups)) && (requires (const _Tps& __t, const _Ups& __u) { ++ { ++ __t == __u } ++ -> __detail::__boolean_testable; ++ } ++ && ...) constexpr bool operator== [[nodiscard]] (const tuple<_Tps...>& __t, const tuple<_Ups...>& __u) { ++ return [&](index_sequence<_Inds...>) { ++ } ++ (index_sequence_for<_Tps...>{ ++} ++ ); ++ } ++ } ++ typedef struct { ++ union { ++ } ++ __value; ++ } ++ __mbstate_t; ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ } ++ static inline int __gthread_yield (void) { ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template [[nodiscard, __gnu__::__always_inline__]] constexpr _Tp* data(_Tp (&__array)[_Nm]) noexcept { ++ }; ++ } ++ typedef __uint8_t uint8_t; ++ typedef __uint32_t uint32_t; ++ namespace std { ++ namespace __detail { ++ inline void __thread_yield() noexcept { ++ } ++ inline void __thread_relax() noexcept { ++ } ++ inline constexpr auto __atomic_spin_count = 16; ++ struct __default_spin_policy { ++ bool operator()() const noexcept { ++ } ++ }; ++ template bool __atomic_spin(_Pred& __pred, _Spin __spin = _Spin{ ++ } ++ ) noexcept { ++ for (auto __i = 0; ++ __i < __atomic_spin_count; ++ ++__i) { ++ } ++ } ++ } ++ struct __numeric_limits_base { ++ }; ++ template struct numeric_limits : public __numeric_limits_base { ++ static constexpr bool is_signed = true; ++ static constexpr bool is_integer = true; ++ }; ++ template<> struct numeric_limits { ++ static constexpr bool is_signed = false; ++ static constexpr bool is_integer = true; ++ }; ++ } ++ namespace WTF { ++ template struct IsSmartPtr { ++ }; ++ template > struct TypeCastTraits { ++ }; ++ template class TypeHasRefMemberFunction { ++ }; ++ } ++ namespace WTF { ++ } ++ namespace std { ++ namespace experimental { ++ }; ++ } ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct array { ++ }; ++ } ++ extern "C" { ++ extern float sqrtf (float __x) noexcept (true); ++ extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ constexpr bool isnan(float __x) { ++ return __builtin_isnan(__x); ++ } ++ } ++ } ++ constexpr float piFloat = static_cast( 3.14159265358979323846 ); ++ template typename std::enable_if::value && std::numeric_limits::is_integer && std::numeric_limits::is_integer && std::numeric_limits::is_signed && !std::numeric_limits::is_signed && sizeof(SourceType) >= sizeof(TargetType), TargetType>::type clampTo(SourceType value) { ++ return static_cast(value); ++ } ++ namespace WTF { ++ constexpr uint32_t roundUpToPowerOfTwo(uint32_t v) { ++ return v; ++ }; ++ template struct VectorTraitsBase; ++ template struct VectorTraits : VectorTraitsBase && std::is_trivial_v, T> { ++ }; ++ } ++ namespace WTF { ++ class StringHasher { ++ }; ++ enum class DestructionThread : uint8_t { ++ Any, Main, MainRunLoop }; ++ } ++ namespace WebCore { ++ class IntSize { ++ public: constexpr IntSize() = default; ++ void setWidth(int width) { ++ m_width = width; ++ } ++ void setHeight(int height) { ++ m_height = height; ++ } ++ private: int m_width { ++ 0 }; ++ int m_height { ++ 0 }; ++ }; ++ inline IntSize& operator+=(IntSize& a, const IntSize& b) { ++ } ++ } ++ namespace WebCore { ++ class FloatSize { ++ public: constexpr FloatSize() = default; ++ constexpr float width() const { ++ return m_width; ++ } ++ constexpr float height() const { ++ return m_height; ++ } ++ private: float m_width { ++ 0 }; ++ float m_height { ++ 0 }; ++ }; ++ } ++ namespace WTF { ++ class ThreadSafeRefCountedBase { ++ }; ++ template class ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { ++ }; ++ } ++ using WTF::ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr; ++ namespace WebCore { ++ class FloatPoint { ++ }; ++ inline FloatSize toFloatSize(const FloatPoint& a) { ++ } ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ template struct ColorComponents { ++ template constexpr auto map(F&& function) const -> ColorComponents())), N>; ++ }; ++ template struct AlphaTraits; ++ inline constexpr ColorComponents resolveColorComponents(const ColorComponents& colorComponents) { ++ return colorComponents.map([] (float component) { ++ return std::isnan(component) ? 0.0f : component; ++ } ++ ); ++ }; ++ enum class WhitePoint { ++ D50, D65 }; ++ template struct ColorWithAlphaHelper { ++ }; ++ template struct RGBAType : ColorWithAlphaHelper { ++ constexpr RGBAType(T red, T green, T blue, T alpha = AlphaTraits::opaque) : red { ++ red } ++ { ++ } ++ protected: T red; ++ }; ++ } ++ namespace WebCore { ++ class RenderingResource : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { ++ }; ++ class FilterFunction : public RenderingResource { ++ }; ++ class FilterEffect : public FilterFunction { ++ }; ++ class AffineTransform { ++ public: constexpr AffineTransform(); ++ private: std::array m_transform; ++ }; ++ constexpr AffineTransform::AffineTransform() : m_transform { ++ } ++ { ++ } ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ class FEGaussianBlur : public FilterEffect { ++ static IntSize calculateUnscaledKernelSize(FloatSize stdDeviation); ++ }; ++ } ++ namespace WTF { ++ } ++ namespace WebCore { ++ static inline float gaussianKernelFactor() { ++ return 3 / 4.f * sqrtf(2 * piFloat); ++ } ++ static int clampedToKernelSize(float value) { ++ static constexpr unsigned maxKernelSize = 500; ++ unsigned size = std::max(2, static_cast(floorf(value * gaussianKernelFactor() + 0.5f))); ++ return clampTo(std::min(size, maxKernelSize)); ++ } ++ IntSize FEGaussianBlur::calculateUnscaledKernelSize(FloatSize stdDeviation) { ++ IntSize kernelSize; ++ if (stdDeviation.width()) kernelSize.setWidth(clampedToKernelSize(stdDeviation.width())); ++ if (stdDeviation.height()) kernelSize.setHeight(clampedToKernelSize(stdDeviation.height())); ++ return kernelSize; ++ } ++ } +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C +new file mode 100644 +index 00000000000..f46136489b5 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C +@@ -0,0 +1,429 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++ typedef unsigned int size_t; ++ extern "C" { ++ typedef signed int __int32_t; ++ typedef struct { ++ } ++ __fpos64_t; ++ } ++ extern "C++" { ++ namespace std __attribute__ ((__visibility__ ("default"))) { ++ template struct integral_constant { ++ using value_type = _Tp; ++ constexpr operator value_type() const noexcept { ++ } ++ }; ++ } ++ typedef __int32_t int32_t; ++ typedef struct { ++ } ++ ldiv_t; ++ } ++ extern "C" { ++ typedef unsigned int hashval_t; ++ enum insert_option { ++ NO_INSERT, INSERT}; ++ } ++ typedef const union tree_node *const_tree; ++ struct varpool_node; ++ struct cgraph_edge; ++ template inline T * ggc_alloc () { ++ } ++ struct vl_embed { ++ }; ++ struct vl_ptr { ++ }; ++ struct va_heap { ++ typedef vl_ptr default_layout; ++ }; ++ struct va_gc { ++ typedef vl_embed default_layout; ++ }; ++ template struct vec { ++ }; ++ template T* begin (vec *v) { ++ } ++ template T* end (vec *v) { ++ } ++ struct vnull { ++ }; ++ template struct vec { ++ bool is_empty (void) const { ++ } ++ T &operator[] (unsigned); ++ }; ++ template inline unsigned vec_safe_length (const vec *v) { ++ } ++ template class auto_vec; ++ template struct vec { ++ public: vec () = default; ++ vec (vnull): m_vec () { ++ } ++ T &operator[] (unsigned ix) { ++ return (*m_vec)[ix]; ++ } ++ vec *m_vec; ++ }; ++ template class auto_vec : public vec { ++ public: auto_vec () { ++ } ++ auto_vec (size_t s ) { ++ } ++ }; ++ enum mem_alloc_origin { ++ HASH_TABLE_ORIGIN, HASH_MAP_ORIGIN, HASH_SET_ORIGIN, VEC_ORIGIN, BITMAP_ORIGIN, GGC_ORIGIN, ALLOC_POOL_ORIGIN, MEM_ALLOC_ORIGIN_LENGTH }; ++ template struct typed_noop_remove { ++ }; ++ template struct int_hash_base : typed_noop_remove { ++ typedef Type value_type; ++ }; ++ template struct int_hash : int_hash_base { ++ }; ++ template struct default_hash_traits : T { ++ }; ++ template struct simple_hashmap_traits { ++ typedef typename H::value_type key_type; ++ static inline hashval_t hash (const key_type &); ++ }; ++ template struct xcallocator { ++ }; ++ template class Allocator = xcallocator> class hash_table { ++ typedef typename Descriptor::value_type value_type; ++ typedef typename Descriptor::compare_type compare_type; ++ public: explicit hash_table (size_t, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0, mem_alloc_origin origin = HASH_TABLE_ORIGIN ); ++ value_type *find_slot_with_hash (const compare_type &comparable, hashval_t hash, enum insert_option insert); ++ }; ++ template, Value> > class hash_map; ++ class mem_location { ++ }; ++ const size_t default_hash_map_size = 13; ++ template class hash_map { ++ typedef typename Traits::key_type Key; ++ struct hash_entry { ++ Value m_value; ++ typedef hash_entry value_type; ++ typedef Key compare_type; ++ }; ++ public: explicit hash_map (size_t n = default_hash_map_size, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0 ) : m_table (n, ggc, sanitize_eq_and_hash, gather_mem_stats, HASH_MAP_ORIGIN ) { ++ } ++ Value &get_or_insert (const Key &k, bool *existed = nullptr) { ++ hash_entry *e = m_table.find_slot_with_hash (k, Traits::hash (k), INSERT); ++ return e->m_value; ++ } ++ hash_table m_table; ++ }; ++ enum optgroup_flag { ++ OPTGROUP_NONE = 0, OPTGROUP_IPA = (1 << 1), OPTGROUP_LOOP = (1 << 2), OPTGROUP_INLINE = (1 << 3), OPTGROUP_OMP = (1 << 4), OPTGROUP_VEC = (1 << 5), OPTGROUP_OTHER = (1 << 6), OPTGROUP_ALL = (OPTGROUP_IPA | OPTGROUP_LOOP | OPTGROUP_INLINE | OPTGROUP_OMP | OPTGROUP_VEC | OPTGROUP_OTHER) }; ++ typedef enum optgroup_flag optgroup_flags_t; ++ enum reorder_blocks_algorithm { ++ }; ++ enum tree_node_structure_enum { ++ TS_BASE, TS_TYPED, TS_COMMON, TS_INT_CST, TS_POLY_INT_CST, TS_REAL_CST, TS_FIXED_CST, TS_VECTOR, TS_STRING, TS_COMPLEX, TS_IDENTIFIER, TS_DECL_MINIMAL, TS_DECL_COMMON, TS_DECL_WRTL, TS_DECL_NON_COMMON, TS_DECL_WITH_VIS, TS_FIELD_DECL, TS_VAR_DECL, TS_PARM_DECL, TS_LABEL_DECL, TS_RESULT_DECL, TS_CONST_DECL, TS_TYPE_DECL, TS_FUNCTION_DECL, TS_TRANSLATION_UNIT_DECL, TS_TYPE_COMMON, TS_TYPE_WITH_LANG_SPECIFIC, TS_TYPE_NON_COMMON, TS_LIST, TS_VEC, TS_EXP, TS_SSA_NAME, TS_BLOCK, TS_BINFO, TS_STATEMENT_LIST, TS_CONSTRUCTOR, TS_OMP_CLAUSE, TS_OPTIMIZATION, TS_TARGET_OPTION, LAST_TS_ENUM }; ++ struct tree_base { ++ union { ++ struct { ++ } ++ bits; ++ } ++ u; ++ }; ++ struct tree_typed { ++ }; ++ inline const_tree contains_struct_check (const_tree __t, const enum tree_node_structure_enum __s, const char *__f, int __l, const char *__g) { ++ } ++ struct gimple { ++ }; ++ typedef enum { ++ TV_NONE, TV_TOTAL, TV_PHASE_SETUP, TV_PHASE_PARSING, TV_PHASE_DEFERRED, TV_PHASE_LATE_PARSING_CLEANUPS, TV_PHASE_OPT_GEN, TV_PHASE_LATE_ASM, TV_PHASE_STREAM_IN, TV_PHASE_STREAM_OUT, TV_PHASE_FINALIZE, TV_NAME_LOOKUP, TV_OVERLOAD, TV_GC, TV_DUMP, TV_PCH_SAVE, TV_PCH_CPP_SAVE, TV_PCH_PTR_REALLOC, TV_PCH_PTR_SORT, TV_PCH_RESTORE, TV_PCH_CPP_RESTORE, TV_CGRAPH, TV_CGRAPHOPT, TV_CGRAPH_FUNC_EXPANSION, TV_CGRAPH_IPA_PASSES, TV_IPA_ODR, TV_IPA_FNSUMMARY, TV_IPA_UNREACHABLE, TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL, TV_IPA_DEVIRT, TV_IPA_CONSTANT_PROP, TV_IPA_INLINING, TV_IPA_FNSPLIT, TV_IPA_COMDATS, TV_IPA_OPT, TV_IPA_LTO_DECOMPRESS, TV_IPA_LTO_COMPRESS, TV_IPA_LTO_OUTPUT, TV_IPA_LTO_GIMPLE_IN, TV_IPA_LTO_GIMPLE_OUT, TV_IPA_LTO_DECL_IN, TV_IPA_LTO_DECL_OUT, TV_IPA_LTO_CTORS_IN, TV_IPA_LTO_CTORS_OUT, TV_IPA_LTO_CGRAPH_IO, TV_IPA_LTO_DECL_MERGE, TV_IPA_LTO_CGRAPH_MERGE, TV_LTO, TV_WHOPR_WPA, TV_WHOPR_WPA_IO, TV_WHOPR_PARTITIONING, TV_WHOPR_LTRANS, TV_IPA_REFERENCE, TV_IPA_PROFILE, TV_IPA_AUTOFDO, TV_IPA_PURE_CONST, TV_IPA_ICF, TV_IPA_PTA, TV_IPA_SRA, TV_IPA_FREE_LANG_DATA, TV_IPA_FREE_INLINE_SUMMARY, TV_IPA_MODREF, TV_CFG, TV_CLEANUP_CFG, TV_CFG_VERIFY, TV_DELETE_TRIVIALLY_DEAD, TV_DF_SCAN, TV_DF_MD, TV_DF_RD, TV_DF_LR, TV_DF_LIVE, TV_DF_MIR, TV_DF_CHAIN, TV_DF_WORD_LR, TV_DF_NOTE, TV_REG_STATS, TV_ALIAS_ANALYSIS, TV_ALIAS_STMT_WALK, TV_REG_SCAN, TV_REBUILD_JUMP, TV_CPP, TV_LEX, TV_PARSE_GLOBAL, TV_PARSE_STRUCT, TV_PARSE_ENUM, TV_PARSE_FUNC, TV_PARSE_INLINE, TV_PARSE_INMETH, TV_TEMPLATE_INST, TV_CONSTEXPR, TV_CONSTRAINT_NORM, TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB, TV_MODULE_IMPORT, TV_MODULE_EXPORT, TV_MODULE_MAPPER, TV_FLATTEN_INLINING, TV_EARLY_INLINING, TV_INLINE_PARAMETERS, TV_INTEGRATION, TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG, TV_TREE_CLEANUP_CFG, TV_TREE_TAIL_MERGE, TV_TREE_VRP, TV_TREE_VRP_THREADER, TV_TREE_EARLY_VRP, TV_TREE_FAST_VRP, TV_TREE_ARRAY_BOUNDS, TV_TREE_COPY_PROP, TV_FIND_REFERENCED_VARS, TV_TREE_PTA, TV_TREE_SSA_OTHER, TV_TREE_INTO_SSA, TV_TREE_SSA_INCREMENTAL, TV_TREE_OPS, TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SSA_THREAD_JUMPS, TV_TREE_SRA, TV_ISOLATE_ERRONEOUS_PATHS, TV_TREE_CCP, TV_TREE_SPLIT_EDGES, TV_TREE_REASSOC, TV_TREE_PRE, TV_TREE_FRE, TV_TREE_RPO_VN, TV_TREE_SINK, TV_TREE_PHIOPT, TV_TREE_BACKPROP, TV_TREE_FORWPROP, TV_TREE_PHIPROP, TV_TREE_DCE, TV_TREE_CD_DCE, TV_TREE_CALL_CDCE, TV_TREE_DSE, TV_TREE_MERGE_PHI, TV_TREE_LOOP, TV_TREE_NOLOOP, TV_TREE_LOOP_BOUNDS, TV_LIM, TV_LINTERCHANGE, TV_TREE_LOOP_IVCANON, TV_SCEV_CONST, TV_TREE_LOOP_UNSWITCH, TV_LOOP_SPLIT, TV_LOOP_JAM, TV_COMPLETE_UNROLL, TV_SCALAR_CLEANUP, TV_TREE_PARALLELIZE_LOOPS, TV_TREE_VECTORIZATION, TV_TREE_SLP_VECTORIZATION, TV_GRAPHITE, TV_GRAPHITE_TRANSFORMS, TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN, TV_TREE_LOOP_DISTRIBUTION, TV_CHECK_DATA_DEPS, TV_TREE_PREFETCH, TV_TREE_LOOP_IVOPTS, TV_PREDCOM, TV_TREE_CH, TV_TREE_SSA_UNCPROP, TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY, TV_TREE_STMT_VERIFY, TV_TREE_SWITCH_CONVERSION, TV_TREE_SWITCH_LOWERING, TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_POW, TV_TREE_WIDEN_MUL, TV_TRANS_MEM, TV_TREE_STRLEN, TV_TREE_MODREF, TV_TREE_ASSUMPTIONS, TV_CGRAPH_VERIFY, TV_DOM_FRONTIERS, TV_DOMINANCE, TV_CONTROL_DEPENDENCES, TV_OUT_OF_SSA, TV_VAR_EXPAND, TV_EXPAND, TV_POST_EXPAND, TV_VARCONST, TV_LOWER_SUBREG, TV_JUMP, TV_FWPROP, TV_CSE, TV_DCE, TV_DSE1, TV_DSE2, TV_LOOP, TV_LOOP_INIT, TV_LOOP_VERSIONING, TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNROLL, TV_LOOP_DOLOOP, TV_LOOP_FINI, TV_CPROP, TV_PRE, TV_HOIST, TV_LSM, TV_TRACER, TV_WEB, TV_AUTO_INC_DEC, TV_CSE2, TV_BRANCH_PROB, TV_COMBINE, TV_IFCVT, TV_MODE_SWITCH, TV_SMS, TV_LIVE_RANGE_SHRINKAGE, TV_SCHED, TV_EARLY_REMAT, TV_IRA, TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE, TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE, TV_LRA_REMAT, TV_RELOAD, TV_RELOAD_CSE_REGS, TV_GCSE_AFTER_RELOAD, TV_REE, TV_THREAD_PROLOGUE_AND_EPILOGUE, TV_IFCVT2, TV_SPLIT_PATHS, TV_COMBINE_STACK_ADJUST, TV_PEEPHOLE2, TV_RENAME_REGISTERS, TV_SCHED_FUSION, TV_CPROP_REGISTERS, TV_SCHED2, TV_MACH_DEP, TV_DBR_SCHED, TV_REORDER_BLOCKS, TV_SHORTEN_BRANCH, TV_REG_STACK, TV_FINAL, TV_VAROUT, TV_SYMOUT, TV_VAR_TRACKING, TV_VAR_TRACKING_DATAFLOW, TV_VAR_TRACKING_EMIT, TV_TREE_IFCOMBINE, TV_TREE_IF_TO_SWITCH, TV_TREE_UNINIT, TV_PLUGIN_INIT, TV_PLUGIN_RUN, TV_GIMPLE_SLSR, TV_GIMPLE_STORE_MERGING, TV_VTABLE_VERIFICATION, TV_TREE_UBSAN, TV_INITIALIZE_RTL, TV_GIMPLE_LADDRESS, TV_TREE_LOOP_IFCVT, TV_WARN_ACCESS, TV_EARLY_LOCAL, TV_OPTIMIZE, TV_REST_OF_COMPILATION, TV_POSTRELOAD, TV_LATE_COMPILATION, TV_REMOVE_UNUSED, TV_ADDRESS_TAKEN, TV_TODO, TV_VERIFY_LOOP_CLOSED, TV_VERIFY_RTL_SHARING, TV_REBUILD_FREQUENCIES, TV_REPAIR_LOOPS, TV_JIT_REPLAY, TV_ASSEMBLE, TV_LINK, TV_LOAD, TV_JIT_ACQUIRING_MUTEX, TV_JIT_CLIENT_CODE, TV_ANALYZER, TV_ANALYZER_SUPERGRAPH, TV_ANALYZER_STATE_PURGE, TV_ANALYZER_PLAN, TV_ANALYZER_SCC, TV_ANALYZER_WORKLIST, TV_ANALYZER_INFINITE_LOOPS, TV_ANALYZER_DUMP, TV_ANALYZER_DIAGNOSTICS, TV_ANALYZER_SHORTEST_PATHS, TIMEVAR_LAST } ++ timevar_id_t; ++ enum opt_pass_type { ++ GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS }; ++ struct pass_data { ++ enum opt_pass_type type; ++ const char *name; ++ optgroup_flags_t optinfo_flags; ++ timevar_id_t tv_id; ++ unsigned int properties_required; ++ unsigned int properties_provided; ++ unsigned int properties_destroyed; ++ unsigned int todo_flags_start; ++ unsigned int todo_flags_finish; ++ }; ++ namespace gcc { ++ class context; ++ } ++ class opt_pass : public pass_data { ++ protected: opt_pass (const pass_data&, gcc::context *); ++ }; ++ class ipa_opt_pass_d : public opt_pass { ++ public: void (*generate_summary) (void); ++ void (*write_summary) (void); ++ void (*read_summary) (void); ++ void (*write_optimization_summary) (void); ++ void (*read_optimization_summary) (void); ++ void (*stmt_fixup) (struct cgraph_node *, gimple **); ++ unsigned int function_transform_todo_flags_start; ++ unsigned int (*function_transform) (struct cgraph_node *); ++ void (*variable_transform) (varpool_node *); ++ protected: ipa_opt_pass_d (const pass_data& data, gcc::context *ctxt, void (*generate_summary) (void), void (*write_summary) (void), void (*read_summary) (void), void (*write_optimization_summary) (void), void (*read_optimization_summary) (void), void (*stmt_fixup) (struct cgraph_node *, gimple **), unsigned int function_transform_todo_flags_start, unsigned int (*function_transform) (struct cgraph_node *), void (*variable_transform) (varpool_node *)) : opt_pass (data, ctxt), generate_summary (generate_summary), write_summary (write_summary), read_summary (read_summary), write_optimization_summary (write_optimization_summary), read_optimization_summary (read_optimization_summary), stmt_fixup (stmt_fixup), function_transform_todo_flags_start (function_transform_todo_flags_start), function_transform (function_transform), variable_transform (variable_transform) { ++ } ++ }; ++ struct symtab_node { ++ struct lto_file_decl_data * lto_file_data; ++ }; ++ struct cgraph_node : public symtab_node { ++ cgraph_edge *callees; ++ cgraph_edge *indirect_calls; ++ }; ++ class cgraph_edge { ++ public: friend struct cgraph_node; ++ inline int get_uid () { ++ return m_uid; ++ } ++ cgraph_edge *next_callee; ++ private: int m_uid; ++ }; ++ template class function_summary; ++ class symbol_table { ++ }; ++ template class function_summary_base { ++ }; ++ template class function_summary : public function_summary_base { ++ T* get (cgraph_node *node) __attribute__ ((__pure__)) { ++ } ++ }; ++ template class call_summary_base { ++ }; ++ template class call_summary { ++ }; ++ template class call_summary : public call_summary_base { ++ public: call_summary (symbol_table *symtab, bool ggc = false ) : call_summary_base (symtab, call_summary::symtab_removal, call_summary::symtab_duplication ), m_ggc (ggc), m_map (13, ggc, true, 0 ) { ++ } ++ T* get_create (cgraph_edge *edge) { ++ bool existed; ++ T **v = &m_map.get_or_insert (edge->get_uid (), &existed); ++ return *v; ++ } ++ protected: bool m_ggc; ++ typedef int_hash map_hash; ++ hash_map m_map; ++ }; ++ enum lto_section_type { ++ LTO_section_decls = 0, LTO_section_function_body, LTO_section_static_initializer, LTO_section_symtab, LTO_section_symtab_extension, LTO_section_refs, LTO_section_asm, LTO_section_jump_functions, LTO_section_ipa_pure_const, LTO_section_ipa_reference, LTO_section_ipa_profile, LTO_section_symtab_nodes, LTO_section_opts, LTO_section_cgraph_opt_sum, LTO_section_ipa_fn_summary, LTO_section_ipcp_transform, LTO_section_ipa_icf, LTO_section_offload_table, LTO_section_mode_table, LTO_section_lto, LTO_section_ipa_sra, LTO_section_odr_types, LTO_section_ipa_modref, LTO_N_SECTION_TYPES }; ++ class lto_input_block { ++ public: lto_input_block (const char *data_, unsigned int p_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (p_), len (len_) { ++ } ++ lto_input_block (const char *data_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (0), len (len_) { ++ } ++ const char *data; ++ const lto_file_decl_data *file_data; ++ unsigned int p; ++ unsigned int len; ++ }; ++ struct lto_simple_header { ++ int32_t main_size; ++ }; ++ struct lto_simple_header_with_strings : lto_simple_header { ++ }; ++ struct lto_function_header : lto_simple_header_with_strings { ++ int32_t cfg_size; ++ }; ++ typedef struct lto_symtab_encoder_d *lto_symtab_encoder_t; ++ struct lto_symtab_encoder_iterator { ++ }; ++ struct lto_out_decl_state { ++ lto_symtab_encoder_t symtab_node_encoder; ++ }; ++ struct output_block { ++ struct lto_out_decl_state *decl_state; ++ }; ++ extern struct lto_file_decl_data **lto_get_file_decl_data (void); ++ extern const char *lto_get_summary_section_data (struct lto_file_decl_data *, enum lto_section_type, size_t *); ++ extern struct output_block *create_output_block (enum lto_section_type); ++ inline bool lsei_end_p (lto_symtab_encoder_iterator lsei) { ++ } ++ inline void lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei) { ++ } ++ inline lto_symtab_encoder_iterator lsei_start_function_in_partition (lto_symtab_encoder_t encoder) { ++ } ++ static unsigned const BITS_PER_BITPACK_WORD = 64; ++ typedef unsigned long long bitpack_word_t; ++ struct bitpack_d { ++ unsigned pos; ++ bitpack_word_t word; ++ void *stream; ++ }; ++ unsigned long long streamer_read_uhwi (class lto_input_block *); ++ inline struct bitpack_d bitpack_create (struct lto_output_stream *s) { ++ } ++ inline struct bitpack_d streamer_read_bitpack (class lto_input_block *ib) { ++ struct bitpack_d bp; ++ return bp; ++ } ++ inline bitpack_word_t bp_unpack_value (struct bitpack_d *bp, unsigned nbits) { ++ bitpack_word_t mask, val; ++ int pos = bp->pos; ++ mask = (nbits == BITS_PER_BITPACK_WORD ? (bitpack_word_t) -1 : ((bitpack_word_t) 1 << nbits) - 1); ++ if (pos + nbits > BITS_PER_BITPACK_WORD) { ++ bp->word = val = streamer_read_uhwi ((class lto_input_block *)bp->stream); ++ bp->pos = nbits; ++ return val & mask; ++ } ++ val = bp->word; ++ val >>= pos; ++ bp->pos = pos + nbits; ++ return val & mask; ++ } ++ class ipcp_transformation; ++ class ipa_argagg_value_list { ++ template void remove_argaggs_if (pred_function &&predicate) { ++ } ++ }; ++ inline ipcp_transformation * ipcp_get_transformation_summary (cgraph_node *node) { ++ } ++ struct param_access { ++ }; ++ struct isra_param_desc { ++ vec *accesses; ++ unsigned remove_only_when_retval_removed : 1; ++ }; ++ class isra_func_summary { ++ public: isra_func_summary () : m_parameters (nullptr), m_candidate (false), m_returns_value (false), m_return_ignored (false), m_queued (false) { ++ } ++ vec *m_parameters; ++ unsigned m_candidate : 1; ++ unsigned m_returns_value : 1; ++ unsigned m_return_ignored : 1; ++ unsigned m_queued : 1; ++ }; ++ struct isra_param_flow { ++ char length; ++ unsigned char inputs[7]; ++ unsigned aggregate_pass_through : 1; ++ unsigned pointer_pass_through : 1; ++ unsigned safe_to_import_accesses : 1; ++ }; ++ class isra_call_summary { ++ public: isra_call_summary () : m_arg_flow (), m_return_ignored (false), m_return_returned (false), m_bit_aligned_arg (false), m_before_any_store (false) { ++ } ++ auto_vec m_arg_flow; ++ unsigned m_return_ignored : 1; ++ unsigned m_return_returned : 1; ++ unsigned m_bit_aligned_arg : 1; ++ unsigned m_before_any_store : 1; ++ }; ++ class ipa_sra_function_summaries : public function_summary { ++ }; ++ class ipa_sra_call_summaries: public call_summary { ++ }; ++ static ipa_sra_call_summaries *call_sums; ++ namespace { ++ static void verify_splitting_accesses (cgraph_node *node, bool certain_must_exist) { ++ } ++ static void ipa_sra_generate_summary (void) { ++ } ++ static void isra_write_edge_summary (output_block *ob, cgraph_edge *e) { ++ } ++ static void isra_write_node_summary (output_block *ob, cgraph_node *node) { ++ for (cgraph_edge *e = node->callees; ++ e; ++ e = e->next_callee) isra_write_edge_summary (ob, e); ++ } ++ static void ipa_sra_write_summary (void) { ++ struct output_block *ob = create_output_block (LTO_section_ipa_sra); ++ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder; ++ lto_symtab_encoder_iterator lsei; ++ for (lsei = lsei_start_function_in_partition (encoder); ++ !lsei_end_p (lsei); ++ lsei_next_function_in_partition (&lsei)) { ++ } ++ } ++ static void isra_read_edge_summary (struct lto_input_block *ib, cgraph_edge *cs) { ++ isra_call_summary *csum = call_sums->get_create (cs); ++ unsigned input_count = streamer_read_uhwi (ib); ++ for (unsigned i = 0; ++ i < input_count; ++ i++) { ++ isra_param_flow *ipf = &csum->m_arg_flow[i]; ++ bitpack_d bp = streamer_read_bitpack (ib); ++ for (int j = 0; ++ j < ipf->length; ++ j++) ipf->inputs[j] = bp_unpack_value (&bp, 8); ++ ipf->aggregate_pass_through = bp_unpack_value (&bp, 1); ++ ipf->pointer_pass_through = bp_unpack_value (&bp, 1); ++ ipf->safe_to_import_accesses = bp_unpack_value (&bp, 1); ++ } ++ } ++ static void isra_read_node_info (struct lto_input_block *ib, cgraph_node *node, struct data_in *data_in) { ++ for (cgraph_edge *e = node->indirect_calls; ++ e; ++ e = e->next_callee) isra_read_edge_summary (ib, e); ++ } ++ static void isra_read_summary_section (struct lto_file_decl_data *file_data, const char *data, size_t len) { ++ const struct lto_function_header *header = (const struct lto_function_header *) data; ++ const int cfg_offset = sizeof (struct lto_function_header); ++ const int main_offset = cfg_offset + header->cfg_size; ++ struct data_in *data_in; ++ unsigned int i; ++ unsigned int count; ++ lto_input_block ib_main ((const char *) data + main_offset, header->main_size, file_data); ++ count = streamer_read_uhwi (&ib_main); ++ for (i = 0; ++ i < count; ++ i++) { ++ struct cgraph_node *node; ++ isra_read_node_info (&ib_main, node, data_in); ++ } ++ } ++ static void ipa_sra_read_summary (void) { ++ struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data (); ++ struct lto_file_decl_data *file_data; ++ unsigned int j = 0; ++ while ((file_data = file_data_vec[j++])) { ++ size_t len; ++ const char *data = lto_get_summary_section_data (file_data, LTO_section_ipa_sra, &len); ++ if (data) isra_read_summary_section (file_data, data, len); ++ } ++ } ++ static bool all_callee_accesses_present_p (isra_param_desc *param_desc, isra_param_desc *arg_desc) { ++ unsigned aclen = vec_safe_length (arg_desc->accesses); ++ for (unsigned j = 0; ++ j < aclen; ++ j++) { ++ } ++ } ++ enum acc_prop_kind { ++ ACC_PROP_DONT, ACC_PROP_COPY, ACC_PROP_CERTAIN}; ++ static const char * pull_accesses_from_callee (cgraph_node *caller, isra_param_desc *param_desc, isra_param_desc *arg_desc, unsigned delta_offset, unsigned arg_size, bool *change_p) { ++ unsigned aclen = vec_safe_length (arg_desc->accesses); ++ for (unsigned j = 0; ++ j < aclen; ++ j++) { ++ } ++ } ++ static bool adjust_parameter_descriptions (cgraph_node *node, isra_func_summary *ifs) { ++ unsigned len = vec_safe_length (ifs->m_parameters); ++ for (unsigned i = 0; ++ i < len; ++ i++) { ++ isra_param_desc *desc = &(*ifs->m_parameters)[i]; ++ if (desc->remove_only_when_retval_removed && !ifs->m_return_ignored) { ++ for (const param_access *pa : desc->accesses) { ++ } ++ } ++ } ++ } ++ const pass_data pass_data_ipa_sra = { ++ IPA_PASS, "sra", OPTGROUP_NONE, TV_IPA_SRA, 0, 0, 0, 0, ( (1 << 7) | (1 << 8) ), }; ++ class pass_ipa_sra : public ipa_opt_pass_d { ++ public: pass_ipa_sra (gcc::context *ctxt) : ipa_opt_pass_d (pass_data_ipa_sra, ctxt, ipa_sra_generate_summary, ipa_sra_write_summary, ipa_sra_read_summary, nullptr , nullptr, nullptr, 0, nullptr, nullptr) { ++ } ++ }; ++ } ++ ipa_opt_pass_d * make_pass_ipa_sra (gcc::context *ctxt) { ++ return new pass_ipa_sra (ctxt); ++ } ++ ++ +diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C +new file mode 100644 +index 00000000000..13eb1ff4d89 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C +@@ -0,0 +1,38 @@ ++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ ++/* { dg-do compile } */ ++ ++struct Trans_NS_WTF_HashMap ++{ ++ template void set(int *, V); ++}; ++ ++struct AscentAndDescent ++{ ++ float ascent; ++ float descent; ++}; ++ ++bool isRubyAnnotationBox(); ++ ++struct EnclosingAscentDescent ++{ ++ float ascent; ++ float descent; ++}; ++ ++AscentAndDescent primaryFontMetricsForInlineBox(); ++int adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1; ++ ++void adjustInlineBoxHeightsForLineBoxContainIfApplicable() ++{ ++ Trans_NS_WTF_HashMap inlineBoxBoundsMap; ++ auto ensureFontMetricsBasedHeight = [&](auto inlineBox) ++ { ++ auto [ascent, descent] = primaryFontMetricsForInlineBox(); ++ auto halfLeading = isRubyAnnotationBox() ? ascent + descent : 0.f; ++ ascent += halfLeading; ++ inlineBoxBoundsMap.set(&inlineBox, EnclosingAscentDescent{ascent, descent}); ++ }; ++ ensureFontMetricsBasedHeight( ++ adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1); ++} +diff --git a/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp +new file mode 100644 +index 00000000000..8be516ebd25 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp +@@ -0,0 +1,299 @@ ++# Copyright (C) 2024 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `gcc-dg.exp' driver, looping over ++# optimization options. ++ ++# Exit immediately if this isn't an SH target. ++if { ![istarget sh*-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++# Return 1 if target is SH2A ++proc check_effective_target_sh2a { } { ++ return [check_no_compiler_messages sh2a object { ++ #ifndef __SH2A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH1 ++proc check_effective_target_sh1 { } { ++ return [check_no_compiler_messages sh1 object { ++ #ifndef __SH1__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is SH4A ++proc check_effective_target_sh4a { } { ++ return [check_no_compiler_messages sh4a object { ++ #ifndef __SH4A__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is big endian ++proc check_effective_target_big_endian { } { ++ return [check_no_compiler_messages big_endian object { ++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target is little endian ++proc check_effective_target_little_endian { } { ++ return [check_no_compiler_messages little_endian object { ++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has any FPU (single or double precision) ++proc check_effective_target_any_fpu { } { ++ return [check_no_compiler_messages any_fpu object { ++ #ifndef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU which is allowed to be ++# used by the compiler as such. ++proc check_effective_target_double_fpu { } { ++ return [check_no_compiler_messages double_fpu object { ++ #ifndef __SH_FPU_DOUBLE__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has a double precision FPU but it is only being used ++# in single precision mode by the compiler ++proc check_effective_target_use_single_only_fpu { } { ++ return [check_no_compiler_messages use_single_only_fpu object { ++ #if !(defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has an FPU and the default mode is single ++proc check_effective_target_default_single_fpu { } { ++ return [check_no_compiler_messages default_single_fpu object { ++ #if !(defined (__SH2E__) || defined (__SH3E__) \ ++ || defined (__SH2A_SINGLE__) \ ++ || defined (__SH2A_SINGLE_ONLY__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target has no FPU ++proc check_effective_target_no_fpu { } { ++ return [check_no_compiler_messages no_fpu object { ++ #ifdef __SH_FPU_ANY__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target has XF regs ++proc check_effective_target_has_xf_regs { } { ++ return [check_no_compiler_messages has_xf_regs object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++ ++# Return 1 if the target can do the fsca insn ++proc check_effective_target_has_fsca { } { ++ return [check_no_compiler_messages has_fsca object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fsrra insn ++proc check_effective_target_has_fsrra { } { ++ return [check_no_compiler_messages has_fsrra object { ++ #if !(defined (__SH_FPU_ANY__) \ ++ && (defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__))) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do the fpchg insn ++proc check_effective_target_has_fpchg { } { ++ return [check_no_compiler_messages has_fpchg object { ++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ ++ && !defined (__SH4_SINGLE_ONLY__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target can do dynamic shifts ++proc check_effective_target_has_dyn_shift { } { ++ return [check_no_compiler_messages has_dyn_shift object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH2A__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the mfmovd option is enabled ++proc check_effective_target_fmovd_enabled { } { ++ return [check_no_compiler_messages fmovd_enabled object { ++ #ifndef __FMOVD_ENABLED__ ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports privileged mode ++proc check_effective_target_has_privileged { } { ++ return [check_no_compiler_messages has_privileged object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if the target supports the prefetch insn ++proc check_effective_target_has_pref { } { ++ return [check_no_compiler_messages has_pref object { ++ #if !(defined (__SH3__) \ ++ || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does banked r0..r7 regs type of ISRs ++proc check_effective_target_banked_r0r7_isr { } { ++ return [check_no_compiler_messages banked_r0r7_isr object { ++ #if !(defined (__SH3__) || defined (__SH3E__) \ ++ || defined (__SH4__) \ ++ || defined (__SH4_SINGLE__) \ ++ || defined (__SH4_SINGLE_ONLY__) \ ++ || defined (__SH4_NOFPU__) \ ++ || defined (__SH4A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target does stack only type of ISRs ++proc check_effective_target_stack_save_isr { } { ++ return [check_no_compiler_messages stack_save_isr object { ++ #if !(defined (__SH1__) \ ++ || defined (__SH2__) \ ++ || defined (__SH2E__) \ ++ || defined (__SH2A__)) ++ #error "" ++ #endif ++ } ""] ++} ++ ++# Return 1 if target supports atomic-model=soft-gusa ++proc check_effective_target_atomic_model_soft_gusa_available { } { ++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { ++ int x = 0; ++ } "-matomic-model=soft-gusa"] ++} ++ ++# Return 1 if target supports atomic-model=soft-tcb ++proc check_effective_target_atomic_model_soft_tcb_available { } { ++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { ++ int x = 0; ++ } "-matomic-model=soft-tcb,gbr-offset=0"] ++} ++ ++# Return 1 if target supports atomic-model=soft-imask ++proc check_effective_target_atomic_model_soft_imask_available { } { ++ return [check_no_compiler_messages atomic_model_soft_imask_available object { ++ int x = 0; ++ } "-matomic-model=soft-imask -mno-usermode"] ++} ++ ++# Return 1 if target supports atomic-model=hard-llcs ++proc check_effective_target_atomic_model_hard_llcs_available { } { ++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { ++ int x = 0; ++ } "-matomic-model=hard-llcs"] ++} ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS ++ ++ ++# All done. ++dg-finish +diff --git a/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c +new file mode 100644 +index 00000000000..94fd6afaab3 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c +@@ -0,0 +1,31 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -m4 -mlra -ffixed-r7 -ffixed-r8 -ffixed-r9 -ffixed-r10 -ffixed-r11 -ffixed-r12 -ffixed-r13" } */ ++#include ++#include ++ ++typedef struct { int c[64]; } obj; ++obj obj0; ++obj obj1; ++ ++void __attribute__ ((noinline)) ++bar (int a, int b, int c, int d, obj *q) ++{ ++ if (q->c[0] != 0x12345678 || q->c[1] != 0xdeadbeef) ++ abort (); ++} ++ ++void foo (obj *p) ++{ ++ obj bobj; ++ bobj = *p; ++ bar (0, 0, 0, 0, &bobj); ++} ++ ++int ++main () ++{ ++ obj0.c[0] = 0x12345678; ++ obj0.c[1] = 0xdeadbeef; ++ foo (&obj0); ++ exit (0); ++} +-- +2.50.0 + diff --git a/patches/sh-math-fixes.diff b/patches/sh-math-fixes.diff new file mode 100644 index 0000000..1a46519 --- /dev/null +++ b/patches/sh-math-fixes.diff @@ -0,0 +1,128 @@ +From f1496a2ebee717137ba0b3c96aa4cbf8c96f51ec Mon Sep 17 00:00:00 2001 +From: Jiaxun Yang +Date: Sat, 19 Apr 2025 08:07:58 -0600 +Subject: [PATCH] [PATCH v2] sh: Correct NaN signalling bit and propagation + rules [PR111814] + +As per architecture, SuperH has a reversed NaN signalling bit +vs IEEE754-2008, it also has a NaN propgation rule similar to +MIPS style. + +Use mips style float format and mode for all float types, and +correct sfp-machine header accordingly. + + PR target/111814 + +gcc/ChangeLog: + + * config/sh/sh-modes.def (RESET_FLOAT_FORMAT): Use mips format. + (FLOAT_MODE): Use mips mode. + +libgcc/ChangeLog: + + * config/sh/sfp-machine.h (_FP_NANFRAC_B): Reverse signaling bit. + (_FP_NANFRAC_H): Likewise. + (_FP_NANFRAC_S): Likewise. + (_FP_NANFRAC_D): Likewise. + (_FP_NANFRAC_Q): Likewise. + (_FP_KEEPNANFRACP): Enable for target. + (_FP_QNANNEGATEDP): Enable for target. + (_FP_CHOOSENAN): Port from MIPS. + +gcc/testsuite/ChangeLog: + + * gcc.target/sh/pr111814.c: New test. +--- + gcc/config/sh/sh-modes.def | 6 +++++ + gcc/testsuite/gcc.target/sh/pr111814.c | 7 +++++ + libgcc/config/sh/sfp-machine.h | 36 ++++++++++++++++---------- + 3 files changed, 36 insertions(+), 13 deletions(-) + create mode 100644 gcc/testsuite/gcc.target/sh/pr111814.c + +diff --git a/src/gcc/config/sh/sh-modes.def b/src/gcc/config/sh/sh-modes.def +index 80650b429e4..e31ae694a48 100644 +--- a/src/gcc/config/sh/sh-modes.def ++++ b/src/gcc/config/sh/sh-modes.def +@@ -17,6 +17,12 @@ You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + ++/* SH has the same reversed quiet bit as MIPS. */ ++RESET_FLOAT_FORMAT (SF, mips_single_format); ++RESET_FLOAT_FORMAT (DF, mips_double_format); ++/* TFmode: IEEE quad floating point (software). */ ++FLOAT_MODE (TF, 16, mips_quad_format); ++ + /* Vector modes. */ + VECTOR_MODE (INT, QI, 2); /* V2QI */ + VECTOR_MODES (INT, 4); /* V4QI V2HI */ +diff --git a/src/gcc/testsuite/gcc.target/sh/pr111814.c b/src/gcc/testsuite/gcc.target/sh/pr111814.c +new file mode 100644 +index 00000000000..a88e5d786ba +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/sh/pr111814.c +@@ -0,0 +1,7 @@ ++/* Verify that __builtin_nan("") produces a constant matches ++ architecture specification. */ ++/* { dg-do compile } */ ++ ++double d = __builtin_nan (""); ++ ++/* { dg-final { scan-assembler "\t.long\t-1\n\t.long\t2146959359\n" } } */ +diff --git a/src/libgcc/config/sh/sfp-machine.h b/src/libgcc/config/sh/sfp-machine.h +index 66984d45755..67bc41516a3 100644 +--- a/src/libgcc/config/sh/sfp-machine.h ++++ b/src/libgcc/config/sh/sfp-machine.h +@@ -39,11 +39,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) + #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + +-#define _FP_NANFRAC_B _FP_QNANBIT_B +-#define _FP_NANFRAC_H _FP_QNANBIT_H +-#define _FP_NANFRAC_S _FP_QNANBIT_S +-#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 +-#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 ++#define _FP_NANFRAC_B (_FP_QNANBIT_B - 1) ++#define _FP_NANFRAC_H (_FP_QNANBIT_H - 1) ++#define _FP_NANFRAC_S (_FP_QNANBIT_S - 1) ++#define _FP_NANFRAC_D (_FP_QNANBIT_D - 1), -1 ++#define _FP_NANFRAC_Q (_FP_QNANBIT_Q - 1), -1, -1, -1 + + /* The type of the result of a floating point comparison. This must + match __libgcc_cmp_return__ in GCC for the target. */ +@@ -56,14 +56,24 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); + #define _FP_NANSIGN_D 0 + #define _FP_NANSIGN_Q 0 + +-#define _FP_KEEPNANFRACP 0 +-#define _FP_QNANNEGATEDP 0 +- +-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ +- do { \ +- R##_s = _FP_NANSIGN_##fs; \ +- _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ +- R##_c = FP_CLS_NAN; \ ++#define _FP_KEEPNANFRACP 1 ++#define _FP_QNANNEGATEDP 1 ++ ++/* X is chosen unless one of the NaNs is sNaN. */ ++# define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ ++ do { \ ++ if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ ++ _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ ++ { \ ++ R##_s = _FP_NANSIGN_##fs; \ ++ _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ ++ } \ ++ else \ ++ { \ ++ R##_s = X##_s; \ ++ _FP_FRAC_COPY_##wc(R,X); \ ++ } \ ++ R##_c = FP_CLS_NAN; \ + } while (0) + + #define _FP_TININESS_AFTER_ROUNDING 1 +-- +2.50.0 + diff --git a/patches/skip-bootstrap-multilib.diff b/patches/skip-bootstrap-multilib.diff new file mode 100644 index 0000000..a07b8c1 --- /dev/null +++ b/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,22 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -492,6 +492,17 @@ esac + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` + ++# stage1 and stage2 builds of the non-default multilib configurations ++# are not needed; skip these to save some build time. ++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then ++ stage_final=`cat ../../stage_final` ++ stage_current=`cat ../../stage_current` ++ if [ "$stage_current" != "$stage_final" ]; then ++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" ++ multidirs= ++ fi ++fi ++ + # Add code to library's top level makefile to handle building the multilib + # subdirs. + diff --git a/patches/sparc64-biarch-long-double-128.diff b/patches/sparc64-biarch-long-double-128.diff new file mode 100644 index 0000000..7c80575 --- /dev/null +++ b/patches/sparc64-biarch-long-double-128.diff @@ -0,0 +1,33 @@ +# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + +On sparc, the --with-long-double-128 option doesn't change anything for +a 64-bit compiler, as it always default to 128-bit long doubles. For +a 32/64-bit compiler defaulting to 32-bit this correctly control the +size of long double of the 32-bit compiler, however for a 32/64-bit +compiler defaulting to 64-bit, the built-in specs force the +-mlong-double-64 option. This makes the option useless in this case. + +The patch below fixes that by removing the -mlong-double-64 from the +built-in spec, using the default instead. + +Changelog gcc/ + +2013-12-04 Aurelien Jarno + + * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit, + don't force -mlong-double-64 when -m32 or -mv8plus is given. + +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -160,9 +160,9 @@ extern const char *host_detect_local_cpu + #else + #define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ + "%{m32:%{m64:%emay not use both -m32 and -m64}} \ +-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{m32:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=cypress}} \ +-%{mv8plus:-m32 -mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{mv8plus:-m32 -mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=v9}} \ + %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ + %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}}" diff --git a/patches/t-libunwind-elf-Wl-z-defs.diff b/patches/t-libunwind-elf-Wl-z-defs.diff new file mode 100644 index 0000000..082d4d5 --- /dev/null +++ b/patches/t-libunwind-elf-Wl-z-defs.diff @@ -0,0 +1,13 @@ +# DP: strip -z,defs from linker options for internal libunwind. + +--- a/src/libgcc/config/t-libunwind-elf ++++ b/src/libgcc/config/t-libunwind-elf +@@ -31,7 +31,7 @@ SHLIBUNWIND_SONAME = @shlib_base_name@.s + + SHLIBUNWIND_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared \ + -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ +- -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ ++ -Wl,-z,text -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ + @multilib_flags@ $(SHLIB_OBJS) -lc && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ + if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ diff --git a/patches/testsuite-glibc-warnings.diff b/patches/testsuite-glibc-warnings.diff new file mode 100644 index 0000000..9f28e1d --- /dev/null +++ b/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,16 @@ +# DP: fix testcases that triggered -Wunused-result with glibc +# DP: Author: Steve Beattie +--- + src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c | 2 +- + src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c ++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +@@ -1,5 +1,5 @@ + /* { dg-shouldfail "tsan" } */ +-/* { dg-additional-options "-ldl" } */ ++/* { dg-additional-options "-Wno-unused-result -ldl" } */ + + #include + #include diff --git a/patches/testsuite-hardening-format.diff b/patches/testsuite-hardening-format.diff new file mode 100644 index 0000000..a71ff8a --- /dev/null +++ b/patches/testsuite-hardening-format.diff @@ -0,0 +1,304 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- + src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c | 1 + + src/gcc/testsuite/g++.dg/abi/pragma-pack1.C | 2 ++ + src/gcc/testsuite/g++.dg/abi/regparm1.C | 1 + + src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C | 1 + + src/gcc/testsuite/g++.dg/torture/pr51436.C | 1 + + src/gcc/testsuite/g++.old-deja/g++.law/weak.C | 2 +- + src/gcc/testsuite/g++.old-deja/g++.other/std1.C | 1 + + src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/charset/builtin2.c | 2 +- + src/gcc/testsuite/gcc.dg/format/format.exp | 2 +- + src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c | 2 +- + src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c | 2 ++ + src/gcc/testsuite/gcc.dg/pr30473.c | 2 +- + src/gcc/testsuite/gcc.dg/pr38902.c | 2 +- + src/gcc/testsuite/gcc.dg/pr59418.c | 2 +- + src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c | 2 +- + src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m | 2 +- + 28 files changed, 40 insertions(+), 18 deletions(-) + +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c ++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +@@ -3,7 +3,7 @@ + + /* { dg-do compile } */ + /* { dg-require-iconv "IBM1047" } */ +-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ ++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ + /* { dg-final { scan-assembler-not "printf" } } */ + /* { dg-final { scan-assembler-not "fprintf" } } */ + /* { dg-final { scan-assembler-not "sprintf" } } */ +--- a/src/gcc/testsuite/gcc.dg/format/format.exp ++++ b/src/gcc/testsuite/gcc.dg/format/format.exp +@@ -26,7 +26,7 @@ load_lib gcc-dg.exp + load_lib torture-options.exp + + torture-init +-set-torture-options [list { } { -DWIDE } ] ++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] + + dg-init + gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" "" +--- a/src/gcc/testsuite/gcc.dg/pr30473.c ++++ b/src/gcc/testsuite/gcc.dg/pr30473.c +@@ -1,7 +1,7 @@ + /* PR middle-end/30473 */ + /* Make sure this doesn't ICE. */ + /* { dg-do compile } */ +-/* { dg-options "-O2" } */ ++/* { dg-options "-O2 -Wno-format" } */ + + extern int sprintf (char *, const char *, ...); + +--- a/src/gcc/testsuite/gcc.dg/pr38902.c ++++ b/src/gcc/testsuite/gcc.dg/pr38902.c +@@ -1,6 +1,6 @@ + /* PR target/38902 */ + /* { dg-do run } */ +-/* { dg-options "-O2 -fstack-protector" } */ ++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG +--- a/src/gcc/testsuite/gcc.dg/pr59418.c ++++ b/src/gcc/testsuite/gcc.dg/pr59418.c +@@ -2,7 +2,7 @@ + /* Reported by Ryan Mansfield */ + + /* { dg-do compile } */ +-/* { dg-options "-Os -g" } */ ++/* { dg-options "-Os -g -Wno-format-zero-length" } */ + /* { dg-options "-mcpu=unset -march=armv7-a+fp -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ + + extern int printf (const char *__format, ...); +--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c ++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details" } */ ++/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details -Wformat=0" } */ + + struct bovid + { +--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c ++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +@@ -1,3 +1,5 @@ ++/* { dg-lto-options "-Wno-nonnull" } */ ++ + void set_mem_alias_set (); + void emit_push_insn () { + set_mem_alias_set (); +--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c ++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-Wformat=0" } */ + #define vector(elcount, type) \ + __attribute__((vector_size((elcount)*sizeof(type)))) type + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int printf (const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int __printf_chk (int, const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c ++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +@@ -1,7 +1,7 @@ + /* { dg-do run } */ + /* { dg-require-effective-target tls } */ + /* { dg-require-effective-target pthread } */ +-/* { dg-options "-pthread" } */ ++/* { dg-options "-pthread -Wformat=0" } */ + + #include + extern int printf (char *,...); +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +@@ -2,7 +2,7 @@ + /* Developed by Markus Hitter . */ + /* { dg-do run } */ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ +-/* { dg-options "-fconstant-string-class=Foo" } */ ++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #include "../../../objc-obj-c++-shared/objc-test-suite-types.h" +--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C ++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +@@ -1,5 +1,7 @@ + // PR c++/7046 + ++// { dg-options "-Wformat=0" } ++ + extern "C" int printf (const char *, ...); + + #pragma pack(4) +--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C ++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C +@@ -1,6 +1,7 @@ + // PR c++/29911 (9381) + // { dg-do run { target i?86-*-* x86_64-*-* } } + // { dg-require-effective-target c++11 } ++// { dg-options "-Wformat=0" } + + extern "C" int printf(const char *, ...); + +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +@@ -1,5 +1,6 @@ + // PR c++/53202 + // { dg-do run { target c++11 } } ++// { dg-options "-Wformat=0" } + + #include + +--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C ++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-options "-Wno-nonnull" } */ + /* { dg-additional-options "-Wno-return-type" } */ + + typedef __SIZE_TYPE__ size_t; +--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +@@ -1,6 +1,6 @@ + // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } + // { dg-require-effective-target static } +-// { dg-options "-static" } ++// { dg-options "-static -Wno-nonnull" } + // { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } + + // Bug: g++ fails to instantiate operator<<. +--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +@@ -1,4 +1,5 @@ + // { dg-do assemble } ++// { dg-options "-Wno-nonnull" } + // Origin: Mark Mitchell + + extern "C" int memcmp (const void * __s1, +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + diff --git a/patches/testsuite-hardening-printf-types.diff b/patches/testsuite-hardening-printf-types.diff new file mode 100644 index 0000000..ffc761d --- /dev/null +++ b/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,605 @@ +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +--- a/src/gcc/testsuite/g++.dg/ext/align1.C ++++ b/src/gcc/testsuite/g++.dg/ext/align1.C +@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); + int + main (void) + { +- printf ("%d %d\n", __alignof (a1), __alignof (f1)); ++ // "%td" is not allowed by ISO C++, so use %p with a void * cast ++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); + return (__alignof (a1) < __alignof (f1)); + } +--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, + { + void *p; + +- printf("%d %d %d\n", sz, count, type); ++ // ISO C++ does not support format size modifier "z", so use a cast ++ printf("%u %d %d\n", (unsigned int)sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; +--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c ++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +@@ -42,7 +42,7 @@ main (int argc, char **argv) + } + for (i = 0; i < ARCHnodes; i++) + for (j = 0; j < 3; j++) +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*if (i!=1 || j!=1)*/ + /*if (i==1 && j==1) + continue; +@@ -82,14 +82,14 @@ mem_init (void) + for (j = 0; j < 3; j++) + { + vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); +- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); ++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); + } + } + for (i = 0; i < ARCHnodes; i++) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + } + } + +@@ -98,7 +98,7 @@ mem_init (void) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*for (k = 0; k < ARCHnodes1; k++) + { + vel[i][j][k] = d; +--- a/src/gcc/testsuite/gcc.dg/packed-vla.c ++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c +@@ -17,8 +17,8 @@ int func(int levels) + int b[4]; + } __attribute__ ((__packed__)) foo; + +- printf("foo %d\n", sizeof(foo)); +- printf("bar %d\n", sizeof(bar)); ++ printf("foo %d\n", (int)sizeof(foo)); ++ printf("bar %d\n", (int)sizeof(bar)); + + if (sizeof (foo) != sizeof (bar)) + abort (); +--- a/src/gcc/testsuite/g++.dg/opt/alias2.C ++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C +@@ -30,14 +30,14 @@ public: + + + _Deque_base::~_Deque_base() { +- printf ("bb %x %x\n", this, *_M_start._M_node); ++ printf ("bb %p %x\n", this, *_M_start._M_node); + } + + void + _Deque_base::_M_initialize_map() + { + yy = 0x123; +- printf ("aa %x %x\n", this, yy); ++ printf ("aa %p %x\n", this, yy); + + _M_start._M_node = &yy; + _M_start._M_cur = yy; +--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +@@ -33,7 +33,7 @@ struct VBase + void Offset () const + { + printf ("VBase\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); + } + }; + +@@ -55,8 +55,8 @@ struct VDerived : virtual VBase + void Offset () const + { + printf ("VDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); + } + }; + struct B : virtual VBase +@@ -65,8 +65,8 @@ struct B : virtual VBase + void Offset () const + { + printf ("B\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); + } + }; + struct MostDerived : B, virtual VDerived +@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived + void Offset () const + { + printf ("MostDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); + } + }; + +@@ -95,10 +95,10 @@ int main () + if (ctorVDerived != &dum.VDerived::member) + return 24; + +- printf (" VBase::member %d\n", &dum.VBase::member - this_); +- printf (" B::member %d\n", &dum.B::member - this_); +- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); +- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); ++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); ++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); ++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); ++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); + dum.MostDerived::Offset (); + dum.B::Offset (); + dum.VDerived::Offset (); +--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +@@ -15,6 +15,6 @@ int main(){ + + Double_alignt<20000> heap; + +- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); ++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); + + } +--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +@@ -16,7 +16,7 @@ int main() + } + + catch (E *&e) { +- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); ++ printf ("address of e is %p\n", (void *)e); + return !((__SIZE_TYPE__)e != 5 && e->x == 5); + } + return 2; +--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +@@ -42,19 +42,19 @@ public: + void DoSomething() { + PUB_A = 0; + Foo::A = 0; +- printf("%x\n",pX); ++ printf("%p\n",pX); + Foo::PUB.A = 0; +- printf("%x\n",PUB.pX); ++ printf("%p\n",PUB.pX); + B = 0; +- printf("%x\n",Foo::pY); ++ printf("%p\n",Foo::pY); + PRT_A = 0; + PRT.B = 0; +- printf("%x\n",Foo::PRT.pY); ++ printf("%p\n",Foo::PRT.pY); + PRV_A = 0; // { dg-error "" } + Foo::C = 0; // { dg-error "" } +- printf("%x\n",pZ); // { dg-error "" } ++ printf("%p\n",pZ); // { dg-error "" } + Foo::PRV.C = 0; // { dg-error "" } +- printf("%x\n",PRV.pZ); // { dg-error "" } ++ printf("%p\n",PRV.pZ); // { dg-error "" } + } + }; + +@@ -64,17 +64,17 @@ int main() + + a.PUB_A = 0; + a.A = 0; +- printf("%x\n",a.pX); ++ printf("%p\n",a.pX); + a.PRT_A = 0; // { dg-error "" } + a.B = 0; // { dg-error "" } +- printf("%x\n",a.pY); // { dg-error "" } ++ printf("%p\n",a.pY); // { dg-error "" } + a.PRV_A = 0; // { dg-error "" } + a.C = 0; // { dg-error "" } +- printf("%x\n",a.pZ); // { dg-error "" } ++ printf("%p\n",a.pZ); // { dg-error "" } + a.PUB.A = 0; +- printf("%x\n",a.PUB.pX); ++ printf("%p\n",a.PUB.pX); + a.PRT.B = 0; // { dg-error "" } +- printf("%x\n",a.PRT.pY); // { dg-error "" } ++ printf("%p\n",a.PRT.pY); // { dg-error "" } + a.PRV.C = 0; // { dg-error "" } +- printf("%x\n",a.PRV.pZ); // { dg-error "" } ++ printf("%p\n",a.PRV.pZ); // { dg-error "" } + } +--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +@@ -20,12 +20,12 @@ struct B { + B::operator const A&() const { + static A a; + a.i = i; +- printf("convert B to A at %x\n", &a); ++ printf("convert B to A at %p\n", (void*)&a); + return a; + } + + void f(A &a) { // { dg-message "" } in passing argument +- printf("A at %x is %d\n", &a, a.i); ++ printf("A at %p is %d\n", (void*)&a, a.i); + } + + int main() { +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +@@ -17,10 +17,10 @@ public: + + int main() { + C c; +- printf("&c.x = %x\n", &c.x); +- printf("&c.B1::x = %x\n", &c.B1::x); +- printf("&c.B2::x = %x\n", &c.B2::x); +- printf("&c.A::x = %x\n", &c.A::x); ++ printf("&c.x = %p\n", (void*)&c.x); ++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); ++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); ++ printf("&c.A::x = %p\n", (void*)&c.A::x); + if (&c.x != &c.B1::x + || &c.x != &c.B2::x + || &c.x != &c.A::x) +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +@@ -6,7 +6,7 @@ int fail = 0; + class Foo { + public: + virtual void setName() { +- printf("Foo at %x\n", this); ++ printf("Foo at %p\n", (void*)this); + if (vp != (void*)this) + fail = 1; + } +@@ -15,7 +15,7 @@ public: + class Bar : public Foo { + public: + virtual void init(int argc, char **argv) { +- printf("Bar's Foo at %x\n", (Foo*)this); ++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); + vp = (void*)(Foo*)this; + setName(); + } +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +@@ -18,7 +18,7 @@ public: + if (ptr2 != &(*this).slist) + fail = 6; + +- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); + } + }; + +@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () + void Sim_Event_Manager::post_event () { + ptr1 = (RWSlistIterator*)&last_posted_event_position_; + ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; +- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 1; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) + fail = 2; +- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator&)last_posted_event_position_).slist); ++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 3; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +@@ -7,26 +7,26 @@ int num_x; + + class Y { + public: +- Y () { printf("Y() this: %x\n", this); } +- ~Y () { printf("~Y() this: %x\n", this); } ++ Y () { printf("Y() this: %p\n", (void*)this); } ++ ~Y () { printf("~Y() this: %p\n", (void*)this); } + }; + + class X { + public: + X () { + ++num_x; +- printf("X() this: %x\n", this); ++ printf("X() this: %p\n", (void*)this); + Y y; + *this = (X) y; + } + +- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } ++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } + X & operator = (const X & xx) { +- printf("X.op=(X&) this: %x\n", this); ++ printf("X.op=(X&) this: %p\n", (void*)this); + return *this; + } + +- ~X () { printf("~X() this: %x\n", this); --num_x; } ++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } + }; + + int main (int, char **) { +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +@@ -48,7 +48,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) { +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + exit(1); + } + printf ("D is destructed.\n"); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +@@ -35,20 +35,20 @@ int foo::si = 0; + foo::foo () + { + si++; +- printf ("new foo @ 0x%x; now %d foos\n", this, si); ++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); + } + + foo::foo (const foo &other) + { + si++; +- printf ("another foo @ 0x%x; now %d foos\n", this, si); ++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); + *this = other; + } + + foo::~foo () + { + si--; +- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); ++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); + } + + int +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +@@ -32,7 +32,7 @@ class B + virtual ~B() {} + void operator delete(void*,size_t s) + { +- printf("B::delete() %d\n",s); ++ printf("B::delete() %u\n",(unsigned int)s); + } + void operator delete(void*){} + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +@@ -13,10 +13,10 @@ struct foo + int x; + foo () { + x = count++; +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + } + virtual ~foo () { +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + --count; + } + }; +@@ -31,7 +31,7 @@ int main () + { + for (int j = 0; j < 3; j++) + { +- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); ++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); + } + } + // The count should be nine, if not, fail the test. +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +@@ -42,7 +42,7 @@ B_table b; + bar jar; + + int main() { +- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); ++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); + B_table::B_ti_fn z = &B_table::func1; + int j = 1; + jar.call_fn_fn1(j,(void *)&z); +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +@@ -7,11 +7,11 @@ class T { + public: + T() { + i = 1; +- printf("T() at %x\n", this); ++ printf("T() at %p\n", (void*)this); + } + T(const T& o) { + i = o.i; +- printf("T(const T&) at %x <-- %x\n", this, &o); ++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); + } + T operator +(const T& o) { + T r; +@@ -21,7 +21,7 @@ public: + operator int () { + return i; + } +- ~T() { printf("~T() at %x\n", this); } ++ ~T() { printf("~T() at %p\n", (void*)this); } + } s, b; + + int foo() { return getenv("TEST") == 0; } +--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +@@ -5,16 +5,16 @@ int c, d; + class Foo + { + public: +- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } +- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } ++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } ++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } ++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } + }; + + // Bar creates constructs a temporary Foo() as a default + class Bar + { + public: +- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } + }; + + void fakeRef(Bar *) +--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) + struct A + { + virtual void f () { +- printf ("%x\n", this); ++ printf ("%p\n", (void*)this); + } + }; + +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +@@ -6,7 +6,7 @@ template + struct S + { + template +- void f(U u) { printf ("%d\n", sizeof (U)); } ++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } + + int i[4]; + }; +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +@@ -16,7 +16,7 @@ template + template + void S::f(U u) + { +- printf ("%d\n", sizeof (U)); ++ printf ("%d\n", (int)sizeof (U)); + } + + +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +@@ -10,9 +10,9 @@ struct frob { + + template + void frob::print () { +- printf ("this = %08x\n", this); +- printf (" ptr = %08x\n", ptr); +- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); ++ printf ("this = %p\n", (void*)this); ++ printf (" ptr = %p\n", (void*)ptr); ++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); + } + + static int x[10]; +--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +@@ -44,15 +44,15 @@ int main() + A * a = new B; + B * b = dynamic_cast(a); + +- printf("%p\n",b); // (*2*) ++ printf("%p\n",(void*)b); // (*2*) + b->print(); + + a = b; +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); + + a = a->clone(); +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); // (*1*) + + return 0; +--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c ++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +@@ -1,6 +1,6 @@ + #include "inline-4.h" + extern int printf (const char *, ...); + int main(void) { +- printf (getstring()); ++ printf ("%s", getstring()); + return 0; + } diff --git a/patches/testsuite-hardening-updates.diff b/patches/testsuite-hardening-updates.diff new file mode 100644 index 0000000..112a3b8 --- /dev/null +++ b/patches/testsuite-hardening-updates.diff @@ -0,0 +1,84 @@ +# DP: Fix some gcc and g++ testcases to pass with hardening defaults + +--- + src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c | 2 +- + src/gcc/testsuite/g++.dg/asan/asan_test.C | 2 +- + src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C | 2 +- + src/gcc/testsuite/g++.dg/fstack-protector-strong.C | 2 +- + src/gcc/testsuite/gcc.c-torture/execute/memset-1.c | 1 - + src/gcc/testsuite/gcc.c-torture/execute/memset-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/fstack-protector-strong.c | 2 +- + src/gcc/testsuite/gcc.dg/stack-usage-1.c | 2 +- + src/gcc/testsuite/gcc.dg/superblock.c | 2 +- + src/gcc/testsuite/gcc.target/i386/sw-1.c | 2 +- + 11 files changed, 14 insertions(+), 10 deletions(-) + +--- a/src/gcc/testsuite/g++.dg/asan/asan_test.C ++++ b/src/gcc/testsuite/g++.dg/asan/asan_test.C +@@ -2,7 +2,7 @@ + // { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } + // { dg-skip-if "" { *-*-* } { "-flto" } { "" } } + // { dg-additional-sources "asan_globals_test-wrapper.cc" } +-// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } ++// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -Wno-unused-result -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } + // { dg-additional-options "-ldl" { target { ! *-*-freebsd* } } } + // { dg-additional-options "-DASAN_NEEDS_SEGV=1" { target { ! arm*-*-* } } } + // { dg-additional-options "-DASAN_LOW_MEMORY=1 -DASAN_NEEDS_SEGV=0" { target arm*-*-* } } +--- a/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C ++++ b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C +@@ -1,7 +1,7 @@ + // ASan interceptor can be accessed with __interceptor_ prefix. + + // { dg-do run { target *-*-linux* *-*-freebsd* } } +-// { dg-options "-fno-builtin-free" } ++// { dg-options "-fno-builtin-free -Wno-unused-result" } + // { dg-additional-options "-D__NO_INLINE__" { target { *-*-linux-gnu *-*-freebsd* } } } + // { dg-shouldfail "asan" } + +--- a/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c +@@ -1,3 +1,5 @@ ++/* { dg-prune-output ".*warning: memset used with constant zero length parameter.*" } */ ++ + /* Copyright (C) 2002 Free Software Foundation. + + Test memset with various combinations of pointer alignments and lengths to +--- a/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c ++++ b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy" } */ ++/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy -U_FORTIFY_SOURCE" } */ + /* { dg-additional-options "-D_FORTIFY_SOURCE=0 -gdwarf-3" { target *-*-darwin* } } */ + /* { dg-shouldfail "asan" } */ + +--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c ++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C ++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 diff --git a/porting.html b/porting.html new file mode 100644 index 0000000..2fe5477 --- /dev/null +++ b/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +